#Problema 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:
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%.
Lote <- rep(0:1, each = 500)
Genere una función que permita:
Valor_pp <- function(n){
Muestra <- sample(Lote, n)
p_muestral <- round(sum(Muestra)/n,2)
return(
paste("El valor de p, dada una muestra de", n, "es de:", p_muestral)
)
}
Valor_pp(45)
## [1] "El valor de p, dada una muestra de 45 es de: 0.51"
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.
Vector_p <- vector("numeric")
ejer_b <- function(k, j){ # k es la n muestral seleccionada y j la iteracción
for (i in seq(1, j)) {
Muestra <- sample(Lote, k)
p_muestral1 <- round(sum(Muestra)/k,2)
Vector_p[i] <- p_muestral1
}
df <- as.data.frame(Vector_p)
grafo <- ggplot(df, aes(x = Vector_p))+geom_histogram(binwidth = 0.05, color = "Black", fill = "Lightblue", position = "identity")+
geom_vline(xintercept = mean(Vector_p), color = "red")+
ggtitle(paste("Comportamiento de la variable p, acorde a un numero de iteracciones de",
j))+
ylab("Frequency")+xlab("Valores p")+
annotate("text", x = mean(Vector_p), y = j/2.5, label = paste("Media =", round(mean(Vector_p), 2)), color = "red", size = 4)
cer <- ifelse((mean(Vector_p) - 0.5) >= -0.09 & (mean(Vector_p) - 0.5) <= 0.09, "cercana", "lejana")
res <- ifelse(cer == "cercana", "isesgadez", "sesgo")
prom1 <- round(mean(Vector_p),2)
g <- paste("En cuanto a la simetria se puede observar un grafico con forma de campana hacia al centro lo cual denota que el ejercicio planteado es simetrico. Por su parte, acorde al sesgo, dado a que la media obtenida es",prom1, "resulta", cer, "a 0.5 poblacional, por lo que se presenta", res)
return(
list(grafo, g)
)
}
ejer_b(45, 500)
## [[1]]
##
## [[2]]
## [1] "En cuanto a la simetria se puede observar un grafico con forma de campana hacia al centro lo cual denota que el ejercicio planteado es simetrico. Por su parte, acorde al sesgo, dado a que la media obtenida es 0.5 resulta cercana a 0.5 poblacional, por lo que se presenta isesgadez"
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
n5 <- vector("numeric")
n10 <- vector("numeric")
n20 <- vector("numeric")
n30 <- vector("numeric")
n50 <- vector("numeric")
n60 <- vector("numeric")
n100 <- vector("numeric")
n200 <- vector("numeric")
n500 <- vector("numeric")
for (i in seq(1, 500)) {
Muestra1 <- sample(Lote, 5)
p_m1 <- sum(Muestra1)/5
n5[i] <- p_m1
}
for (i in seq(1, 500)) {
Muestra2 <- sample(Lote, 10)
p_m2 <- sum(Muestra2)/10
n10[i] <- p_m2
}
for (i in seq(1, 500)) {
Muestra3 <- sample(Lote, 20)
p_m3 <- sum(Muestra3)/20
n20[i] <- p_m3
}
for (i in seq(1, 500)) {
Muestra4 <- sample(Lote, 30)
p_m4 <- sum(Muestra4)/30
n30[i] <- p_m4
}
for (i in seq(1, 500)) {
Muestra5 <- sample(Lote, 50)
p_m5 <- sum(Muestra5)/50
n50[i] <- p_m5
}
for (i in seq(1, 500)) {
Muestra6 <- sample(Lote, 60)
p_m6 <- sum(Muestra6)/60
n60[i] <- p_m6
}
for (i in seq(1, 500)) {
Muestra7 <- sample(Lote, 100)
p_m7 <- sum(Muestra7)/100
n100[i] <- p_m7
}
for (i in seq(1, 500)) {
Muestra8 <- sample(Lote, 200)
p_m8 <- sum(Muestra8)/200
n200[i] <- p_m8
}
for (i in seq(1, 500)) {
Muestra9 <- sample(Lote, 500)
p_m9 <- sum(Muestra9)/500
n500[i] <- p_m9
}
df_all1 <- as.data.frame(cbind(n5, n10, n20, n30, n50, n60, n100, n200, n500))
df_all <- pivot_longer(df_all1, cols = c(n5, n10, n20, n30, n50, n60, n100, n200, n500),
names_to = "Muestras",
values_to = "P")
df_all$Muestras <- factor(df_all$Muestras, levels = c("n5", "n10", "n20", "n30", "n50",
"n60", "n100", "n200", "n500") )
ggplot(df_all, aes(x = Muestras, y = P))+
geom_boxplot(aes(fill = Muestras))+
ggtitle("Comparativo entre distintas muestras de un lote de plantas enfermas")
Comparativas <- function(base, p){
nombres=c("n=5","n=10","n=20","n=30","n=50","n=60","n=100","n=200","n=500")
for (i in 1:ncol(base)){
par(mfrow=c(1,2))
hist(base[,i],main =c("Tamano de la muestra",nombres[i]),xlab = "", col = "Lightblue")
abline(v=p,col="red",lwd=2)
qqnorm(base[,i])
qqline(base[,i])
print(paste0("El tamaño de la muestra es ",nombres[i]),quote = FALSE)
print(shapiro.test(base[,i]))
}
}
Comparativas(df_all1,0.5)
## [1] El tamaño de la muestra es n=5
##
## Shapiro-Wilk normality test
##
## data: base[, i]
## W = 0.92541, p-value = 4.726e-15
## [1] El tamaño de la muestra es n=10
##
## Shapiro-Wilk normality test
##
## data: base[, i]
## W = 0.96563, p-value = 2.006e-09
## [1] El tamaño de la muestra es n=20
##
## Shapiro-Wilk normality test
##
## data: base[, i]
## W = 0.98126, p-value = 4.81e-06
## [1] El tamaño de la muestra es n=30
##
## Shapiro-Wilk normality test
##
## data: base[, i]
## W = 0.98559, p-value = 7.418e-05
## [1] El tamaño de la muestra es n=50
##
## Shapiro-Wilk normality test
##
## data: base[, i]
## W = 0.98909, p-value = 0.0008891
## [1] El tamaño de la muestra es n=60
##
## Shapiro-Wilk normality test
##
## data: base[, i]
## W = 0.99102, p-value = 0.003923
## [1] El tamaño de la muestra es n=100
##
## Shapiro-Wilk normality test
##
## data: base[, i]
## W = 0.99309, p-value = 0.02128
## [1] El tamaño de la muestra es n=200
##
## Shapiro-Wilk normality test
##
## data: base[, i]
## W = 0.99433, p-value = 0.06021
## [1] El tamaño de la muestra es n=500
##
## Shapiro-Wilk normality test
##
## data: base[, i]
## W = 0.99277, p-value = 0.01631
Acorde a la grafica comparativa de muestras por iteracciones pertinentes, se denota que entre más grande sea el tamaño muestral menos variabilidad presentarán los datos. Por su parte en relación a la simetria, esta se presenta con mayor lucidez desde el tamaño muestral de 50.
Acorde a las pruebas de qqnorm y el test de shapiro wilk entre mayor sea la muestra mayor es su probabilidad de normalidad
Lote <- c(rep(0,900), rep(1, 100))
Valor_pp(45)
## [1] "El valor de p, dada una muestra de 45 es de: 0.16"
ejer_b(45, 500)
## [[1]]
##
## [[2]]
## [1] "En cuanto a la simetria se puede observar un grafico con forma de campana hacia al centro lo cual denota que el ejercicio planteado es simetrico. Por su parte, acorde al sesgo, dado a que la media obtenida es 0.1 resulta lejana a 0.5 poblacional, por lo que se presenta sesgo"
n5 <- vector("numeric")
n10 <- vector("numeric")
n20 <- vector("numeric")
n30 <- vector("numeric")
n50 <- vector("numeric")
n60 <- vector("numeric")
n100 <- vector("numeric")
n200 <- vector("numeric")
n500 <- vector("numeric")
for (i in seq(1, 500)) {
Muestra <- sample(Lote, 5)
p_m <- sum(Muestra)/5
n5[i] <- p_m
}
for (i in seq(1, 500)) {
Muestra <- sample(Lote, 10)
p_m <- sum(Muestra)/10
n10[i] <- p_m
}
for (i in seq(1, 500)) {
Muestra <- sample(Lote, 20)
p_m <- sum(Muestra)/20
n20[i] <- p_m
}
for (i in seq(1, 500)) {
Muestra <- sample(Lote, 30)
p_m <- sum(Muestra)/30
n30[i] <- p_m
}
for (i in seq(1, 500)) {
Muestra <- sample(Lote, 50)
p_m <- sum(Muestra)/50
n50[i] <- p_m
}
for (i in seq(1, 500)) {
Muestra <- sample(Lote, 60)
p_m <- sum(Muestra)/60
n60[i] <- p_m
}
for (i in seq(1, 500)) {
Muestra <- sample(Lote, 100)
p_m <- sum(Muestra)/100
n100[i] <- p_m
}
for (i in seq(1, 500)) {
Muestra <- sample(Lote, 200)
p_m <- sum(Muestra)/200
n200[i] <- p_m
}
for (i in seq(1, 500)) {
Muestra <- sample(Lote, 500)
p_m <- sum(Muestra)/500
n500[i] <- p_m
}
df_all1 <- as.data.frame(cbind(n5, n10, n20, n30, n50, n60, n100, n200, n500))
df_all <- pivot_longer(df_all1, cols = c(n5, n10, n20, n30, n50, n60, n100, n200, n500),
names_to = "Muestras",
values_to = "P")
df_all$Muestras <- factor(df_all$Muestras, levels = c("n5", "n10", "n20", "n30", "n50",
"n60", "n100", "n200", "n500") )
ggplot(df_all, aes(x = Muestras, y = P))+
geom_boxplot(aes(fill = Muestras))+
ggtitle("Comparativo entre distintas muestras de un lote de plantas enfermas")
Comparativas(df_all1,0.1)
## [1] El tamaño de la muestra es n=5
##
## Shapiro-Wilk normality test
##
## data: base[, i]
## W = 0.70324, p-value < 2.2e-16
## [1] El tamaño de la muestra es n=10
##
## Shapiro-Wilk normality test
##
## data: base[, i]
## W = 0.82907, p-value < 2.2e-16
## [1] El tamaño de la muestra es n=20
##
## Shapiro-Wilk normality test
##
## data: base[, i]
## W = 0.90887, p-value < 2.2e-16
## [1] El tamaño de la muestra es n=30
##
## Shapiro-Wilk normality test
##
## data: base[, i]
## W = 0.94707, p-value = 2.231e-12
## [1] El tamaño de la muestra es n=50
##
## Shapiro-Wilk normality test
##
## data: base[, i]
## W = 0.97749, p-value = 5.665e-07
## [1] El tamaño de la muestra es n=60
##
## Shapiro-Wilk normality test
##
## data: base[, i]
## W = 0.97157, p-value = 2.856e-08
## [1] El tamaño de la muestra es n=100
##
## Shapiro-Wilk normality test
##
## data: base[, i]
## W = 0.98376, p-value = 2.233e-05
## [1] El tamaño de la muestra es n=200
##
## Shapiro-Wilk normality test
##
## data: base[, i]
## W = 0.99096, p-value = 0.003753
## [1] El tamaño de la muestra es n=500
##
## Shapiro-Wilk normality test
##
## data: base[, i]
## W = 0.99336, p-value = 0.02673
Acorde a la grafica comparativa de muestras por iteracciones pertinentes, se denota que entre más grande sea el tamaño muestral menos variabilidad presentarán los datos. Por su parte en relación a la simetria, esta se presenta con mayor lucidez desde el tamaño muestral de 50.
Acorde a las pruebas de qqnorm y el test de shapiro wilk entre mayor sea la muestra mayor es su probabilidad de normalidad
Ahora bien con este lote representado con solo el 10% de plantas enfermas se denota que la proximidad a la normalidad no es tan factible.
Lote <- c(rep(0,100), rep(1, 900)) # 1 si la plata esta enferma y 0 si no esta enferma; probabilidad de que este enferma del 50%
Valor_pp(45)
## [1] "El valor de p, dada una muestra de 45 es de: 0.91"
ejer_b(45, 500)
## [[1]]
##
## [[2]]
## [1] "En cuanto a la simetria se puede observar un grafico con forma de campana hacia al centro lo cual denota que el ejercicio planteado es simetrico. Por su parte, acorde al sesgo, dado a que la media obtenida es 0.9 resulta lejana a 0.5 poblacional, por lo que se presenta sesgo"
n5 <- vector("numeric")
n10 <- vector("numeric")
n20 <- vector("numeric")
n30 <- vector("numeric")
n50 <- vector("numeric")
n60 <- vector("numeric")
n100 <- vector("numeric")
n200 <- vector("numeric")
n500 <- vector("numeric")
for (i in seq(1, 500)) {
Muestra <- sample(Lote, 5)
p_m <- sum(Muestra)/5
n5[i] <- p_m
}
for (i in seq(1, 500)) {
Muestra <- sample(Lote, 10)
p_m <- sum(Muestra)/10
n10[i] <- p_m
}
for (i in seq(1, 500)) {
Muestra <- sample(Lote, 20)
p_m <- sum(Muestra)/20
n20[i] <- p_m
}
for (i in seq(1, 500)) {
Muestra <- sample(Lote, 30)
p_m <- sum(Muestra)/30
n30[i] <- p_m
}
for (i in seq(1, 500)) {
Muestra <- sample(Lote, 50)
p_m <- sum(Muestra)/50
n50[i] <- p_m
}
for (i in seq(1, 500)) {
Muestra <- sample(Lote, 60)
p_m <- sum(Muestra)/60
n60[i] <- p_m
}
for (i in seq(1, 500)) {
Muestra <- sample(Lote, 100)
p_m <- sum(Muestra)/100
n100[i] <- p_m
}
for (i in seq(1, 500)) {
Muestra <- sample(Lote, 200)
p_m <- sum(Muestra)/200
n200[i] <- p_m
}
for (i in seq(1, 500)) {
Muestra <- sample(Lote, 500)
p_m <- sum(Muestra)/500
n500[i] <- p_m
}
df_all1 <- as.data.frame(cbind(n5, n10, n20, n30, n50, n60, n100, n200, n500))
df_all <- pivot_longer(df_all1, cols = c(n5, n10, n20, n30, n50, n60, n100, n200, n500),
names_to = "Muestras",
values_to = "P")
df_all$Muestras <- factor(df_all$Muestras, levels = c("n5", "n10", "n20", "n30", "n50",
"n60", "n100", "n200", "n500") )
ggplot(df_all, aes(x = Muestras, y = P))+
geom_boxplot(aes(fill = Muestras))+
ggtitle("Comparativo entre distintas muestras de un lote de plantas enfermas")
Comparativas(df_all1,0.9)
## [1] El tamaño de la muestra es n=5
##
## Shapiro-Wilk normality test
##
## data: base[, i]
## W = 0.66729, p-value < 2.2e-16
## [1] El tamaño de la muestra es n=10
##
## Shapiro-Wilk normality test
##
## data: base[, i]
## W = 0.83269, p-value < 2.2e-16
## [1] El tamaño de la muestra es n=20
##
## Shapiro-Wilk normality test
##
## data: base[, i]
## W = 0.92459, p-value = 3.836e-15
## [1] El tamaño de la muestra es n=30
##
## Shapiro-Wilk normality test
##
## data: base[, i]
## W = 0.94978, p-value = 5.39e-12
## [1] El tamaño de la muestra es n=50
##
## Shapiro-Wilk normality test
##
## data: base[, i]
## W = 0.9736, p-value = 7.634e-08
## [1] El tamaño de la muestra es n=60
##
## Shapiro-Wilk normality test
##
## data: base[, i]
## W = 0.97147, p-value = 2.716e-08
## [1] El tamaño de la muestra es n=100
##
## Shapiro-Wilk normality test
##
## data: base[, i]
## W = 0.97524, p-value = 1.74e-07
## [1] El tamaño de la muestra es n=200
##
## Shapiro-Wilk normality test
##
## data: base[, i]
## W = 0.99147, p-value = 0.005658
## [1] El tamaño de la muestra es n=500
##
## Shapiro-Wilk normality test
##
## data: base[, i]
## W = 0.9939, p-value = 0.04183
Acorde a la grafica comparativa de muestras por iteracciones pertinentes, se denota que entre más grande sea el tamaño muestral menos variabilidad presentarán los datos. Por su parte en relación a la simetria, esta se presenta con mayor lucidez desde el tamaño muestral de 50.
Acorde a las pruebas de qqnorm y el test de shapiro wilk entre mayor sea la muestra mayor es su probabilidad de normalidad
Ahora bien con este lote representado con solo el 90% de plantas enfermas se denota que la proximidad a la normalidad no es tan factible.