2010-04-20 35 views

Respuesta

25

Ahí está el paquete con plotrix tiene una función incorporada para esto: std.error

113

El error estándar es la desviación estándar dividida por la raíz cuadrada del tamaño de la muestra. Así que usted puede hacer fácilmente su propia función:

> std <- function(x) sd(x)/sqrt(length(x)) 
> std(c(1,2,3,4)) 
[1] 0.6454972 
74

Probablemente es más eficiente usar var ... ya que en realidad sqrt dos veces en su código, una vez para obtener la tarjeta SD (código para SD está en R y reveló con solo teclear "SD") ...

se <- function(x) sqrt(var(x)/length(x)) 
+3

Curiosamente, su función e Ian son casi idénticamente rápidos. Los probé 1000 veces contra 10^6 millones de sorteos de rnorm (no hay suficiente potencia para empujarlos más fuerte que eso). Por el contrario, la función de plotrix siempre fue más lenta que incluso las ejecuciones más lentas de esas dos funciones, pero también tiene mucho más que hacer bajo el capó. –

+0

Eso es probable porque la ventaja de la función de John evita una llamada a función y calcula la raíz cuadrada de un solo número. Si hay alguna ventaja, es muy pequeña n. –

+1

No solo es probable sino cierto ... Hice carreras de tiempo de rnorm (5) pero hice 5e4 ejecuciones del comando se. Mi versión toma aproximadamente 2.5s mientras que la que tiene dos sqrts toma aproximadamente 2.8. Una pequeña velocidad de hecho. (Hice varias ejecuciones y estoy informando un promedio redondeado) – John

0

más en general, por los errores estándar en cualquier otro parámetro, se puede utilizar el paquete de arranque para las simulaciones de arranque (o escribir por su cuenta)

51

Un versión de la respuesta de Juan que elimina las molestas NA:

stderr <- function(x) sqrt(var(x,na.rm=TRUE)/length(na.omit(x))) 
3

El sciplot paquete tiene la función incorporada se (x)

-10
y <- mean(x, na.rm=TRUE) 

sd(y) para la desviación estándar var(y) para varianza.

Ambas derivaciones usan n-1 en el denominador, por lo que se basan en datos de muestra.

Cuestiones relacionadas