Simulación granos 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))
prop.table(table(bolsa_granos))
## bolsa_granos
##      Bueno Defectuoso 
##      0.954      0.046
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
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
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)
}
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
mean(promedio)
## [1] 0.04644458
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)
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
mean(muestras_gaussianas$promedio)
## [1] 130.8188
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)
promedio_binomial <- 20 * 0.2
promedio_binomial
## [1] 4
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
mean(muestras_binomiales$promedio)
## [1] 4.001
muestras_binomiales %>% 
  ggplot(mapping = aes(x = promedio)) +
  geom_density() +
  geom_vline(xintercept = 4, color = "red")