2 votos

Submuestreo para determinar un error estándar, ¿cómo funciona?

Necesito calcular el error estándar en un conjunto de datos complicado (> 1700 registros) que utiliza el emparejamiento genético. El uso de bootstrap da lugar a un tiempo de cálculo muy elevado (debido al emparejamiento genético).

Mi profesor da como alternativa el submuestreo:

Una alternativa menos costosa desde el punto de vista informático es el submuestreo. Se puede realizar seleccionando, por ejemplo, 100 submuestras más pequeñas (que consisten en unos 500 sujetos medidos) del gran conjunto de datos y analizándolas.

La varianza empírica de estos 100 estimadores será muy alta porque analizó conjuntos de datos más pequeños. Pero como la varianza es inversamente proporcional al número de sujetos medidos se puede calcular la varianza del estimador en el conjunto de datos completo.

Parece que me atasco en el cálculo de la proporción inversa. Lo he intentado con otro conjunto de datos (más sencillo) en R :

library(boot)
x <- rnorm(5000,mean=0,sd=1)
##then the SE for the mean is 1/sqrt(5000)
se <- 1/sqrt(5000); se

mean.fn <- function(data, index){
  return(mean(data[index]))
}

# bootstrapping works good
boot(x,mean.fn,R=100)

## subsampling
res <- c()
count <- 100
size <- 500
for(i in 1:count){
  indices <- sample(x = length(x),size=size)
  res[i] <- mean.fn(x,indices)
}

emp_se <- var(res)
emp_var <- emp_se*sqrt(count)
emp_se; emp_var; se

De alguna manera emp_var parece ser un buen estimador para se , pero cuando cambio el count a 200 esto empeora. ¿Cómo puedo convertir var(res) en un estimador para se ?

1voto

md1337 Puntos 133

Hay algunos problemas en su código.

En primer lugar, ¿por qué utilizar var(res) si te interesa la desviación estándar de la media? En su lugar, utilice simplemente sd(res) (o, por el contrario, el sqrt(var(res)) ). Además, su profesor se refería, por supuesto, a que los errores varían en función del tamaño de la muestra y de la submuestra, y no del número de réplicas de Montecarlo.

Así que en tu caso obtendrías una estimación razonable por:

mean_sd <- sd(res)*sqrt(size/5000)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X