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:
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%.
Genere una función que permita:
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.
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
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.
Genero una población de n=1000 (Lote), donde el porcentaje de individuos (plantas) enfermas es del 50%.
## [1] "Lote Generado de tamaño: 1000 Enfermos: 500 Sanos: 500"
Obtengo la muestra aleatoria de la población y calculo el estimador de la proporción muestral pˆ para un tamaño de muestra dado n.
## [1] "Error: el tamaño de la muestra supera el tamaño de la población."
## [1] "Para una muestra de tamaño: 1200 se obtuvo un ^P = -1"
## [1] "Para una muestra de tamaño: 300 un estimador de la proporción = 0.49"
Repito el escenario anterior n=500 y analizo los resultados en cuanto al comportamiento de los 500 estimadores.
El estimador da muy cerca al parámetro P=0.49 al obtener 500 muestras de tamaño 300. Tiene una mediana de 0.5 y una media de 0.49, y un coeficiente de simetría de 0.0509. En el histograma se puede observar que el coeficiente de simetría es diferente de cero, por otro lado, la varianza es muy cercana cero.
Repito los puntos b y c para tamaños de muestra n=5, 10, 15, 20, 30, 50, 60, 100, 200, 500.
## [1] "Para una muestra de tamaño: 5"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.9295, p-value = 1.36e-14
## [1] "Para una muestra de tamaño: 10"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.96168, p-value = 3.995e-10
## [1] "Para una muestra de tamaño: 15"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.97307, p-value = 5.875e-08
## [1] "Para una muestra de tamaño: 20"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.98015, p-value = 2.507e-06
## [1] "Para una muestra de tamaño: 30"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.98429, p-value = 3.146e-05
## [1] "Para una muestra de tamaño: 50"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.98934, p-value = 0.001075
## [1] "Para una muestra de tamaño: 60"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.98916, p-value = 0.0009348
## [1] "Para una muestra de tamaño: 100"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.99485, p-value = 0.09344
## [1] "Para una muestra de tamaño: 200"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.995, p-value = 0.1054
## [1] "Para una muestra de tamaño: 500"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.99434, p-value = 0.06077
Repito toda la simulación, para lotes con 10% de plantas enfermas.
## [1] "Lote Generado de tamaño: 1000 Enfermos: 100 Sanos: 900"
## [1] "Para una muestra de tamaño: 300 un estimador de la proporción = 0.0866666666666667"
| Name | P_muestras |
| Number of rows | 500 |
| Number of columns | 1 |
| _______________________ | |
| Column type frequency: | |
| numeric | 1 |
| ________________________ | |
| Group variables | None |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| data | 0 | 1 | 0.1 | 0.01 | 0.06 | 0.09 | 0.1 | 0.11 | 0.14 | ▂▇▇▆▁ |
## [1] "Para una muestra de tamaño: 10"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.85244, p-value < 2.2e-16
## [1] "Para una muestra de tamaño: 15"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.89487, p-value < 2.2e-16
## [1] "Para una muestra de tamaño: 20"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.92275, p-value = 2.426e-15
## [1] "Para una muestra de tamaño: 30"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.95217, p-value = 1.208e-11
## [1] "Para una muestra de tamaño: 50"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.9759, p-value = 2.439e-07
## [1] "Para una muestra de tamaño: 60"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.97913, p-value = 1.404e-06
## [1] "Para una muestra de tamaño: 100"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.98199, p-value = 7.439e-06
## [1] "Para una muestra de tamaño: 200"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.98968, p-value = 0.001389
## [1] "Para una muestra de tamaño: 500"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.99278, p-value = 0.0165
Repito toda la simulación, para lotes con 90% de plantas enfermas.
## [1] "Lote Generado de tamaño: 1000 Enfermos: 900 Sanos: 100"
## [1] "Para una muestra de tamaño: 300 un estimador de la proporción = 0.9"
| Name | P_muestras |
| Number of rows | 500 |
| Number of columns | 1 |
| _______________________ | |
| Column type frequency: | |
| numeric | 1 |
| ________________________ | |
| Group variables | None |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| data | 0 | 1 | 0.9 | 0.01 | 0.86 | 0.89 | 0.9 | 0.91 | 0.94 | ▁▅▇▅▁ |
## [1] "Para una muestra de tamaño: 10"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.83244, p-value < 2.2e-16
## [1] "Para una muestra de tamaño: 15"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.88595, p-value < 2.2e-16
## [1] "Para una muestra de tamaño: 20"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.91715, p-value = 6.274e-16
## [1] "Para una muestra de tamaño: 30"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.94711, p-value = 2.259e-12
## [1] "Para una muestra de tamaño: 50"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.96941, p-value = 1.049e-08
## [1] "Para una muestra de tamaño: 60"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.97162, p-value = 2.924e-08
## [1] "Para una muestra de tamaño: 100"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.983, p-value = 1.386e-05
## [1] "Para una muestra de tamaño: 200"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.99095, p-value = 0.003709
## [1] "Para una muestra de tamaño: 500"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.99379, p-value = 0.03839
Por medio del teorema del límite central podemos observar que a medida que aumenta el tamaño de la muestra, es valor de P estimado, se acerca más al valor de P, disminuye la varianza, y converge hacia una distribución normal. Con respecto a la gráfica qq-normalidad a medida que aumenta el tamaño de la muestra, los puntos se van ajustando a la diagonal.
# a. Creo la población de 1000 plantas donde el porcentaje de enfermas es del 50% (1 enferma, 0 sana)
Generopoblacion = function(Tot = 1000, Enf = 0.5, San = 0.5) {
E = round(Tot * Enf, 0) #Redondear a cero cifras decimales
S = round(Tot * San, 0) #Redondear a cero cifras decimales
Poblacion = c(rep("Enfermo", E), rep("Sana",S))
print(paste("Lote Generado de tamaño: ", Tot, " Enfermos: ",E,"Sanos: ",S))
return(Poblacion)
}
Lote = Generopoblacion(Tot = 1000, Enf = 0.5, San = 0.5)# b. Obtener muestra aleatoria de la población y calcular el estimador
set.seed(123)
Generomuestra = function(Pob, Tam, Con) {
if (Tam<=length(Pob)) {
muestra = sample(x = Pob, size = Tam)
P_muestra = sum(muestra == Con)/Tam
return(P_muestra)
}
else {
print("Error: el tamaño de la muestra supera el tamaño de la población.")
return(-1)
}
}
n=1200
muestra = Generomuestra (Pob= Lote, Tam = n, Con = "Enfermo")
print(paste("Para una muestra de tamaño: ", n, "se obtuvo un ^P =",muestra))
n = 300
muestra = Generomuestra (Pob = Lote, Tam = n, Con = "Enfermo")
print(paste("Para una muestra de tamaño:", n, "un estimador de la proporción =",muestra))# c. Repita el escenario anterior (b) n=500 veces y analice los resultados en cuanto al comportamiento de los 500 resultados del estimador pˆ
Generomuestra_Iter = function(Pob, Tam, Con, Iter) {
if (Tam<=length(Pob)) {
muestra_iter = array(NA,Iter)
for (i in 1:Iter) {
muestra_iter[i] = Generomuestra (Pob, Tam, Con)
}
return(muestra_iter)
}
else {
print("Error: el tamaño de la muestra supera el tamaño de la población.")
return(-1)
}
}
iter = 500
P_muestras = Generomuestra_Iter (Pob = Lote, Tam = n, Con = "Enfermo",Iter = iter)
hist(P_muestras, main ="Histograma 500 iteraciones",
xlab="Probabilidad de las muestras", ylab="Frecuencia", las=1,
font.axis=4)
line = mean(P_muestras)
abline (v=line, lwd = 4, lty = 2, col="#8B3A62")min <- min(P_muestras, na.rm = TRUE)
q1 <- quantile(P_muestras, probs = 0.25, na.rm = TRUE)
media <- mean.default(P_muestras, na.rm = TRUE)
mediana <- median.default(P_muestras, na.rm = TRUE)
var <- var(P_muestras, na.rm = TRUE)
desvest <- sd(P_muestras, na.rm = TRUE)
q3 <- quantile(P_muestras, probs = 0.75, na.rm = TRUE)
max <- max(P_muestras, na.rm = TRUE)
s <- skewness(P_muestras)
c <- kurtosis(P_muestras)
descrt <- round(as.numeric(c(min, q1, media, mediana,
var, desvest, q3, max, s, c)),4)
nombres <- c("Mínimo", "Q1", "Media", "Mediana", "Varianza",
"Desviación", "Q3", "Máximo", "Simetría", "Curtosis")
descr2 <- as.data.frame(rbind(nombres,descrt))
descr2t_Muestras = c(5,10,15,20,30,50,60,100,200,500)
iter = 500
for (i in 1:length(t_Muestras)) {
P_muestras = Generomuestra_Iter (Pob = Lote, Tam = t_Muestras[i], Con = "Enfermo",Iter = iter)
par(mfrow=c(1,3))
hist(P_muestras, las=1, ylab = "Frecuencia",
main = paste("Muestra de tamaño:", t_Muestras[i]), col = "#EEE0E5", las=1,
font.axis=4)
abline(v=mean(P_muestras), col="#8B3A62", lwd=3)
plot(density(P_muestras), las=1, ylab = "Densidad", main = "")
qqPlot(P_muestras, xlab="Cuantiles teóricos", ylab="Cuantiles muestrales",las=1,main="qq-normalidad")
print(paste('Para una muestra de tamaño: ', t_Muestras[i]))
print(shapiro.test(P_muestras))
} n2 = 300
muestra = Generomuestra (Pob = Lote2, Tam = n2, Con = "Enfermo")
print(paste("Para una muestra de tamaño:", n2, "un estimador de la proporción =",muestra))Generomuestra_Iter = function(Pob, Tam, Con, Iter) {
if (Tam<=length(Pob)) {
muestra_iter = array(NA,Iter)
for (i in 1:Iter) {
muestra_iter[i] = Generomuestra (Pob, Tam, Con)
}
return(muestra_iter)
}
else {
print("Error: el tamaño de la muestra supera el tamaño de la población.")
return(-1)
}
}
iter = 500
P_muestras = Generomuestra_Iter (Pob = Lote2, Tam = n2, Con = "Enfermo",Iter = iter)
hist(P_muestras, main ="Histograma 500 iteraciones",
xlab="Probabilidad de las muestras", ylab="Frecuencia", las=1,
font.axis=4)
line = mean(P_muestras)
abline (v=line, lwd = 4, lty = 2, col="#8B5F65")t_Muestras = c(10,15,20,30,50,60,100,200,500)
iter = 500
for (i in 1:length(t_Muestras)) {
P_muestras = Generomuestra_Iter (Pob = Lote2, Tam = t_Muestras[i], Con = "Enfermo",Iter = iter)
par(mfrow=c(1,3))
hist(P_muestras, las=1, ylab = "Frecuencia",
main = paste("Muestra de tamaño:", t_Muestras[i]), col = "#FFB6C1", las=1,
font.axis=4)
abline(v=mean(P_muestras), col="#8B5F65", lwd=3)
plot(density(P_muestras), las=1, ylab = "Densidad", main = "")
qqPlot(P_muestras, xlab="Cuantiles teóricos", ylab="Cuantiles muestrales",las=1,main="qq-normalidad")
print(paste('Para una muestra de tamaño: ', t_Muestras[i]))
print(shapiro.test(P_muestras))
} n3 = 300
muestra = Generomuestra (Pob = Lote3, Tam = n3, Con = "Enfermo")
print(paste("Para una muestra de tamaño:", n3, "un estimador de la proporción =",muestra))Generomuestra_Iter = function(Pob, Tam, Con, Iter) {
if (Tam<=length(Pob)) {
muestra_iter = array(NA,Iter)
for (i in 1:Iter) {
muestra_iter[i] = Generomuestra (Pob, Tam, Con)
}
return(muestra_iter)
}
else {
print("Error: el tamaño de la muestra supera el tamaño de la población.")
return(-1)
}
}
iter = 500
P_muestras = Generomuestra_Iter (Pob = Lote3, Tam = n3, Con = "Enfermo",Iter = iter)
hist(P_muestras, main ="Histograma 500 iteraciones",
xlab="Probabilidad de las muestras", ylab="Frecuencia", las=1,
font.axis=4)
line = mean(P_muestras)
abline (v=line, lwd = 4, lty = 2, col="#7A8B8B")t_Muestras = c(10,15,20,30,50,60,100,200,500)
iter = 500
for (i in 1:length(t_Muestras)) {
P_muestras = Generomuestra_Iter (Pob = Lote3, Tam = t_Muestras[i], Con = "Enfermo",Iter = iter)
par(mfrow=c(1,3))
hist(P_muestras, las=1, ylab = "Frecuencia",
main = paste("Muestra de tamaño:", t_Muestras[i]), col = "#E0FFFF", las=1,
font.axis=4)
abline(v=mean(P_muestras), col="#7A8B8B", lwd=3)
plot(density(P_muestras), las=1, ylab = "Densidad", main = "")
qqPlot(P_muestras, xlab="Cuantiles teóricos", ylab="Cuantiles muestrales",las=1,main="qq-normalidad")
print(paste('Para una muestra de tamaño: ', t_Muestras[i]))
print(shapiro.test(P_muestras))
}