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 %.
1. Primero, establecemos una semilla para la reproducibilidad, que se refiere a fijar un valor inicial para el generador de números aleatorios. Al establecer una semilla, garantizamos que, si ejecutamos el mismo código nuevamente en el futuro, obtendremos exactamente la misma secuencia de números aleatorios.
set.seed(123)
Generamos la variable aleatoria con tamaño = 1, es decir, contamos con 1 intento.Luego graficamos una función de masa de probabilidad para ver la distribución de nuestra variable aleatoria y verificar que tanto las plantas enfermas como las sanas presentan una probabilidad igual.
plantas <- rbinom(n = 1000, size = 1, p = 0.5)
plantas_fmp <- table(plantas) / length(plantas)
barplot(plantas_fmp, names.arg = c("Sanas", "Enfermas"), main = "Distribución de plantas")
2. Generamos una función que permita:
Obtener una muestra aleatoria de la población y
Calcule el estimador de la proporción muestral \(\hat{p}\) para un tamaño de muestra dado n
Construimos una función para obtener una muestra aleatoria y calcular el estimador de proporción muestral y retornamos nuestra proporción estimada.
f_estimador_muestra <- function(plantas, n){
muestra <- sample(plantas, size = n, replace = FALSE) #Obtener muestra aleatoria de la población (las plantas)
proporcion_est <- sum(muestra) / n #Calcular el estimador de la proporción muestral
return(proporcion_est)
}
3. Repetir el escenario anterior con \(n = 500\) veces y analice los resultados en cuanto al comportamiento de los 500 resultados del estimador \(\hat{p}\). ¿Qué tan simétricos o sesgados son los resultados obtenidos? y ¿qué se puede observar en cuanto a la variabilidad?
Definimos una función llamada repeticiones donde designamos el número de repeticiones en 500 como lo dice el ejercicio. Luego creamos un vector llamado “result_p”, que va a almacenar los resultados del estimador \(\hat{p}\) que se iterarán a través del ciclo “for”. Posteriormente, creamos los gráficos y las pruebas necesarias para hacer nuestros análisis.
repeticiones <- function(n){
n_repeticiones <- 500 #Definir el número de repeticiones en 500
result_p <- numeric(n_repeticiones) #Definir vector para almacenar resultados del estimador p^
#Repetir el escenario las 500 veces
for (i in 1:n_repeticiones) {
result_p[i] <- f_estimador_muestra(plantas, n)
result_p
}
#Análisis de los resultados
#SIMETRÍA Y VARIANZA
#1. Histograma
hist(result_p, main = paste("Histograma de los estimadores de proporción n = ",n), xlab = "Estimador de proporción")
abline(v = 0.5, col = "red", lwd = 2) # Línea roja en el valor verdadero del porcentaje
#2. Boxplot
boxplot(result_p, main = paste("Boxplot de los estimadores de proporción n = ", n))
#3. Qq-norm
qqnorm(result_p, main = paste("QQ Plot - n = ", n))
qqline(result_p, col = 'red')
#4. Rango
rango <- range(result_p)
print(paste("Rango = ", rango))
#5. Percentiles
percentiles <- quantile(result_p, c(0.25, 0.75))
print(paste("Percentiles = ", percentiles))
#6. Desviación estándar
desviacion <- sd(result_p)
print(paste("Desviación = ", desviacion))
#7 Variabilidad
varianza <- var(result_p)
print(paste("Varianza = ", varianza))
#8. Prueba Shapiro
shapiro.test(result_p)
}
Definido el código para poder imprimir nuestros resultados, llamamos las funciones respectivas designando el número de las repeticiones en 500
f_estimador_muestra(plantas, 500)
## [1] 0.49
repeticiones(500)
## [1] "Rango = 0.448" "Rango = 0.54"
## [1] "Percentiles = 0.482" "Percentiles = 0.504"
## [1] "Desviación = 0.0163916881033576"
## [1] "Varianza = 0.000268687438877756"
##
## Shapiro-Wilk normality test
##
## data: result_p
## W = 0.99668, p-value = 0.3954
4. Repetir los puntos 2 y 3 para tamaños de muestra \(n = 5, 10, 15, 20, 30, 50, 60, 100, 200\). Comparar los resultados obtenidos para los diferentes tamaños de muestra en cuanto a la normalidad.
Hacemos lo mismo que hicimos para las 500 repeticiones, definiendo cada uno de los tamaños de muestra solicitados en el ejercicio.
f_estimador_muestra(plantas, 5)
## [1] 0.4
repeticiones(5)
## [1] "Rango = 0" "Rango = 1"
## [1] "Percentiles = 0.4" "Percentiles = 0.6"
## [1] "Desviación = 0.220466257603024"
## [1] "Varianza = 0.048605370741483"
##
## Shapiro-Wilk normality test
##
## data: result_p
## W = 0.92674, p-value = 6.632e-15
f_estimador_muestra(plantas, 10)
## [1] 0.5
repeticiones(10)
## [1] "Rango = 0.1" "Rango = 1"
## [1] "Percentiles = 0.4" "Percentiles = 0.6"
## [1] "Desviación = 0.163120251449247"
## [1] "Varianza = 0.0266082164328657"
##
## Shapiro-Wilk normality test
##
## data: result_p
## W = 0.96554, p-value = 1.926e-09
f_estimador_muestra(plantas, 15)
## [1] 0.2666667
repeticiones(15)
## [1] "Rango = 0.133333333333333" "Rango = 0.866666666666667"
## [1] "Percentiles = 0.4" "Percentiles = 0.6"
## [1] "Desviación = 0.125806169014488"
## [1] "Varianza = 0.015827192162102"
##
## Shapiro-Wilk normality test
##
## data: result_p
## W = 0.97427, p-value = 1.062e-07
f_estimador_muestra(plantas, 20)
## [1] 0.45
repeticiones(20)
## [1] "Rango = 0.25" "Rango = 0.8"
## [1] "Percentiles = 0.45" "Percentiles = 0.55"
## [1] "Desviación = 0.109995217604183"
## [1] "Varianza = 0.0120989478957916"
##
## Shapiro-Wilk normality test
##
## data: result_p
## W = 0.97654, p-value = 3.424e-07
f_estimador_muestra(plantas, 30)
## [1] 0.5666667
repeticiones(30)
## [1] "Rango = 0.233333333333333" "Rango = 0.766666666666667"
## [1] "Percentiles = 0.433333333333333" "Percentiles = 0.566666666666667"
## [1] "Desviación = 0.0893156394804431"
## [1] "Varianza = 0.00797728345580049"
##
## Shapiro-Wilk normality test
##
## data: result_p
## W = 0.98543, p-value = 6.634e-05
f_estimador_muestra(plantas, 50)
## [1] 0.46
repeticiones(50)
## [1] "Rango = 0.32" "Rango = 0.76"
## [1] "Percentiles = 0.46" "Percentiles = 0.54"
## [1] "Desviación = 0.0668977624531829"
## [1] "Varianza = 0.00447531062124249"
##
## Shapiro-Wilk normality test
##
## data: result_p
## W = 0.98949, p-value = 0.001204
f_estimador_muestra(plantas, 60)
## [1] 0.4333333
repeticiones(60)
## [1] "Rango = 0.333333333333333" "Rango = 0.666666666666667"
## [1] "Percentiles = 0.45" "Percentiles = 0.533333333333333"
## [1] "Desviación = 0.0595771020140373"
## [1] "Varianza = 0.003549431084391"
##
## Shapiro-Wilk normality test
##
## data: result_p
## W = 0.99131, p-value = 0.004974
f_estimador_muestra(plantas, 100)
## [1] 0.5
repeticiones(100)
## [1] "Rango = 0.34" "Rango = 0.63"
## [1] "Percentiles = 0.46" "Percentiles = 0.52"
## [1] "Desviación = 0.047959552096267"
## [1] "Varianza = 0.00230011863727455"
##
## Shapiro-Wilk normality test
##
## data: result_p
## W = 0.99401, p-value = 0.04609
f_estimador_muestra(plantas, 200)
## [1] 0.505
repeticiones(200)
## [1] "Rango = 0.405" "Rango = 0.58"
## [1] "Percentiles = 0.47" "Percentiles = 0.515"
## [1] "Desviación = 0.0322564420870037"
## [1] "Varianza = 0.00104047805611222"
##
## Shapiro-Wilk normality test
##
## data: result_p
## W = 0.99562, p-value = 0.1754
De los anteriores gráficos y las pruebas Shapiro-Wilk podemos concluir lo siguiente: Con los histogramas y los gráficos de densidad estamos corroborando la simetría de nuestra distribución en cada una de las muestras y con los boxplots y los qqplots verificamos la variabilidad. Tenemos que, a medida que las muestras son más pequeñas tenemos una distribución que no se acerca a la distribución normal, que no es simétrica y presenta mayor variabilidad. A partir de la muestra \(n = 200\) la distribución se empieza a asemejar más a una normal, es decir, entre más grande la muestra más simétrica y menos variable es.