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
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%.
Sim = 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 = Sim(Tot = 1000, Enf = 0.5, San = 0.5)## [1] "Lote Generado de tamaño: 1000 Enfermos: 500 Sanos: 500"
Genere una función que permita obtener una muestra aleatoria de la población y calcule el estimador de la proporción muestral para un tamaño de muestra dado n
MuAle01 = 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 = MuAle01 (Pob= Lote, Tam = n, Con = "Enfermo")## [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"
n = 300
muestra = MuAle01 (Pob = Lote, Tam = n, Con = "Enfermo")
print(paste("Para una muestra de tamaño:", n, "un estimador de la proporción =",muestra))## [1] "Para una muestra de tamaño: 300 un estimador de la proporción = 0.51"
Repita el escenario anterior 500 veces y analice los resultados en cuanto al comportamiento de los 500 estimadores. ¿Qué tan simétricos son los datos?, ¿Son sesgados y qué pasa en cuanto a variabilidad?
Gen_Mue_Iter = function(Pob, Tam, Con, Iter) {
if (Tam<=length(Pob)) {
mue_iter = array(NA,Iter)
for (i in 1:Iter) {
mue_iter[i] = MuAle01 (Pob, Tam, Con)
}
return(mue_iter)
}
else {
print("Error: el tamaño de la muestra supera el tamaño de la población.")
return(-1)
}
}
iter = 500
P_muestras = Gen_Mue_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="darkblue")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))
descr2El parámetro P=0.5 para los individuos enfermos y al obtener el comportamiento de los 500 estimadores con n=300, obtiene un estimador promedio cercano al parámetro. Los datos son simétricos, la media= 0.512 y la mediana de 0.5, con coeficiente de simetría -0.2123 negativa o a la izquierda. En La gráfica del histograma se observa que no es completamente simétrica, ya que el coeficiente de asimetría es diferente de cero. De otro lado se observa que la varianza está muy cerca de ser cero.
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
t_Muestras = c(5,10,15,20,30,50,60,100,200,500)
iter = 500
for (i in 1:length(t_Muestras)) {
P_muestras = Gen_Mue_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 = "green", las=1,
font.axis=4)
abline(v=mean(P_muestras), col="brown", 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))
} ## [1] "Para una muestra de tamaño: 5"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.92476, p-value = 4.008e-15
## [1] "Para una muestra de tamaño: 10"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.96793, p-value = 5.406e-09
## [1] "Para una muestra de tamaño: 15"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.97682, p-value = 3.963e-07
## [1] "Para una muestra de tamaño: 20"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.97991, p-value = 2.183e-06
## [1] "Para una muestra de tamaño: 30"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.9864, p-value = 0.0001288
## [1] "Para una muestra de tamaño: 50"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.98744, p-value = 0.0002655
## [1] "Para una muestra de tamaño: 60"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.98833, p-value = 0.0005064
## [1] "Para una muestra de tamaño: 100"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.99236, p-value = 0.01166
## [1] "Para una muestra de tamaño: 200"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.99272, p-value = 0.01569
## [1] "Para una muestra de tamaño: 500"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.99754, p-value = 0.6761
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.
## [1] "Lote Generado de tamaño: 1000 Enfermos: 100 Sanos: 900"
n02 = 300
muestra = MuAle01 (Pob = Lote02, Tam = n02, Con = "Enfermo")
print(paste("Para una muestra de tamaño:", n02, "un estimador de la proporción =",muestra))## [1] "Para una muestra de tamaño: 300 un estimador de la proporción = 0.103333333333333"
Gen_Mue_Iter = function(Pob, Tam, Con, Iter) {
if (Tam<=length(Pob)) {
mue_iter = array(NA,Iter)
for (i in 1:Iter) {
mue_iter[i] = MuAle01 (Pob, Tam, Con)
}
return(mue_iter)
}
else {
print("Error: el tamaño de la muestra supera el tamaño de la población.")
return(-1)
}
}
iter = 500
P_muestras = Gen_Mue_Iter (Pob = Lote02, Tam = n02, 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="green")| 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.05 | 0.09 | 0.1 | 0.11 | 0.15 | ▁▅▇▃▁ |
t_Muestras = c(10,15,20,30,50,60,100,200,500)
iter = 500
for (i in 1:length(t_Muestras)) {
P_muestras = Gen_Mue_Iter (Pob = Lote02, Tam = t_Muestras[i], Con = "Enfermo",Iter = iter)
par(mfrow=c(1,3))
hist(P_muestras, las=1, ylab = "Frecuencia", title = t_Muestras[i],
main = paste("Muestra de tamaño:", t_Muestras[i]), col = "gold2", las=1,
font.axis=4)
abline(v=mean(P_muestras), col="darkblue", 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))
} ## Warning in plot.window(xlim, ylim, "", ...): "title" is not a graphical
## parameter
## Warning in title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...):
## "title" is not a graphical parameter
## Warning in axis(1, ...): "title" is not a graphical parameter
## Warning in axis(2, at = yt, ...): "title" is not a graphical parameter
## [1] "Para una muestra de tamaño: 10"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.84135, p-value < 2.2e-16
## Warning in plot.window(xlim, ylim, "", ...): "title" is not a graphical
## parameter
## Warning in title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...):
## "title" is not a graphical parameter
## Warning in axis(1, ...): "title" is not a graphical parameter
## Warning in axis(2, at = yt, ...): "title" is not a graphical parameter
## [1] "Para una muestra de tamaño: 15"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.89183, p-value < 2.2e-16
## Warning in plot.window(xlim, ylim, "", ...): "title" is not a graphical
## parameter
## Warning in title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...):
## "title" is not a graphical parameter
## Warning in axis(1, ...): "title" is not a graphical parameter
## Warning in axis(2, at = yt, ...): "title" is not a graphical parameter
## [1] "Para una muestra de tamaño: 20"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.92406, p-value = 3.363e-15
## Warning in plot.window(xlim, ylim, "", ...): "title" is not a graphical
## parameter
## Warning in title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...):
## "title" is not a graphical parameter
## Warning in axis(1, ...): "title" is not a graphical parameter
## Warning in axis(2, at = yt, ...): "title" is not a graphical parameter
## [1] "Para una muestra de tamaño: 30"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.95388, p-value = 2.19e-11
## Warning in plot.window(xlim, ylim, "", ...): "title" is not a graphical
## parameter
## Warning in title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...):
## "title" is not a graphical parameter
## Warning in axis(1, ...): "title" is not a graphical parameter
## Warning in axis(2, at = yt, ...): "title" is not a graphical parameter
## [1] "Para una muestra de tamaño: 50"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.97325, p-value = 6.41e-08
## Warning in plot.window(xlim, ylim, "", ...): "title" is not a graphical
## parameter
## Warning in title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...):
## "title" is not a graphical parameter
## Warning in axis(1, ...): "title" is not a graphical parameter
## Warning in axis(2, at = yt, ...): "title" is not a graphical parameter
## [1] "Para una muestra de tamaño: 60"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.97423, p-value = 1.041e-07
## Warning in plot.window(xlim, ylim, "", ...): "title" is not a graphical
## parameter
## Warning in title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...):
## "title" is not a graphical parameter
## Warning in axis(1, ...): "title" is not a graphical parameter
## Warning in axis(2, at = yt, ...): "title" is not a graphical parameter
## [1] "Para una muestra de tamaño: 100"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.983, p-value = 1.384e-05
## Warning in plot.window(xlim, ylim, "", ...): "title" is not a graphical
## parameter
## Warning in title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...):
## "title" is not a graphical parameter
## Warning in axis(1, ...): "title" is not a graphical parameter
## Warning in axis(2, at = yt, ...): "title" is not a graphical parameter
## [1] "Para una muestra de tamaño: 200"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.99111, p-value = 0.004222
## Warning in plot.window(xlim, ylim, "", ...): "title" is not a graphical
## parameter
## Warning in title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...):
## "title" is not a graphical parameter
## Warning in axis(1, ...): "title" is not a graphical parameter
## Warning in axis(2, at = yt, ...): "title" is not a graphical parameter
## [1] "Para una muestra de tamaño: 500"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.99163, p-value = 0.006402
## [1] "Lote Generado de tamaño: 1000 Enfermos: 900 Sanos: 100"
n03 = 300
muestra = MuAle01 (Pob = Lote03, Tam = n03, Con = "Enfermo")
print(paste("Para una muestra de tamaño:", n03, "un estimador de la proporción =",muestra))## [1] "Para una muestra de tamaño: 300 un estimador de la proporción = 0.886666666666667"
Gen_Mue_Iter = function(Pob, Tam, Con, Iter) {
if (Tam<=length(Pob)) {
mue_iter = array(NA,Iter)
for (i in 1:Iter) {
mue_iter[i] = MuAle01 (Pob, Tam, Con)
}
return(mue_iter)
}
else {
print("Error: el tamaño de la muestra supera el tamaño de la población.")
return(-1)
}
}
iter = 500
P_muestras = Gen_Mue_Iter (Pob = Lote03, Tam = n03, 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="darkviolet")| 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.95 | ▁▅▇▂▁ |
t_Muestras = c(10,15,20,30,50,60,100,200,500)
iter = 500
for (i in 1:length(t_Muestras)) {
P_muestras = Gen_Mue_Iter (Pob = Lote03, Tam = t_Muestras[i], Con = "Enfermo",Iter = iter)
par(mfrow=c(1,3))
hist(P_muestras, las=1, ylab = "Frecuencia", title = t_Muestras[i],
main = paste("Muestra de tamaño:", t_Muestras[i]), col = "lightblue", las=1,
font.axis=4)
abline(v=mean(P_muestras), col="red", 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))
} ## Warning in plot.window(xlim, ylim, "", ...): "title" is not a graphical
## parameter
## Warning in title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...):
## "title" is not a graphical parameter
## Warning in axis(1, ...): "title" is not a graphical parameter
## Warning in axis(2, at = yt, ...): "title" is not a graphical parameter
## [1] "Para una muestra de tamaño: 10"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.83503, p-value < 2.2e-16
## Warning in plot.window(xlim, ylim, "", ...): "title" is not a graphical
## parameter
## Warning in title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...):
## "title" is not a graphical parameter
## Warning in axis(1, ...): "title" is not a graphical parameter
## Warning in axis(2, at = yt, ...): "title" is not a graphical parameter
## [1] "Para una muestra de tamaño: 15"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.90631, p-value < 2.2e-16
## Warning in plot.window(xlim, ylim, "", ...): "title" is not a graphical
## parameter
## Warning in title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...):
## "title" is not a graphical parameter
## Warning in axis(1, ...): "title" is not a graphical parameter
## Warning in axis(2, at = yt, ...): "title" is not a graphical parameter
## [1] "Para una muestra de tamaño: 20"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.91784, p-value = 7.392e-16
## Warning in plot.window(xlim, ylim, "", ...): "title" is not a graphical
## parameter
## Warning in title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...):
## "title" is not a graphical parameter
## Warning in axis(1, ...): "title" is not a graphical parameter
## Warning in axis(2, at = yt, ...): "title" is not a graphical parameter
## [1] "Para una muestra de tamaño: 30"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.94781, p-value = 2.831e-12
## Warning in plot.window(xlim, ylim, "", ...): "title" is not a graphical
## parameter
## Warning in title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...):
## "title" is not a graphical parameter
## Warning in axis(1, ...): "title" is not a graphical parameter
## Warning in axis(2, at = yt, ...): "title" is not a graphical parameter
## [1] "Para una muestra de tamaño: 50"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.97124, p-value = 2.439e-08
## Warning in plot.window(xlim, ylim, "", ...): "title" is not a graphical
## parameter
## Warning in title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...):
## "title" is not a graphical parameter
## Warning in axis(1, ...): "title" is not a graphical parameter
## Warning in axis(2, at = yt, ...): "title" is not a graphical parameter
## [1] "Para una muestra de tamaño: 60"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.97734, p-value = 5.239e-07
## Warning in plot.window(xlim, ylim, "", ...): "title" is not a graphical
## parameter
## Warning in title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...):
## "title" is not a graphical parameter
## Warning in axis(1, ...): "title" is not a graphical parameter
## Warning in axis(2, at = yt, ...): "title" is not a graphical parameter
## [1] "Para una muestra de tamaño: 100"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.98476, p-value = 4.271e-05
## Warning in plot.window(xlim, ylim, "", ...): "title" is not a graphical
## parameter
## Warning in title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...):
## "title" is not a graphical parameter
## Warning in axis(1, ...): "title" is not a graphical parameter
## Warning in axis(2, at = yt, ...): "title" is not a graphical parameter
## [1] "Para una muestra de tamaño: 200"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.99026, p-value = 0.002169
## Warning in plot.window(xlim, ylim, "", ...): "title" is not a graphical
## parameter
## Warning in title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...):
## "title" is not a graphical parameter
## Warning in axis(1, ...): "title" is not a graphical parameter
## Warning in axis(2, at = yt, ...): "title" is not a graphical parameter
## [1] "Para una muestra de tamaño: 500"
##
## Shapiro-Wilk normality test
##
## data: P_muestras
## W = 0.99444, p-value = 0.06604
Al aplicar el teorema del límite central, podemos observar qué cuando crece el número de muestras, aseguramos su convergencia hacia una distribución normal en condiciones muy generales. Ya que los estimadores están muy cerca del valor del Parámetro P= 0.5, P=0.10, P=0.90 es decir, para el porcentaje de 50%, 10% y 90% de plantas sanas,cada vez que incrementamos los datos (n) en la muestra el error disminuye, y la varianza con un (n mayor) es menor, como también disminuye la simetría.En las gráficas de densidad se observa que esta se va ajustando a una normal, la gráfica de qq-normalidad se van ajustando a la diagonal