# 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

Introducción

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.

Metodología

Paso 1: Generación de la Población

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

Paso 2: Se crea la función para calcular la proporción muestral

proporcion_muestral <- function(tamaño_muestra, poblacion) {
  muestra <- sample(poblacion, tamaño_muestra, replace = TRUE)
  return(mean(muestra)) # Proporción de enfermos
}

Definir los tamaños de muestra

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))
})

Análisis de resultados

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:

# 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")
}

Simulaciones:

Simulación con el 10%

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)
Resultados para el 10% de Plantas Enfermas
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

Simulación con el 90%

# 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)
Resultados para el 90% de Plantas Enfermas
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

Conclusiones

Efecto del Tamaño de Muestra:

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.

Asimetría y Curtosis:

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.

Normalidad:

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.

Recomendaciones para la Inferencia Estadística:

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.