# Población de n=1000 con un 50% de individuos enfermos
poblacion <- rbinom(1000, size = 1, prob = 0.5)
# Función para obtener una muestra aleatoria y calcular p^
obtener_muestra_p <- function(n, poblacion) {
muestra <- sample(poblacion, n, replace = TRUE)
estimador_p <- sum(muestra) / n
return(estimador_p)
}
# Realizar 500 simulaciones y almacenar los resultados
resultados <- replicate(500, obtener_muestra_p(500, poblacion))
# Histograma de los resultados
hist(resultados, col = rainbow(10), main = "Histograma de p^ (n=500)")
# Tamaños de muestra a probar
tamanos_muestra <- c(5, 10, 15, 20, 30, 50, 60, 100, 200, 500)
# Función para realizar pruebas de normalidad y generar gráficos QQ
prueba_normalidad <- function(n, poblacion) {
resultados <- replicate(500, obtener_muestra_p(n, poblacion))
shapiro_test <- shapiro.test(resultados)
# Gráfico QQ
qqnorm(resultados, main = paste("Gráfico QQ (n=", n, ")"))
qqline(resultados)
return(shapiro_test)
}
# Realizar pruebas de normalidad y generar gráficos QQ
for (n in tamanos_muestra) {
cat("Tamaño de muestra:", n, "\n")
shapiro_test_result <- prueba_normalidad(n, poblacion)
print(shapiro_test_result)
}
## Tamaño de muestra: 5
##
## Shapiro-Wilk normality test
##
## data: resultados
## W = 0.92727, p-value = 7.602e-15
##
## Tamaño de muestra: 10
##
## Shapiro-Wilk normality test
##
## data: resultados
## W = 0.96539, p-value = 1.811e-09
##
## Tamaño de muestra: 15
##
## Shapiro-Wilk normality test
##
## data: resultados
## W = 0.97684, p-value = 4.007e-07
##
## Tamaño de muestra: 20
##
## Shapiro-Wilk normality test
##
## data: resultados
## W = 0.98071, p-value = 3.48e-06
##
## Tamaño de muestra: 30
##
## Shapiro-Wilk normality test
##
## data: resultados
## W = 0.98444, p-value = 3.465e-05
##
## Tamaño de muestra: 50
##
## Shapiro-Wilk normality test
##
## data: resultados
## W = 0.98988, p-value = 0.001613
##
## Tamaño de muestra: 60
##
## Shapiro-Wilk normality test
##
## data: resultados
## W = 0.99311, p-value = 0.02172
##
## Tamaño de muestra: 100
##
## Shapiro-Wilk normality test
##
## data: resultados
## W = 0.99498, p-value = 0.1036
##
## Tamaño de muestra: 200
##
## Shapiro-Wilk normality test
##
## data: resultados
## W = 0.99535, p-value = 0.1414
##
## Tamaño de muestra: 500
##
## Shapiro-Wilk normality test
##
## data: resultados
## W = 0.99429, p-value = 0.05832
# Generar una población con 10% de individuos enfermos
poblacion_10porciento <- rbinom(1000, size = 1, prob = 0.1)
# Población con 90% de individuos enfermos
poblacion_90porciento <- rbinom(1000, size = 1, prob = 0.9)
# Gráfico de barras de los valores p de normalidad
barplot(resultados_normalidad[, "Valor p"], names.arg = resultados_normalidad[, "Tamaño de muestra"],
col = rainbow(length(tamanos_muestra)), main = "Valores p de Normalidad por Tamaño de Muestra",
xlab = "Tamaño de Muestra", ylab = "Valor p", ylim = c(0, 1))
De acuerdo al proceso realizado, la visualización obtenida como ultimo paso nos permite identificar que a medida que el tamaño de la muestra aumenta, las estimaciones se vuelven más precisas y se aproximan a una distribución normal. El porcentaje de individuos enfermos en la población inicial afecta la simetría y normalidad de los resultados.
Si quieres consultar el codigó de este informe puedes validarlo en este enlace: