El Teorema del Límite Central es uno de los más importantes en la inferencia estadística y habla sobre la convergencia de los estimadores como la proporción muestral a la distribución normal. Algunos autores afirman que esta aproximación es bastante buena a partir del umbral n>30.
A continuación se describen los siguientes pasos para su verificación:
n_total <- 1000
porcentaje_enfermos <- 0.5
poblacion <- rbinom(n = n_total, size = 1, prob = porcentaje_enfermos)
# Función para obtener una muestra y calcular p_hat
obtener_muestra_y_calcular_phat <- function(tamano_muestra) {
muestra <- sample(poblacion, tamano_muestra, replace = TRUE)
p_hat <- mean(muestra)
return(p_hat)
}
# Repetir el proceso 500 veces para un tamaño de muestra dado
repeticiones <- 500
tamano_muestra <- 300 # arbitrario
# Sapply para aplicar la función 500 veces
p_hats <- sapply(1:repeticiones, function(x) obtener_muestra_y_calcular_phat(tamano_muestra))
# Análisis de los resultados
hist(p_hats, main = "Distribución de p_hat para n=30", xlab = "p_hat", breaks = 10)
# Tamaños de muestra a probar
tamanos_muestra <- c(5, 10, 15, 20, 30, 50, 60, 100, 200, 500)
# Función para realizar análisis para un tamaño de muestra
analizar_muestra <- function(tamano_muestra) {
p_hats <- sapply(1:repeticiones, function(x) obtener_muestra_y_calcular_phat(tamano_muestra))
par(mfrow=c(1,2))
hist(p_hats, main = paste("Distribución de p_hat para n=", tamano_muestra), xlab = "p_hat")
qqnorm(p_hats, main = paste("QQ Plot para n=", tamano_muestra))
qqline(p_hats)
shapiro.test(p_hats)
}
# Aplicar análisis a cada tamaño de muestra
sapply(tamanos_muestra, analizar_muestra)
## [,1] [,2]
## statistic 0.9292728 0.9669423
## p.value 1.281965e-14 3.512712e-09
## method "Shapiro-Wilk normality test" "Shapiro-Wilk normality test"
## data.name "p_hats" "p_hats"
## [,3] [,4]
## statistic 0.9766893 0.9818303
## p.value 3.700043e-07 6.756574e-06
## method "Shapiro-Wilk normality test" "Shapiro-Wilk normality test"
## data.name "p_hats" "p_hats"
## [,5] [,6]
## statistic 0.9841178 0.9895278
## p.value 2.810653e-05 0.001234872
## method "Shapiro-Wilk normality test" "Shapiro-Wilk normality test"
## data.name "p_hats" "p_hats"
## [,7] [,8]
## statistic 0.9846198 0.9948389
## p.value 3.891878e-05 0.09240083
## method "Shapiro-Wilk normality test" "Shapiro-Wilk normality test"
## data.name "p_hats" "p_hats"
## [,9] [,10]
## statistic 0.9948147 0.9962621
## p.value 0.09054995 0.2909465
## method "Shapiro-Wilk normality test" "Shapiro-Wilk normality test"
## data.name "p_hats" "p_hats"
Al realizar la simulación con tamaños de muestra variados para una población con un 50% de plantas enfermas, observamos los siguientes resultados para el tamaño de muestra de n=30:
Media: 0.5012, lo que sugiere que, en promedio, la proporción estimada de plantas enfermas (pp) es muy cercana al verdadero valor poblacional (0.5), indicando insesgadez en el estimador para este tamaño de muestra.
Mediana: 0.5, lo cual está en línea con la media y refuerza la idea de que el estimador está centrado alrededor del verdadero valor de la proporción.
Sesgo: -0.1689, un sesgo ligeramente negativo, pero relativamente cercano a 0, lo que indica que la distribución de pp no está marcadamente sesgada.
Kurtosis: -0.1698, sugiere que la distribución de pp tiene una cola ligeramente menos pronunciada que la de una distribución normal, indicando una ligera platocurticidad.
Valor P de la prueba Shapiro-Wilk: <0.05, lo que indica una evidencia significativa contra la hipótesis nula de normalidad para la distribución de p^ con este tamaño de muestra.
n_total <- 1000
porcentaje_enfermos <- 0.1
poblacion <- rbinom(n = n_total, size = 1, prob = porcentaje_enfermos)
# Función para obtener una muestra y calcular p_hat
obtener_muestra_y_calcular_phat <- function(tamano_muestra) {
muestra <- sample(poblacion, tamano_muestra, replace = TRUE)
p_hat <- mean(muestra)
return(p_hat)
}
# Repetir el proceso 500 veces para un tamaño de muestra dado
repeticiones <- 500
tamano_muestra <- 30 # Arbitrario
# Usamos sapply para aplicar nuestra función 500 veces
p_hats <- sapply(1:repeticiones, function(x) obtener_muestra_y_calcular_phat(tamano_muestra))
# Análisis básico de los resultados
hist(p_hats, main = "Distribución de p_hat para n=30", xlab = "p_hat", breaks = 10)
# Tamaños de muestra a probar
tamanos_muestra <- c(5, 10, 15, 20, 30, 50, 60, 100, 200, 500)
# Función para realizar análisis para un tamaño de muestra
analizar_muestra <- function(tamano_muestra) {
p_hats <- sapply(1:repeticiones, function(x) obtener_muestra_y_calcular_phat(tamano_muestra))
par(mfrow=c(1,2))
hist(p_hats, main = paste("Distribución de p_hat para n=", tamano_muestra), xlab = "p_hat")
qqnorm(p_hats, main = paste("QQ Plot para n=", tamano_muestra))
qqline(p_hats)
shapiro.test(p_hats)
}
# Aplicar análisis a cada tamaño de muestra
sapply(tamanos_muestra, analizar_muestra)
## [,1] [,2]
## statistic 0.709265 0.8518541
## p.value 1.588287e-28 2.835287e-21
## method "Shapiro-Wilk normality test" "Shapiro-Wilk normality test"
## data.name "p_hats" "p_hats"
## [,3] [,4]
## statistic 0.9033156 0.9359391
## p.value 2.878049e-17 7.875805e-14
## method "Shapiro-Wilk normality test" "Shapiro-Wilk normality test"
## data.name "p_hats" "p_hats"
## [,5] [,6]
## statistic 0.9516193 0.9717569
## p.value 1.001452e-11 3.11719e-08
## method "Shapiro-Wilk normality test" "Shapiro-Wilk normality test"
## data.name "p_hats" "p_hats"
## [,7] [,8]
## statistic 0.9771297 0.9832853
## p.value 4.678343e-07 1.655281e-05
## method "Shapiro-Wilk normality test" "Shapiro-Wilk normality test"
## data.name "p_hats" "p_hats"
## [,9] [,10]
## statistic 0.9935581 0.9945233
## p.value 0.03151471 0.07094199
## method "Shapiro-Wilk normality test" "Shapiro-Wilk normality test"
## data.name "p_hats" "p_hats"
n_total <- 1000
porcentaje_enfermos <- 0.9
poblacion <- rbinom(n = n_total, size = 1, prob = porcentaje_enfermos)
# Función para obtener una muestra y calcular p_hat
obtener_muestra_y_calcular_phat <- function(tamano_muestra) {
muestra <- sample(poblacion, tamano_muestra, replace = TRUE)
p_hat <- mean(muestra)
return(p_hat)
}
# Repetir el proceso 500 veces para un tamaño de muestra dado
repeticiones <- 500
tamano_muestra <- 30 # Arbitrario
# Usamos sapply para aplicar nuestra función 500 veces
p_hats <- sapply(1:repeticiones, function(x) obtener_muestra_y_calcular_phat(tamano_muestra))
# Análisis básico de los resultados
hist(p_hats, main = "Distribución de p_hat para n=30", xlab = "p_hat", breaks = 10)
# Tamaños de muestra a probar
tamanos_muestra <- c(5, 10, 15, 20, 30, 50, 60, 100, 200, 500)
# Función para realizar análisis para un tamaño de muestra
analizar_muestra <- function(tamano_muestra) {
p_hats <- sapply(1:repeticiones, function(x) obtener_muestra_y_calcular_phat(tamano_muestra))
par(mfrow=c(1,2))
hist(p_hats, main = paste("Distribución de p_hat para n=", tamano_muestra), xlab = "p_hat")
qqnorm(p_hats, main = paste("QQ Plot para n=", tamano_muestra))
qqline(p_hats)
shapiro.test(p_hats)
}
# Aplicar análisis a cada tamaño de muestra
sapply(tamanos_muestra, analizar_muestra)
## [,1] [,2]
## statistic 0.7150793 0.8391524
## p.value 2.720451e-28 4.249685e-22
## method "Shapiro-Wilk normality test" "Shapiro-Wilk normality test"
## data.name "p_hats" "p_hats"
## [,3] [,4]
## statistic 0.8914462 0.9306302
## p.value 2.609805e-18 1.837059e-14
## method "Shapiro-Wilk normality test" "Shapiro-Wilk normality test"
## data.name "p_hats" "p_hats"
## [,5] [,6]
## statistic 0.9480195 0.9666236
## p.value 3.027883e-12 3.061185e-09
## method "Shapiro-Wilk normality test" "Shapiro-Wilk normality test"
## data.name "p_hats" "p_hats"
## [,7] [,8]
## statistic 0.9714263 0.9848046
## p.value 2.66533e-08 4.392596e-05
## method "Shapiro-Wilk normality test" "Shapiro-Wilk normality test"
## data.name "p_hats" "p_hats"
## [,9] [,10]
## statistic 0.992686 0.9957299
## p.value 0.01522445 0.1919881
## method "Shapiro-Wilk normality test" "Shapiro-Wilk normality test"
## data.name "p_hats" "p_hats"
Las simulaciones y los análisis gráficos (histogramas y QQ plots) para los diferentes tamaños de muestra muestran cómo el Teorema del Límite Central se manifiesta en la práctica. A medida que el tamaño de muestra aumenta, especialmente al superar el umbral de n>30, la distribución de la proporción muestral p^ tiende a parecerse más a una distribución normal, en línea con las predicciones del Teorema del Límite Central. Este comportamiento es evidente a pesar de las variaciones naturales debido al azar en las simulaciones.
Para tamaños de muestra pequeños (n=5,10,15n=5,10,15), es probable que veamos distribuciones de p^ que no se ajusten bien a una distribución normal, reflejado tanto en los valores P de Shapiro-Wilk como en las desviaciones visibles en los QQ plots.
A medida que el tamaño de muestra aumenta (n=20,30,50,…n=20,30,50,…), la simetría y la conformidad con la distribución normal mejoran, lo cual es evidenciado en los análisis gráficos y los valores P de las pruebas de normalidad, a pesar de que algunos tamaños de muestra puedan todavía mostrar evidencia de desviaciones de la normalidad.
Al alcanzar y superar n=30, se espera que la aproximación a la normalidad sea bastante buena, aunque la prueba de Shapiro-Wilk todavía puede indicar desviaciones significativas de la normalidad en ciertos casos, debido a la sensibilidad de la prueba y las particularidades de cada conjunto de simulaciones.
Este ejercicio demuestra la importancia crítica del Teorema del Límite Central en la inferencia estadística y cómo el tamaño de la muestra afecta la distribución de un estimador, con implicaciones significativas para la interpretación de resultados y la realización de pruebas estadísticas.
Note that the echo = FALSE parameter was added to the
code chunk to prevent printing of the R code that generated the
plot.