#install.packages("nortest")
library(nortest)

Simulación con n=1000 (Lote), donde el porcentaje de individuos enfermos es del 10%.

par(cex=0.5, cex.axis=.5, cex.lab=.5, cex.main=.5, cex.sub=.5,  mfrow=c(2,5), mai = c(.4, .4, .4, .4))
set.seed(123)
n=500 
m=1000*n

Generar tamaño de la muestra y la probilidad de exito.

X= matrix(rbinom(m, size=1, prob=0.1), ncol = n)

Generación de muestras.

X5=X[ ,1:5]
X10=X[ ,1:10]
X15=X[ ,1:15]  
X20=X[ ,1:20]
X30=X[ ,1:30]
X50=X[ ,1:50]
X60=X[ ,1:60]
X100=X[ ,1:100]
X200=X[ ,1:200]
X500=X[ ,1:500]

Generacion de medias.

Mx5=apply(X5,1,mean)      
Mx10=apply(X10,1,mean) 
Mx15=apply(X15,1,mean)
Mx20=apply(X20,1,mean)
Mx30=apply(X30,1,mean)
Mx50=apply(X50,1,mean)
Mx60=apply(X60,1,mean)
Mx100=apply(X100,1,mean)
Mx200=apply(X200,1,mean)
Mx500=apply(X500,1,mean)

Generación de densidad.

dx5=density(Mx5)
dx10=density(Mx10)
dx15=density(Mx15)
dx20=density(Mx20)
dx30=density(Mx30)
dx50=density(Mx50)
dx60=density(Mx60)
dx100=density(Mx100)
dx200=density(Mx200)
dx500=density(Mx500)

Gráficos de densidad.

par(cex=0.5, cex.axis=.5, cex.lab=.5, cex.main=.5, cex.sub=.5,  mfrow=c(2,5), mai = c(.5, .5, .5, .5))
plot(dx5, main=" ", xlab = "n=5")
plot(dx10, main=" ", xlab = "n=10")
plot(dx15, main="", xlab = "n=15")
plot(dx20, main=" ", xlab = "n=20")
plot(dx30, main=" ", xlab = "n=30")
plot(dx50, main=" ", xlab = "n=50")
plot(dx60, main=" ", xlab="n=60")
plot(dx100, main=" ", xlab="n=100")
plot(dx200, main=" ", xlab="n=200")
plot(dx500, main=" ", xlab="n=500")

Graficos de distribucón.

par(cex=0.8, cex.axis=.8, cex.lab=.8, cex.main=.8, cex.sub=.8,  mfrow=c(2,5), mai = c(.4, .4, .4, .4))
qqnorm(Mx5); qqline(Mx5, col="red")
qqnorm(Mx10); qqline(Mx10, col="red")
qqnorm(Mx15); qqline(Mx15, col="red")
qqnorm(Mx20); qqline(Mx20, col="red")
qqnorm(Mx30); qqline(Mx30, col="red")
qqnorm(Mx50); qqline(Mx50, col="red")
qqnorm(Mx60); qqline(Mx60, col="red")
qqnorm(Mx100); qqline(Mx100, col="red")
qqnorm(Mx200); qqline(Mx200, col="red")
qqnorm(Mx500); qqline(Mx500, col="red")

Pruebas

shapiro.test(Mx500)
## 
##  Shapiro-Wilk normality test
## 
## data:  Mx500
## W = 0.99561, p-value = 0.005827
lillie.test(Mx500)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  Mx500
## D = 0.040126, p-value = 0.0006594

En este caso (probabilidad del 10% paa muestra de n=500), el p-valor de la prueba Shapiro-Wilk obtenido es 0.005827, que es menor que 0.05 lo que indica que los datos en Mx500 no siguen perfectamente una distribución normal. Por otro lado la prueba de Lilliefors tiene un p-valor de 0.0006594, que también es menor que 0.05, lo que refuerza el rechazo de la hipótesis nula de normalidady por tal motivo se alejan de una distribución normal.

Media y varianza

mean(Mx500)
## [1] 0.100194
var(Mx500)
## [1] 0.0001975079

Intervalo de confianza.

p010 = mean(Mx500)
e010 = 1.96 * sqrt(p010 * (1 - p010) / 500)
IC_010 = c(p010 - e010, p010 + e010)
print(IC_010)
## [1] 0.07387518 0.12651282

Con un 95% de confianza, la proporción verdadera de éxitos en la población está entre 0.0739 y 0.1265.

Sesgo con probabilidad del 10%.

sesgo_010 = mean(Mx500) - 0.1
print(sesgo_010)
## [1] 0.000194

El sesgo es 0.000194, lo cual expone que la proporción estimada en la muestra está muy cerca del valor verdadero de 0.1. Lo cual es muy cercano a 0 y por tanto es un buen dato de insesgadez.

Grafica Mx500 p=0.10

hist(Mx500, breaks = 10, main = "Distribución de Mx500", xlab = "Valores de Mx500", col = "lightblue", border = "black")
abline(v = p010, col = "blue", lwd = 2, lty = 2) # Proporción media
legend("topright", legend = c(sprintf("p010 = %.4f", p010), sprintf("IC: [%.4f, %.4f]", IC_010[1], IC_010[2]), sprintf("Sesgo: %.4f", sesgo_010)), bty = "n")

Simulación con n=1000 (Lote), donde el porcentaje de individuos enfermos es del 50%.

Generar tamaño de la muestra y la probilidad de exito.

Z = matrix(rbinom(m, size=1, prob=0.5), ncol = n)

Generación de muestras.

Z5=Z[ ,1:5]
Z10=Z[ ,1:10]
Z15=Z[ ,1:15]  
Z20=Z[ ,1:20]
Z30=Z[ ,1:30]
Z50=Z[ ,1:50]
Z60=Z[ ,1:60]
Z100=Z[ ,1:100]
Z200=Z[ ,1:200]
Z500=Z[ ,1:500]

Generacion de medias.

Zx5=apply(Z5,1,mean)      
Zx10=apply(Z10,1,mean) 
Zx15=apply(Z15,1,mean)
Zx20=apply(Z20,1,mean)
Zx30=apply(Z30,1,mean)
Zx50=apply(Z50,1,mean)
Zx60=apply(Z60,1,mean)
Zx100=apply(Z100,1,mean)
Zx200=apply(Z200,1,mean)
Zx500=apply(Z500,1,mean)

Generación de densidad.

dz5=density(Zx5)
dz10=density(Zx10)
dz15=density(Zx15)
dz20=density(Zx20)
dz30=density(Zx30)
dz50=density(Zx50)
dz60=density(Zx60)
dz100=density(Zx100)
dz200=density(Zx200)
dz500=density(Zx500)

Gráficos de densidad.

par(cex=0.5, cex.axis=.5, cex.lab=.5, cex.main=.5, cex.sub=.5,  mfrow=c(2,5), mai = c(.5, .5, .5, .5))
plot(dz5, main=" ", xlab = "n=5")
plot(dz10,main=" ", xlab = "n=10")
plot(dz15, main="", xlab = "n=15")
plot(dz20, main=" ", xlab = "n=20")
plot(dz30, main=" ", xlab = "n=30")
plot(dz50, main=" ", xlab = "n=50")
plot(dz60,main=" ", xlab="n=60")
plot(dz100,main=" ", xlab="n=100")
plot(dz200,main=" ", xlab="n=200")
plot(dz500,main=" ", xlab="n=500")

Graficos de distribucón.

par(cex=0.8, cex.axis=.8, cex.lab=.8, cex.main=.8, cex.sub=.8,  mfrow=c(2,5), mai = c(.4, .4, .4, .4))
qqnorm(Zx5); qqline(Zx5, col="red")
qqnorm(Zx10); qqline(Zx10, col="red")
qqnorm(Zx15); qqline(Zx15, col="red")
qqnorm(Zx20); qqline(Zx20, col="red")
qqnorm(Zx30); qqline(Zx30, col="red")
qqnorm(Zx50); qqline(Zx50, col="red")
qqnorm(Zx60); qqline(Zx60, col="red")
qqnorm(Zx100); qqline(Zx100, col="red")
qqnorm(Zx200); qqline(Zx200, col="red")
qqnorm(Zx500); qqline(Zx500, col="red")

Pruebas

shapiro.test(Zx500)
## 
##  Shapiro-Wilk normality test
## 
## data:  Zx500
## W = 0.99787, p-value = 0.2331
lillie.test(Zx500)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  Zx500
## D = 0.031625, p-value = 0.01977

En este caso (probabilidad del 50% paa muestra de n=500), el p-valor de la prueba Shapiro-Wilk obtenido es 0.2331, que es mayor que 0.05 lo que indica que los datos en Zx500 tengan cierto distribución normal. Por otro lado la prueba de Lilliefors tiene un p-valor de 0.01977, que es menor que 0.05. Esto implica que se rechaza la hipótesis nula de normalidad en esta prueba.

Media y varianza

mean(Zx500)
## [1] 0.498644
var(Zx500)
## [1] 0.0005064998

Intervalo de confianza.

p050 = mean(Zx500)
e050 = 1.96 * sqrt(p050 * (1 - p050) / 500)
IC_050 = c(p050 - e050, p050 + e050)
print(IC_050)
## [1] 0.4548172 0.5424708

Con un 95% de confianza, se puede decir que la proporción de éxitos en la población está entre 0.4548 y 0.5425. Lo que significa que la estimación de la proporción está precisa.

Sesgo con probabilidad del 50%

sesgo_050 = mean(Zx500) - 0.5
print(sesgo_050)
## [1] -0.001356

El sesgo es -0.001356 lo cual es extremadamente bajo, lo cual expone que la estimación de la proporción en la muestra es muy idéntica a la proporción esperada (0.5).

Grafica Zx500 p=0.50

hist(Zx500, breaks = 10, main = "Distribución de Zx500", xlab = "Valores de Mx500", col = "lightblue", border = "black")
abline(v = p050, col = "blue", lwd = 2, lty = 2) 
legend("topright", legend = c(sprintf("p050 = %.4f", p050), sprintf("IC: [%.4f, %.4f]", IC_050[1], IC_050[2]), sprintf("Sesgo: %.4f", sesgo_050)), bty = "n")

Simulación con n=1000 (Lote), donde el porcentaje de individuos enfermos es del 90%.

Generar tamaño de la muestra y la probilidad de exito.

Q = matrix(rbinom(m, size=1, prob=0.9), ncol = n)

Generación de muestras.

Q5=Q[ ,1:5]
Q10=Q[ ,1:10]
Q15=Q[ ,1:15]  
Q20=Q[ ,1:20]
Q30=Q[ ,1:30]
Q50=Q[ ,1:50]
Q60=Q[ ,1:60]
Q100=Q[ ,1:100]
Q200=Q[ ,1:200]
Q500=Q[ ,1:500]

Generacion de medias.

Qx5=apply(Q5,1,mean)      
Qx10=apply(X = Q10,1,mean) 
Qx15=apply(Q15,1,mean)
Qx20=apply(Q20,1,mean)
Qx30=apply(Q30,1,mean)
Qx50=apply(Q50,1,mean)
Qx60=apply(Q60,1,mean)
Qx100=apply(Q100,1,mean)
Qx200=apply(Q200,1,mean)
Qx500=apply(Q500,1,mean)

Generación de densidad.

dq5=density(Qx5)
dq10=density(Qx10)
dq15=density(Qx15)
dq20=density(Qx20)
dq30=density(Qx30)
dq50=density(Qx50)
dq60=density(Qx60)
dq100=density(Qx100)
dq200=density(Qx200)
dq500=density(Qx500)

Gráficos de densidad.

par(cex=0.5, cex.axis=.5, cex.lab=.5, cex.main=.5, cex.sub=.5,  mfrow=c(2,5), mai = c(.5, .5, .5, .5))
plot(dq5, main=" ", xlab = "n=5")
plot(dq10,main=" ", xlab = "n=10")
plot(dq15, main="", xlab = "n=15")
plot(dq20, main=" ", xlab = "n=20")
plot(dq30, main=" ", xlab = "n=30")
plot(dq50, main=" ", xlab = "n=50")
plot(dq60,main=" ", xlab="n=60")
plot(dq100,main=" ", xlab="n=100")
plot(dq200,main=" ", xlab="n=200")
plot(dq500,main=" ", xlab="n=500")

Graficos de distribucón.

par(cex=0.8, cex.axis=.8, cex.lab=.8, cex.main=.8, cex.sub=.8,  mfrow=c(2,5), mai = c(.4, .4, .4, .4))
qqnorm(Qx5); qqline(Qx5, col="red")
qqnorm(Qx10); qqline(Qx10, col="red")
qqnorm(Qx15); qqline(Qx15, col="red")
qqnorm(Qx20); qqline(Qx20, col="red")
qqnorm(Qx30); qqline(Qx30, col="red")
qqnorm(Qx50); qqline(Qx50, col="red")
qqnorm(Qx60); qqline(Qx60, col="red")
qqnorm(Qx100); qqline(Qx100, col="red")
qqnorm(Qx200); qqline(Qx200, col="red")
qqnorm(Qx500); qqline(Qx500, col="red")

Pruebas

shapiro.test(Qx500)
## 
##  Shapiro-Wilk normality test
## 
## data:  Qx500
## W = 0.99612, p-value = 0.01331
lillie.test(Qx500)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  Qx500
## D = 0.041875, p-value = 0.0002896

En este caso (probabilidad del 90% para muestra de n=500), el p-valor de la prueba Shapiro-Wilk obtenido es 0.2331, que es mayor que 0.05, lo que indica queno se debe rechazar la hipótesis de normalidad e cuanto a que el valor esta por encima de la condición. Empero, la prueba de Kolmogorov-Smirnov tiene un p-valor de 0.01977, que es menor que 0.05 y ciertamente implica que se debe rechazar la hipótesis nula de normalidad en esta prueba.

Media y varianza

mean(Qx500)
## [1] 0.900496
var(Qx500)
## [1] 0.0001841221

Intervalo de confianza.

p090 = mean(Qx500)
e090 = 1.96 * sqrt(p090 * (1 - p090) / 500)
IC_090 = c(p090 - e090, p090 + e090)
print(IC_090)
## [1] 0.8742579 0.9267341

Como lo anteriores resultados, los parametros esperados en este caso es 0.9, se encuentra dentro del ranto de 0.8743 y 0.9267 , esto es un buen resultado. Expone que la proporción verdadera está cerca del valor esperado y que la estimación es bastante precisa.

Sesgo con probabilidad del 90%.

sesgo_090 = mean(Qx500) - 0.9
print(sesgo_090)
## [1] 0.000496

Finalmente el sesgo se caracteriza por ser tan bajo exponiendo que el estimador es muy preciso y no está desviándose significativamente del valor esperado.

Grafica Qx500 p=0.90

hist(Qx500, breaks = 10, main = "Distribucion de Qx500", xlab = "Valores de Qx500", col = "lightblue", border = "black")
abline(v = p090, col = "blue", lwd = 2, lty = 2) 
legend("topright", legend = c(sprintf("p090 = %.4f", p090), sprintf("IC: [%.4f, %.4f]", IC_090[1], IC_090[2]), sprintf("Sesgo: %.4f", sesgo_090)), bty = "n")

Conclusión

Se puede observar fácilmente cómo, a medida que aumentan los tamaños de las muestras la distribución adquiere cada vez más una forma simétrica, lo cual es característico de los datos que siguen una distribución normal.