¿Por qué se siguen utilizando pruebas de hipótesis cuando tenemos el bootstrap y el teorema del límite central?
Para dar contexto a mi pregunta, repaso brevemente el teorema del límite central e ilustro un ejemplo de simulación utilizando el lenguaje de programación R.
La página de Wikipedia del teorema del límite central proporciona algunas explicaciones muy buenas de este teorema:
Si $X_1, X_2,..., X_N$ son muestras aleatorias $n$ tomadas de una población con media global $\mu$ y varianza finita $\sigma^2$, y si $\bar{X}_n$ es la media muestral, entonces la forma límite de la distribución, $Z=\lim_{n\to+\infty}\sqrt{n}\Big(\frac{\bar{X}_n-\mu}{\sigma}\Big)$, es una distribución normal estándar.
Entiendo esto de la siguiente manera:
1) Tomar muchas muestras aleatorias de cualquier distribución
2) Para cada una de estas muestras aleatorias, calcular su media
3) La distribución de estas medias seguirá una distribución normal (este resultado es particularmente útil para inferencias, por ejemplo, pruebas de hipótesis y intervalos de confianza).
Intenté ver si entendía correctamente el teorema del límite central creando dos ejemplos utilizando el lenguaje de programación R. Simulé datos no normales y tomé muestras aleatorias de estos datos, en un intento de ver la "forma de campana" correspondiente a la distribución de estas muestras aleatorias.
1) Bootstrap no paramétrico
En este ejemplo, imagina que hay un pueblo y estás interesado en los salarios que ganan las personas que viven en este pueblo: específicamente, estás interesado en saber si el 20% de la población gana más de US$ 80,000.00. Aquí está la distribución de salarios en este pueblo (en la vida real, no sabrías cómo se ve esta distribución, solo podrías tomar muestras de esta distribución):
set.seed(123)
a = rnorm(100000, 20000, 1000)
a2 = rnorm(100000, 40000, 10000)
a1 = rnorm(100000, 100000, 10000)
salary = c(a, a1, a2)
id = 1:length(salary)
my_data = data.frame(id, salary)
###plot
par(mfrow=c(1, 2))
hist(my_data$salary, 1000, ylab = "Número de personas", xlab = " Salarios", main="Distribución de los Salarios de Todas las Personas en Algún Pueblo: 300,000 personas")
hist(our_sample$salary, 1000, ylab = "Número de personas", xlab = " Salarios", main="Muestra de los Datos Completos a los que tenemos Acceso: 15,000 personas")
Supongamos que tenemos acceso a los salarios del 5% de las personas en este pueblo (supongamos que se eligen al azar):
library(dplyr)
our_sample <- sample_frac(my_data, 0.05)
A continuación, tomaremos 1000 muestras aleatorias del 5% de esta población a la que tenemos acceso y verificaremos la proporción de cuántos ciudadanos ganan más de US$ 80,000. Luego trazaré la distribución de estas proporciones: si lo he hecho correctamente, debería esperar ver una forma de "campana":
library(dplyr)
results <- list()
for (i in 1:1000) {
train_i <- sample_frac(our_sample, 0.70)
sid <- train_i$row
train_i$prop = ifelse(train_i$salary >80000, 1, 0)
results[[i]] <- mean(train_i$prop)
}
results
results_df <- do.call(rbind.data.frame, results)
colnames(results_df)[1] <- "mean_muestra"
hist(results_df$mean_muestra)
Como podemos ver, los datos originales eran claramente no normales, pero la distribución de la media de las muestras aleatorias de estos datos no normales parece verse "algo normal":
par(mfrow=c(1, 3))
hist(my_data$salary, breaks = 10000, main = "datos completos")
hist(our_sample$salary, breaks = 10000, main = "muestra de los datos completos a los que tenemos acceso")
hist(results_df$mean_muestra, breaks = 500, main = "datos vuelta a muestrear por bootstrap de los datos a los que tenemos acceso")
Intervalos de confianza:
-
En realidad, el 32.5% de todos los ciudadanos de este pueblo ganan más de US$ 80,000
my_data$prop = ifelse(my_data$salary > 80000, 1, 0) mean(my_data$prop) [1] 0.3258367
-
Sorprendentemente, según los datos de bootstrap vuelta a muestrear, solo el 32.5% de los ciudadanos ganan más de US$ 80,000
mean(results_df$mean_muestra) [1] 0.3259046
El intervalo de confianza se calcula de la siguiente manera:
results_df$delta = abs(mean(results_df$mean_muestra) - results_df$mean_muestra)
sorted_results = results_df[order(- results_df$delta), ]
quantile(sorted_results$delta, probs = c(0.1, 0.9))
10% 90%
0.000495400 0.005977933
Esto significa que el intervalo de confianza para la proporción de ciudadanos que ganan más de US$ 80,000 está entre el 32.59% - pero de hecho puede estar en cualquier lugar entre (32.59 - 0.0495400 %) y (32.59 - 5.97%)
Conclusión: Por lo que entiendo, el teorema del límite central establece que para cualquier distribución, la distribución de las medias de las muestras aleatorias seguirá siendo una distribución normal. Además, el bootstrap no paramétrico también te permite evaluar inferencias poblacionales e intervalos de confianza, independientemente de la distribución real de la población. Entonces, ¿por qué seguimos utilizando métodos clásicos de pruebas de hipótesis? La única razón que se me ocurre es cuando hay tamaños de muestra más pequeños. Pero ¿hay alguna otra razón?
Referencias
2 votos
Una pregunta relacionada (cerrada) se encuentra aquí: ¿Es menos importante la estadística en la era de los datos masivos que en los viejos tiempos?. Creo que el tema (por qué no simplemente recopilar más datos) ha surgido en otro lugar también.
10 votos
El teorema del límite central es para los estadísticos, no para la aplicación de estadísticas. Y el bootstrap es un método aproximado; en muchos casos la aproximación no es muy precisa. La gran pregunta es ¿por qué probamos hipótesis en lugar de estimar cantidades de interés?
1 votos
"Como podemos ver, los datos originales claramente no eran normales, pero la distribución para la media de las muestras aleatorias de estos datos no normales parece verse "algo normal"" El histograma no es la distribución para la media de las muestras aleatorias. En cambio, esos valores entre 0.315 y 0.330 son fracciones de las muestras aleatorias que ganan más de 80 mil.
0 votos
La misma pregunta se puede hacer para intervalos de confianza paramétricos vs. bootstrap. Estudios de Monte Carlo indican, sin embargo, que los métodos paramétricos (si son aplicables) tienen mejores probabilidades de cobertura [1]. No lo he probado, pero conjeturo que lo mismo se aplica a las pruebas de hipótesis. Por lo tanto, el bootstrap es más bien una solución de respaldo cuando los métodos paramétricos no son aplicables. [1] ver figs. 7a&8a en lionel.kr.hsnr.de/~dalitz/data/publications/…
6 votos
"El Teorema del Límite Central establece que para cualquier distribución" -- necesita citación. De hecho, el TLC no afirma esto; el TLC tiene hipótesis no triviales. Por ejemplo, el TLC no se aplica a la distribución de Cauchy. Del mismo modo, el TLC no se aplica a otras distribuciones cuyas varianzas no existen.
1 votos
¿Puedes arreglar la indentación del código de ejemplo (por ejemplo, cerca de
for (i in 1:1000) {
) y formatearlo consistentemente? Gracias de antemano por tu amable consideración hacia tus lectores.