Qual fórmula é usada para o desvio padrão em R?

Que fórmula é usada na função de desvio padrão sd em R?

Comentários

  • Geralmente, você será capaz de ler o código da função ' simplesmente chamando sem parênteses, como fez Gschneider.
  • @OweJessen Embora seja verdade, isso geralmente não é tão útil quanto se possa pensar. Muitas funções em R são apenas invólucros que chamam o código C subjacente. Por exemplo, sd leva você a var, que leva você a .Call (C_cov, x, y, na.method, FALSE).

Resposta

Conforme apontado por @Gschneider, ele calcula o desvio padrão da amostra

$$ \ sqrt {\ frac {\ sum \ limits_ {i = 1} ^ {n } (x_i – \ bar {x}) ^ 2} {n-1}} $$

que você pode verificar facilmente da seguinte maneira:

> #generate a random vector > x <- rnorm(n=5, mean=3, sd=1.5) > n <- length(x) > > #sd in R > sd1 <- sd(x) > > #self-written sd > sd2 <- sqrt(sum((x - mean(x))^2) / (n - 1)) > > #comparison > c(sd1, sd2) #:-) [1] 0.6054196 0.6054196 

Comentários

  • Se você olhar a página de ajuda (? sd), ela diz " Like var, ele usa o denominador n-1 ", se por algum motivo você não ' t acreditar no ocram ' s 🙂
  • @ Matt: Talvez eles devessem atualizar esse arquivo de ajuda e dizer algo como " isso retorna o sqrt de var "?
  • @OweJessen, acho que realmente diz que " var retorna seu quadrado! "
  • Veja também: stackoverflow.com/questions/9508518/ … para saber por que essa simulação pode fornecer resultados diferentes para ambas as funções.
  • Outra maneira simples de testá-lo é sd( c(-1,0,1) ), que produz 1.

Resposta

Sim. Tecnicamente, ele calcula a variância da amostra e, em seguida, obtém a raiz quadrada:

> sd function (x, na.rm = FALSE) { if (is.matrix(x)) apply(x, 2, sd, na.rm = na.rm) else if (is.vector(x)) sqrt(var(x, na.rm = na.rm)) else if (is.data.frame(x)) sapply(x, sd, na.rm = na.rm) else sqrt(var(as.vector(x), na.rm = na.rm)) } 

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *