# Instalar paquetes necesarios solo si no están instalados
if (!requireNamespace("moments", quietly = TRUE)) install.packages("moments")
if (!requireNamespace("kableExtra", quietly = TRUE)) install.packages("kableExtra")
# Cargar librerías
library(moments)
library(ggplot2)
library(dplyr)
library(kableExtra) # Para crear tablas atractivas
Este informe examina el Teorema del Límite Central (TLC) mediante la simulación de proporciones muestrales de una población de plantas enfermas. Se generó una población de 1000 plantas donde se consideró que el 50% está enfermo. El TLC establece que, a medida que el tamaño de la muestra aumenta, la distribución de las proporciones muestrales tiende a ser normal, independientemente de la distribución de la población original.
Se creó una población de 1000 individuos (plantas), donde el 50% de ellos están enfermos.
# 2Generar la población
set.seed(123) # Para reproducibilidad
n_total <- 1000
p_enfermos <- 0.5
poblacion <- rbinom(n_total, 1, p_enfermos) # 1 enfermo, 0 sano
proporcion_muestral <- function(tamaño_muestra, poblacion) {
muestra <- sample(poblacion, tamaño_muestra, replace = TRUE)
return(mean(muestra)) # Proporción de enfermos
}
tamaños_muestra <- c(5, 10, 15, 20, 30, 50, 60, 100, 200, 500)
resultados <- lapply(tamaños_muestra, function(tamaño) {
sapply(1:500, function(x) proporcion_muestral(tamaño, poblacion))
})
analisis_resultados <- function(resultados) {
aplicados <- lapply(resultados, function(valor) {
# Media
mean_valor <- mean(valor)
# Medidas de asimetría y curtosis
asimetria <- skewness(valor)
curtosis <- kurtosis(valor)
# Shapiro-Wilk para prueba de normalidad
p_value_norm <- shapiro.test(valor)$p.value
# Resultados en un data frame
return(data.frame(Media = mean_valor, Asimetría = asimetria, Curtosis = curtosis, p_valor_norm = p_value_norm))
})
do.call(rbind, aplicados)
}
# Analizar resultados para cada tamaño de muestra
analisis_tamanos <- analisis_resultados(resultados)
# Resultados
print(analisis_tamanos)
## Media Asimetría Curtosis p_valor_norm
## 1 0.5076000 0.02900046 2.638457 1.195804e-14
## 2 0.4862000 -0.05384004 2.879301 4.193845e-10
## 3 0.4864000 0.04555220 2.762739 2.761410e-07
## 4 0.5051000 0.08082349 2.810566 1.497441e-06
## 5 0.4941333 -0.11432632 3.287288 2.570845e-05
## 6 0.5001600 0.05332514 2.942390 1.042764e-02
## 7 0.4961000 0.14251187 2.949499 2.876043e-03
## 8 0.4962000 0.06364756 2.860299 6.609927e-02
## 9 0.4918500 -0.03660815 2.606262 2.170338e-02
## 10 0.4949240 0.04315088 3.019886 5.683287e-01
# Gráficos de QQ-Plot
par(mfrow = c(3, 4)) # Para Multiples Graficos
for (i in 1:length(tamaños_muestra)) {
qqnorm(resultados[[i]], main = paste("QQ-Plot n =", tamaños_muestra[i]))
qqline(resultados[[i]], col = "red")
}
# Gráficos de Histogramas
par(mfrow = c(3, 4)) # Configura la ventana gráfica para múltiples gráficos
for (i in 1:length(tamaños_muestra)) {
hist(resultados[[i]], main = paste("Histograma n =", tamaños_muestra[i]),
xlab = "Proporción Muestral",
breaks = 20,
col = "lightblue",
xlim = c(0, 1))
}
# Gráficos de Boxplot
par(mfrow = c(3, 4)) # Configura la ventana gráfica para múltiples gráficos
for (i in 1:length(tamaños_muestra)) {
boxplot(resultados[[i]], main = paste("Boxplot n =", tamaños_muestra[i]),
ylab = "Proporción Muestral",
col = "lightgreen")
}
p_enfermos_10 <- 0.1
poblacion_10 <- rbinom(n_total, 1, p_enfermos_10)
resultados_10 <- lapply(tamaños_muestra, function(tamaño) {
sapply(1:500, function(x) proporcion_muestral(tamaño, poblacion_10))
})
# Analizar resultados y generar un resumen en tabla
analisis_tamanos_10 <- analisis_resultados(resultados_10)
# Agregar la columna de tamaño de muestra
analisis_tamanos_10$tamaño_muestra <- tamaños_muestra
# Imprimir análisis
# Usar kable para mostrar la tabla de resultados para el 10%
kable(analisis_tamanos_10, caption = "Resultados para el 10% de Plantas Enfermas") %>%
kable_styling(full_width = F)
| Media | Asimetría | Curtosis | p_valor_norm | tamaño_muestra |
|---|---|---|---|---|
| 0.1132000 | 1.3010759 | 4.672111 | 0.0000000 | 5 |
| 0.1082000 | 0.7036281 | 2.985179 | 0.0000000 | 10 |
| 0.1202667 | 0.6053861 | 3.105240 | 0.0000000 | 15 |
| 0.1119000 | 0.6057064 | 3.081630 | 0.0000000 | 20 |
| 0.1083333 | 0.4611275 | 3.020278 | 0.0000000 | 30 |
| 0.1149200 | 0.4596625 | 3.322587 | 0.0000000 | 50 |
| 0.1106667 | 0.3541428 | 2.837493 | 0.0000002 | 60 |
| 0.1102600 | 0.2558883 | 3.052737 | 0.0001119 | 100 |
| 0.1113500 | 0.3716545 | 3.182661 | 0.0001550 | 200 |
| 0.1115280 | 0.1526363 | 2.990515 | 0.1769222 | 500 |
# Simular con 90%
p_enfermos_90 <- 0.9
poblacion_90 <- rbinom(n_total, 1, p_enfermos_90)
resultados_90 <- lapply(tamaños_muestra, function(tamaño) {
sapply(1:500, function(x) proporcion_muestral(tamaño, poblacion_90))
})
# Analizar resultados
analisis_tamanos_90 <- analisis_resultados(resultados_90)
# Agregar la columna de tamaño de muestra
analisis_tamanos_90$tamaño_muestra <- tamaños_muestra
# Usar kable para mostrar la tabla de resultados para el 90%
kable(analisis_tamanos_90, caption = "Resultados para el 90% de Plantas Enfermas") %>%
kable_styling(full_width = F)
| Media | Asimetría | Curtosis | p_valor_norm | tamaño_muestra |
|---|---|---|---|---|
| 0.9012000 | -1.2940919 | 4.720643 | 0.0000000 | 5 |
| 0.9086000 | -1.0255287 | 4.024826 | 0.0000000 | 10 |
| 0.8965333 | -0.6073196 | 3.190704 | 0.0000000 | 15 |
| 0.8987000 | -0.5665700 | 3.539337 | 0.0000000 | 20 |
| 0.9003333 | -0.5192483 | 2.997668 | 0.0000000 | 30 |
| 0.9049200 | -0.3672354 | 3.043959 | 0.0000000 | 50 |
| 0.9002667 | -0.5379607 | 3.546716 | 0.0000000 | 60 |
| 0.8985400 | -0.2009150 | 3.040051 | 0.0000700 | 100 |
| 0.9002400 | -0.2210150 | 3.135571 | 0.0053541 | 200 |
| 0.9003080 | -0.1038401 | 3.053286 | 0.0094385 | 500 |
A medida que se incrementa el tamaño de la muestra (n=5, 10, 15, … hasta 500), se observa que las proporciones muestrales se acercan más a la proporción poblacional real (por ejemplo, 0.5 en la población del 50% enfermo). Esto valida el Teorema del Límite Central, que indica que las distribuciones de las muestras muestrales tienden a ser normales a medida que el tamaño de muestra aumenta. Para tamaños de muestra pequeños, los resultados pueden ser más variados y menos representativos de la población.
Los resultados muestran que las muestras más pequeñas presentan mayores niveles de asimetría y curtosis, lo que indica que las distribuciones son menos simétricas y pueden tener colas más pesadas. En cambio, a tamaños de muestra mayores, tanto la asimetría como la curtosis tienden a estabilizarse en valores que sugieren normalidad.
Para simulaciones con un 10% y un 90% de plantas enfermas, los resultados reflejan que las distribuciones son más sesgadas hacia el lado donde hay una menor proporción de plantas enfermas, lo que puede dificultar la normalización.
Los resultados de la prueba de normalidad (Shapiro-Wilk) indican que en tamaños de muestra pequeños, se rechaza la hipótesis nula de normalidad con mayor frecuencia. Sin embargo, para tamaños de muestra más grandes, especialmente mayores a 30, se observa un incremento significativo en los resultados que no rechazan la hipótesis nula. Esto sustenta la conclusión de que las muestras se distribuyen normalmente conforme el tamaño aumenta.
Este ejercicio reafirma la importancia de usar tamaños de muestra adecuados al realizar inferencias estadística. Se recomienda el uso de tamaños de muestra de al menos 30 para aproximar con confianza la normalidad en la distribución de proporciones muestrales.
Los resultados indican que para poblaciones que muestran proporciones extremas (como el 10% o 90% de enfermos), se debe tener especial cuidado al interpretar resultados, ya que podrían no comportarse con la misma normalidad que las poblaciones más equilibradas.