#install.packages("nortest")
library(nortest)
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
X= matrix(rbinom(m, size=1, prob=0.1), ncol = n)
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]
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)
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)
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")
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")
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.
mean(Mx500)
## [1] 0.100194
var(Mx500)
## [1] 0.0001975079
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_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.
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")
Z = matrix(rbinom(m, size=1, prob=0.5), ncol = n)
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]
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)
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)
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")
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")
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.
mean(Zx500)
## [1] 0.498644
var(Zx500)
## [1] 0.0005064998
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_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).
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")
Q = matrix(rbinom(m, size=1, prob=0.9), ncol = n)
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]
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)
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)
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")
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")
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.
mean(Qx500)
## [1] 0.900496
var(Qx500)
## [1] 0.0001841221
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_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.
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.