Estimación boostrap

Cuando se extrae una muestra de una población que no es normal y se requiere estimar un intervalo de confianza se pueden utilizar los métodos de estimación bootstrap. Esta metodología supone que se puede reconstruir la población objeto de estudio mediante un muestreo con reemplazo de la muestra que se tiene. Existen varias versiones del método. Una presentación básica del método se describe a continuación:

El artículo de In-use Emissions from Heavy Duty Dissel Vehicles (J.Yanowitz, 2001) presenta las mediciones de eficiencia de combustible en millas/galón de una muestra de siete camiones. Los datos obtenidos son los siguientes: 7.69, 4.97, 4.56, 6.49, 4.34, 6.24 y 4.45. Se supone que es una muestra aleatoria de camiones y que se desea construir un intervalo de confianza del 95 % para la media de la eficiencia de combustible de esta población. No se tiene información de la distribución de los datos. El método bootstrap permite construir intervalos de confianza del 95 % - Para ilustrar el método suponga que coloca los valores de la muestra en una caja y extrae uno al azar. Este correspondería al primer valor de la muestra bootstrap \(X_{1^{*}}\). Después de anotado el valor se regresa \(X_{1^{*}}\) a la caja y se extrae el valor \(X_{2^{*}}\), regresandolo nuevamente. Este procedimiento se repite hasta completar una muestra de tamaño \(n\), \(X_{1^{*}}\), \(X_{2^{*}}\), \(X_{2^{*}}\), \(X_{n^{*}}\), conformando la muestra bootstrap.

Es necesario extraer un gran número de muestras (suponga k = 1000). Para cada una de las muestra bootstrap obtenidas se calcula la media\(\overline{X_{i^{*}}}\) , obteniéndose un valor para cada muestra. El intervalo de confianza queda conformado por los percentiles \(P_{2.5}\) y \(P_{97.5}\). Existen dos métodos para estimarlo:

Método 1: \((P_{2.5}\) ; \(P_{97.5})\)
Método 2 ; \((2\overline{X}\) - \(P_{97.5}\) ; \(2\overline{X}\) - \(P_{2.5})\)

Construya el intervalo de confianza por los dos métodos y compare los resultados obtenidos. Comente los resultados. Confiaría en estas estimaciones?

Solución

Se crea una matriz que almacene las 1000 muestras de siete datos extraidos con reemplazo.

# Establecer una semilla
set.seed(4812)

#Se crea vector
Vector = c( 7.69, 4.97, 4.56, 6.49, 4.34, 6.24, 4.45)

#Extracción de muestras
bootstrap = sample( Vector, 7000, replace = TRUE)

# Almacenar los datos en una matriz
matriz_bootstrap <- matrix(bootstrap, nrow = 1000, ncol = 7)

# Nombrar las columnas de la matriz
colnames(matriz_bootstrap) <- paste0("Muestra", 1:7)

# Mostrar la matriz resultante
head(matriz_bootstrap)
Muestra1 Muestra2 Muestra3 Muestra4 Muestra5 Muestra6 Muestra7
6.49 6.24 4.97 7.69 4.56 4.45 4.56
6.49 4.34 4.56 6.24 4.45 4.34 4.45
4.56 7.69 7.69 4.97 6.24 4.56 4.97
4.56 4.56 4.45 4.45 4.97 4.97 4.56
6.24 7.69 6.49 4.34 6.24 6.24 6.49
7.69 6.49 6.49 6.49 6.49 4.45 6.24

Se genera una columna que calcule la media de cada fila.

# Calcular la media de cada fila y agregarla como una nueva columna
matriz_bootstrap <- cbind(matriz_bootstrap, Media = rowMeans(matriz_bootstrap))


# Ver la matriz actualizada
head(matriz_bootstrap)
Muestra1 Muestra2 Muestra3 Muestra4 Muestra5 Muestra6 Muestra7 Media
6.49 6.24 4.97 7.69 4.56 4.45 4.56 5.565714
6.49 4.34 4.56 6.24 4.45 4.34 4.45 4.981429
4.56 7.69 7.69 4.97 6.24 4.56 4.97 5.811429
4.56 4.56 4.45 4.45 4.97 4.97 4.56 4.645714
6.24 7.69 6.49 4.34 6.24 6.24 6.49 6.247143
7.69 6.49 6.49 6.49 6.49 4.45 6.24 6.334286
Medias_Bootstrap <- matriz_bootstrap[, "Media"]

head(Medias_Bootstrap)
## [1] 5.565714 4.981429 5.811429 4.645714 6.247143 6.334286

Se calcula cada uno de los metodos.

#Metodo1
Metodo1_Boot = quantile(Medias_Bootstrap, probs=c(0.025, 0.975))
Metodo1_Boot
##     2.5%    97.5% 
## 4.763607 6.419107
#Metodo2
Metodo2_Boot = c(2*mean(Medias_Bootstrap)-Metodo1_Boot[2], 2*mean(Medias_Bootstrap)-Metodo1_Boot[1]) 
Metodo2_Boot 
##    97.5%     2.5% 
## 4.671304 6.326804

Resultados

La media de los datos reales es:

Media_Vector <- mean(Vector)

Media_Vector
## [1] 5.534286
# Crear un histograma 
hist(Medias_Bootstrap, prob = TRUE, 
     col = "lightblue", 
     border = "darkgreen", 
     main = "Histograma Medias Bootsrap - Muestra = 1000")

#Superponer la media del vector
abline(v=Media_Vector, col="steelblue", lwd=3)

#Superponer Resultados metodo1
abline(v=Metodo1_Boot, col="darkgreen", lwd=3)

#Superponer Resultados metodo2
abline(v=Metodo2_Boot, col="orange", lwd=3)

#Agregar leyenda
legend("topright", legend = c("Media Vector", "Metodo1", "Metodo2"), 
       col = c("steelblue", "darkgreen", "orange"),
       lty = c(1, 1, 1))

Teniendo en cuenta lo anteriormente expuesto, ambos métodos han proporcionado intervalos de confianza que contienen la media real de los datos (5.53), lo que es una buena señal de que los métodos están funcionando correctamente.

El Método1 tiene un intervalo ligeramente más amplio (4.76, 6.42) en comparación con el Método2 (4.67, 6.33).

En conclusión, los resultados indican que se puede tener un alto nivel de confianza (95%) de que la media real de la eficiencia de combustible de la población se encuentra en los intervalos proporcionados por ambos métodos, y ambos métodos son consistentes en este caso.