1. Introducción

Teorema del Límite Central: Una introducción El Teorema del Límite Central (TLC) es uno de los teoremas fundamentales en la estadística. Este teorema establece que, bajo ciertas condiciones, la distribución de medias muestrales de una variable aleatoria tiende a una distribución normal, también conocida como distribución de Gauss o campana de Gauss, a medida que aumenta el tamaño de la muestra.

En otras palabras, el TLC nos dice que, si tomamos muchas muestras aleatorias de una población con una distribución cualquiera, la distribución de las medias de esas muestras se aproximará a una distribución normal, independientemente de la distribución original de la población.

Este teorema es de gran importancia en la inferencia estadística, ya que nos permite realizar inferencias sobre la población a partir de muestras, incluso cuando no se conoce la distribución de la población.

2. Métodos

Para la solución del ejercicio planteado utilizaremos las siguientes funciones: rbinom() para la creación de las poblaciones propuestas con probabilidades de 50%, 10% y 90% respectivamente options(scipen=999) para evitar la notación científica en los gráficos y en los resultados replicate() para la simulación múltiple de un mismo evento

3. Desarrollo

PUNTO A

Simulación N=100 p = 0.50 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%.

library(tidyverse)
options(scipen=999) #usamos esta sentencia para evitar la notación científica
#Crear la población
set.seed(123)
poblacion_p50 <- rbinom(1000, 1, 0.50)

PUNTO B

Función para obtener una muestra aleatoria (de tamaño 30) y calcular la proporción muestral

calcular_proporcion_muestral <- function(poblacion, n_muestra) {
  
  # Obtener una muestra aleatoria de la población
  muestra <- sample(poblacion, n_muestra)
  
  # Calcular la proporción muestral
  proporcion_muestral <- mean(muestra)
  
  # Retornar la proporción muestral
  return(proporcion_muestral)
}

Ejecuto el modelo UNA vez para UNA muestra de tamaño 30

p_estimada_unaVez <- calcular_proporcion_muestral(poblacion_p50,30)
print(paste("Proporción muestral para UNA muestra de tamaño 30: ",p_estimada_unaVez))
## [1] "Proporción muestral para UNA muestra de tamaño 30:  0.5"

PUNTO C

  • Simular 500 veces para muestras del mismo tamaño del punto anterior
  • Aplicar una función que corra la funcion anterior 500 veces
  • Guardar los datos de las medias para llevarlos a un gráfico de distribución normal
resultados_p50 <- replicate(500, calcular_proporcion_muestral(poblacion_p50,30))

# Calcular la media y la desviación estándar de las proporciones muestrales para validar que son cercanas
print(paste("Media muestral (p=0,50): ", mean(resultados_p50)))  
## [1] "Media muestral (p=0,50):  0.487733333333333"
print(paste("Mediana muestral (p=0,50): ", median(resultados_p50)))
## [1] "Mediana muestral (p=0,50):  0.5"
print(paste("Varianza muestral (p=0,50): ", var(resultados_p50)))
## [1] "Varianza muestral (p=0,50):  0.00794096637719884"

Crea un histograma para Visualizar la distribución de las proporciones muestrales para validar que corresponde con la distribución normal

hist(resultados_p50)

Interpretación de resultados:

Simetría: La distribución de los resultados parece ser simétrica, con una forma similar a una campana. Esto se puede confirmar visualmente con el histograma.

Sesgo: La media del estimador p es cercana al valor real de la proporción de enfermos en la población (50%). Esto indica que el estimador p no está sesgado.

Variabilidad: La desviación estándar del estimador p es relativamente pequeña. Esto indica que la estimación de la proporción de enfermos es bastante precisa.

PUNTO D: p=0.5

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 :shapiro.test()) y métodos gráficos (gráfico de normalidad: qqnorm()). Comente en su informe los resultados obtenidos

# Modificacion para diferentes tamaños de muestra

# Vector de tamaños de muestra
tamanios <- c(5, 10, 15, 20, 30, 50, 60, 100, 200, 500)

tamanios_muestra<- vector("double", length(tamanios))

medias_p50 <- data.frame(
  #iteracion = numeric(0),
  tamanio_muestra = numeric(0),
  proporcion_m = double(0)
)

for (i in 1:length(tamanios)){
  tamanios_muestra[i] = replicate(500, calcular_proporcion_muestral(poblacion_p50,tamanios[i]))
  
  medias_p50 <- rbind(medias_p50, data.frame(
    #iteracion = [i],
    tamanio_muestra = tamanios[i],
    proporcion_m = tamanios_muestra[i]
  ))
}
print(medias_p50)
##    tamanio_muestra proporcion_m
## 1                5    0.6000000
## 2               10    0.4000000
## 3               15    0.4666667
## 4               20    0.3500000
## 5               30    0.3666667
## 6               50    0.5600000
## 7               60    0.5333333
## 8              100    0.5700000
## 9              200    0.4950000
## 10             500    0.5160000
# Función para realizar pruebas de normalidad
prueba_normalidad_p50 <- map(medias_p50, shapiro.test)
print(prueba_normalidad_p50)
## $tamanio_muestra
## 
##  Shapiro-Wilk normality test
## 
## data:  .x[[i]]
## W = 0.65422, p-value = 0.0002467
## 
## 
## $proporcion_m
## 
##  Shapiro-Wilk normality test
## 
## data:  .x[[i]]
## W = 0.92895, p-value = 0.4377

El valor de W indica que la muestra se ajusta razonablemente a una distribución normal. El valor de p-value es mayor que el nivel de significancia usual (0.05). Por lo tanto, no hay evidencia suficiente para rechazar la hipótesis nula de que la muestra proviene de una distribución normal.

PUNTO E p=0.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.

Simulación para lotes con 10% de plantas enfermas

#Crear la población
set.seed(123)
poblacion_p10 <- rbinom(1000, 1, 0.10)

Función para calcular la proporción muestral

calcular_proporcion_muestral_p10 <- function(poblacion_p10, n_muestra) {
  
  # Obtener una muestra aleatoria de la población
  muestra <- sample(poblacion_p10, n_muestra)
  
  # Calcular la proporción muestral
  proporcion_muestral_p10 <- mean(muestra)
  
  # Retornar la proporción muestral
  return(proporcion_muestral_p10)
}
  • Simular 500 veces para muestras de tamaño 30
  • Aplicar una función que corra la funcion anterior 500 veces
  • Guardar los datos de las medias para llevarlos a un gráfico de distribución normal
resultados_p10 <- replicate(500, calcular_proporcion_muestral_p10(poblacion_p10,30))

# Calcular la media y la desviación estándar de las proporciones muestrales para validar que son cercanas
print(paste("Media muestral (p=0.10): ", mean(resultados_p10)))  
## [1] "Media muestral (p=0.10):  0.0902"
print(paste("Mediana muestral (p=0.10): ", median(resultados_p10)))
## [1] "Mediana muestral (p=0.10):  0.1"
print(paste("Varianza muestral (p=0.10): ", var(resultados_p10)))
## [1] "Varianza muestral (p=0.10):  0.00237315074593632"

Crea un histograma para Visualizar la distribución de las proporciones muestrales con probabilidad = 0.10 para validar que corresponde con la distribución normal

hist(resultados_p10)

Interpretación de resultados:

Simetría: La distribución de los resultados parece ser simétrica, con una forma similar a una campana. Esto se puede confirmar visualmente con el histograma.

Sesgo: La media del estimador p es cercana al valor real de la proporción de enfermos en la población (10%). Esto indica que el estimador p no está sesgado.

Variabilidad: La desviación estándar del estimador p es relativamente pequeña. Esto indica que la estimación de la proporción de enfermos es bastante precisa.

PUNTO E: p=0.1 con diferentes tamaños de muestra

Se repiten 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 :shapiro.test()) y métodos gráficos (gráfico de normalidad: qqnorm()). Comente en su informe los resultados obtenidos

# Modificacion para diferentes tamaños de muestra

# Vector de tamaños de muestra
tamanios <- c(5, 10, 15, 20, 30, 50, 60, 100, 200, 500)

tamanios_muestra<- vector("double", length(tamanios))

medias_p10 <- data.frame(
  #iteracion = numeric(0),
  tamanio_muestra = numeric(0),
  proporcion_m = double(0)
)

for (i in 1:length(tamanios)){
  tamanios_muestra[i] = replicate(500, calcular_proporcion_muestral(poblacion_p10,tamanios[i]))
  
  medias_p10 <- rbind(medias_p10, data.frame(
    #iteracion = [i],
    tamanio_muestra = tamanios[i],
    proporcion_m = tamanios_muestra[i]
  ))
}
print(medias_p10)
##    tamanio_muestra proporcion_m
## 1                5   0.00000000
## 2               10   0.30000000
## 3               15   0.13333333
## 4               20   0.00000000
## 5               30   0.16666667
## 6               50   0.08000000
## 7               60   0.06666667
## 8              100   0.08000000
## 9              200   0.09000000
## 10             500   0.09400000
# Función para realizar pruebas de normalidad
prueba_normalidad_p10 <- map(medias_p10, shapiro.test)
print(prueba_normalidad_p10)
## $tamanio_muestra
## 
##  Shapiro-Wilk normality test
## 
## data:  .x[[i]]
## W = 0.65422, p-value = 0.0002467
## 
## 
## $proporcion_m
## 
##  Shapiro-Wilk normality test
## 
## data:  .x[[i]]
## W = 0.87616, p-value = 0.1178

El valor de W indica que la muestra se ajusta razonablemente a una distribución normal. El valor de p-value es mayor que el nivel de significancia usual (0.05). Por lo tanto, no hay evidencia suficiente para rechazar la hipótesis nula de que la muestra proviene de una distribución normal.

PUNTO E: p=0.9

simulación para lotes con 90% de plantas enfermas

#Crear la población
set.seed(123)
poblacion_p90 <- rbinom(1000, 1, 0.90)

Función para calcular la proporción muestral

calcular_proporcion_muestral_p90 <- function(poblacion_p90, n_muestra) {
  
  # Obtener una muestra aleatoria de la población
  muestra <- sample(poblacion_p90, n_muestra)
  
  # Calcular la proporción muestral
  proporcion_muestral_p90 <- mean(muestra)
  
  # Retornar la proporción muestral
  return(proporcion_muestral_p90)
}
  • Simular 500 veces para muestras de tamaño 30
  • Aplicar una función que corra la funcion anterior 500 veces
  • Guardar los datos de las medias para llevarlos a un gráfico de distribución normal
resultados_p90 <- replicate(500, calcular_proporcion_muestral_p90(poblacion_p90,30))

# Calcular la media y la desviación estándar de las proporciones muestrales para validar que son cercanas
print(paste("Media muestral (p=0.90): ", mean(resultados_p90)))  
## [1] "Media muestral (p=0.90):  0.9098"
print(paste("Mediana muestral (p=0.90): ", median(resultados_p90)))
## [1] "Mediana muestral (p=0.90):  0.9"
print(paste("Varianza muestral (p=0.90): ", var(resultados_p90)))
## [1] "Varianza muestral (p=0.90):  0.00237315074593632"

Crea un histograma para Visualizar la distribución de las proporciones muestrales con probabilidad = 0.90 para validar que corresponde con la distribución normal

hist(resultados_p90)

Interpretación de resultados:

Simetría: La distribución de los resultados parece ser simétrica, con una forma similar a una campana. Esto se puede confirmar visualmente con el histograma.

Sesgo: La media del estimador p es cercana al valor real de la proporción de enfermos en la población (90%). Esto indica que el estimador p no está sesgado.

Variabilidad: La desviación estándar del estimador p es relativamente pequeña. Esto indica que la estimación de la proporción de enfermos es bastante precisa.

PUNTO E: p=0.9 con diferentes tamaños de muestra

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 :shapiro.test()) y métodos gráficos (gráfico de normalidad: qqnorm()). Comente en su informe los resultados obtenidos

# Modificacion para diferentes tamaños de muestra

# Vector de tamaños de muestra
tamanios <- c(5, 10, 15, 20, 30, 50, 60, 100, 200, 500)

tamanios_muestra<- vector("double", length(tamanios))

medias_p90 <- data.frame(
  #iteracion = numeric(0),
  tamanio_muestra = numeric(0),
  proporcion_m = double(0)
)

for (i in 1:length(tamanios)){
  tamanios_muestra[i] = replicate(500, calcular_proporcion_muestral(poblacion_p90,tamanios[i]))
  
  medias_p90 <- rbind(medias_p90, data.frame(
    #iteracion = [i],
    tamanio_muestra = tamanios[i],
    proporcion_m = tamanios_muestra[i]
  ))
}
print(medias_p90)
##    tamanio_muestra proporcion_m
## 1                5    1.0000000
## 2               10    0.7000000
## 3               15    0.8666667
## 4               20    1.0000000
## 5               30    0.8333333
## 6               50    0.9200000
## 7               60    0.9333333
## 8              100    0.9200000
## 9              200    0.9100000
## 10             500    0.9060000
# Función para realizar pruebas de normalidad
prueba_normalidad_p90 <- map(medias_p90, shapiro.test)
print(prueba_normalidad_p90)
## $tamanio_muestra
## 
##  Shapiro-Wilk normality test
## 
## data:  .x[[i]]
## W = 0.65422, p-value = 0.0002467
## 
## 
## $proporcion_m
## 
##  Shapiro-Wilk normality test
## 
## data:  .x[[i]]
## W = 0.87616, p-value = 0.1178

El valor de W indica que la muestra se ajusta razonablemente a una distribución normal. El valor de p-value es mayor que el nivel de significancia usual (0.05). Por lo tanto, no hay evidencia suficiente para rechazar la hipótesis nula de que la muestra proviene de una distribución normal.

CONCLUSIONES

Respecto de Distribución de la muestra:

En todas las simulaciones la distribución de la muestra se aproximó a una distribución normal a medida que aumenta el tamaño de la muestra.

A medida que aumentó el tamaño de la muestra, la media de la distribución muestral se aproximó u orbitó muy cerca a la media de la población.

Encontramos que el parámetro muestral no presentó sezgadez pues siempre se mantuvo en un valor muy cercano a la media poblacional.