Jaki wzór jest używany na odchylenie standardowe w R?

Jaka formuła jest używana w funkcji odchylenia standardowego sd w R?

Komentarze

  • Ogólnie rzecz biorąc, kod funkcji ' będzie można odczytać, po prostu wywołując bez nawiasów, jak zrobił to Gschneider.
  • @OweJessen Chociaż prawda, często nie jest to tak pomocne, jak mogłoby się wydawać. Wiele funkcji w R to po prostu otoki, które wywołują podstawowy kod C. Na przykład sd prowadzi do var, co prowadzi do .Call (C_cov, x, y, na.method, FALSE).

Answer

Jak wskazał @Gschneider, oblicza przykładowe odchylenie standardowe

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

które można łatwo sprawdzić w następujący sposób:

> #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 

Komentarze

  • Jeśli spojrzysz na stronę pomocy (? sd), zobaczysz " Podobnie jak var, używa mianownika n-1 ", jeśli z jakiegoś powodu nie ' nie wierzysz ocram ' s simulation 🙂
  • @ Matt: Może powinni zaktualizować ten plik pomocy i powiedzieć coś w rodzaju " to zwraca sqrt zmiennej "?
  • @OweJessen, wydaje mi się, że faktycznie mówi, że " var zwraca swój kwadrat! "
  • Zobacz też: stackoverflow.com/questions/9508518/ … , aby dowiedzieć się, dlaczego ta symulacja może dać różne wyniki dla obu funkcji.
  • Innym prostym sposobem sprawdzenia tego jest sd( c(-1,0,1) ), który generuje 1.

Odpowiedź

Tak. Z technicznego punktu widzenia oblicza wariancję próbki, a następnie pobiera pierwiastek kwadratowy:

> 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)) } 

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *