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 𝑛>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 𝑛=1000 (Lote), donde el porcentaje de individuos (supongamos plantas) enfermas sea del 50%.
set.seed(123)
n_poblacion <- 1000
p_enfermas <- 0.5

# Simulando la población
poblacion <- rbinom(n_poblacion, 1, p_enfermas)
  1. Genere una función que permita: Obtener una muestra aleatoria de la población y Calcule el estimador de la proporción muestral 𝑝ˆ para un tamaño de muestra dado 𝑛.
calcular_proporcion <- function(n_muestra) {
  muestra <- sample(poblacion, n_muestra, replace = TRUE)
  p_sombrero <- mean(muestra)
  return(p_sombrero)
}
  1. Repita el escenario anterior (b) 𝑛=500 veces y analice los resultados en cuanto al comportamiento de los 500 resultados del estimador 𝑝ˆ. ¿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.
n_muestra <- 500
n_repeticiones <- 500

# Repetir la muestra y calcular p_sombrero 500 veces
proporciones <- replicate(n_repeticiones, calcular_proporcion(n_muestra))

# Analizar resultados: simetría, sesgo y variabilidad
summary(proporciones)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.4260  0.4780  0.4950  0.4947  0.5120  0.5540
hist(proporciones, main = "Distribución de Proporciones Muestrales", xlab = "p_sombrero", breaks = 20)

  1. Repita los puntos b y c para tamaños de muestra 𝑛=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
library(knitr)
library(kableExtra)
library(DT)
tamanos_muestra <- c(5, 10, 15, 20, 30, 50, 60, 100, 200, 500)

resultados <- lapply(tamanos_muestra, function(n) {
  proporciones <- replicate(n_repeticiones, calcular_proporcion(n))
  shapiro_test <- shapiro.test(proporciones)
  qqnorm(proporciones, main = paste("Q-Q Gráfica para n =", n))
  qqline(proporciones, col = "red")
  
  list(
    n = n,
    media = round(mean(proporciones),6),
    varianza = round(var(proporciones),6),
    shapiro_p_value = shapiro_test$p.value
  )
})

# Convertir los resultados a un data frame para análisis
resultados_df <- do.call(rbind, lapply(resultados, as.data.frame))
##print(resultados_df)

datatable(resultados_df, 
          options = list(pageLength = 10, 
                         autoWidth = TRUE),
          caption = 'para diferentes tamaños de muestra')

Conclusión:

  1. Repita toda la simulación (puntos a – d), pero ahora para lotes con 10% de plantas enfermas y de nuevo para lotes con un 90% de plantas enfermas. Concluya sobre los resultados del ejercicio.

para lotes con 10% de plantas enfermas

set.seed(123)
n_poblacion10 <- 1000
p_enfermas10 <- 0.1

# Simulando la población
poblacion10 <- rbinom(n_poblacion, 1, p_enfermas)

calcular_proporcion10 <- function(n_muestra) {
  muestra <- sample(poblacion, n_muestra, replace = TRUE)
  p_sombrero <- mean(muestra)
  return(p_sombrero)
}

n_muestra10 <- 500
n_repeticiones10 <- 500

# Repetir la muestra y calcular p_sombrero 500 veces
proporciones10 <- replicate(n_repeticiones, calcular_proporcion(n_muestra))

# Analizar resultados: simetría, sesgo y variabilidad
summary(proporciones10)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.4260  0.4780  0.4950  0.4947  0.5120  0.5540
hist(proporciones10, main = "Distribución de Proporciones Muestrales con 10% enfermas", xlab = "p_sombrero", breaks = 20)

library(knitr)
library(kableExtra)
library(DT)
tamanos_muestra10 <- c(5, 10, 15, 20, 30, 50, 60, 100, 200, 500)

resultados10 <- lapply(tamanos_muestra10, function(n) {
  proporciones10 <- replicate(n_repeticiones10, calcular_proporcion10(n))
  shapiro_test10 <- shapiro.test(proporciones10)
  qqnorm(proporciones10, main = paste("Q-Q Gráfica para (10% enfermas) n =", n))
  qqline(proporciones10, col = "red")
  
  list(
    n = n,
    media = round(mean(proporciones10),6),
    varianza = round(var(proporciones10),6),
    shapiro_p_value10 = shapiro_test10$p.value
  )
})

# Convertir los resultados a un data frame para análisis
resultados_df10 <- do.call(rbind, lapply(resultados10, as.data.frame))
##print(resultados_df)

datatable(resultados_df10, 
          options = list(pageLength = 10, 
                         autoWidth = TRUE),
          caption = 'para diferentes tamaños de muestra')

para lotes con 90% de plantas enfermas

set.seed(123)
n_poblacion90 <- 1000
p_enfermas90 <- 0.1

# Simulando la población
poblacion90 <- rbinom(n_poblacion, 1, p_enfermas)

calcular_proporcion90 <- function(n_muestra) {
  muestra <- sample(poblacion, n_muestra, replace = TRUE)
  p_sombrero <- mean(muestra)
  return(p_sombrero)
}

n_muestra90 <- 500
n_repeticiones90 <- 500

# Repetir la muestra y calcular p_sombrero 500 veces
proporciones90 <- replicate(n_repeticiones, calcular_proporcion(n_muestra))

# Analizar resultados: simetría, sesgo y variabilidad
summary(proporciones10)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.4260  0.4780  0.4950  0.4947  0.5120  0.5540
hist(proporciones90, main = "Distribución de Proporciones Muestrales con 10% enfermas", xlab = "p_sombrero", breaks = 20)

library(knitr)
library(kableExtra)
library(DT)
tamanos_muestra90 <- c(5, 10, 15, 20, 30, 50, 60, 100, 200, 500)

resultados90 <- lapply(tamanos_muestra10, function(n) {
  proporciones90 <- replicate(n_repeticiones90, calcular_proporcion90(n))
  shapiro_test90 <- shapiro.test(proporciones90)
  qqnorm(proporciones90, main = paste("Q-Q Gráfica para (10% enfermas) n =", n))
  qqline(proporciones90, col = "red")
  
  list(
    n = n,
    media = round(mean(proporciones90),6),
    varianza = round(var(proporciones90),6),
    shapiro_p_value90 = shapiro_test90$p.value
  )
})

# Convertir los resultados a un data frame para análisis
resultados_df90 <- do.call(rbind, lapply(resultados90, as.data.frame))
##print(resultados_df)

datatable(resultados_df90, 
          options = list(pageLength = 10, 
                         autoWidth = TRUE),
          caption = 'para diferentes tamaños de muestra')

Conclusión

Mediana:

El estimador es insesgado en los tres casos , proporciona una media cercana al verdedero porcentaje de plantas enfermas, sin importar si el % es alto medio o bajo.

Varianza:

A medida que la proporciòn de enfermas se aleja del 50% (10 op 90%), la varianza de las proporciones muestrales tes mayor para muestras pequeñas. Sin embargo, la varianza disminuye a medida que los tamaños de las muestras aumenta. Esto es coherente con el teorema del límite central.

Normalidad:

El Teorema de límite central es válido para todos los casos. La distribución es normal cuando el tamaño de la muestra es grande independientemente de la proporción de plantas enfermas. Aclarando que para muestras pequeñas, la normalidad no se logra.