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.
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
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%.
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"
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"
## [1] "Mediana muestral (p=0,50): 0.5"
## [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
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.
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.
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
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)
}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"
## [1] "Mediana muestral (p=0.10): 0.1"
## [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
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.
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.
simulación para lotes con 90% de plantas enfermas
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)
}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"
## [1] "Mediana muestral (p=0.90): 0.9"
## [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
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.
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.
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.