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:
Simulación:
Genere una función que permita:
Repetir escenario anterior:
Repetir punto b y c:
Repetir puntos a - d
Verificar el Teorema del Límite Central (TLC) a través de simulaciones. Más específicamente, se busca examinar cómo la proporción muestral (pˆ) de individuos enfermos se comporta conforme cambia el tamaño de la muestra y el porcentaje de individuos enfermos en la población original.
Generar una población inicial: La población inicial es un lote de 1,000 individuos (plantas) con el 50% de ellos enfermos. Este paso establece el “universo” o población original desde el cual extraeremos muestras aleatorias en pasos posteriores.
Simulación y estimación de la proporción: Se crea una función que, para un tamaño de muestra n dado, extrae aleatoriamente una muestra de la población y calcula la proporción muestral de individuos enfermos. Este paso permite analizar cómo la proporción muestral se comporta conforme cambiamos el tamaño de la muestra.
Replicación y análisis de la proporción muestral: Repitiendo la simulación 500 veces para un tamaño de muestra n, se examina cómo se distribuyen estas proporciones muestrales. A través de este análisis, se busca entender si las proporciones muestrales son simétricas, si hay algún sesgo, y cómo varía la dispersión de estas proporciones muestrales.
Repetir para diferentes tamaños de muestra: Repetir los pasos 2 y 3 para múltiples tamaños de muestra nos permite examinar cómo el comportamiento de la proporción muestral cambia conforme aumentamos o disminuimos n. Usando pruebas de bondad de ajuste y métodos gráficos, el objetivo es evaluar si las distribuciones de proporciones muestrales convergen hacia una distribución normal, conforme a lo que plantea el TLC.
Variar la proporción en la población original: Repetir la simulación para poblaciones con 10% y 90% de plantas enfermas nos permite examinar cómo el comportamiento de la proporción muestral es afectado cuando cambiamos la proporción de individuos enfermos en la población original.
# 1. Simulación inicial
set.seed(123) # Establecer semilla para reproducibilidad
Lote <- rbinom(1000, 1, 0.5)
df <- data.frame(table(Lote))
ft <- flextable(df)
ft
Lote | Freq |
|---|---|
0 | 507 |
1 | 493 |
En este procedimiento, creamos una población con n=1000 individuos. De estos, el 50% corresponde a plantas enfermas. Utilizamos una distribución binomial con una probabilidad de éxito del 50% para asegurar que, en promedio, la mitad de la población presente la enfermedad.
Muestra Aleatoria y Estimador de Proporción:
# 2. Función de muestra y estimador
obtener_muestra <- function(poblacion, n) {
sample(poblacion, n, replace = FALSE)
}
estimador_proporcion <- function(muestra) {
mean(muestra)
}
Se ha definido dos funciones (obtener_muestra y estimador_proporcion ). Esta función, al recibir como entrada la población y un tamaño de muestra n, realiza dos acciones principales: Extrae una muestra aleatoria de la población utilizando (sample) sin reemplazo y estima la proporción muestral (pˆ) calculando la media (mean) de esta muestra, que refleja la proporción de individuos enfermos. De esta manera, las funciones proporcionan una forma eficiente para analizar la prevalencia de enfermedad en subconjuntos aleatorios de la población.
Repitiendo la simulación 500 veces:
# 3. Repetir escenario b) n = 500 veces
simulacion <- function(poblacion, n, repeticiones = 500) {
estimaciones <- numeric(repeticiones)
for (i in 1:repeticiones) {
muestra <- obtener_muestra(poblacion, n)
estimaciones[i] <- estimador_proporcion(muestra)
}
return(estimaciones)
}
resultados_500 <- simulacion(Lote, 500)
# Análisis de resultados
mean <- mean(resultados_500)
sd <- sd(resultados_500)
skewness <- moments::skewness(resultados_500)
kurtosis <- moments::kurtosis(resultados_500)
df <- data.frame(mean, sd, skewness, kurtosis)
ft <- flextable(df)
ft
mean | sd | skewness | kurtosis |
|---|---|---|---|
0.493944 | 0.01639238 | -0.04162196 | 2.88789 |
# Analizar resultados
hist(resultados_500, main="Histograma de proporciones con n=500", xlab="Proporción", ylab="Frecuencia")
Media (Mean) = 0.493944: La media indica que, en promedio, aproximadamente el 49.39% de las plantas en las muestras tomadas están enfermas. Esto es muy cercano al 50%, lo que sugiere que nuestras muestras están reflejando bien la población general asumiendo que la prevalencia real de la enfermedad es del 50%.
Desviación Estándar (Sd) = 0.01639238: La desviación estándar es una medida de dispersión o variabilidad. Una desviación estándar de 0.0164 (o 1.64%) indica que la mayoría de las proporciones muestrales están dentro de este rango respecto a la media. Dado que este valor es relativamente pequeño, las proporciones muestrales son bastante consistentes y no varían demasiado de una muestra a otra.
Asimetría (Skewness) = -0.04162196: La asimetría mide la simetría (o falta de ella) de la distribución. Un valor cercano a 0 indica que la distribución de las proporciones muestrales es casi simétrica. En este caso, un valor de -0.0416 sugiere una ligera asimetría negativa, lo que significa que hay una pequeña cola hacia el lado izquierdo de la distribución. Sin embargo, este valor es muy cercano a 0, por lo que podemos considerar que la distribución es aproximadamente simétrica.
Curtosis (Kurtosis) = 2.88789: La curtosis mide la “agudeza” o “achatamiento” de la distribución. Una curtosis cercana a 3 (en algunas definiciones, específicamente para una distribución normal) indica una distribución mesocúrtica (similar a la normal). En este caso, 2.88789 está cerca de 3, lo que sugiere que la distribución tiene una forma cercana a la normal, pero ligeramente más achatada en los picos.
Conclusión: Las muestras tomadas para estudiar la prevalencia de plantas enfermas muestran resultados consistentes con lo esperado. La media está cerca del 50%, la variabilidad es baja y la forma de la distribución es casi simétrica y similar a la normal. Estos indicadores sugieren que el muestreo y el análisis han sido efectivos y reflejan de manera precisa la situación en la población general.
Diferentes Tamaños de Muestra:
Muestras n=5 , 10, 15, 20, 30, 50, 60, 100, 200, 500.
# 4. Repetir para diferentes tamaños de muestra
tamaños_muestra <- c(5, 10, 15, 20, 30, 50, 60, 100, 200, 500)
resultados_list <- list()
for (n in tamaños_muestra) {
resultados_list[[as.character(n)]] <- simulacion(Lote, n)
}
# Gráficos de normalidad y pruebas de bondad de ajuste
for (n in tamaños_muestra) {
cat(paste("Resultados para n =", n), "\n")
qqnorm(resultados_list[[as.character(n)]], main=paste("Gráfico Q-Q para n =", n))
qqline(resultados_list[[as.character(n)]])
print(shapiro.test(resultados_list[[as.character(n)]]))
}
## Resultados para n = 5
##
## Shapiro-Wilk normality test
##
## data: resultados_list[[as.character(n)]]
## W = 0.9225, p-value = 2.281e-15
##
## Resultados para n = 10
##
## Shapiro-Wilk normality test
##
## data: resultados_list[[as.character(n)]]
## W = 0.96565, p-value = 2.017e-09
##
## Resultados para n = 15
##
## Shapiro-Wilk normality test
##
## data: resultados_list[[as.character(n)]]
## W = 0.97214, p-value = 3.749e-08
##
## Resultados para n = 20
##
## Shapiro-Wilk normality test
##
## data: resultados_list[[as.character(n)]]
## W = 0.97838, p-value = 9.212e-07
##
## Resultados para n = 30
##
## Shapiro-Wilk normality test
##
## data: resultados_list[[as.character(n)]]
## W = 0.98452, p-value = 3.642e-05
##
## Resultados para n = 50
##
## Shapiro-Wilk normality test
##
## data: resultados_list[[as.character(n)]]
## W = 0.98949, p-value = 0.001197
##
## Resultados para n = 60
##
## Shapiro-Wilk normality test
##
## data: resultados_list[[as.character(n)]]
## W = 0.99039, p-value = 0.002399
##
## Resultados para n = 100
##
## Shapiro-Wilk normality test
##
## data: resultados_list[[as.character(n)]]
## W = 0.99368, p-value = 0.03499
##
## Resultados para n = 200
##
## Shapiro-Wilk normality test
##
## data: resultados_list[[as.character(n)]]
## W = 0.99268, p-value = 0.01519
##
## Resultados para n = 500
##
## Shapiro-Wilk normality test
##
## data: resultados_list[[as.character(n)]]
## W = 0.99617, p-value = 0.2711
Para n=5: Aunque el valor W sugiere una similitud con la normalidad, el valor p extremadamente pequeño indica que la muestra no sigue una distribución normal. Por lo tanto, se debe tener precaución al hacer inferencias basadas en la suposición de normalidad para este tamaño de muestra.
Para n=10: A pesar de que el valor de W se acerca más a 1 en comparación con n=5, el valor p aún es extremadamente pequeño, lo que indica que la muestra no sigue una distribución normal perfecta. Es decir, incluso con un tamaño de muestra mayor, las inferencias basadas en la suposición de normalidad aún deben ser consideradas con cautela para este tamaño de muestra.
Para n=15: El incremento en el valor de W con n=15 sugiere una mayor similitud con la normalidad en comparación con tamaños de muestra más pequeños. Sin embargo, el valor p aún es lo suficientemente pequeño como para indicar que la distribución no es perfectamente normal. A medida que el tamaño de la muestra aumenta, es esperable que los datos se asemejen más a una distribución normal, pero aún con n=15, debemos ser cautelosos al asumir normalidad.
Para n=20: El valor de W continúa acercándose a 1 a medida que el tamaño de la muestra aumenta, indicando una mayor similitud con una distribución normal. Sin embargo, el valor p aún es muy pequeño, por lo que, a pesar de la mejora, no podemos asumir que la distribución sea perfectamente normal. Aunque hay una tendencia hacia la normalidad a medida que el tamaño de la muestra aumenta, aún debemos ser cautelosos al hacer inferencias basadas en la suposición de normalidad para este tamaño de muestra.
Para n=30: A medida que el tamaño de la muestra crece, vemos una mejora continua en la normalidad de la distribución, reflejada en el valor W que se aproxima a 1. Sin embargo, incluso con n=30, el valor p todavía indica una desviación significativa de una distribución perfectamente normal. Aunque la tendencia sugiere que la normalidad mejora a medida que aumenta el tamaño de la muestra, aún debemos proceder con precaución al hacer inferencias basadas en la suposición de normalidad para este tamaño de muestra. Es importante señalar que el Teorema del Límite Central sugiere que para n≥30 la distribución de la proporción muestral tiende a ser normal, y este resultado parece estar en línea con esa afirmación, aunque no perfectamente.
Para n=50: Con un tamaño de muestra de n=50, la distribución de los datos muestra una similitud aún mayor con la normalidad (como se refleja en el valor W que se acerca aún más a 1). Sin embargo, el valor p, aunque ha aumentado significativamente en comparación con los tamaños de muestra más pequeños, sigue indicando que no podemos asumir perfectamente una distribución normal.
Para n=60: Con un tamaño de muestra de n=60, los datos muestran una mayor tendencia hacia la normalidad en comparación con tamaños de muestra más pequeños, como se evidencia en el valor W más cercano a 1. Sin embargo, a pesar de esta mejora, el p-valor todavía sugiere que la distribución no es perfectamente normal.
Para n=100: Con un tamaño de muestra de n=100, los datos muestran una tendencia aún más clara hacia la normalidad. Esto se refleja tanto en el valor W, que está aún más cerca de 1, como en el p-valor, que ha aumentado considerablemente en comparación con tamaños de muestra más pequeños. Aunque el p-valor todavía está por debajo del umbral tradicional de 0.05, está mucho más cerca de ese límite, lo que indica una menor evidencia en contra de la normalidad en comparación con tamaños de muestra más pequeños.
Para n=200: Con un tamaño de muestra de n=200, los datos aún muestran una tendencia hacia la normalidad, como lo indica el valor W cercano a 1. Sin embargo, el p-valor, aunque no es extremadamente bajo, sigue siendo menor que el umbral tradicional de 0.05, lo que indica que la distribución no es perfectamente normal.
Para n=500: Con un tamaño de muestra de n=500, la tendencia hacia una distribución normal es clara y robusta. El valor W está muy cerca de 1, y el p-valor está significativamente por encima del umbral tradicional de 0.05, lo que indica una aceptación de la hipótesis nula de normalidad. Esta observación es coherente con el Teorema del Límite Central, que sugiere que, a medida que el tamaño de la muestra aumenta, la distribución de la proporción muestral tiende a acercarse a una distribución normal, especialmente cuando se parte de distribuciones que no son altamente sesgadas.
Simulación para 10% y 90%:
# 5. Simulación para diferentes porcentajes
porcentajes <- c(0.1, 0.9)
resultados_porcentajes <- list()
for (p in porcentajes) {
Lote <- rbinom(1000, 1, p)
resultados_temp <- list()
for (n in tamaños_muestra) {
resultados_temp[[as.character(n)]] <- simulacion(Lote, n)
}
resultados_porcentajes[[as.character(p*100)]] <- resultados_temp
}
# Analizar resultados por porcentaje
for (p in porcentajes) {
for (n in tamaños_muestra) {
cat(paste("Resultados para n =", n, "y porcentaje =", p*100), "\n")
qqnorm(resultados_porcentajes[[as.character(p*100)]][[as.character(n)]], main=paste("Gráfico Q-Q para n =", n, "y p =", p))
qqline(resultados_porcentajes[[as.character(p*100)]][[as.character(n)]])
print(shapiro.test(resultados_porcentajes[[as.character(p*100)]][[as.character(n)]]))
}
}
## Resultados para n = 5 y porcentaje = 10
##
## Shapiro-Wilk normality test
##
## data: resultados_porcentajes[[as.character(p * 100)]][[as.character(n)]]
## W = 0.71018, p-value < 2.2e-16
##
## Resultados para n = 10 y porcentaje = 10
##
## Shapiro-Wilk normality test
##
## data: resultados_porcentajes[[as.character(p * 100)]][[as.character(n)]]
## W = 0.85538, p-value < 2.2e-16
##
## Resultados para n = 15 y porcentaje = 10
##
## Shapiro-Wilk normality test
##
## data: resultados_porcentajes[[as.character(p * 100)]][[as.character(n)]]
## W = 0.90345, p-value < 2.2e-16
##
## Resultados para n = 20 y porcentaje = 10
##
## Shapiro-Wilk normality test
##
## data: resultados_porcentajes[[as.character(p * 100)]][[as.character(n)]]
## W = 0.93048, p-value = 1.763e-14
##
## Resultados para n = 30 y porcentaje = 10
##
## Shapiro-Wilk normality test
##
## data: resultados_porcentajes[[as.character(p * 100)]][[as.character(n)]]
## W = 0.94621, p-value = 1.695e-12
##
## Resultados para n = 50 y porcentaje = 10
##
## Shapiro-Wilk normality test
##
## data: resultados_porcentajes[[as.character(p * 100)]][[as.character(n)]]
## W = 0.97154, p-value = 2.818e-08
##
## Resultados para n = 60 y porcentaje = 10
##
## Shapiro-Wilk normality test
##
## data: resultados_porcentajes[[as.character(p * 100)]][[as.character(n)]]
## W = 0.9797, p-value = 1.941e-06
##
## Resultados para n = 100 y porcentaje = 10
##
## Shapiro-Wilk normality test
##
## data: resultados_porcentajes[[as.character(p * 100)]][[as.character(n)]]
## W = 0.98617, p-value = 0.0001098
##
## Resultados para n = 200 y porcentaje = 10
##
## Shapiro-Wilk normality test
##
## data: resultados_porcentajes[[as.character(p * 100)]][[as.character(n)]]
## W = 0.98951, p-value = 0.001218
##
## Resultados para n = 500 y porcentaje = 10
##
## Shapiro-Wilk normality test
##
## data: resultados_porcentajes[[as.character(p * 100)]][[as.character(n)]]
## W = 0.99393, p-value = 0.04301
##
## Resultados para n = 5 y porcentaje = 90
##
## Shapiro-Wilk normality test
##
## data: resultados_porcentajes[[as.character(p * 100)]][[as.character(n)]]
## W = 0.68887, p-value < 2.2e-16
##
## Resultados para n = 10 y porcentaje = 90
##
## Shapiro-Wilk normality test
##
## data: resultados_porcentajes[[as.character(p * 100)]][[as.character(n)]]
## W = 0.81915, p-value < 2.2e-16
##
## Resultados para n = 15 y porcentaje = 90
##
## Shapiro-Wilk normality test
##
## data: resultados_porcentajes[[as.character(p * 100)]][[as.character(n)]]
## W = 0.88506, p-value < 2.2e-16
##
## Resultados para n = 20 y porcentaje = 90
##
## Shapiro-Wilk normality test
##
## data: resultados_porcentajes[[as.character(p * 100)]][[as.character(n)]]
## W = 0.91071, p-value < 2.2e-16
##
## Resultados para n = 30 y porcentaje = 90
##
## Shapiro-Wilk normality test
##
## data: resultados_porcentajes[[as.character(p * 100)]][[as.character(n)]]
## W = 0.94057, p-value = 3.003e-13
##
## Resultados para n = 50 y porcentaje = 90
##
## Shapiro-Wilk normality test
##
## data: resultados_porcentajes[[as.character(p * 100)]][[as.character(n)]]
## W = 0.9729, p-value = 5.393e-08
##
## Resultados para n = 60 y porcentaje = 90
##
## Shapiro-Wilk normality test
##
## data: resultados_porcentajes[[as.character(p * 100)]][[as.character(n)]]
## W = 0.97649, p-value = 3.337e-07
##
## Resultados para n = 100 y porcentaje = 90
##
## Shapiro-Wilk normality test
##
## data: resultados_porcentajes[[as.character(p * 100)]][[as.character(n)]]
## W = 0.9852, p-value = 5.697e-05
##
## Resultados para n = 200 y porcentaje = 90
##
## Shapiro-Wilk normality test
##
## data: resultados_porcentajes[[as.character(p * 100)]][[as.character(n)]]
## W = 0.99205, p-value = 0.009045
##
## Resultados para n = 500 y porcentaje = 90
##
## Shapiro-Wilk normality test
##
## data: resultados_porcentajes[[as.character(p * 100)]][[as.character(n)]]
## W = 0.99386, p-value = 0.04061
Porcentaje = 10% A medida que el tamaño de la muestra aumenta de n=500, el valor W se acerca cada vez más a 1, lo que indica que la distribución de la muestra se asemeja más a una distribución normal. Los valores p, por otro lado, están mostrando una tendencia diferente. Para tamaños de muestra más pequeños (n=5,10,15), el p-valor es extremadamente pequeño, lo que indica que debemos rechazar la hipótesis nula de normalidad. Sin embargo, a medida que n aumenta, el p-valor también aumenta, lo que indica una mayor similitud con una distribución normal. Para n=500, el p-valor es 0.04301, todavía significativo al nivel de 0.05, pero menos claro en términos de rechazar la hipótesis nula.
Porcentaje = 90% Similar al caso anterior, a medida que n aumenta, W se acerca a 1. Pero es notable que para los mismos tamaños de muestra, el W es generalmente más bajo para el porcentaje del 90% en comparación con el 10%. Esto puede indicar una distribución menos normal para este porcentaje. Los p-valores siguen siendo extremadamente pequeños para tamaños de muestra menores, y aunque aumentan con tamaños de muestra más grandes, todavía sugieren rechazar la hipótesis nula de normalidad en la mayoría de los casos. Incluso para n=500, con un p-valor de 0.04061, todavía estamos rechazando la hipótesis nula, aunque con menos certeza que con tamaños de muestra más pequeños.
En resumen, para ambos porcentajes, la tendencia es que a medida que el tamaño de muestra aumenta, la distribución de la muestra se asemeja más a una distribución normal. Sin embargo, incluso para tamaños de muestra más grandes, no podemos concluir con certeza que las muestras provienen de una población normalmente distribuida. Aunque ambos porcentajes muestran un aumento en la normalidad con tamaños de muestra más grandes, el porcentaje del 90% parece estar menos normalmente distribuido que el porcentaje del 10% para tamaños de muestra comparables. Es esencial tener en cuenta estas tendencias, especialmente al considerar pruebas estadísticas que asumen la normalidad. Si bien es posible que las muestras más grandes se asemejen más a una distribución normal debido al Teorema del Límite Central, aún debemos ser cautelosos con nuestras inferencias, especialmente con tamaños de muestra más pequeños.