Processing math: 100%
  • Punto a.
  • Punto b.
  • Punto c.
  • Punto d.
  • Punto e.

Punto a.

Se construye la población de plantas enfermas

set.seed(3)
n <- 1000
p <- 0.5

enf <- rep(c(0, 1), each = n*p)

Punto b.

Se construye una función que permita obtener una muestra aleatoria de la población anterior y el calculo del estimador de la proporción muestral.

muestraEst <- function(pob, m) {
  muestra <- sample(pob, m, replace = TRUE)
  pE <- mean(muestra)
  return(list(muestraP=muestra, pEstimado = pE))
}
muestraEst(enf,80) 
## $muestraP
##  [1] 1 1 1 1 1 1 1 1 1 0 1 0 0 1 1 0 0 0 0 1 1 0 1 0 1 0 0 1 0 0 1 1 0 1 1 1 1 0
## [39] 0 0 0 0 1 1 0 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 0 0
## [77] 1 0 0 0
## 
## $pEstimado
## [1] 0.5125

Punto c.

Se procede a repetir la función 500 veces con el objetivo de analizar el comportamiento del estimador

n_rep <- 500

resu <- data.frame(repeticion = numeric(n_rep), estimacionP = numeric(n_rep))

for (i in 1:n_rep) {
  resu$repeticion[i] <- i
  resu$estimacionP[i] <- muestraEst(enf,80)$pEstimado
}

Se calcula el sesgo para observar que tan alejado esta el valor estimado del real

sesgo <- mean(resu$estimacionP) - p
abs(sesgo)
## [1] 0.000175
library(ggplot2)
ggplot(resu, aes(x=estimacionP)) +
  geom_histogram(aes(y=after_stat(count)), binwidth=0.1, colour="black", fill="white") +
  geom_vline(aes(xintercept=0.5), color="red", linetype="dashed") + 
  labs(title=bquote("Histograma de los valores de" ~ hat(p)), x=expression(hat(p)), y="Frecuencia") +
  annotate("text", x = 0.5, y = Inf, label = "Parámetro"~ P, vjust = 2, hjust=-1, color = "red") +
  theme(plot.title = element_text(hjust = 0.5))

Los resultados obtenidos para el sesgo son bajos, con lo que se puede asumir que el estimador ˆp es insesgado. Por otra parte el histograma muestra que las 500 estimaciones para ˆp se distribuyen de manera simétrica.

Para observar la variabilidad vamos calcular el coeficiente de variación

cvar <- (sd(resu$estimacionP) / mean(resu$estimacionP)) * 100
cvar
## [1] 11.08458

Se observa que valor del coeficiente de variación es bajo, lo que nos indica que los valores estimados ˆp son bastante precisos (homogeneos).

Punto d.

Se utiliza la función creada anteriormente en el punto b para estimar los valores de ˆp para distintos tamaños de muestra propuestos n=5,10,15,20,30,50,60,100,200,500 y comparar los resultados obtenidos respecto a normalidad.

m <- 1000 # 
X <- matrix(unlist(lapply(1:m, function(i) muestraEst(enf, 80)$muestraP)), ncol=m)

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


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)   

Ahora se procedera a usar la prueba de Shapiro-Wilk la cual se utiliza para determinar si una muestra de datos proviene de una distribución normal. Las hipótesis que plantea esta prueba son:

H0: Los datos siguen una distribución normal.

H1: Los datos no siguen una distribución normal.

medias_list <- list(Mx5, Mx10, Mx15, Mx20, Mx30, Mx50, Mx60, Mx100, Mx200, Mx500)
names(medias_list) <- c("n=5", "n=10", "n=15", "n=20", "n=30", "n=50", "n=60", "n=100", "n=200", "n=500")

resultados_shapiro <- lapply(medias_list, shapiro.test)

valores_p <- sapply(resultados_shapiro, function(resultado) resultado$p.value)

options(scipen=999)

valores_p
##          n=5         n=10         n=15         n=20         n=30         n=50 
## 0.0004182696 0.0025717211 0.0079500892 0.0088014786 0.0021525115 0.2779254456 
##         n=60        n=100        n=200        n=500 
## 0.4563259644 0.0148150335 0.4147764327 0.3116454867

Se va rechazar la H0 si valor-p < 0.05

valores_p < 0.05 
##   n=5  n=10  n=15  n=20  n=30  n=50  n=60 n=100 n=200 n=500 
##  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE

Se observa que a medida que el tamaño de muestra aumenta no se tiende a rechazar H0. Ahora se grafican los histogramas para ver su comportamiento

par(mfrow=c(2,5), mar = c(4.1, 3.1, 3.1, 1.1)) # divide la gráfica en una matriz 

hist(Mx5,  main = "n=5", freq=FALSE, xlab="", ylab="")
hist(Mx10, main = "n=10",freq=FALSE, xlab="", ylab="")
hist(Mx15, main = "n=15",freq=FALSE, xlab="", ylab="")
hist(Mx20, main = "n=20",freq=FALSE, xlab="", ylab="")
hist(Mx30, main = "n=30",freq=FALSE,xlab="", ylab="") 
hist(Mx50, main = "n=50",freq=FALSE,xlab="", ylab="") 
hist(Mx60, main = "n=60", freq = FALSE,xlab="", ylab="")
hist(Mx100, main = "n=100", freq = FALSE,xlab=expression(hat(p)), ylab="") 
hist(Mx200, main = "n=200",freq = FALSE,xlab="", ylab="")
hist(Mx500, main = "n=500", freq = FALSE,xlab="", ylab="")

Con los histogramas se observa que a medida que aumenta el tamaño de las muestra la distribución adquiere cada vez más una forma simétrica, un comportamiento de los datos que siguen una distribución normal.

Ahora se realiza una prueba gráfica conocida como qqplot(). La idea de esta prueba es que los puntos generados por los cuantiles por cada muestra, a medida que aumentan, se ajusten cada vez mejor a la curva qqline. Esto demuestra que existe un ajuste hacia la distribución normal.

par(mfrow=c(2,5), mar = c(4.1, 3.1, 3.1, 1.1))

qqnorm(Mx5, main="n=5", xlab="", ylab="") ; qqline(Mx5, col="red")
qqnorm(Mx10, main ="n=10", xlab="", ylab="") ; qqline(Mx10, col="red")
qqnorm(Mx15, main ="n=15", xlab="", ylab="") ; qqline(Mx15, col="red")
qqnorm(Mx20, main ="n=20", xlab="", ylab="") ; qqline(Mx20, col="red")
qqnorm(Mx30, main = "n=30", xlab="", ylab="") ; qqline(Mx30, col="red")
qqnorm(Mx50, main = "n=50", xlab="", ylab="") ; qqline(Mx50, col="red")
qqnorm(Mx60, main ="n=60", xlab="", ylab="") ; qqline(Mx60, col="red")
qqnorm(Mx100, main ="n=100",xlab="Cuantiles Teorícos" ,ylab="") ; qqline(Mx100, col="red")
qqnorm(Mx200, main ="n=200", xlab="", ylab="") ; qqline(Mx200, col="red")
qqnorm(Mx500, main="n=500", xlab="", ylab="") ; qqline(Mx500, col="red")

Como paso con los histogramas se puede observar que a medida que aumenta el tamaño de muestra, el ajuste hacia la qqline mejora. Esto demuestra una convergencia entre los cuantiles teóricos normales y los cuantiles muestrales, lo que sugiere que estas estimaciones tienden a seguir una distribución normal.

Punto e.

n <- 1000
p10 <- 0.1

enf10 <- c(rep(1,n*p10), rep(0,n-(n*p10)))

muestraEst(enf10,80)
## $muestraP
##  [1] 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0
## [39] 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [77] 0 0 0 0
## 
## $pEstimado
## [1] 0.0875
resu10 <- data.frame(repeticion = numeric(n_rep), estimacionP = numeric(n_rep))

for (i in 1:n_rep) {
  resu10$repeticion[i] <- i
  resu10$estimacionP[i] <- muestraEst(enf10,80)$pEstimado
}

¿Qué tan simétricos o sesgados son los resultados obtenidos?

Se calcula el sesgo para observar que tan alejado esta el valor estimado del real

sesgo10 <- mean(resu10$estimacionP) - p10
abs(sesgo10)
## [1] 0.001675
library(ggplot2)
ggplot(resu10, aes(x=estimacionP)) +
  geom_histogram(aes(y=after_stat(count)), binwidth=0.1, colour="black", fill="white") +
  geom_vline(aes(xintercept=0.1), color="red", linetype="dashed") + 
  labs(title=bquote("Histograma de los valores de" ~ hat(p)), x=expression(hat(p)), y="Frecuencia") +
  annotate("text", x = 0.1, y = Inf, label = "Parámetro"~ P, vjust = 2, hjust=-1, color = "red") +
  theme(plot.title = element_text(hjust = 0.1))

Los resultados obtenidos para el sesgo son bajos, con lo que se puede asumir que el estimador ˆp es insesgado. Por otra parte el histograma muestra que las 500 estimaciones para ˆp se distribuyen de manera simétrica.

¿Qué se puede observar en cuanto a variabilidad?

Para observar la variabilidad vamos calcular el coeficiente de variación

cvar10 <- (sd(resu10$estimacionP) / mean(resu10$estimacionP)) * 100
cvar10
## [1] 35.47153

Se observa que valor del coeficiente de variación es algo alto, lo que nos indica que los valores estimados ˆp son pueden a llegar a ser poco precisos ( no homogeneos).

Ahora se estiman los valores de ˆp para distintos tamaños de muestra propuestos n=5,10,15,20,30,50,60,100,200,500 y comparar los resultados obtenidos respecto a normalidad.

m <- 1000 
X10 <- matrix(unlist(lapply(1:m, function(i) muestraEst(enf10, 80)$muestraP)), ncol=m)


X105=X10[ ,1:5]          
X1010=X10[ ,1:10]        
X1015=X10[ ,1:15]        
X1020=X10[ ,1:20]        
X1030=X10[ ,1:30]        
X1050=X10[ ,1:50]        
X1060=X10[ ,1:60]        
X10100=X10[ ,1:100]      
X10200=X10[ ,1:200]      
X10500=X10[ ,1:500]    


Mx105=apply(X105,1,mean)        
Mx1010=apply(X1010,1,mean)      
Mx1015=apply(X1015,1,mean)      
Mx1020=apply(X1020,1,mean)      
Mx1030=apply(X1030,1,mean)     
Mx1050=apply(X1050,1,mean)      
Mx1060=apply(X1060,1,mean)      
Mx10100=apply(X10100,1,mean)    
Mx10200=apply(X10200,1,mean)    
Mx10500=apply(X10500,1,mean)  

Ahora se procedera a usar la prueba de Shapiro-Wilk la cual se utiliza para determinar si una muestra de datos proviene de una distribución normal. Las hipótesis que plantea esta prueba son:

H0: Los datos siguen una distribución normal.

H1: Los datos no siguen una distribución normal.

medias_list10 <- list(Mx105, Mx1010, Mx1015, Mx1020, Mx1030, Mx1050, Mx1060, Mx10100, Mx10200, Mx10500)
names(medias_list10) <- c("n=5", "n=10", "n=15", "n=20", "n=30", "n=50", "n=60", "n=100", "n=200", "n=500")

resultados_shapiro10 <- lapply(medias_list10, shapiro.test)

valores_p10 <- sapply(resultados_shapiro10, function(resultado10) resultado10$p.value)

options(scipen=999)

valores_p10
##                  n=5                 n=10                 n=15 
## 0.000000000004452209 0.000000007063930279 0.000000771795869672 
##                 n=20                 n=30                 n=50 
## 0.000017254969081139 0.000789716758196705 0.021972921624026719 
##                 n=60                n=100                n=200 
## 0.165260017874583248 0.035833268420154156 0.068334284531243975 
##                n=500 
## 0.164052432257846381

Se va rechazar la H0 si valor-p < 0.05

valores_p10 < 0.05 
##   n=5  n=10  n=15  n=20  n=30  n=50  n=60 n=100 n=200 n=500 
##  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE FALSE FALSE

Se observa que a medida que el tamaño de muestra aumenta no se tiende a rechazar H0. Ahora se grafican los histogramas para ver su comportamiento

par(mfrow=c(2,5), mar = c(4.1, 3.1, 3.1, 1.1)) # divide la gráfica en una matriz 

hist(Mx105,  main = "n=5", freq=FALSE, xlab="", ylab="")
hist(Mx1010, main = "n=10",freq=FALSE, xlab="", ylab="")
hist(Mx1015, main = "n=15",freq=FALSE, xlab="", ylab="")
hist(Mx1020, main = "n=20",freq=FALSE, xlab="", ylab="")
hist(Mx1030, main = "n=30",freq=FALSE,xlab="", ylab="") 
hist(Mx1050, main = "n=50",freq=FALSE,xlab="", ylab="") 
hist(Mx1060, main = "n=60", freq = FALSE,xlab="", ylab="")
hist(Mx10100, main = "n=100", freq = FALSE,xlab=expression(hat(p)), ylab="") 
hist(Mx10200, main = "n=200",freq = FALSE,xlab="", ylab="")
hist(Mx10500, main = "n=500", freq = FALSE,xlab="", ylab="")

Con los histogramas se observa que a medida que aumenta el tamaño de las muestra la distribución adquiere cada vez más una forma simétrica, un comportamiento de los datos que siguen una distribución normal.

Ahora se realiza una prueba gráfica conocida como qqplot(). La idea de esta prueba es que los puntos generados por los cuantiles por cada muestra, a medida que aumentan, se ajusten cada vez mejor a la curva qqline. Esto demuestra que existe un ajuste hacia la distribución normal.

par(mfrow=c(2,5), mar = c(4.1, 3.1, 3.1, 1.1))

qqnorm(Mx105, main="n=5", xlab="", ylab="") ; qqline(Mx105, col="red")
qqnorm(Mx1010, main ="n=10", xlab="", ylab="") ; qqline(Mx1010, col="red")
qqnorm(Mx1015, main ="n=15", xlab="", ylab="") ; qqline(Mx1015, col="red")
qqnorm(Mx1020, main ="n=20", xlab="", ylab="") ; qqline(Mx1020, col="red")
qqnorm(Mx1030, main = "n=30", xlab="", ylab="") ; qqline(Mx1030, col="red")
qqnorm(Mx1050, main = "n=50", xlab="", ylab="") ; qqline(Mx1050, col="red")
qqnorm(Mx1060, main ="n=60", xlab="", ylab="") ; qqline(Mx1060, col="red")
qqnorm(Mx10100, main ="n=100",xlab="Cuantiles Teorícos" ,ylab="") ; qqline(Mx10100, col="red")
qqnorm(Mx10200, main ="n=200", xlab="", ylab="") ; qqline(Mx10200, col="red")
qqnorm(Mx10500, main="n=500", xlab="", ylab="") ; qqline(Mx10500, col="red")

Como paso con los histogramas se puede observar que a medida que aumenta el tamaño de muestra, el ajuste hacia la qqline mejora. Esto demuestra una convergencia entre los cuantiles teóricos normales y los cuantiles muestrales, lo que sugiere que estas estimaciones tienden a seguir una distribución normal.

n <- 1000
p90 <- 0.9

enf90 <- c(rep(1,n*p90), rep(0,n-(n*p90)))

muestraEst(enf90,80)
## $muestraP
##  [1] 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1
## [39] 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 0 1 1 0 1 0 1 1 1 1 1 1
## [77] 1 0 1 0
## 
## $pEstimado
## [1] 0.85
resu90 <- data.frame(repeticion = numeric(n_rep), estimacionP = numeric(n_rep))

for (i in 1:n_rep) {
  resu90$repeticion[i] <- i
  resu90$estimacionP[i] <- muestraEst(enf90,80)$pEstimado
}

¿Qué tan simétricos o sesgados son los resultados obtenidos?

Se calcula el sesgo para observar que tan alejado esta el valor estimado del real

sesgo90 <- mean(resu90$estimacionP) - p90
abs(sesgo90)
## [1] 0.000925
library(ggplot2)
ggplot(resu90, aes(x=estimacionP)) +
  geom_histogram(aes(y=after_stat(count)), binwidth=0.1, colour="black", fill="white") +
  geom_vline(aes(xintercept=0.9), color="red", linetype="dashed") + 
  labs(title=bquote("Histograma de los valores de" ~ hat(p)), x=expression(hat(p)), y="Frecuencia") +
  annotate("text", x = 0.9, y = Inf, label = "Parámetro"~ P, vjust = 2, hjust=-1, color = "red") +
  theme(plot.title = element_text(hjust = 0.9))

Los resultados obtenidos para el sesgo son bajos, con lo que se puede asumir que el estimador ˆp es insesgado. Por otra parte el histograma muestra que las 500 estimaciones para ˆp se distribuyen de manera simétrica.

¿Qué se puede observar en cuanto a variabilidad?

Para observar la variabilidad vamos calcular el coeficiente de variación

cvar90 <- (sd(resu90$estimacionP) / mean(resu90$estimacionP)) * 100
cvar90
## [1] 3.584349

Se observa que valor del coeficiente de variación es bajo, lo que nos indica que los valores estimados ˆp son bastantes precisos (homogeneos).

Ahora se estiman los valores de ˆp para distintos tamaños de muestra propuestos n=5,10,15,20,30,50,60,100,200,500 y comparar los resultados obtenidos respecto a normalidad.

m <- 1000 
X90 <- matrix(unlist(lapply(1:m, function(i) muestraEst(enf90, 80)$muestraP)), ncol=m)


X905=X90[ ,1:5]          
X9010=X90[ ,1:10]        
X9015=X90[ ,1:15]        
X9020=X90[ ,1:20]        
X9030=X90[ ,1:30]        
X9050=X90[ ,1:50]        
X9060=X90[ ,1:60]        
X90100=X90[ ,1:100]      
X90200=X90[ ,1:200]      
X90500=X90[ ,1:500]    


Mx905=apply(X905,1,mean)        
Mx9010=apply(X9010,1,mean)      
Mx9015=apply(X9015,1,mean)      
Mx9020=apply(X9020,1,mean)      
Mx9030=apply(X9030,1,mean)     
Mx9050=apply(X9050,1,mean)      
Mx9060=apply(X9060,1,mean)      
Mx90100=apply(X90100,1,mean)    
Mx90200=apply(X90200,1,mean)    
Mx90500=apply(X90500,1,mean)  

Ahora se procedera a usar la prueba de Shapiro-Wilk la cual se utiliza para determinar si una muestra de datos proviene de una distribución normal. Las hipótesis que plantea esta prueba son:

H0: Los datos siguen una distribución normal.

H1: Los datos no siguen una distribución normal.

medias_list90 <- list(Mx905, Mx9010, Mx9015, Mx9020, Mx9030, Mx9050, Mx9060, Mx90100, Mx90200, Mx90500)
names(medias_list90) <- c("n=5", "n=10", "n=15", "n=20", "n=30", "n=50", "n=60", "n=100", "n=200", "n=500")

resultados_shapiro90 <- lapply(medias_list90, shapiro.test)

valores_p90 <- sapply(resultados_shapiro90, function(resultado90) resultado90$p.value)

options(scipen=999)

valores_p90
##                 n=5                n=10                n=15                n=20 
## 0.00000000000107486 0.00000001736145573 0.00000123187668557 0.00001701375663141 
##                n=30                n=50                n=60               n=100 
## 0.00000821550065356 0.00082879964162259 0.00025314974857987 0.00071979794620815 
##               n=200               n=500 
## 0.40238222576504623 0.48014111054381242

Se va rechazar la H0 si valor-p < 0.05

valores_p90 < 0.05 
##   n=5  n=10  n=15  n=20  n=30  n=50  n=60 n=100 n=200 n=500 
##  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE

Se observa que a medida que el tamaño de muestra aumenta no se tiende a rechazar H0. Ahora se grafican los histogramas para ver su comportamiento

par(mfrow=c(2,5), mar = c(4.1, 3.1, 3.1, 1.1)) # divide la gráfica en una matriz 

hist(X905,  main = "n=5", freq=FALSE, xlab="", ylab="")
hist(Mx9010, main = "n=10",freq=FALSE, xlab="", ylab="")
hist(Mx9015, main = "n=15",freq=FALSE, xlab="", ylab="")
hist(Mx9020, main = "n=20",freq=FALSE, xlab="", ylab="")
hist(Mx9030, main = "n=30",freq=FALSE,xlab="", ylab="") 
hist(Mx9050, main = "n=50",freq=FALSE,xlab="", ylab="") 
hist(Mx9060, main = "n=60", freq = FALSE,xlab="", ylab="")
hist(Mx90100, main = "n=100", freq = FALSE,xlab=expression(hat(p)), ylab="") 
hist(Mx90200, main = "n=200",freq = FALSE,xlab="", ylab="")
hist(Mx90500, main = "n=500", freq = FALSE,xlab="", ylab="")

Con los histogramas se observa que a medida que aumenta el tamaño de las muestra la distribución adquiere cada vez más una forma simétrica, un comportamiento de los datos que siguen una distribución normal.

Ahora se realiza una prueba gráfica conocida como qqplot(). La idea de esta prueba es que los puntos generados por los cuantiles por cada muestra, a medida que aumentan, se ajusten cada vez mejor a la curva qqline. Esto demuestra que existe un ajuste hacia la distribución normal.

par(mfrow=c(2,5), mar = c(4.1, 3.1, 3.1, 1.1))

qqnorm(Mx905, main="n=5", xlab="", ylab="") ; qqline(Mx905, col="red")
qqnorm(Mx9010, main ="n=10", xlab="", ylab="") ; qqline(Mx9010, col="red")
qqnorm(Mx9015, main ="n=15", xlab="", ylab="") ; qqline(Mx9015, col="red")
qqnorm(Mx9020, main ="n=20", xlab="", ylab="") ; qqline(Mx9020, col="red")
qqnorm(Mx9030, main = "n=30", xlab="", ylab="") ; qqline(Mx9030, col="red")
qqnorm(Mx9050, main = "n=50", xlab="", ylab="") ; qqline(Mx9050, col="red")
qqnorm(Mx9060, main ="n=60", xlab="", ylab="") ; qqline(Mx9060, col="red")
qqnorm(Mx90100, main ="n=100",xlab="Cuantiles Teorícos" ,ylab="") ; qqline(Mx90100, col="red")
qqnorm(Mx90200, main ="n=200", xlab="", ylab="") ; qqline(Mx90200, col="red")
qqnorm(Mx90500, main="n=500", xlab="", ylab="") ; qqline(Mx90500, col="red")

Como paso con los histogramas se puede observar que a medida que aumenta el tamaño de muestra, el ajuste hacia la qqline mejora. Esto demuestra una convergencia entre los cuantiles teóricos normales y los cuantiles muestrales, lo que sugiere que estas estimaciones tienden a seguir una distribución normal.