library(ggplot2)
08 - Bolas infinitas
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
<- c("azul", "amarillo")
urna
# Realizar 10000 pasos del proceso
for (i in seq_len(10000)) {
# Seleccionar uno de los elementos de la urna
<- sample(urna, 1)
muestra
# Agregar otro elemento igual al extraido
<- c(urna, muestra)
urna
# 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.6155
Proporcion de bolas azules 0.6108
Proporcion de bolas azules 0.6105
Proporcion de bolas azules 0.6069
Proporcion de bolas azules 0.6063
Proporcion de bolas azules 0.6143
Proporcion de bolas azules 0.6122
Proporcion de bolas azules 0.6139
Proporcion de bolas azules 0.6133
Proporcion de bolas azules 0.6094
Proporcion de bolas azules 0.6071
Proporcion de bolas azules 0.6076
Proporcion de bolas azules 0.6092
Proporcion de bolas azules 0.6077
Proporcion de bolas azules 0.6078
Proporcion de bolas azules 0.6062
Proporcion de bolas azules 0.6077
Proporcion de bolas azules 0.6061
Proporcion de bolas azules 0.6058
Proporcion de bolas azules 0.6077
# Mostrar la proporción de bolas azules
mean(urna == "azul")
[1] 0.6076785
Parte 2
Se ejecutan 10000 pasos de este proceso diez veces.
# Crear vector vacío que contendrá las proporciones de azules a medida que
# se realizan pasos del experimento.
<- numeric(0)
proporciones
# Realizar 10 iteraciones independientes (utilizando 10 bolsas independientes)
for (j in 1:10) {
<- c("azul", "amarillo")
urna for (i in 1:1000) {
<- sample(urna, 1)
muestra <- c(urna, muestra)
urna
}# Calcular la proporción de azules conforme se avanza en el experimento
<- cumsum(urna == "azul") / seq_along(urna)
proporcion
# Descartar el primer valor, que siempre es 0.5
<- proporcion[2:length(proporcion)]
proporcion
# Guardar el vector producido en el vector 'proporciones'
<- c(proporciones, proporcion)
proporciones
}
# 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
<- data.frame(
datos 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?