Teorema del Límite Central

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:

  1. Realice una simulación en la cual genere una población de n=1000 (Lote), donde el porcentaje de individuos (supongamos plantas) enfermas sea del 50%.
n_total <- 1000
porcentaje_enfermos <- 0.5
poblacion <- rbinom(n = n_total, size = 1, prob = porcentaje_enfermos)
  1. Genere una función que permita: Obtener una muestra aleatoria de la población y Calcule el estimador de la proporción muestral pˆ para un tamaño de muestra dado n.
# 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)
}
  1. Repita el escenario anterior (b) n=500 veces y analice los resultados en cuanto al comportamiento de los 500 resultados del estimador pˆ. ¿Qué tan simétricos o sesgados son los resultados obtenidos? y ¿qué se puede observar en cuanto a la variabilidad?. Realice en su informe un comentario sobre los resultados obtenidos.
# 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)

  1. Repita los puntos b y c para tamaños de muestra n=5, 10, 15, 20, 30, 50, 60, 100, 200, 500. Compare los resultados obtenidos para los diferentes tamaños de muestra en cuanto a la normalidad. Utilice pruebas de bondad y ajuste (shapiro wilks :shspiro.test()) y métodos gráficos (gráfico de normalidad: qqnorm()). Comente en su informe los resultados obtenidos
# 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"

Análisis

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:

Repetir simulación para lotes 10%

n_total <- 1000
porcentaje_enfermos <- 0.1
poblacion <- rbinom(n = n_total, size = 1, prob = porcentaje_enfermos)
  1. Genere una función que permita: Obtener una muestra aleatoria de la población y Calcule el estimador de la proporción muestral pˆ para un tamaño de muestra dado n.
# 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)
}
  1. Repita el escenario anterior (b) n=500 veces y analice los resultados en cuanto al comportamiento de los 500 resultados del estimador pˆ. ¿Qué tan simétricos o sesgados son los resultados obtenidos? y ¿qué se puede observar en cuanto a la variabilidad?. Realice en su informe un comentario sobre los resultados obtenidos.
# 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)

  1. Repita los puntos b y c para tamaños de muestra n=5, 10, 15, 20, 30, 50, 60, 100, 200, 500. Compare los resultados obtenidos para los diferentes tamaños de muestra en cuanto a la normalidad. Utilice pruebas de bondad y ajuste (shapiro wilks :shspiro.test()) y métodos gráficos (gráfico de normalidad: qqnorm()). Comente en su informe los resultados obtenidos
# 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"

Repetir para lote con 90% plantas enfermas

n_total <- 1000
porcentaje_enfermos <- 0.9
poblacion <- rbinom(n = n_total, size = 1, prob = porcentaje_enfermos)
  1. Genere una función que permita: Obtener una muestra aleatoria de la población y Calcule el estimador de la proporción muestral pˆ para un tamaño de muestra dado n.
# 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)
}
  1. Repita el escenario anterior (b) n=500 veces y analice los resultados en cuanto al comportamiento de los 500 resultados del estimador pˆ. ¿Qué tan simétricos o sesgados son los resultados obtenidos? y ¿qué se puede observar en cuanto a la variabilidad?. Realice en su informe un comentario sobre los resultados obtenidos.
# 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)

  1. Repita los puntos b y c para tamaños de muestra n=5, 10, 15, 20, 30, 50, 60, 100, 200, 500. Compare los resultados obtenidos para los diferentes tamaños de muestra en cuanto a la normalidad. Utilice pruebas de bondad y ajuste (shapiro wilks :shspiro.test()) y métodos gráficos (gráfico de normalidad: qqnorm()). Comente en su informe los resultados obtenidos
# 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"

Análisis general

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.

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.