Ley de los grandes números

Simulación

Author

Edimer David Jaramillo

Published

October 18, 2024

Bibliotecas

Code
library(tidyverse)

Simulación moneda

Code
# Función para simular lanzamientos de moneda
simular_monedas <- function(n) {
  resultados <- sample(c("Cara", "Sello"), n, replace = TRUE)
  prop.table(table(resultados))
}

# Tamaños de muestra
tamanos_muestra <- seq(from = 10, to = 100000, by = 100)
resultados <- data.frame(tamaño = integer(),
                         caras = numeric(),
                         sellos = numeric())

# Simulaciones
for (n in tamanos_muestra) {
  proporciones <- simular_monedas(n)
  resultados <- resultados |>
    add_row(tamaño = n,
            caras = proporciones["Cara"],
            sellos = proporciones["Sello"])
}

# Graficar resultados
ggplot(resultados, aes(x = tamaño)) +
  geom_line(aes(y = caras, color = "Cara"), size = 1) +
  geom_line(aes(y = sellos, color = "Sello"), size = 1) +
  geom_hline(yintercept = 0.5,
             linetype = "dashed",
             color = "black") +
  labs(
    title = "Proporciones de cara y sello en función del tamaño de la muestra",
    x = "Tamaño de la nuestra",
    y = "Proporción",
    color = "Resultado"
  ) +
  scale_color_manual(values = c("Cara" = "blue", "Sello" = "red")) +
  theme_minimal()

Simulación dado

Code
# Función para simular lanzamientos de un dado
simular_dados <- function(n) {
  resultados <- sample(1:6, n, replace = TRUE)
  prop.table(table(resultados))
}

# Tamaños de muestra
tamanos_muestra <- seq(from = 100, to = 10000, by = 10)
resultados_dado <- data.frame(
  tamaño = integer(),
  cara1 = numeric(),
  cara2 = numeric(),
  cara3 = numeric(),
  cara4 = numeric(),
  cara5 = numeric(),
  cara6 = numeric()
)

# Realizar simulaciones
for (n in tamanos_muestra) {
  proporciones <- simular_dados(n)
  resultados_dado <- resultados_dado |>
    add_row(
      tamaño = n,
      cara1 = ifelse("1" %in% names(proporciones), proporciones["1"], 0),
      cara2 = ifelse("2" %in% names(proporciones), proporciones["2"], 0),
      cara3 = ifelse("3" %in% names(proporciones), proporciones["3"], 0),
      cara4 = ifelse("4" %in% names(proporciones), proporciones["4"], 0),
      cara5 = ifelse("5" %in% names(proporciones), proporciones["5"], 0),
      cara6 = ifelse("6" %in% names(proporciones), proporciones["6"], 0)
    )
}

# Graficar resultados
resultados_long <- resultados_dado |>
  pivot_longer(cols = starts_with("cara"),
               names_to = "cara",
               values_to = "proporcion")

ggplot(resultados_long, aes(x = tamaño, y = proporcion, color = cara)) +
  geom_line(size = 1) +
  geom_hline(yintercept = 1 / 6,
             linetype = "dashed",
             color = "black") +
  labs(
    title = "Proporciones de cada cara del dado en función del tamaño de la muestra",
    x = "Tamaño de la Muestra",
    y = "Proporción",
    color = "Cara"
  ) +
  theme_minimal() +
  scale_color_manual(values = rainbow(6))