Ce formulă este utilizată pentru deviația standard în R?

Ce formulă este utilizată în funcția de deviație standard sd în R?

Comentarii

  • În general, veți putea citi codul funcției ' apelând simplu fără paranteză, așa cum a făcut Gschneider.
  • @OweJessen Deși este adevărat, acest lucru nu este adesea atât de util pe cât s-ar putea crede. Multe funcții din R sunt doar împachetări care apelează codul C subiacent. De exemplu, sd vă duce la var, ceea ce vă duce la .Call (C_cov, x, y, na.method, FALSE).

Răspuns

După cum a subliniat @Gschneider, calculează eșantionul deviației standard

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

pe care îl puteți verifica cu ușurință după cum urmează:

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

Comentarii

  • Dacă vă uitați la pagina de ajutor (? sd), scrie " Ca var, aceasta folosește numitorul n-1 ", dacă dintr-un anumit motiv nu ' nu credeți că ocram ' s 🙂
  • @ Matt: Poate ar trebui să actualizeze acel fișier de ajutor și să spună ceva de genul " acest lucru returnează sqrt-ul lui var "?
  • @OweJessen, cred că de fapt spune că " var își returnează pătratul! "
  • Vedeți și: stackoverflow.com/questions/9508518/ … pentru a afla de ce această simulare ar putea oferi rezultate diferite pentru ambele funcții.
  • Un alt mod simplu de a-l testa este sd( c(-1,0,1) ) care produce 1.

Răspuns

Da. Din punct de vedere tehnic, calculează varianța eșantionului și apoi ia rădăcina pătrată:

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

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *