Ejercicio 3- Teorema del Límite Central

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%.

B. Genere una función que permita:

• Obtener una muestra aleatoria de la población y • Calcule el estimador de la proporción muestral pˆ para un tamaño de muestra dado n.

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.

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

E. 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.

Solución

Punto A

set.seed(123)
n_poblacion <- 1000 
prop_enfermas <- 0.5 
poblacion <- rbinom(n_poblacion, 1, prop_enfermas)

Punto B

muestra_y_estimador <- function(n_muestra) { 
  muestra <- sample(poblacion, n_muestra, replace = FALSE) 
  estimador_prop <- mean(muestra) 
  return(estimador_prop)
}

Punto C

n_simulaciones <- 500
n_muestras <- c(5, 10, 15, 20, 30, 50, 60, 100, 200, 500)
resultados <- matrix(nrow = n_simulaciones, ncol = length(n_muestras))
for (i in 1:n_simulaciones) {
  for (j in 1:length(n_muestras)) {
    estimador <- muestra_y_estimador(n_muestras[j]);
    resultados[i, j] <- estimador
  }
}

Punto D

library(stats)
analizar_normalidad <- function(datos, titulo) {
  shapiro_result <- shapiro.test(datos)
  qqnorm(datos, main = titulo)
  qqline(datos)
  cat("Prueba de Shapiro-Wilk:\n")
  print(shapiro_result)
  cat("\n")
}

for (j in 1:length(n_muestras)) {
  analizar_normalidad(resultados[, j], paste("n =", n_muestras[j]))
  }

## Prueba de Shapiro-Wilk:
## 
##  Shapiro-Wilk normality test
## 
## data:  datos
## W = 0.92064, p-value = 1.447e-15

## Prueba de Shapiro-Wilk:
## 
##  Shapiro-Wilk normality test
## 
## data:  datos
## W = 0.96659, p-value = 3.02e-09

## Prueba de Shapiro-Wilk:
## 
##  Shapiro-Wilk normality test
## 
## data:  datos
## W = 0.97483, p-value = 1.412e-07

## Prueba de Shapiro-Wilk:
## 
##  Shapiro-Wilk normality test
## 
## data:  datos
## W = 0.97835, p-value = 9.062e-07

## Prueba de Shapiro-Wilk:
## 
##  Shapiro-Wilk normality test
## 
## data:  datos
## W = 0.98688, p-value = 0.0001791

## Prueba de Shapiro-Wilk:
## 
##  Shapiro-Wilk normality test
## 
## data:  datos
## W = 0.99042, p-value = 0.002452

## Prueba de Shapiro-Wilk:
## 
##  Shapiro-Wilk normality test
## 
## data:  datos
## W = 0.98982, p-value = 0.001543

## Prueba de Shapiro-Wilk:
## 
##  Shapiro-Wilk normality test
## 
## data:  datos
## W = 0.99078, p-value = 0.003264

## Prueba de Shapiro-Wilk:
## 
##  Shapiro-Wilk normality test
## 
## data:  datos
## W = 0.99522, p-value = 0.1271

## Prueba de Shapiro-Wilk:
## 
##  Shapiro-Wilk normality test
## 
## data:  datos
## W = 0.99571, p-value = 0.1892

Punto E

10%

prop_enfermas <- c(0.1)
for (k in 1:length(prop_enfermas)) {
  poblacion <- rbinom(n_poblacion, 1, prop_enfermas[k]) 
  resultados_prop <- matrix(nrow = n_simulaciones, ncol = length(n_muestras))
  }
for (i in 1:n_simulaciones) { for (j in 1:length(n_muestras)) { 
  estimador <- muestra_y_estimador(n_muestras[j]) 
  resultados_prop[i, j] <- estimador } 
  }
cat("Resultados para proporción enfermas =", prop_enfermas[k], "") 
## Resultados para proporción enfermas = 0.1
for (j in 1:length(n_muestras)) {
  analizar_normalidad(resultados_prop[, j], paste("n =", n_muestras[j]))
  } 

## Prueba de Shapiro-Wilk:
## 
##  Shapiro-Wilk normality test
## 
## data:  datos
## W = 0.69855, p-value < 2.2e-16

## Prueba de Shapiro-Wilk:
## 
##  Shapiro-Wilk normality test
## 
## data:  datos
## W = 0.84898, p-value < 2.2e-16

## Prueba de Shapiro-Wilk:
## 
##  Shapiro-Wilk normality test
## 
## data:  datos
## W = 0.89233, p-value < 2.2e-16

## Prueba de Shapiro-Wilk:
## 
##  Shapiro-Wilk normality test
## 
## data:  datos
## W = 0.92492, p-value = 4.179e-15

## Prueba de Shapiro-Wilk:
## 
##  Shapiro-Wilk normality test
## 
## data:  datos
## W = 0.95711, p-value = 6.986e-11

## Prueba de Shapiro-Wilk:
## 
##  Shapiro-Wilk normality test
## 
## data:  datos
## W = 0.97074, p-value = 1.936e-08

## Prueba de Shapiro-Wilk:
## 
##  Shapiro-Wilk normality test
## 
## data:  datos
## W = 0.97887, p-value = 1.215e-06

## Prueba de Shapiro-Wilk:
## 
##  Shapiro-Wilk normality test
## 
## data:  datos
## W = 0.98734, p-value = 0.0002476

## Prueba de Shapiro-Wilk:
## 
##  Shapiro-Wilk normality test
## 
## data:  datos
## W = 0.99013, p-value = 0.001965

## Prueba de Shapiro-Wilk:
## 
##  Shapiro-Wilk normality test
## 
## data:  datos
## W = 0.99355, p-value = 0.03143
cat("")

90%

prop_enfermas <- c(0.9)
for (k in 1:length(prop_enfermas)) {
  poblacion <- rbinom(n_poblacion, 1, prop_enfermas[k]) 
  resultados_prop <- matrix(nrow = n_simulaciones, ncol = length(n_muestras))
  }
for (i in 1:n_simulaciones) { for (j in 1:length(n_muestras)) { 
  estimador <- muestra_y_estimador(n_muestras[j]) 
  resultados_prop[i, j] <- estimador } 
  }
cat("Resultados para proporción enfermas =", prop_enfermas[k], "") 
## Resultados para proporción enfermas = 0.9
for (j in 1:length(n_muestras)) {
  analizar_normalidad(resultados_prop[, j], paste("n =", n_muestras[j]))
  } 

## Prueba de Shapiro-Wilk:
## 
##  Shapiro-Wilk normality test
## 
## data:  datos
## W = 0.66822, p-value < 2.2e-16

## Prueba de Shapiro-Wilk:
## 
##  Shapiro-Wilk normality test
## 
## data:  datos
## W = 0.81851, p-value < 2.2e-16

## Prueba de Shapiro-Wilk:
## 
##  Shapiro-Wilk normality test
## 
## data:  datos
## W = 0.89298, p-value < 2.2e-16

## Prueba de Shapiro-Wilk:
## 
##  Shapiro-Wilk normality test
## 
## data:  datos
## W = 0.91347, p-value = 2.671e-16

## Prueba de Shapiro-Wilk:
## 
##  Shapiro-Wilk normality test
## 
## data:  datos
## W = 0.94973, p-value = 5.312e-12

## Prueba de Shapiro-Wilk:
## 
##  Shapiro-Wilk normality test
## 
## data:  datos
## W = 0.97188, p-value = 3.304e-08

## Prueba de Shapiro-Wilk:
## 
##  Shapiro-Wilk normality test
## 
## data:  datos
## W = 0.97998, p-value = 2.277e-06

## Prueba de Shapiro-Wilk:
## 
##  Shapiro-Wilk normality test
## 
## data:  datos
## W = 0.98393, p-value = 2.486e-05

## Prueba de Shapiro-Wilk:
## 
##  Shapiro-Wilk normality test
## 
## data:  datos
## W = 0.98816, p-value = 0.0004468

## Prueba de Shapiro-Wilk:
## 
##  Shapiro-Wilk normality test
## 
## data:  datos
## W = 0.98973, p-value = 0.001438
cat("")

Conclusión

En el punto D, al analizar una muestra de 500, se aprecia un valor p de 0.1892, lo que indica que es menor que 0.05. Esto conduce a la rechazo de la hipótesis nula (H0), lo cual sugiere que la distribución de los datos muestra un patrón no normal.

En cuanto al punto E, al considerar el intervalo del 10%, se observa que en muestras entre 5 y 60 no se rechaza la hipótesis nula. Esto implica que la variable datos muestra un comportamiento normal en este rango. Sin embargo, para las muestras de 100, 200 y 500, se rechaza (H0), lo que indica que la variable datos presenta un comportamiento no normal.

Para la muestra del 90%, se observa que en el rango de muestras de 5 a 100, no se rechaza la hipótesis nula. Esto sugiere que la variable datos muestra un comportamiento normal en este intervalo. Sin embargo, para las muestras de 200 y 500, se rechaza (H0), indicando que la variable “Datos” presenta un comportamiento no normal.