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:
a. 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%.
set.seed(123) # Establecemos seed
n <- 1000 # Tamaño de la población
p_plantas_enfermas <- 0.5 # Porcentaje de plantas enfermas (50%)
poblacion <- rbinom(n = n, size = 1, prob = p_plantas_enfermas) # población de plantas enfermos
print(poblacion)
## [1] 0 1 0 1 1 0 1 1 1 0 1 0 1 1 0 1 0 0 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 0 0 1
## [38] 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 1 0 1 0 0 0 1 0 1 1 1 0 1 1 1 0
## [75] 0 0 0 1 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 0 1 0 0 1 1 0 0 1 0 1 1 1 0 0 1
## [112] 0 0 1 1 0 1 1 1 0 1 0 0 0 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 0 0 0
## [149] 0 1 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 0 1 0 1
## [186] 0 0 1 1 1 0 0 1 1 1 0 0 1 0 1 0 1 1 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 1
## [223] 1 1 0 0 0 1 1 1 1 0 1 0 0 0 0 1 0 1 1 1 0 1 0 1 0 1 1 1 0 0 1 0 1 1 0 0 0
## [260] 1 1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1
## [297] 1 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 1 0 0 1 0 0 1 0 0 1 1 0 1
## [334] 1 0 0 1 1 1 1 0 0 1 0 0 0 1 0 0 1 0 1 1 0 1 1 1 0 0 1 0 0 1 0 0 1 0 0 0 0
## [371] 0 0 1 0 1 1 1 0 0 1 1 1 0 1 1 1 0 0 0 0 1 0 1 1 0 0 0 0 0 1 1 0 1 1 0 0 1
## [408] 0 0 1 0 1 0 0 0 0 1 0 0 0 1 1 1 0 1 1 0 0 0 1 1 1 0 1 0 1 0 0 0 0 0 1 1 0
## [445] 1 1 1 0 0 1 1 0 0 0 0 1 1 1 0 0 1 0 0 0 1 0 0 1 0 1 0 1 0 1 1 0 1 0 0 1 0
## [482] 1 0 1 1 0 0 1 0 1 1 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 1 1 1 0 0 0 1 0 1 0 0 1
## [519] 0 1 0 0 0 0 1 1 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 1 0 0 0 1 1 1
## [556] 1 1 1 1 0 0 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 0 0 1 0 1 1 1 0 1 0 0 1 1 1 1 0
## [593] 1 0 0 1 1 0 1 0 0 1 0 0 0 1 0 1 0 0 1 0 0 1 1 1 1 1 1 0 1 1 1 0 0 0 0 1 0
## [630] 0 1 1 0 1 0 0 1 1 1 0 1 1 1 0 0 1 1 0 0 1 1 1 0 1 1 1 1 0 1 0 1 1 0 1 0 0
## [667] 1 0 1 0 0 1 0 0 0 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0
## [704] 1 0 1 1 0 0 0 1 1 1 1 0 0 0 0 1 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1 0 0 1 1 0 0
## [741] 1 0 0 1 0 1 1 0 1 1 0 0 0 0 1 0 0 1 0 0 1 0 1 0 1 0 0 0 1 1 1 1 1 1 0 0 0
## [778] 0 1 1 0 1 0 1 1 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 0 1
## [815] 1 0 0 0 1 1 1 0 1 1 1 0 0 0 0 1 0 1 0 1 1 1 1 1 0 0 1 1 1 0 1 0 1 0 0 0 0
## [852] 1 1 1 1 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 1 1 1 1 0 1 1 1 0 1 1 0 1 1 0 0
## [889] 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 1 1 1 0 0 1 0 0 1 1
## [926] 1 0 1 0 1 1 0 1 1 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0
## [963] 1 0 1 1 1 0 1 0 1 0 1 0 0 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 1 0 1 1 1 0 1
## [1000] 0
b. Genere una función que permita:
Obtener una muestra aleatoria de la población
Calcule el estimador de la proporción muestral pˆ para un tamaño de muestra dado n.
muestra_y_poblacion <- function(n, p_plantas_enfermas) {
# Muestra aleatoria de tamaño de una población binomial
muestra <- rbinom(n = n, size = 1, prob = p_plantas_enfermas)
# Proporción muestral pˆ
pmuestral <- mean(muestra)
return(pmuestral)
}
Probemos la función:
#Llamamos la función
pmuestra <- muestra_y_poblacion(1000, 0.5)
# Imprimir la proporción muestral calculada
print(pmuestra)
## [1] 0.497
c. 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.
# Número de simulaciones
num_sims <- 500
# Resultados estimadores pˆ
res <- numeric(num_sims)
# Iterar 500 veces
for (i in 1:num_sims) {
# Generar una muestra aleatoria de tamaño n
poblacion <- rbinom(n = n, size = 1, prob = p_plantas_enfermas)
# Calcular el estimador pˆ
pmuestral <- mean(poblacion)
# Resultado
res[i] <- pmuestral
}
# Análisis:
summary(res)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.4560 0.4890 0.5000 0.4997 0.5100 0.5450
hist(res, main = "Histograma",
xlab = "Estimador pˆ", ylab = "Frecuencia", col = "green")
d. 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
# Establecemos seed
set.seed(123)
# Tamaños de muestra
n <- c(5, 10, 15, 20, 30, 50, 60, 100, 200, 500)
# Porcentaje de plantas enfermas
p_plantas_enfermas <- 0.5
# Número de simulaciones
num_simulaciones <- 500
# Dataframe para los resultados
res_df <- data.frame(TM = numeric(), ME = numeric(),ShapiroWilkPValue = numeric())
# Iteración de simulaciones en diferentes tamaños de muestra
for (tmuestra in n) {
# Almacenamos los resultados de los estimadores pˆ en un vector
res <- numeric(num_simulaciones)
# 500 iteraciones para el tamaño de muestra actual
for (i in 1:num_simulaciones) {
# Generar una muestra aleatoria de tamaño tamano_muestra
poblacion <- rbinom(n = tmuestra, size = 1, prob = p_plantas_enfermas)
# Estimador pˆ
pmuestral <- mean(poblacion)
# Almacenamos el resultado
res[i] <- pmuestral
}
# Media de los estimadores pˆ
mesti <- mean(res)
# Prueba de Shapiro-Wilk para evaluar la normalidad
shapiro_test <- shapiro.test(res)
# Dataframe de resultados
res_df <- rbind(res_df, data.frame(TM = tmuestra,ME = mesti, ShapiroWilkPValue = shapiro_test$p.value))
}
# Dataframe con resultados
print(res_df)
## TM ME ShapiroWilkPValue
## 1 5 0.4928000 3.202935e-15
## 2 10 0.4952000 1.241967e-09
## 3 15 0.4906667 9.377920e-08
## 4 20 0.4954000 2.291593e-06
## 5 30 0.4910667 1.381885e-04
## 6 50 0.4983600 6.256403e-04
## 7 60 0.5025333 1.242263e-02
## 8 100 0.5010800 4.786225e-02
## 9 200 0.5013600 2.639253e-01
## 10 500 0.4998480 9.288523e-02
# qq-plots para cada tamaños de muestra
par(mfrow = c(2,2)) # Configurar una matriz de gráficos
for (i in 1:nrow(res_df)) {
tmuestra <- res_df$TM[i]
estimadores <- res[tmuestra == n]
hist(estimadores, main = paste("Histograma para n =", tmuestra), col="green")
qqnorm(estimadores, main = paste("QQ-Plot para n =", tmuestra))
qqline(estimadores, col="green")
}
Podemos ver el número de aciertos de la muestra en X, y en p^ el número de plantas en la muestra con esa enfermedad entre el tamaño de la muestra.
En este ejercicio vemos cómo a medida que aumenta el tamaño de la muestra, los estimadores pˆ se aproximan a una distribución normal. Lo cual esta de acuerdo a lo ue estudiamos en la unidad 2 sobre el Teorema del Límite Central.