Milyen képletet alkalmaznak az R szórásához?

Milyen képletet alkalmaznak az R sd szórásfüggvényben?

Megjegyzések

  • Általában a ' függvény kódját egyszerűen meghívva olvashatja el zárójel nélkül, ahogy Gschneider tette.
  • @OweJessen Bár igaz, ez gyakran nem olyan hasznos, mint gondolnánk. Az R számos funkciója csak burkoló, amely meghívja az alapul szolgáló C kódot. Például az sd elvezet a var-hoz, ami a .Call (C_cov, x, y, na.method, FALSE) eléréséhez vezet.

Válasz

Amint arra a @Gschneider rámutatott, kiszámítja a minta szórását

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

amelyet a következőképpen ellenőrizhet:

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

Megjegyzések

  • Ha megnézed a súgó oldalt (? sd), akkor az a következőt írja: " ez az n-1 nevezőt használja ", ha valamilyen okból nem ' hisz az ocram ' s szimuláció 🙂
  • @ Matt: Lehet, hogy frissíteniük kellene a súgó fájlt, és valami olyasmit kell mondaniuk, hogy " ez a var "?
  • @OweJessen, azt hiszem, valójában azt mondja, hogy " var visszaadja a négyzetét! "
  • Lásd még: stackoverflow.com/questions/9508518/ … , hogy megtudja, miért adhat ez a szimuláció különböző eredményeket mindkét funkcióhoz.
  • A tesztelés másik egyszerű módja a sd( c(-1,0,1) ), amely az 1. eredményt adja ki.

Válasz

Igen. Technikailag kiszámítja a minta varianciáját, majd felveszi a négyzetgyöket:

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

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük