Código
library(ggplot2)
custom_theme <- function() {
theme_bw() +
theme(
panel.grid.minor = element_blank(),
panel.grid.major = element_blank()
)
}
theme_set(custom_theme())Recursos
El siguiente programa sirve para responder al ejercicio Bolas infinitas de la Práctica 3.
Parte 1
Se ejecutan 10000 pasos de este proceso una sola vez.
# Inicializar urna con una bola azul y otra amarilla
urna <- c("azul", "amarillo")
# Realizar 10000 pasos del proceso
for (i in seq_len(10000)) {
# Seleccionar uno de los elementos de la urna
muestra <- sample(urna, 1)
# Agregar otro elemento igual al extraido
urna <- c(urna, muestra)
# Cada 500 iteraciones imprimir la proporción de bolas azules
if (i %% 500 == 0) {
cat("Proporcion de bolas azules", round(mean(urna == "azul"), 4), "\n")
}
}Proporcion de bolas azules 0.3785
Proporcion de bolas azules 0.4052
Proporcion de bolas azules 0.4001
Proporcion de bolas azules 0.3941
Proporcion de bolas azules 0.3945
Proporcion de bolas azules 0.3951
Proporcion de bolas azules 0.3949
Proporcion de bolas azules 0.3941
Proporcion de bolas azules 0.392
Proporcion de bolas azules 0.3974
Proporcion de bolas azules 0.3968
Proporcion de bolas azules 0.3957
Proporcion de bolas azules 0.3919
Proporcion de bolas azules 0.3897
Proporcion de bolas azules 0.3883
Proporcion de bolas azules 0.3863
Proporcion de bolas azules 0.3858
Proporcion de bolas azules 0.3869
Proporcion de bolas azules 0.3855
Proporcion de bolas azules 0.3857
[1] 0.3857229
Parte 2
Se ejecutan 1000 pasos de este proceso diez veces.
# Crear vector vacío que contendrá las proporciones de azules a medida que
# se realizan pasos del experimento.
proporciones <- numeric(0)
# Realizar 10 iteraciones independientes (utilizando 10 bolsas independientes)
for (j in 1:10) {
urna <- c("azul", "amarillo")
for (i in 1:1000) {
muestra <- sample(urna, 1)
urna <- c(urna, muestra)
}
# Calcular la proporción de azules conforme se avanza en el experimento
proporcion <- cumsum(urna == "azul") / seq_along(urna)
# Descartar el primer valor, que siempre es 0.5
proporcion <- proporcion[2:length(proporcion)]
# Guardar el vector producido en el vector 'proporciones'
proporciones <- c(proporciones, proporcion)
}
# Generar un data.frame para graficar con ggplot2
# x: Los pasos del experimento
# y: Las proporciones conforme se realizan pasos del experimento
# prueba: Indica la prueba. Sirve para graficar una línea para cada prueba
datos <- data.frame(
x = rep(seq_along(proporcion), 10),
y = proporciones,
prueba = as.factor(rep(1:10, each = length(proporcion)))
)
ggplot(datos) +
geom_line(aes(x = x, y = y, color = prueba))
¿Conclusión?