Introducción

El Teorema del Límite Central, un pilar fundamental en inferencia estadística, establece la convergencia de los estimadores hacia una distribución normal cuando el tamaño de la muestra es lo suficientemente grande. Este teorema es crucial en la comprensión de la estadística y sus aplicaciones, ya que proporciona una base sólida para realizar inferencias sobre parámetros poblacionales a partir de muestras.

En este ejercicio, exploraremos la aplicación del Teorema del Límite Central mediante una simulación que ilustrará su funcionamiento en el contexto de la estimación de proporciones muestrales.

Contrucción de la simulación

PASO 1

Realizamos una simulación en la cual genera una población de n=1000 (Lote), donde el porcentaje de individuos (supongamos plantas) enfermas es del 50%.

datos = rep(c(0,1), each=500)
#datos

PASO 2

Generamos una función que permite obtener una muestra aleatoria de la población y Calcula el estimador de la proporción muestral \(\hat{p}\) para un tamaño de muestra dado n

muestra_aleatoria = function(x, n){
  muestra = sample(x, 10, replace = FALSE)
  return(muestra)
}

muestra_aleatoria(datos, 10)
##  [1] 0 1 0 0 0 1 0 0 1 1

Ahora obtendremos la proporción de plantas enfermas

estimador_proporcion_m = function(x, n){
  muestra = sample(x, n, replace = FALSE)
  proporcion = sum(muestra)/n
  #return(list(muestra,proporcion))
  return(proporcion)
}

rta = estimador_proporcion_m(datos,10) 
print(rta)
## [1] 0.4

PASO 3

Repetimos el escenario anterior con n=500 veces y analizamos los resultados en cuanto al comportamiento de los 500 resultados del estimador \(\hat{p}\) ¿Qué tan simétricos o sesgados son los resultados obtenidos? y ¿qué se puede observar en cuanto a la variabilidad?.

c = numeric(500)
for (i in seq(1,500)){
  c[i] = estimador_proporcion_m(datos,10)
} 
print(c)
##   [1] 0.6 0.4 0.7 0.4 0.7 0.3 0.6 0.8 0.4 0.7 0.2 0.4 0.4 0.3 0.5 0.5 0.7 0.5
##  [19] 0.4 0.3 0.7 0.7 0.5 0.7 0.2 0.2 0.3 0.5 0.8 0.8 0.2 0.5 0.4 0.5 0.4 0.6
##  [37] 0.3 0.3 0.6 0.4 0.7 0.5 0.5 0.5 0.7 0.4 0.4 0.5 0.5 0.6 0.4 0.6 0.4 0.5
##  [55] 0.7 0.6 0.6 0.5 0.5 0.1 0.3 0.5 0.8 0.5 0.9 0.3 0.3 0.5 0.2 0.7 0.9 0.2
##  [73] 0.5 0.7 0.4 0.6 0.6 0.6 0.4 0.5 0.3 0.2 0.5 0.6 0.5 0.5 0.8 0.4 0.6 0.4
##  [91] 0.4 0.8 0.7 0.6 0.6 0.6 0.5 0.6 0.8 0.3 0.6 0.5 0.3 0.5 0.5 0.5 0.5 0.4
## [109] 0.4 0.3 0.3 0.5 0.1 0.5 0.6 0.6 0.6 0.4 0.6 0.4 0.7 0.6 0.6 0.6 0.5 0.5
## [127] 0.7 0.5 0.6 0.5 0.3 0.3 0.2 0.6 0.4 0.4 0.3 0.4 0.6 0.4 0.4 0.4 0.5 0.4
## [145] 0.8 0.3 0.5 0.8 0.5 0.6 0.6 0.4 0.6 0.4 0.5 0.5 0.4 0.7 0.3 0.4 0.7 0.4
## [163] 0.4 0.5 0.4 0.6 0.3 0.7 0.5 0.5 0.4 0.4 0.5 0.5 0.6 0.5 0.5 0.5 0.2 0.4
## [181] 0.3 0.3 0.4 0.5 0.6 0.2 0.4 0.6 0.4 0.4 0.5 0.6 0.5 0.8 0.2 0.5 0.4 0.4
## [199] 0.4 0.2 0.2 0.8 0.5 0.5 0.3 0.5 0.6 0.4 0.3 0.3 0.5 0.4 0.6 0.8 0.7 0.5
## [217] 0.5 0.7 0.4 0.4 0.6 0.2 0.4 0.5 0.5 0.4 0.4 0.6 0.2 0.7 0.5 0.4 0.3 0.5
## [235] 0.7 0.5 0.4 0.4 0.3 0.4 0.7 0.6 1.0 0.6 0.6 0.5 0.3 0.7 0.5 0.5 0.6 0.9
## [253] 0.6 0.8 0.7 0.6 0.3 0.4 0.5 0.5 0.5 0.6 0.5 0.2 0.8 0.5 0.4 0.8 0.3 0.4
## [271] 0.7 0.6 0.9 0.6 0.6 0.4 0.3 0.2 0.5 0.4 0.6 0.4 0.5 0.6 0.5 0.4 0.3 0.5
## [289] 0.6 0.6 0.5 0.4 0.7 0.7 0.5 0.5 0.5 0.4 0.5 0.6 0.5 0.5 0.7 0.5 0.4 0.7
## [307] 0.6 0.5 0.4 0.3 0.3 0.6 0.6 0.8 0.6 0.6 0.7 0.4 0.6 0.6 0.6 0.5 0.3 0.5
## [325] 0.8 0.6 0.4 0.4 0.5 0.5 0.3 0.5 0.5 0.4 0.7 0.3 0.4 0.6 0.5 0.4 0.4 0.7
## [343] 0.2 0.6 0.3 0.5 0.6 0.6 0.8 0.6 0.5 0.4 0.4 0.4 0.4 0.6 0.6 0.4 0.6 0.6
## [361] 0.6 0.7 0.3 0.5 0.7 0.5 0.3 0.8 0.4 0.3 0.4 0.6 0.6 0.6 0.9 0.6 0.2 0.4
## [379] 0.5 0.3 0.6 0.5 0.6 0.6 0.3 0.5 0.4 0.7 0.3 0.4 0.6 0.4 0.3 0.6 0.6 0.4
## [397] 0.7 0.4 0.3 0.6 0.4 0.4 0.6 0.5 0.5 0.8 0.5 0.3 0.5 0.3 0.6 0.2 0.4 0.4
## [415] 0.5 0.3 0.5 0.2 0.5 0.5 0.6 0.6 0.7 0.6 0.4 0.4 0.5 0.7 0.4 0.5 0.3 0.5
## [433] 0.5 0.4 0.3 0.4 0.4 0.7 0.3 0.4 0.5 0.5 0.6 0.5 0.5 0.6 0.4 0.3 0.6 0.5
## [451] 0.6 0.2 0.6 0.6 0.3 0.5 0.1 0.4 0.5 0.7 0.6 0.4 0.4 0.5 0.7 0.3 0.5 0.5
## [469] 0.5 0.4 0.5 0.6 0.4 0.5 0.7 0.3 0.5 0.4 0.6 0.7 0.8 0.3 0.6 0.5 0.6 0.7
## [487] 0.8 0.5 0.7 0.6 0.6 0.4 0.5 0.3 0.7 0.5 0.3 0.5 0.4 0.5

Dibujamos el histograma y la estimacion de la densidad:

hist(c, probability = TRUE, col = 'lightblue', 
     main="Histograma de 500 proporciones muestrales")
# dibujamos los puntos:
rug(c)
lines(density(c), col="red",lwd=2,lty = 3)

par(mfrow=c(1,2))
hist(c, breaks = 11, main = expression(paste("Histograma de la proporcion muestral (", hat(p), ")")), freq = NULL,probability = FALSE, 
     xlab = expression(paste(hat(p))))
lines(density(c))

Realizando el procedimiento de estimación del parametro p a partir de 500 muestras de tamaño 10, si los representamos en una grafica, podemos ver la distribucion de la proporcion muestral, cuyos valores se concentran en el valor entre 0.45 y 0.5

Se puede observar que los datos son muy simetricos, entre mayor sea el numero de muestras para estimaciones de la proporciOn, su distribucion muestral sera cada vez mas simetrica, la variablilidad

boxplot(c, main=expression(paste("Boxplot de estimaciones muestrales (", hat(p), ")")), 
        ylab=expression(paste(hat(p))))

En el boxplot se logra identificar algunos valores atipicos de estimaciones de la proporción, no obstante los datos se estàn distribuyendo alrededor de un valor de 0.5 lo cual podrá significar una varianza pequeña.

PASO 4

Repetimos los pasos 2 y 3 para tamaños de muestra n=5,10,15,20,30,50,60,100,200,500. Comparamos los resultados obtenidos para los diferentes tamaños de muestra en cuanto a la normalidad. Utilizaremos pruebas de bondad y ajuste (shapiro wilks :shspiro.test()) y métodos gráficos (grafico de normalidad: qqnorm()).

Considerando el diseño de la funcion “estimador_proporcion_m”, se generan 500 muestras de tamaño 5, 10,15,20,30,50,60,100,200,500 y se colocan en un dataframe

genera_500_muestras_tam_n <- function(m, datos){
  c <- numeric(500)
  for (i in seq(1, 500)) {
    c[i] <- estimador_proporcion_m(datos, m)
  } 
  return(c)
}

n005   <- genera_500_muestras_tam_n(5, datos)
n010  <- genera_500_muestras_tam_n(10, datos)
n015  <- genera_500_muestras_tam_n(15, datos)
n020  <- genera_500_muestras_tam_n(20, datos)
n030  <- genera_500_muestras_tam_n(30, datos)
n050  <- genera_500_muestras_tam_n(50, datos)
n060  <- genera_500_muestras_tam_n(60, datos)
n100 <- genera_500_muestras_tam_n(100, datos)
n200 <- genera_500_muestras_tam_n(200, datos)
n500 <- genera_500_muestras_tam_n(500, datos)

d <- data.frame(n005, n010, n015, n020, n030, n050, n060, n100, n200, n500)

# Utilizando pivot_longer en lugar de gather
library(tidyr)

datos_long <- pivot_longer(data = d, cols = everything(), names_to = "Muestra", values_to = "Valor")

# Graficando
library(ggplot2)

ggplot(data = datos_long, aes(x = Muestra, y = Valor)) +
  geom_boxplot(color = "blue") +
  labs(title = expression(paste("Boxplot de estimaciones muestrales (", hat(p), ") en diferentes muestras")),
       x = "Muestras", y = expression(paste(hat(p))))

En la gafica de boxplot se logra observar las estimaciones muestrales de la proporciÒn, se observa que a medida que aumenta el tamaño de muestras, las distribuciones de la proporcion muestral tiende a acercarse a 0.5 y su variablididad disminuye, (vease el boxplot para n010 y n200) donde el 50% de datos (representacion de la caja) tiende a agruparse mucho màs.

shapiro_results <- sapply(d, shapiro.test)
shapiro_results
##           n005                          n010                         
## statistic 0.9272898                     0.9625927                    
## p.value   7.644402e-15                  5.735726e-10                 
## method    "Shapiro-Wilk normality test" "Shapiro-Wilk normality test"
## data.name "X[[i]]"                      "X[[i]]"                     
##           n015                          n020                         
## statistic 0.9758822                     0.9812999                    
## p.value   2.422244e-07                  4.917088e-06                 
## method    "Shapiro-Wilk normality test" "Shapiro-Wilk normality test"
## data.name "X[[i]]"                      "X[[i]]"                     
##           n030                          n050                         
## statistic 0.9860714                     0.9899818                    
## p.value   0.0001025511                  0.001747438                  
## method    "Shapiro-Wilk normality test" "Shapiro-Wilk normality test"
## data.name "X[[i]]"                      "X[[i]]"                     
##           n060                          n100                         
## statistic 0.9912438                     0.994904                     
## p.value   0.004704327                   0.09755547                   
## method    "Shapiro-Wilk normality test" "Shapiro-Wilk normality test"
## data.name "X[[i]]"                      "X[[i]]"                     
##           n200                          n500                         
## statistic 0.9943084                     0.9921162                    
## p.value   0.05922422                    0.009525527                  
## method    "Shapiro-Wilk normality test" "Shapiro-Wilk normality test"
## data.name "X[[i]]"                      "X[[i]]"

Cuando el valor p es menor que el nivel de significancia (por ejemplo, 0.05), generalmente se rechaza la hipótesis nula de normalidad. En otras palabras, si el valor p es menor que 0.05, se considera que los datos no siguen una distribución normal. Si el valor p es mayor que el nivel de significancia, no hay suficiente evidencia para rechazar la hipótesis nula, y se puede considerar que los datos siguen una distribución normal. Con base en los resultados proporcionados:

Para n005, n010, n015, n020, n030, n050, n060, n100, todos los valores p son mucho menores que 0.05, lo que sugiere que hay evidencia suficiente para rechazar la hipótesis nula de normalidad en todas estas muestras. Por lo tanto, se puede concluir que estas muestras no siguen una distribución normal.

Sin embargo, es importante tener en cuenta que el supuesto de normalidad en las pruebas de Shapiro depende del tamaño de la muestra. Con tamaños de muestra más grandes, por ejemplo en n200, n500 la prueba puede ser más sensible para detectar desviaciones de la normalidad, incluso si las diferencias son mínimas desde el punto de vista práctico. Por lo tanto, se debe considerar el contexto específico del análisis al interpretar los resultados de las pruebas de normalidad.

# Cargando el paquete car para usar la función qqPlot
library(car)
## Loading required package: carData
# Definición de los parámetros mfrow
par(mfrow=c(2,3))

# Gráficos QQ para los diferentes tamaños de muestra
qqPlot(n005, main = "qq-plot para n=5", xlab = "Cuantiles teóricos", ylab = "Cuantiles de muestra")
## [1]  62 189
qqPlot(n010, main = "qq-plot para n=10", xlab = "Cuantiles teóricos", ylab = "Cuantiles de muestra")
## [1] 312 316
qqPlot(n015, main = "qq-plot para n=15", xlab = "Cuantiles teóricos", ylab = "Cuantiles de muestra")
## [1]  62 114
qqPlot(n020, main = "qq-plot para n=20", xlab = "Cuantiles teóricos", ylab = "Cuantiles de muestra")
## [1] 196 328
qqPlot(n030, main = "qq-plot para n=30", xlab = "Cuantiles teóricos", ylab = "Cuantiles de muestra")
## [1] 336 286
qqPlot(n050, main = "qq-plot para n=50", xlab = "Cuantiles teóricos", ylab = "Cuantiles de muestra")

## [1] 126 131
# Nueva configuración de parámetros mfrow
par(mfrow=c(2,3))

# Gráficos QQ para los siguientes tamaños de muestra
qqPlot(n060, main = "qq-plot para n=60", xlab = "Cuantiles teóricos", ylab = "Cuantiles de muestra")
## [1] 441 486
qqPlot(n100, main = "qq-plot para n=100", xlab = "Cuantiles teóricos", ylab = "Cuantiles de muestra")
## [1] 121 254
qqPlot(n200, main = "qq-plot para n=200", xlab = "Cuantiles teóricos", ylab = "Cuantiles de muestra")
## [1]  49 189
qqPlot(n500, main = "qq-plot para n=500", xlab = "Cuantiles teóricos", ylab = "Cuantiles de muestra")
## [1] 217 232

Realizamos gráficos QQ (Quantile-Quantile) para evaluar si los datos de las muestras siguen una distribución normal. Un gráfico QQ compara los cuantiles de la muestra con los cuantiles teóricos de una distribución de referencia (en este caso, la distribución normal). Si los puntos en el gráfico QQ siguen aproximadamente una línea recta, indica que los datos de la muestra son consistentes con una distribución normal.

Por lo tanto, al observar los gráficos QQ, podemos concluir lo siguiente:

Si los puntos en el gráfico QQ están muy cerca de la línea diagonal, esto sugiere que los datos de la muestra siguen una distribución normal. Si los puntos se desvían significativamente de la línea diagonal, esto indica que los datos de la muestra pueden no seguir una distribución normal. En este caso específico, para cada tamaño de muestra, se observa si los puntos en los gráficos QQ se ajustan a la línea diagonal, lo que proporcionará información sobre la normalidad de los datos de la muestra. Si los puntos están dispersos alrededor de la línea diagonal y no siguen un patrón claro, puede haber indicios de que los datos no siguen una distribución normal.

PASO 5

Repetimos toda la simulaciòn (pasos anteriores), pero ahora para lotes con 10% de plantas enfermas y de nuevo para lotes con un 90% de plantas enfermas.

1

Para lotes con el 10% de plantas enfermas:

datos2 = rep(c(0,1), each=500)
datos2 <- rbinom(500, 1, 0.1)
#datos2

genera_500_muestras_tam_n = function(m){
  c = numeric(500)
  for (i in seq(1,500)){
    c[i] = estimador_proporcion_m(datos2,m)
  } 
  return(c)
}

n005  =genera_500_muestras_tam_n(5)
n010 =genera_500_muestras_tam_n(10)
n015 =genera_500_muestras_tam_n(15)
n020 =genera_500_muestras_tam_n(20)
n030 =genera_500_muestras_tam_n(30)
n050 =genera_500_muestras_tam_n(50)
n060 =genera_500_muestras_tam_n(60)
n100=genera_500_muestras_tam_n(100)
n200=genera_500_muestras_tam_n(200)
n500=genera_500_muestras_tam_n(500)


d<-cbind(n005,n010, n015, n020, n030, n050, n060, n100, n200, n500)
d<-data.frame(d)
datos_long<-gather(data = d, key = "Muestra", value = "Valor")
ggplot(data = datos_long, aes(x = Muestra, y = Valor)) +
  geom_boxplot(color = "blue") +
  labs(title = expression(paste("Boxplot de estimaciones muestrales (", hat(p), ") diferentes muestras")),
       x = "Muestras", y = expression(paste( hat(p))))

2

Para lotes con el 90% de plantas enfermas

datos3 = rep(c(0,1), each=500)
datos3= datos <- rbinom(500, 1, 0.9)

genera_500_muestras_tam_n = function(m){
  c = numeric(500)
  for (i in seq(1,500)){
    c[i] = estimador_proporcion_m(datos3,m)
  } 
  return(c)
}

n005  =genera_500_muestras_tam_n(5)
n010 =genera_500_muestras_tam_n(10)
n015 =genera_500_muestras_tam_n(15)
n020 =genera_500_muestras_tam_n(20)
n030 =genera_500_muestras_tam_n(30)
n050 =genera_500_muestras_tam_n(50)
n060 =genera_500_muestras_tam_n(60)
n100=genera_500_muestras_tam_n(100)
n200=genera_500_muestras_tam_n(200)
n500=genera_500_muestras_tam_n(500)

require(tidyr)  #para usar la funcion gather
d<-cbind(n005,n010, n015, n020, n030, n050, n060, n100, n200, n500)
d<-data.frame(d)
datos_long<-gather(data = d, key = "Muestra", value = "Valor")
ggplot(data = datos_long, aes(x = Muestra, y = Valor)) +
  geom_boxplot(color = "blue") +
  labs(title = expression(paste("Boxplot de estimaciones muestrales (", hat(p), ") diferentes muestras")),
       x = "Muestras", y = expression(paste( hat(p))))

Conclusión

Observamos que, conforme aumenta el tamaño de la muestra, los estimadores de proporción muestral tienden a distribuirse de manera más simétrica alrededor del verdadero valor de la proporción poblacional. Esto es consistente con lo que establece el Teorema del Límite Central, donde se espera que los estimadores se aproximen a una distribución normal a medida que el tamaño de la muestra aumenta.

Ademas observamos que para tamaños de muestra pequeños, los estimadores pueden ser sesgados y presentar una alta variabilidad, especialmente cuando la proporción poblacional es cercana a los extremos (10% o 90%). Sin embargo, a medida que el tamaño de la muestra aumenta, tanto el sesgo como la variabilidad tienden a disminuir, lo que indica una mayor precisión en la estimación.

Por ultimo mediante pruebas de bondad de ajuste y métodos gráficos, se comprueba que, para tamaños de muestra suficientemente grandes, los estimadores de proporción muestral se ajustan a una distribución normal. Esto confirma la validez del Teorema del Límite Central en el contexto de este ejercicio.

Este ejercicio demuestra la importancia del Teorema del Límite Central en la inferencia estadística y cómo el tamaño de la muestra y la distribución de la población influyen en la precisión y la distribución de los estimadores de proporción muestral. Además, resalta la necesidad de considerar el tamaño de la muestra y la naturaleza de la población al realizar inferencias estadísticas.