#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:

Punto a

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)

Punto b

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"

Punto c

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"

Punto d

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

Comentarios

  • 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

Punto e

  1. 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.

Lotes con 10% de plantas enfermas

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

Comentarios

  • 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.

Lotes con 90% de plantas enfermas

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

Comentarios

  • 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.