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:
Iniciamos realizando la importación de librerias necesarias para nuestro proceso.
if(!require(tidyverse)){
install.packages(tidyverse)
}
library(tidyverse)
if(!require(dplyr)){
install.packages(dplyr)
}
library(dplyr)
if(!require(tidyr)){
install.packages(tidyr)
}
library(tidyr)
# Instalaremos y cargaremos la librería ggplot2 si aún no está instalada
if (!require(ggplot2)) {
install.packages("ggplot2")
}
library(ggplot2)
# Establecer la semilla aleatoria para reproducibilidad
set.seed(123)
# Tamaño de la población
n <- 1000
# Porcentaje de individuos enfermos
porcentaje_enfermos <- 0.5
# Generamos la población de individuos enfermos (0 para sanos, 1 para enfermos)
poblacion <- rbinom(n, size = 1, prob = porcentaje_enfermos)
# Creamos un data frame para la población
df_poblacion <- data.frame(ID = 1:n, Enfermo = poblacion)
# Contamos el número de individuos enfermos
enfermos <- sum(df_poblacion$Enfermo)
# Imprimir la cantidad de individuos enfermos
cat("Numero de individuos enfermos:", enfermos, "\n")
## Numero de individuos enfermos: 493
muestra_proporcion <- function(poblacion, n) {
# Generamos una muestra aleatoria de la población
muestra <- sample(poblacion, size = n)
# Calculamos el estimador de la proporción muestral p
p_estimado <- sum(muestra) / n
# Devolvemos el resultado
return(p_estimado)
}
poblacion <- 100
n_repeticiones <- 500
muestra_proporcion(500, 100)
## [1] 243.1
# Establecer la semilla aleatoria para reproducibilidad
set.seed(123)
# Tamaño de la población
n_poblacion <- 1000
# Porcentaje de individuos enfermos en la población
porcentaje_enfermos_poblacion <- 0.5
# Tamaño de muestra
n_muestra <- 100
# Número de repeticiones
n_repeticiones <- 500
# Vector para almacenar los resultados de los estimadores de proporción
resultados <- numeric(n_repeticiones)
# Realizar las repeticiones
for (i in 1:n_repeticiones) {
# Generar la población
poblacion <- rbinom(n_poblacion, size = 1, prob = porcentaje_enfermos_poblacion)
# Obtener una muestra aleatoria
muestra <- sample(poblacion, size = n_muestra)
# Calcular el estimador de proporción pˆ
p_estimado <- sum(muestra) / n_muestra
# Almacenar el resultado
resultados[i] <- p_estimado
}
# Resumen estadístico de los resultados
summary(resultados)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.3300 0.4600 0.5000 0.4984 0.5300 0.6700
# Histograma de los resultados
hist(resultados, main = "Histograma de Estimadores de Proporcion", xlab = "Estimador de Proporcion")
# Tamaño de muestra
n_muestra <- 5
# Porcentaje de individuos enfermos en la población
porcentaje_enfermos_poblacion <- 0.5
# Número de repeticiones
n_repeticiones <- 500
# Vector para almacenar los resultados de los estimadores de proporción
resultados <- numeric(n_repeticiones)
# Realizar las repeticiones
for (i in 1:n_repeticiones) {
# Generar la población
poblacion <- rbinom(n_muestra, size = 1, prob = porcentaje_enfermos_poblacion)
# Obtener una muestra aleatoria
muestra <- sample(poblacion, size = n_muestra)
# Calcular el estimador de proporción pˆ
p_estimado <- sum(muestra) / n_muestra
# Almacenar el resultado
resultados[i] <- p_estimado
}
# Realizar la prueba de normalidad Shapiro-Wilk
shapiro_test <- shapiro.test(resultados)
# Imprimir resultados de la prueba de normalidad
cat("Resultados para n =", n_muestra, "\n")
## Resultados para n = 5
cat("Prueba de normalidad Shapiro-Wilk p-valor:", shapiro_test$p.value, "\n")
## Prueba de normalidad Shapiro-Wilk p-valor: 2.739892e-14
if (shapiro_test$p.value < 0.05) {
cat("Los datos no siguen una distribución normal.\n")
} else {
cat("Los datos parecen seguir una distribución normal.\n")
}
## Los datos no siguen una distribución normal.
# Crear un gráfico QQ-Plot
qqnorm(resultados, main = paste("QQ-Plot para n =", n_muestra))
qqline(resultados)
simular_y_analizar_normalidad <- function(n_muestra, porcentaje_enfermos_poblacion, n_repeticiones) {
# Establecer la semilla aleatoria para reproducibilidad
set.seed(123)
# Vector para almacenar los resultados de los estimadores de proporción
resultados <- numeric(n_repeticiones)
# Realizar las repeticiones
for (i in 1:n_repeticiones) {
# Generar la población
poblacion <- rbinom(n_muestra, size = 1, prob = porcentaje_enfermos_poblacion)
# Obtener una muestra aleatoria
muestra <- sample(poblacion, size = n_muestra)
# Calcular el estimador de proporción pˆ
p_estimado <- sum(muestra) / n_muestra
# Almacenar el resultado
resultados[i] <- p_estimado
}
# Realizar la prueba de normalidad Shapiro-Wilk
shapiro_test <- shapiro.test(resultados)
# Imprimir resultados de la prueba de normalidad
cat("Resultados para n =", n_muestra, "\n")
cat("Prueba de normalidad Shapiro-Wilk p-valor:", shapiro_test$p.value, "\n")
if (shapiro_test$p.value < 0.05) {
cat("Los datos no siguen una distribución normal.\n")
} else {
cat("Los datos parecen seguir una distribución normal.\n")
}
# Crear un gráfico QQ-Plot
qqnorm(resultados, main = paste("QQ-Plot para n =", n_muestra))
qqline(resultados)
}
# Llamar a la función con los valores deseados
simular_y_analizar_normalidad(n_muestra = 5, porcentaje_enfermos_poblacion = 0.5, n_repeticiones = 500)
## Resultados para n = 5
## Prueba de normalidad Shapiro-Wilk p-valor: 1.342604e-14
## Los datos no siguen una distribución normal.
simular_y_analizar_normalidad(n_muestra = 10, porcentaje_enfermos_poblacion = 0.5, n_repeticiones = 500)
## Resultados para n = 10
## Prueba de normalidad Shapiro-Wilk p-valor: 4.200379e-10
## Los datos no siguen una distribución normal.
simular_y_analizar_normalidad(n_muestra = 15, porcentaje_enfermos_poblacion = 0.5, n_repeticiones = 500)
## Resultados para n = 15
## Prueba de normalidad Shapiro-Wilk p-valor: 2.586453e-07
## Los datos no siguen una distribución normal.
### MUESTRA IGUAL A 20
simular_y_analizar_normalidad(n_muestra = 20, porcentaje_enfermos_poblacion = 0.5, n_repeticiones = 500)
## Resultados para n = 20
## Prueba de normalidad Shapiro-Wilk p-valor: 2.951523e-06
## Los datos no siguen una distribución normal.
### MUESTRA IGUAL A 30
simular_y_analizar_normalidad(n_muestra = 30, porcentaje_enfermos_poblacion = 0.5, n_repeticiones = 500)
## Resultados para n = 30
## Prueba de normalidad Shapiro-Wilk p-valor: 3.594275e-05
## Los datos no siguen una distribución normal.
### MUESTRA IGUAL A 50
simular_y_analizar_normalidad(n_muestra = 50, porcentaje_enfermos_poblacion = 0.5, n_repeticiones = 500)
## Resultados para n = 50
## Prueba de normalidad Shapiro-Wilk p-valor: 0.008448477
## Los datos no siguen una distribución normal.
### MUESTRA IGUAL A 60
simular_y_analizar_normalidad(n_muestra = 60, porcentaje_enfermos_poblacion = 0.5, n_repeticiones = 500)
## Resultados para n = 60
## Prueba de normalidad Shapiro-Wilk p-valor: 0.00533085
## Los datos no siguen una distribución normal.
simular_y_analizar_normalidad(n_muestra = 100, porcentaje_enfermos_poblacion = 0.5, n_repeticiones = 500)
## Resultados para n = 100
## Prueba de normalidad Shapiro-Wilk p-valor: 0.003591544
## Los datos no siguen una distribución normal.
### MUESTRA IGUAL A 200
simular_y_analizar_normalidad(n_muestra = 200, porcentaje_enfermos_poblacion = 0.5, n_repeticiones = 500)
## Resultados para n = 200
## Prueba de normalidad Shapiro-Wilk p-valor: 0.2407062
## Los datos parecen seguir una distribución normal.
simular_y_analizar_normalidad(n_muestra = 500, porcentaje_enfermos_poblacion = 0.5, n_repeticiones = 500)
## Resultados para n = 500
## Prueba de normalidad Shapiro-Wilk p-valor: 0.3397069
## Los datos parecen seguir una distribución normal.
##10% de plantas enfermas
simular_y_analizar_normalidad(n_muestra = 10, porcentaje_enfermos_poblacion = 0.1, n_repeticiones = 500)
## Resultados para n = 10
## Prueba de normalidad Shapiro-Wilk p-valor: 3.151621e-22
## Los datos no siguen una distribución normal.
simular_y_analizar_normalidad(n_muestra = 15, porcentaje_enfermos_poblacion = 0.1, n_repeticiones = 500)
## Resultados para n = 15
## Prueba de normalidad Shapiro-Wilk p-valor: 4.851184e-19
## Los datos no siguen una distribución normal.
### MUESTRA IGUAL A 20
simular_y_analizar_normalidad(n_muestra = 20, porcentaje_enfermos_poblacion = 0.1, n_repeticiones = 500)
## Resultados para n = 20
## Prueba de normalidad Shapiro-Wilk p-valor: 9.627224e-15
## Los datos no siguen una distribución normal.
### MUESTRA IGUAL A 30
simular_y_analizar_normalidad(n_muestra = 30, porcentaje_enfermos_poblacion = 0.1, n_repeticiones = 500)
## Resultados para n = 30
## Prueba de normalidad Shapiro-Wilk p-valor: 2.215435e-11
## Los datos no siguen una distribución normal.
### MUESTRA IGUAL A 50
simular_y_analizar_normalidad(n_muestra = 50, porcentaje_enfermos_poblacion = 0.1, n_repeticiones = 500)
## Resultados para n = 50
## Prueba de normalidad Shapiro-Wilk p-valor: 4.291068e-09
## Los datos no siguen una distribución normal.
### MUESTRA IGUAL A 60
simular_y_analizar_normalidad(n_muestra = 60, porcentaje_enfermos_poblacion = 0.1, n_repeticiones = 500)
## Resultados para n = 60
## Prueba de normalidad Shapiro-Wilk p-valor: 4.016187e-08
## Los datos no siguen una distribución normal.
simular_y_analizar_normalidad(n_muestra = 100, porcentaje_enfermos_poblacion = 0.1, n_repeticiones = 500)
## Resultados para n = 100
## Prueba de normalidad Shapiro-Wilk p-valor: 6.05228e-06
## Los datos no siguen una distribución normal.
### MUESTRA IGUAL A 200
simular_y_analizar_normalidad(n_muestra = 200, porcentaje_enfermos_poblacion = 0.1, n_repeticiones = 500)
## Resultados para n = 200
## Prueba de normalidad Shapiro-Wilk p-valor: 0.000752035
## Los datos no siguen una distribución normal.
simular_y_analizar_normalidad(n_muestra = 500, porcentaje_enfermos_poblacion = 0.1, n_repeticiones = 500)
## Resultados para n = 500
## Prueba de normalidad Shapiro-Wilk p-valor: 0.01954132
## Los datos no siguen una distribución normal.
##90% de plantas enfermas
simular_y_analizar_normalidad(n_muestra = 10, porcentaje_enfermos_poblacion = 0.9, n_repeticiones = 500)
## Resultados para n = 10
## Prueba de normalidad Shapiro-Wilk p-valor: 3.151621e-22
## Los datos no siguen una distribución normal.
simular_y_analizar_normalidad(n_muestra = 15, porcentaje_enfermos_poblacion = 0.9, n_repeticiones = 500)
## Resultados para n = 15
## Prueba de normalidad Shapiro-Wilk p-valor: 4.851184e-19
## Los datos no siguen una distribución normal.
### MUESTRA IGUAL A 20
simular_y_analizar_normalidad(n_muestra = 20, porcentaje_enfermos_poblacion = 0.9, n_repeticiones = 500)
## Resultados para n = 20
## Prueba de normalidad Shapiro-Wilk p-valor: 9.627224e-15
## Los datos no siguen una distribución normal.
### MUESTRA IGUAL A 30
simular_y_analizar_normalidad(n_muestra = 30, porcentaje_enfermos_poblacion = 0.9, n_repeticiones = 500)
## Resultados para n = 30
## Prueba de normalidad Shapiro-Wilk p-valor: 2.215435e-11
## Los datos no siguen una distribución normal.
### MUESTRA IGUAL A 50
simular_y_analizar_normalidad(n_muestra = 50, porcentaje_enfermos_poblacion = 0.9, n_repeticiones = 500)
## Resultados para n = 50
## Prueba de normalidad Shapiro-Wilk p-valor: 4.291068e-09
## Los datos no siguen una distribución normal.
### MUESTRA IGUAL A 60
simular_y_analizar_normalidad(n_muestra = 60, porcentaje_enfermos_poblacion = 0.9, n_repeticiones = 500)
## Resultados para n = 60
## Prueba de normalidad Shapiro-Wilk p-valor: 4.016187e-08
## Los datos no siguen una distribución normal.
simular_y_analizar_normalidad(n_muestra = 100, porcentaje_enfermos_poblacion = 0.9, n_repeticiones = 500)
## Resultados para n = 100
## Prueba de normalidad Shapiro-Wilk p-valor: 6.05228e-06
## Los datos no siguen una distribución normal.
### MUESTRA IGUAL A 200
simular_y_analizar_normalidad(n_muestra = 200, porcentaje_enfermos_poblacion = 0.9, n_repeticiones = 500)
## Resultados para n = 200
## Prueba de normalidad Shapiro-Wilk p-valor: 0.000752035
## Los datos no siguen una distribución normal.
simular_y_analizar_normalidad(n_muestra = 500, porcentaje_enfermos_poblacion = 0.9, n_repeticiones = 500)
## Resultados para n = 500
## Prueba de normalidad Shapiro-Wilk p-valor: 0.01954132
## Los datos no siguen una distribución normal.
Se puede observar que independientemente de la cantidad de muestra enferma la simulación para un n dado es similar en todos los casos. DOnde para n bajos nuestra muestra tiende a tener mayor dispersión alrededor del eje pero para n valores mayores son resutados tienden a ser mas simetricos sin tanto sesgo dando un comportamiento mas definido. Centrando la mayor densidad de puntos en el quantil teorico 0.