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.
set.seed(123)
poblacion <- rbinom(1000, 1, 0.5)
muestraAleatoria = function(poblacion, n) {
if (n >= length(poblacion)) {
return(-1)
}
else {
muestra = sample(poblacion, n, replace = FALSE)
mean_m = mean(muestra)
return(mean_m)
}
}
escenarios <- replicate(500, muestraAleatoria(poblacion, 500))
mediaEscenarios <- mean(escenarios)
desviacionEscenarios <- sd(escenarios)
min <- min(escenarios)
max <- max(escenarios)
q1 <- quantile(escenarios, probs=0.25)
q3 <- quantile(escenarios, probs=0.75)
var <- var(escenarios)
contenido <- round(as.numeric(c(mediaEscenarios, desviacionEscenarios, min, max, q1, q3, var)),4)
titulos <- c("Media", "Desviacion", "Minimo", "Maximo", "Q1", "Q3", "Varianza")
tabla <- as.data.frame(rbind(titulos, contenido))
tabla
## V1 V2 V3 V4 V5 V6 V7
## titulos Media Desviacion Minimo Maximo Q1 Q3 Varianza
## contenido 0.4939 0.0164 0.448 0.54 0.482 0.504 3e-04
hist(escenarios, main = "Histograma 500 iteraciones", xlab = "Probabilidad de las muestras", breaks=30, ylab = "Frecuencia", las=1,
font.axis=4)
La media (0.4931) esta muy cerca del valor verdadero que sería el 0.5.
Por ende nuestros resultados son acorde al valor real de la población,
por otra parte la desviación 0.0152 indica que la mayoria de los datos
se encuentran un 0.0152 por encima o debajo de la media. Estos
resultados adicional a la gráfica del histograma se puede observar que
no es completamente simétrica, por lo que su coeficiente de asimetría no
es 0. Estos resultados sirven como base para demostrar el Teorema del
Límite Central, ya que a pesar de la variabilidad en el muestreo, la
media de los estimadores es muy cercana al valor real de la población y
la desviación estandar nos da una idea de la variabilidad que tenemos en
los resultados.
tamanio_muestras <- c(5, 10, 15, 20, 30, 50, 60, 100, 200, 500)
resultados <- list()
for (i in tamanio_muestras) {
resultados[[as.character(i)]] <- replicate(500, muestraAleatoria(poblacion, i))
}
for (j in tamanio_muestras){
cat("Muestra n = ", j, "\n")
print(shapiro.test(resultados[[as.character(j)]]))
qqnorm(resultados[[as.character(j)]])
qqline(resultados[[as.character(j)]])
}
## Muestra n = 5
##
## Shapiro-Wilk normality test
##
## data: resultados[[as.character(j)]]
## W = 0.9225, p-value = 2.281e-15
## Muestra n = 10
##
## Shapiro-Wilk normality test
##
## data: resultados[[as.character(j)]]
## W = 0.96565, p-value = 2.017e-09
## Muestra n = 15
##
## Shapiro-Wilk normality test
##
## data: resultados[[as.character(j)]]
## W = 0.97214, p-value = 3.749e-08
## Muestra n = 20
##
## Shapiro-Wilk normality test
##
## data: resultados[[as.character(j)]]
## W = 0.97838, p-value = 9.212e-07
## Muestra n = 30
##
## Shapiro-Wilk normality test
##
## data: resultados[[as.character(j)]]
## W = 0.98452, p-value = 3.642e-05
## Muestra n = 50
##
## Shapiro-Wilk normality test
##
## data: resultados[[as.character(j)]]
## W = 0.98949, p-value = 0.001197
## Muestra n = 60
##
## Shapiro-Wilk normality test
##
## data: resultados[[as.character(j)]]
## W = 0.99039, p-value = 0.002399
## Muestra n = 100
##
## Shapiro-Wilk normality test
##
## data: resultados[[as.character(j)]]
## W = 0.99368, p-value = 0.03499
## Muestra n = 200
##
## Shapiro-Wilk normality test
##
## data: resultados[[as.character(j)]]
## W = 0.99268, p-value = 0.01519
## Muestra n = 500
##
## Shapiro-Wilk normality test
##
## data: resultados[[as.character(j)]]
## W = 0.99617, p-value = 0.2711
Las pruebas propuestas nos sirven par comparar si los valores esperados corresponden a los valores observados en el orden de la muestra. En la Prueba de Shapiro-Wilk se evidencia que el valor en todos los casos es cercano a 1. Lo que indica que los datos siguen una distribución normal. El valor p de la misma prueba sirve para observar qué tan extrama es la diferencia que se obtuvo, asumiendo que la población es normal, si este valor es pequeño, se rechaza la hiótesis de que los datos no siguen una distribución normal. En las primeras simulaciones ese valor p es muy pequeño, lo que indica que los datos no siguen una distribución normal, y a medida que van creciendo el valor de W se acerca a 1, pero el valor de p sigue siendo muy pequeño, por ende indica que falta normalidad en todas las simulaciones. s