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:
set.seed(123)
n_poblacion <- 1000
p_enfermas <- 0.5
# Simulando la población
poblacion <- rbinom(n_poblacion, 1, p_enfermas)
calcular_proporcion <- function(n_muestra) {
muestra <- sample(poblacion, n_muestra, replace = TRUE)
p_sombrero <- mean(muestra)
return(p_sombrero)
}
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)
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')
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')
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')
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.
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.
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.