Welche Formel wird für die Standardabweichung in R verwendet?

Welche Formel wird in der Standardabweichungsfunktion sd in R verwendet?

Kommentare

  • Im Allgemeinen können Sie den Code der Funktion ' durch einfaches Aufrufen lesen es ohne Klammern, wie es Gschneider getan hat.
  • @OweJessen Obwohl dies wahr ist, ist dies oft nicht so hilfreich, wie man denkt. Viele Funktionen in R sind nur Wrapper, die den zugrunde liegenden C-Code aufrufen. Zum Beispiel führt sd Sie zu var, was Sie zu .Call (C_cov, x, y, na.method, FALSE) führt.

Antwort

Wie von @Gschneider ausgeführt, berechnet es die Standardabweichung der Stichprobe

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

, die Sie leicht wie folgt überprüfen können:

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

Kommentare

  • Wenn Sie sich die Hilfeseite (? sd) ansehen, heißt es " Wie var, Dies verwendet den Nenner n-1 ", wenn Sie aus irgendeinem Grund ' nicht glauben, dass ocram ' s Simulation 🙂
  • @ Matt: Vielleicht sollten sie diese Hilfedatei aktualisieren und so etwas wie " sagen, dies gibt den sqrt von var "?
  • @OweJessen, ich denke, es heißt tatsächlich, dass " var sein Quadrat zurückgibt! "
  • Siehe auch: stackoverflow.com/questions/9508518/ … , um zu erfahren, warum diese Simulation für beide Funktionen unterschiedliche Ergebnisse liefern kann.
  • Eine andere einfache Möglichkeit, es zu testen, ist sd( c(-1,0,1) ), das 1 ausgibt.

Antwort

Ja. Technisch berechnet es die Stichprobenvarianz und zieht dann die Quadratwurzel:

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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.