En primer lugar por medio de la función gen_p se calculará la piblacion teniendo en cuenta que en el planteamiento se tiene un total de 1000 individuos, con el 50% enfermos (para este casos serán plantas).
gen_p <- function(n, p) {
return(rbinom(n, 1, p))
}
poblacion <- gen_p(1000, 0.5)
A continuación, se crea la función gen_muestra usando la función de r sample() para extraer una muestra de n individuos de la población creada antes, para probar su funcionamiento se crea la muestra con la formula de muestreo. Por otra parte se calcula el estimador p^ para este tamaño n.
#Cálculo de la muestra
tam_muestra<-round((1.96*var(poblacion, na.rm = FALSE))/(0.05^2),digits = 0)
gen_muestra <- function(poblacion, n) {
return(sample(poblacion, n))
}
muestra <- gen_muestra(poblacion, tam_muestra)
#Cálculo del estimador
p_gorro <- sum(muestra) / length(muestra)
cat("El tamaño de la muestra según fórmula es: ",tam_muestra)
## El tamaño de la muestra según fórmula es: 195
cat(" ")
cat("El valor de p^ es: ",p_gorro)
## El valor de p^ es: 0.4974359
Teniendo las funciones creadas anteriormente, se plantea el ejercicio de realizar el cálculo de muestras aleatorias 500 veces y análizar sus reusltados.
En primer lugar, por medio de un ciclo for llenaremos un vector con las probabilidades muestrales de los 500 intentos o iteraciones.
#vector vacio para introducir las 500 iteraciones
p_muestrales <- c()
for (i in 1:500) {
muestra_rep <- gen_muestra(poblacion, sample(1:1000, 1))
p_gorro_muestra <- sum(muestra_rep) / length(muestra_rep)
p_muestrales <- c(p_muestrales, p_gorro_muestra)
}
Para evidenciar la simetría de los resultados, vamos a ejecutar un histograma en el cual podemos evidenciar que los valores se concentran entre 0.4 y 0.6 lo que indica que es cercano a la distribución normal.
hist(p_muestrales)
Por otra parte, buscamos identificar la variabilidad de los datos por medio de un gráfico de caja y bigotes, gráfico en el que vemos que la mayoría de los datos tienden a estar cerca a la media con muy pocos valores atípicos dentro de los 500 valores indicando una variabilidad baja.
boxplot(p_muestrales)
Para unas muestras ya definidas n=5, 10, 15, 20, 30, 50, 60, 100, 200, 500; se realiza el mismo ejercicio comparando los resultados para analizar la normalidad, y se complementa el análisis con pruebas de bondad.
Con otro ciclo for con tamaños ya definidos en un vector se realizan las simulaciones. Para este también graficamos histograma y gráfico de caja y bigotes.
#Vector vacío para incluir los valores por proporción
p_muestrales2 <- c()
#Ciclo for para las 10 muestras
for (i in c(5, 10, 15, 20, 30, 50, 60, 100, 200, 500)) {
muestra_rep2 <- gen_muestra(poblacion, i)
p_gorro_muestra2 <- sum(muestra_rep2) / length(muestra_rep2)
p_muestrales2 <- c(p_muestrales2, p_gorro_muestra2)
}
#Gráficos
hist(p_muestrales2)
boxplot(p_muestrales2)
Al difernecia de las 500 simulaciones, los valores se no concentran entre 0,4 y 0,6 y se evidencian más valores atípicos según el gráfico de caja y bigotes, por tanto no son concluyentes. Para profundizar en lo encontrado en los gráficos anteriores, realizaremos pruebas de bondad y gráficos por medio del test de Shapiro-Wilk y realizando gráficos de normalidad.
shapiro.test(p_muestrales2)
##
## Shapiro-Wilk normality test
##
## data: p_muestrales2
## W = 0.92505, p-value = 0.401
qqnorm(p_muestrales2)
Como resultado del test de Shapiro se obtiene que la distribución de
proporciones muestrales es aproximada a la normal, pero según la gráfica
de normalidad vemos una distribución que tiende a parecerse a la
izquierda de la campana de gauss, en la que los valores para las
muestras menores a 60 se encuentran un poco desvíados de la distribución
normal, pero los resultados para muestras de 60 en adelante si se
asemejan a la distribución normal.
Ahora, realizaremos la generación de población y el ejercicio de las 500 muestras aleatorias y las 10 muestras fijas para 10% de las plantas enfermas en una población.
#Uso de la función para la generación de la población.
poblacion2 <- gen_p(1000, 0.1)
#ciclo for para muestras con plantas 10% enfermas
p_muestrales3 <- c()
for (i in 1:500) {
muestra_rep3 <- gen_muestra(poblacion2, sample(1:1000, 1))
p_gorro_muestra3 <- sum(muestra_rep3) / length(muestra_rep3)
p_muestrales3 <- c(p_muestrales3, p_gorro_muestra3)
}
En el gráfico de histograma se puede evidenciar una similitud a la distribución normal, aunque tiene un sesgo a la izquierda.
hist(p_muestrales3)
En cuanto al gráfico de caja y bigotes, se evidencia un sesgo hacía el valor mínimo, con muchos valores atípicos.
boxplot(p_muestrales3)
En cuanto a las muestras fijas ya definidas, los valores resultado del test Shapiro indican el estadístico W es cercano a 1 mostrando que se acerca a la distribución normal, pero el p-valor es alto lo que indica que hay evidencia que puede no ser normal, para complementar el análisis se complementa con una gráfica de normalidad la cual indica que no tiene una distribución normal en las muestras más bajas.
#Vector vacío para incluir los valores por proporción
p_muestrales4 <- c()
#Ciclo for para las 10 muestras
for (i in c(5, 10, 15, 20, 30, 50, 60, 100, 200, 500)) {
muestra_rep4 <- gen_muestra(poblacion2, i)
p_gorro_muestra4 <- sum(muestra_rep4) / length(muestra_rep4)
p_muestrales4 <- c(p_muestrales4, p_gorro_muestra4)
}
#pruebas de bodad y normalidad
shapiro.test(p_muestrales4)
##
## Shapiro-Wilk normality test
##
## data: p_muestrales4
## W = 0.90122, p-value = 0.2259
qqnorm(p_muestrales4)
Para finalizar este ejercicio, realizaremos los escenarios nuevamente, con un 90% de la plantas enfermas en la población. En este caso la iteración de 500 muestras nos indican que es una distribución normal la distribución de propabilidades muestrales, con un sesgo a la derecha y con un gran número de valores atípicos.
#Uso de la función para la generación de la población.
poblacion3 <- gen_p(1000, 0.9)
#ciclo for para muestras con plantas 10% enfermas
p_muestrales5 <- c()
for (i in 1:500) {
muestra_rep5 <- gen_muestra(poblacion3, sample(1:1000, 1))
p_gorro_muestra5 <- sum(muestra_rep5) / length(muestra_rep5)
p_muestrales5 <- c(p_muestrales5, p_gorro_muestra5)
}
#Gráficps para el análisis
hist(p_muestrales5)
boxplot(p_muestrales5)
En cuanto a los ejercicios con tamaños de muestra fijos podemos
evidenciar que el estimador W se acercan a 1 indicando que la
distribución de proporciones muestrales tiende a una distribución
normal, pero por otra parte el p-valor es muy bajo comparado con una
significancia del 0.05 lo que indica que la distribución no se ajusta a
la distribución de normalidad.
#Vector vacío para incluir los valores por proporción
p_muestrales6 <- c()
#Ciclo for para las 10 muestras
for (i in c(5, 10, 15, 20, 30, 50, 60, 100, 200, 500)) {
muestra_rep6 <- gen_muestra(poblacion3, i)
p_gorro_muestra6 <- sum(muestra_rep6) / length(muestra_rep6)
p_muestrales6 <- c(p_muestrales6, p_gorro_muestra6)
}
#pruebas de bodad y normalidad
shapiro.test(p_muestrales6)
##
## Shapiro-Wilk normality test
##
## data: p_muestrales6
## W = 0.86217, p-value = 0.08093
qqnorm(p_muestrales6)