Quelle formule est utilisée pour lécart type de R?

Quelle formule est utilisée dans la fonction décart type sd dans R?

Commentaires

  • En général, vous pourrez lire le code de la fonction ' en appelant simplement sans parenthèses, comme la fait Gschneider.
  • @OweJessen Bien que cela soit vrai, ce nest souvent pas aussi utile quon pourrait le penser. De nombreuses fonctions de R ne sont que des wrappers qui appellent le code C sous-jacent. Par exemple, sd vous conduit à var, ce qui vous conduit à .Call (C_cov, x, y, na.method, FALSE).

Answer

Comme indiqué par @Gschneider, il calcule lécart type de léchantillon

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

que vous pouvez facilement vérifier comme suit:

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

Commentaires

  • Si vous regardez la page daide (? sd), elle indique " Comme var, cela utilise le dénominateur n-1 ", si pour une raison quelconque vous ' ne croyez pas ocram ' s 🙂
  • @ Matt: Peut-être quils devraient mettre à jour ce fichier daide et dire quelque chose comme " cela renvoie le sqrt de var "?
  • @OweJessen, je pense que cela dit en fait que " var renvoie son carré! "
  • Voir aussi: stackoverflow.com/questions/9508518/ … pour savoir pourquoi cette simulation pourrait donner des résultats différents pour les deux fonctions.
  • Un autre moyen simple de le tester est sd( c(-1,0,1) ) qui renvoie 1.

Answer

Oui. Techniquement, il calcule la variance de léchantillon, puis prend la racine carrée:

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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *