Simulación granos defectuosos
- Conformando la bolsa completa de granos defectuosos y no defectuosos. En este caso vamos a asumir que la bolsa tiene 500 granos, de los cuales el 4.6% son defectuosos.
# Conformando la bolsa de granos
total_granos <- 500
porcentaje_defectuosos <- 4.6 / 100
total_defectuosos <- total_granos * porcentaje_defectuosos
total_buenos <- total_granos - total_defectuosos
bolsa_granos <- c(rep("Defectuoso", total_defectuosos),
rep("Bueno", total_buenos))
- Calculando la proporción de granos defectuosos y buenos:
prop.table(table(bolsa_granos))
## bolsa_granos
## Bueno Defectuoso
## 0.954 0.046
- Tomamos una muestra de tamaño 15:
set.seed(123)
muestra_ejemplo <- sample(x = bolsa_granos, size = 15, replace = TRUE)
prop.table(table(muestra_ejemplo))
## muestra_ejemplo
## Bueno Defectuoso
## 0.8666667 0.1333333
- Vamos a realizar el mismo experimento 25 veces y calculamos el promedio de la proporción:
library(tidyverse)
set.seed(2021)
simulacion1 <- tibble(repeticion = 1:25) %>%
mutate(muestra = map(.x = repeticion, .f = ~sample(
x = bolsa_granos,
size = 15,
replace = TRUE
)),
proporcion = map(.x = muestra, .f = ~prop.table(table(.x))[2])) %>%
unnest(proporcion)
# Promedio
mean(simulacion1$proporcion, na.rm = TRUE)
## [1] 0.08
- Replicamos el muestreo anterior 100 veces, con tamaño muestral de 80:
promedio <- c()
set.seed(2021)
for (i in 1:100) {
simulacion1 <- tibble(repeticion = 1:25) %>%
mutate(
muestra = map(
.x = repeticion,
.f = ~ sample(
x = bolsa_granos,
size = 80,
replace = TRUE
)
),
proporcion = map(.x = muestra, .f = ~ prop.table(table(.x))[2])
) %>%
unnest(proporcion)
# Promedio
promedio[i] <- mean(simulacion1$proporcion, na.rm = TRUE)
}
- Observamos el resultado de las 100 iteraciones:
promedio
## [1] 0.04450000 0.04739583 0.04550000 0.04687500 0.03750000 0.05300000
## [7] 0.05350000 0.04850000 0.04293478 0.05050000 0.03906250 0.04050000
## [13] 0.04950000 0.04550000 0.04150000 0.04650000 0.04400000 0.04700000
## [19] 0.04600000 0.04650000 0.04322917 0.04114583 0.05113636 0.04450000
## [25] 0.05052083 0.04836957 0.05156250 0.04635417 0.04450000 0.04900000
## [31] 0.04456522 0.05104167 0.04479167 0.04531250 0.04531250 0.04531250
## [37] 0.04900000 0.05100000 0.04600000 0.04322917 0.04322917 0.04500000
## [43] 0.05250000 0.03950000 0.05350000 0.04800000 0.04600000 0.05100000
## [49] 0.05300000 0.03650000 0.04739583 0.04250000 0.04400000 0.04650000
## [55] 0.04821429 0.04900000 0.04350000 0.04000000 0.04583333 0.04250000
## [61] 0.04950000 0.05104167 0.04791667 0.05150000 0.04650000 0.04550000
## [67] 0.04791667 0.04100000 0.03700000 0.05416667 0.04800000 0.05208333
## [73] 0.04947917 0.05054348 0.05416667 0.05250000 0.05000000 0.04700000
## [79] 0.04739583 0.04300000 0.04400000 0.04728261 0.04750000 0.03900000
## [85] 0.04479167 0.04456522 0.04050000 0.04850000 0.05150000 0.03950000
## [91] 0.05052083 0.04600000 0.04895833 0.04782609 0.04375000 0.04300000
## [97] 0.04322917 0.04600000 0.04850000 0.04350000
- Calculamos el promedio de las medias muestrales:
mean(promedio)
## [1] 0.04644458
- Graficamos la distribución de las medias muestrales:
enframe(x = promedio, name = "replica", value = "proporcion") %>%
ggplot(mapping = aes(x = proporcion)) +
geom_density() +
geom_vline(xintercept = 0.046, color = "red")

Simulación con distribución Gaussiana
set.seed(2021)
poblacion_gaussiana <- rnorm(n = 1000, mean = 130.90, sd = 15.5)
- Realizar extracción de muestras de tamaño 20, 100 veces.
set.seed(2021)
muestras_gaussianas <- tibble(repeticion = 1:100) %>%
mutate(muestra = map(.x = repeticion, .f = ~sample(
x = poblacion_gaussiana,
size = 20,
replace = TRUE
)),
promedio = map_dbl(.x = muestra, .f = mean))
muestras_gaussianas
## # A tibble: 100 × 3
## repeticion muestra promedio
## <int> <list> <dbl>
## 1 1 <dbl [20]> 129.
## 2 2 <dbl [20]> 128.
## 3 3 <dbl [20]> 132.
## 4 4 <dbl [20]> 131.
## 5 5 <dbl [20]> 123.
## 6 6 <dbl [20]> 137.
## 7 7 <dbl [20]> 126.
## 8 8 <dbl [20]> 131.
## 9 9 <dbl [20]> 132.
## 10 10 <dbl [20]> 129.
## # … with 90 more rows
- Calculamos el promedio de los promedios muestrales:
mean(muestras_gaussianas$promedio)
## [1] 130.8188
- Graficamos la distribución de las medias muestrales:
muestras_gaussianas %>%
ggplot(mapping = aes(x = promedio)) +
geom_density() +
geom_vline(xintercept = 130.90, color = "red")

Simulación distribución Binomial
set.seed(2021)
poblacion_binomial <- rbinom(n = 1000, size = 20, prob = 0.2)
- El promedio de la población binomial es n (size) por la probabilidad del éxito (prob):
promedio_binomial <- 20 * 0.2
promedio_binomial
## [1] 4
- Extracción de muestras de tamaño 30, 100 veces:
set.seed(2021)
muestras_binomiales <- tibble(repeticion = 1:100) %>%
mutate(muestra = map(.x = repeticion, .f = ~sample(
x = poblacion_binomial,
size = 30,
replace = TRUE
)),
promedio = map_dbl(.x = muestra, .f = mean))
muestras_binomiales
## # A tibble: 100 × 3
## repeticion muestra promedio
## <int> <list> <dbl>
## 1 1 <int [30]> 3.6
## 2 2 <int [30]> 4
## 3 3 <int [30]> 4.13
## 4 4 <int [30]> 3.87
## 5 5 <int [30]> 3.77
## 6 6 <int [30]> 3.53
## 7 7 <int [30]> 3.9
## 8 8 <int [30]> 3.77
## 9 9 <int [30]> 4.17
## 10 10 <int [30]> 4.47
## # … with 90 more rows
- Calculamos el promedio de las medias muestrales:
mean(muestras_binomiales$promedio)
## [1] 4.001
- Graficamos la distribución de las medias muestrales:
muestras_binomiales %>%
ggplot(mapping = aes(x = promedio)) +
geom_density() +
geom_vline(xintercept = 4, color = "red")
