Problema 4

Christian David Vera Mendivelso
Paula Vidal Godoy

Métodos y Simulación estadística
Maestría en Ciencia de Datos
Pontificia Universidad Javeriana de Cali


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 anotar el valor, se regresa \(X_1^*\) a la caja y se extrae el valor \(X_2^*\), regresándolo nuevamente. Este procedimiento se repite hasta completar una muestra de tamaño \(n\): \(X_1^*, 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 muestras bootstrap obtenidas, se calcula la media \(\bar{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\bar{X} - P_{97.5}; 2\bar{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:

En primer lugar se usa la función sample() para generar 7.000 muestras con reemplazo de los valores de la eficiencia de combustible de los 7 camiones, asegurando que cada valor pueda ser seleccionado mas de una vez cada que se realiza una muestra. Luego se organizan las 7.000 muestras en una matriz de 1.000 filas y 7 columnas, en donde cada fila es una muestra de tamaño 7.Finalmente se calcula la media de la matriz de muestras generadas.

x=c( 7.69, 4.97, 4.56, 6.49, 4.34, 6.24, 4.45) # datos muestra
boot=sample(x,7000,replace=TRUE)   # se extraen n x m muestras
b=matrix(boot,nrow=1000,ncol=7)    # se construye matriz de n x m 
mx=apply(b,1,mean)                 # se calculan m medias por fila

Ahora se calculan los percentiles 2.5 y 97.5 de las medias bootstrap en ‘mx’

#Se usa Kable para 
library(knitr)         # Para usar kable
library(kableExtra)    # Para funciones adicionales como kable_styling

ic1 <- quantile(mx, probs = c(0.025, 0.975)) # Se calcula IC método 1

ic1_df <- data.frame(
  Percentil = names(ic1),
  Valor = ic1,
  row.names = NULL )

# Mostrar como tabla usando kable
ic1_df %>%
  kable(digits = 6, format = "html", align = "cc") %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed", "responsive"),
    full_width = FALSE, 
    position = "center"
  ) 
Percentil Valor
2.5% 4.772750
97.5% 6.470143

Para el segundo método se calcula el intervalo de confianza restando al doble de la media de boostrap el valor de los percentiles del método 1.

ic2=c(2*mean(mx)-ic1[2], 2*mean(mx)-ic1[1]) # se calcula IC método 2


ic2_df <- data.frame(
  Percentil = names(ic2),
  Valor = ic2,
  row.names = NULL )


ic2_df$Percentil <- c("$(2\\bar{X} - P_{97.5})$", "$(2\\bar{X} - P_{2.5})$")
colnames(ic2_df) <- c("Intervalo", "Valor")

# Mostrar como tabla usando kable
ic2_df %>%
  kable(digits = 6, format = "html", align = "cc") %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed", "responsive"),
    full_width = FALSE, 
    position = "center"
  ) 
Intervalo Valor
\((2\bar{X} - P_{97.5})\) 4.649191
\((2\bar{X} - P_{2.5})\) 6.346584

Ahora se visualizará los resultados de mediante un histograma, añadiendo barras verticales correspondientes a los resultados de los dos métodos.

hist(mx, las = 1,main="", ylab = "Frecuencia", xlab = "Valores", col = "#4e68c7", border = "#00274D")

# Añadir colores
abline(v = ic1, col = "red", lwd = 3)  # Línea para el primer intervalo de confianza
abline(v = ic2, col = "green", lwd = 3)  # Línea para el segundo intervalo de confianza

Fig1. Comparativa de los dos métodos.

Finalmente, en la figura 1 se observa cómo el método 1 genera un intervalo de confianza basado directamente en los percentiles. Sin embargo, la distribución de las medias presenta una asimetría ligeramente positiva, lo que indica que la cola derecha es más larga que la izquierda. El segundo método se considera ajustado, ya que intenta corregir el sesgo o la asimetría en el intervalo, construyendo un intervalo centrado en torno a la media observada, lo cual no se aborda en el primer método. Este ajuste mejora la precisión del intervalo al reflejar mejor la verdadera distribución de las medias muestrales.

library(knitr)         # Para usar kable
library(kableExtra)    # Para funciones adicionales como kable_styling
library(e1071)         # Para skewness

media_mx <- mean(mx)

# Calcular el coeficiente de asimetría
asimetria_mx <- e1071::skewness(mx)


resultados_df <- data.frame(
  Métrica = c("Media", "Coeficiente de Asimetría"),
  Valor = c(media_mx, asimetria_mx)
)

# Mostrar como tabla usando kable
resultados_df %>%
  kable(digits = 6, format = "html", align = "cc") %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed", "responsive"),
    full_width = FALSE, 
    position = "center"
  ) 
Métrica Valor
Media 5.559667
Coeficiente de Asimetría 0.213126

Confiar en las estimaciones bootstrap es razonable porque no asume una distribución específica, lo que lo hace útil para datos no normales o muestras pequeñas. Genera estimaciones basadas en los datos observados, permitiendo la construcción de intervalos de confianza que reflejan mejor la variabilidad real. Además, es versátil, puede corregir sesgos, y proporciona validación empírica a través de múltiples simulaciones, lo que aumenta la confianza en los resultados.