Teorema central del límite. Demostración con distribución binomial

Prueba con parámetro p=0.50

A continuación se describen los siguientes pasos para su verificación:

  1. 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%.
n=1000     #  numero de columnas (tamaño máximo de muestra)
m=1000*n   # Caso 
# distribución binomial con parámetro 0.5
X=matrix(rbinom(m,1,0.5),ncol=n) 
  1. Genere una función que permita: Obtener una muestra aleatoria de la población y Calcule el estimador de la proporción muestral pˆ para un tamaño de muestra dado n.
#para n= 10
X10=X[ ,1:10]        # n=10
Mx10=apply(X10,1,mean)      # medias de muestras de tamaño n=10
  1. 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.
#para n= 500
X500=X[ ,1:500]        # n=10
Mx500=apply(X500,1,mean)      # medias de muestras de tamaño n=10
# histogramas  de comparacion--------------------------
par(cex=0.5, cex.axis=.5, cex.lab=.5, cex.main=.5, cex.sub=.5,  mfrow=c(2,2), mai = c(.5, .5, .5, .5))
hist(Mx10, main = "n=10",freq=FALSE)
hist(Mx500, main = "n=500",freq=FALSE)
# histogramas  de comparacion--------------------------
par(cex=0.5, cex.axis=.5, cex.lab=.5, cex.main=.5, cex.sub=.5,  mfrow=c(2,2), mai = c(.5, .5, .5, .5))

qqnorm(Mx10, main ="n=10") ; qqline(Mx10, col="red")
qqnorm(Mx500, main ="n=500") ; qqline(Mx500, col="red")

# boxplot
par(cex=0.5, cex.axis=.5, cex.lab=.5, cex.main=.5, cex.sub=.5,  mfrow=c(2,2), mai = c(.5, .5, .5, .5))

boxplot(Mx10, main ="n=10"); abline(h=0.5,  col="red") 
boxplot(Mx500, main ="n=500"); abline(h=0.5,  col="red") 

  1. 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
# generación de muestras-------------
X5=X[ ,1:5]            # n=5
X10=X[ ,1:10]        # n=10
X20=X[ ,1:20]        # n=20
X30=X[ ,1:30]        # n=30
X50=X[ ,1:50]        # n=50
X60=X[ ,1:60]        # n=60
X100=X[ ,1:100]      # n=100
X200=X[,1:200]       ## n=200
X500=X[ ,1:500]    # n=500

# generacion de medias---------------
Mx5=apply(X5,1,mean)        # medias de muestras de tamaño n=5
Mx10=apply(X10,1,mean)      # medias de muestras de tamaño n=10
Mx20=apply(X20,1,mean)      # medias de muestras de tamaño n=20
Mx30=apply(X30,1,mean)      # medias de muestras de tamaño n=30
Mx50=apply(X50,1,mean)      # medias de muestras de tamaño n=50
Mx60=apply(X60,1,mean)      # medias de muestras de tamaño n=60
Mx100=apply(X100,1,mean)    # medias de muestras de tamaño n=100
Mx200=apply(X200,1,mean)      # medias de muestras de tamaño n=200
Mx500=apply(X500,1,mean)  # medias de muestras de tamaño n=500

par(cex=0.5, cex.axis=.5, cex.lab=.5, cex.main=.5, cex.sub=.5,  mfrow=c(3,3), mai = c(.3, .3, .3, .3))
# histogramas  de comparacion--------------------------
hist(Mx5, main ="n=5", freq=FALSE) 
hist(Mx10, main = "n=10",freq=FALSE)
hist(Mx20, main = "n=20",freq=FALSE)
hist(Mx30, main = "n=30",freq=FALSE) 
hist(Mx50, main = "n=50",freq=FALSE) 
hist(Mx60, main = "n=60",freq=FALSE) 
hist(Mx100, main = "n=100", freq=FALSE) 
hist (Mx200, main = "n=200",freq=FALSE)
hist(Mx500, main = "n=500", freq = FALSE)

# histogramas  de comparacion--------------------------
par(cex=0.5, cex.axis=.5, cex.lab=.5, cex.main=.5, cex.sub=.5,  mfrow=c(3,3), mai = c(.5, .5, .5, .5))
qqnorm(Mx5, main = "n=5") ; qqline(Mx5, col="red")
qqnorm(Mx10, main ="n=10") ; qqline(Mx10, col="red")
qqnorm(Mx20, main ="n=20") ; qqline(Mx20, col="red")
qqnorm(Mx30, main = "n=30") ; qqline(Mx30, col="red")
qqnorm(Mx50, main = "n=50") ; qqline(Mx50, col="red")
qqnorm(Mx60, main = "n=50") ; qqline(Mx60, col="red")
qqnorm(Mx100, main ="n=100") ; qqline(Mx100, col="red")
qqnorm(Mx200) ; qqline(Mx200, col="red")
qqnorm(Mx500, main="n=500") ; qqline(Mx500, col="red")

# pruebas Shapiro Wilks--------------------------
shapiro.test(Mx5)
## 
##  Shapiro-Wilk normality test
## 
## data:  Mx5
## W = 0.92763, p-value < 2.2e-16
shapiro.test(Mx10)
## 
##  Shapiro-Wilk normality test
## 
## data:  Mx10
## W = 0.9661, p-value = 1.676e-14
shapiro.test(Mx20)
## 
##  Shapiro-Wilk normality test
## 
## data:  Mx20
## W = 0.98276, p-value = 1.723e-09
shapiro.test(Mx30)
## 
##  Shapiro-Wilk normality test
## 
## data:  Mx30
## W = 0.98809, p-value = 2.955e-07
shapiro.test(Mx50)
## 
##  Shapiro-Wilk normality test
## 
## data:  Mx50
## W = 0.99162, p-value = 1.864e-05
shapiro.test(Mx60)
## 
##  Shapiro-Wilk normality test
## 
## data:  Mx60
## W = 0.99274, p-value = 8.229e-05
shapiro.test(Mx100)
## 
##  Shapiro-Wilk normality test
## 
## data:  Mx100
## W = 0.9954, p-value = 0.004158
shapiro.test(Mx200)
## 
##  Shapiro-Wilk normality test
## 
## data:  Mx200
## W = 0.99674, p-value = 0.03713
shapiro.test(Mx500)
## 
##  Shapiro-Wilk normality test
## 
## data:  Mx500
## W = 0.99793, p-value = 0.2557

Para las pruebas SW se busca que el valor del estadístico W sea cercano a 1 o que P sea mayor a 0.05, para NO rechazar la hipótesis nula de normalidad. La prueba de normalidad SW resulta significativa para los tamaños de muestra 200 y 500 en donde si se puede decir que la media tiene una distribución normal.

  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.

Prueba con parámetro p=0.10

n=1000     #  numero de columnas (tamaño máximo de muestra)
m=1000*n   # Caso 
# distribución binomial con parámetro 0.1
X=matrix(rbinom(m,1,0.1),ncol=n) 

# generación de muestras-------------
X5=X[ ,1:5]            # n=5
X10=X[ ,1:10]        # n=10
X20=X[ ,1:20]        # n=20
X30=X[ ,1:30]        # n=30
X50=X[ ,1:50]        # n=50
X60=X[ ,1:60]        # n=60
X100=X[ ,1:100]      # n=100
X200=X[,1:200]       ## n=200
X500=X[ ,1:500]    # n=500
X1000=X[ ,1:1000]    # n=1000
# generacion de medias---------------
Mx5=apply(X5,1,mean)        # medias de muestras de tamaño n=5
Mx10=apply(X10,1,mean)      # medias de muestras de tamaño n=10
Mx20=apply(X20,1,mean)      # medias de muestras de tamaño n=20
Mx30=apply(X30,1,mean)      # medias de muestras de tamaño n=30
Mx50=apply(X50,1,mean)      # medias de muestras de tamaño n=50
Mx60=apply(X60,1,mean)      # medias de muestras de tamaño n=60
Mx100=apply(X100,1,mean)    # medias de muestras de tamaño n=100
Mx200=apply(X200,1,mean)      # medias de muestras de tamaño n=200
Mx500=apply(X500,1,mean)  # medias de muestras de tamaño n=500
Mx1000=apply(X1000,1,mean)  # medias de muestras de tamaño n=1000
par(cex=0.5, cex.axis=.5, cex.lab=.5, cex.main=.5, cex.sub=.5,  mfrow=c(3,3), mai = c(.3, .3, .3, .3))
# histogramas  de comparacion--------------------------
hist(Mx5, main ="n=5", freq=FALSE) 
hist(Mx10, main = "n=10",freq=FALSE)
hist(Mx20, main = "n=20",freq=FALSE)
hist(Mx30, main = "n=30",freq=FALSE) 
hist(Mx50, main = "n=50",freq=FALSE) 
hist(Mx60, main = "n=60",freq=FALSE) 
hist(Mx100, main = "n=100", freq=FALSE) 
hist (Mx200, main = "n=200",freq=FALSE)
hist(Mx500, main = "n=500", freq = FALSE)

# histogramas  de comparacion--------------------------
par(cex=0.5, cex.axis=.5, cex.lab=.5, cex.main=.5, cex.sub=.5,  mfrow=c(3,3), mai = c(.5, .5, .5, .5))
qqnorm(Mx5, main = "n=5") ; qqline(Mx5, col="red")
qqnorm(Mx10, main ="n=10") ; qqline(Mx10, col="red")
qqnorm(Mx20, main ="n=20") ; qqline(Mx20, col="red")
qqnorm(Mx30, main = "n=30") ; qqline(Mx30, col="red")
qqnorm(Mx50, main = "n=50") ; qqline(Mx50, col="red")
qqnorm(Mx60, main = "n=50") ; qqline(Mx60, col="red")
qqnorm(Mx100, main ="n=100") ; qqline(Mx100, col="red")
qqnorm(Mx200) ; qqline(Mx200, col="red")
qqnorm(Mx500, main="n=500") ; qqline(Mx500, col="red")

# pruebas Shapiro Wilks--------------------------
shapiro.test(Mx5)
## 
##  Shapiro-Wilk normality test
## 
## data:  Mx5
## W = 0.69006, p-value < 2.2e-16
shapiro.test(Mx10)
## 
##  Shapiro-Wilk normality test
## 
## data:  Mx10
## W = 0.83472, p-value < 2.2e-16
shapiro.test(Mx20)
## 
##  Shapiro-Wilk normality test
## 
## data:  Mx20
## W = 0.92516, p-value < 2.2e-16
shapiro.test(Mx30)
## 
##  Shapiro-Wilk normality test
## 
## data:  Mx30
## W = 0.95658, p-value < 2.2e-16
shapiro.test(Mx50)
## 
##  Shapiro-Wilk normality test
## 
## data:  Mx50
## W = 0.97501, p-value = 4.285e-12
shapiro.test(Mx60)
## 
##  Shapiro-Wilk normality test
## 
## data:  Mx60
## W = 0.9783, p-value = 4.602e-11
shapiro.test(Mx100)
## 
##  Shapiro-Wilk normality test
## 
## data:  Mx100
## W = 0.98834, p-value = 3.876e-07
shapiro.test(Mx200)
## 
##  Shapiro-Wilk normality test
## 
## data:  Mx200
## W = 0.99398, p-value = 0.0004755
shapiro.test(Mx500)
## 
##  Shapiro-Wilk normality test
## 
## data:  Mx500
## W = 0.99508, p-value = 0.002528
shapiro.test(Mx1000)
## 
##  Shapiro-Wilk normality test
## 
## data:  Mx1000
## W = 0.99712, p-value = 0.07012

Prueba con parámetro p=0.9

n=1000     #  numero de columnas (tamaño máximo de muestra)
m=1000*n   # Caso 
# distribución binomial con parámetro 0.9
X=matrix(rbinom(m,1,0.9),ncol=n) 

# generación de muestras-------------
X5=X[ ,1:5]            # n=5
X10=X[ ,1:10]        # n=10
X20=X[ ,1:20]        # n=20
X30=X[ ,1:30]        # n=30
X50=X[ ,1:50]        # n=50
X60=X[ ,1:60]        # n=60
X100=X[ ,1:100]      # n=100
X200=X[,1:200]       ## n=200
X500=X[ ,1:500]    # n=500
X1000=X[ ,1:1000]    # n=1000

# generacion de medias---------------
Mx5=apply(X5,1,mean)        # medias de muestras de tamaño n=5
Mx10=apply(X10,1,mean)      # medias de muestras de tamaño n=10
Mx20=apply(X20,1,mean)      # medias de muestras de tamaño n=20
Mx30=apply(X30,1,mean)      # medias de muestras de tamaño n=30
Mx50=apply(X50,1,mean)      # medias de muestras de tamaño n=50
Mx60=apply(X60,1,mean)      # medias de muestras de tamaño n=60
Mx100=apply(X100,1,mean)    # medias de muestras de tamaño n=100
Mx200=apply(X200,1,mean)      # medias de muestras de tamaño n=200
Mx500=apply(X500,1,mean)  # medias de muestras de tamaño n=500
Mx1000=apply(X1000,1,mean)  # medias de muestras de tamaño n=1000
par(cex=0.5, cex.axis=.5, cex.lab=.5, cex.main=.5, cex.sub=.5,  mfrow=c(3,3), mai = c(.3, .3, .3, .3))
# histogramas  de comparacion--------------------------
hist(Mx5, main ="n=5", freq=FALSE) 
hist(Mx10, main = "n=10",freq=FALSE)
hist(Mx20, main = "n=20",freq=FALSE)
hist(Mx30, main = "n=30",freq=FALSE) 
hist(Mx50, main = "n=50",freq=FALSE) 
hist(Mx60, main = "n=60",freq=FALSE) 
hist(Mx100, main = "n=100", freq=FALSE) 
hist (Mx200, main = "n=200",freq=FALSE)
hist(Mx500, main = "n=500", freq = FALSE)

# histogramas  de comparacion--------------------------
par(cex=0.5, cex.axis=.5, cex.lab=.5, cex.main=.5, cex.sub=.5,  mfrow=c(3,3), mai = c(.5, .5, .5, .5))
qqnorm(Mx5, main = "n=5") ; qqline(Mx5, col="red")
qqnorm(Mx10, main ="n=10") ; qqline(Mx10, col="red")
qqnorm(Mx20, main ="n=20") ; qqline(Mx20, col="red")
qqnorm(Mx30, main = "n=30") ; qqline(Mx30, col="red")
qqnorm(Mx50, main = "n=50") ; qqline(Mx50, col="red")
qqnorm(Mx60, main = "n=50") ; qqline(Mx60, col="red")
qqnorm(Mx100, main ="n=100") ; qqline(Mx100, col="red")
qqnorm(Mx200) ; qqline(Mx200, col="red")
qqnorm(Mx500, main="n=500") ; qqline(Mx500, col="red")

# pruebas Shapiro Wilks--------------------------
shapiro.test(Mx5)
## 
##  Shapiro-Wilk normality test
## 
## data:  Mx5
## W = 0.69758, p-value < 2.2e-16
shapiro.test(Mx10)
## 
##  Shapiro-Wilk normality test
## 
## data:  Mx10
## W = 0.84166, p-value < 2.2e-16
shapiro.test(Mx20)
## 
##  Shapiro-Wilk normality test
## 
## data:  Mx20
## W = 0.92635, p-value < 2.2e-16
shapiro.test(Mx30)
## 
##  Shapiro-Wilk normality test
## 
## data:  Mx30
## W = 0.94736, p-value < 2.2e-16
shapiro.test(Mx50)
## 
##  Shapiro-Wilk normality test
## 
## data:  Mx50
## W = 0.96688, p-value = 2.608e-14
shapiro.test(Mx60)
## 
##  Shapiro-Wilk normality test
## 
## data:  Mx60
## W = 0.97145, p-value = 4.084e-13
shapiro.test(Mx100)
## 
##  Shapiro-Wilk normality test
## 
## data:  Mx100
## W = 0.98334, p-value = 2.854e-09
shapiro.test(Mx200)
## 
##  Shapiro-Wilk normality test
## 
## data:  Mx200
## W = 0.99381, p-value = 0.0003701
shapiro.test(Mx500)
## 
##  Shapiro-Wilk normality test
## 
## data:  Mx500
## W = 0.99593, p-value = 0.009771
shapiro.test(Mx1000)
## 
##  Shapiro-Wilk normality test
## 
## data:  Mx1000
## W = 0.99729, p-value = 0.09169

Conclusión

Aumentar el tamaño de muestra para el parámetro 0.5 comprueba el TCL PAra los parámetros 0.1 y 0.9 NO, fue necesario un tamaño de muestra de 1000 para que el test de normalidad SW diera significativo para normalidad en los dos casos.