2.1 El jardín de los caminos que bifurcan
La inferencia bayesiana no es un procedimiento mágico. Es una forma principiada de contar y comparar posibilidades. En esta sección, construimos la inferencia bayesiana desde cero, comenzando con una metáfora simple: un jardín de caminos de datos que bifurcan. Cada observación que hacemos descarta algunos caminos y deja otros abiertos. La probabilidad a posteriori de cualquier hipótesis es proporcional al número de caminos que permanecen consistentes tanto con la hipótesis como con los datos.
Este enfoque evita la trampa común de pensar en la inferencia bayesiana como una fórmula opaca. En su lugar, la vemos por lo que realmente es: una forma sistemática de actualizar nuestras creencias eliminando posibilidades.
2.1.1 El juego de las canicas
Imagine una bolsa que contiene cuatro canicas. Cada canica es azul o blanca. Sacamos tres canicas, una a la vez con reemplazo, y observamos la secuencia: azul, blanca, azul. Queremos inferir la composición más plausible de la bolsa.
Hay cinco composiciones posibles (conjeturas), desde cero canicas azules hasta cuatro:
| Conjetura | Composición de la bolsa | Canicas azules | Canicas blancas | | --------- | ----------------------- | -------------- | --------------- | | 0 | ○○○○ | 0 | 4 | | 1 | ●○○○ | 1 | 3 | | 2 | ●●○○ | 2 | 2 | | 3 | ●●●○ | 3 | 1 | | 4 | ●●●● | 4 | 0 |
Para cada conjetura, podemos contar el número de formas (caminos) de observar la secuencia azul–blanca–azul. El número de caminos para cada conjetura es el producto del número de formas de sacar cada canica en la secuencia.
Por ejemplo, bajo la conjetura 2 (dos azules, dos blancas):
- Formas de sacar azul primero:
- Formas de sacar blanca segundo:
- Formas de sacar azul tercero:
- Caminos totales:
# Count the number of ways to observe: blue, white, blue
# for each conjecture about the bag composition
conjectures <- 0:4
# For each conjecture, ways = b _ w _ b (since we draw with replacement)
ways <- sapply(conjectures, function(b) {
w <- 4 - b
b _ w _ b # blue _ white _ blue
})
# Compute relative plausibility (posterior)
posterior <- ways / sum(ways)
data.frame(
conjecture = conjectures,
blue = conjectures,
white = 4 - conjectures,
ways = ways,
posterior = round(posterior, 4)
)El resultado muestra que la conjetura 3 (tres azules, una blanca) tiene la mayor probabilidad a posteriori, seguida de cerca por la conjetura 2. Las conjeturas 0 y 4 tienen cero caminos — es imposible observar tanto azul como blanca si la bolsa contiene un solo color.
2.1.2 De conteos a probabilidades
La idea clave es que la plausibilidad relativa iguala al número relativo de caminos. Si asignamos igual probabilidad a priori a cada conjetura (el principio de indiferencia), entonces la posterior es simplemente el número de caminos dividido por el total:
Esta es la inferencia bayesiana en su forma más pura. Sin fórmulas, sin integrales — solo conteo.
# Visualize the posterior distribution
conjectures <- 0:4
ways <- c(0, 3, 8, 9, 0)
posterior <- ways / sum(ways)
barplot(
posterior,
names.arg = conjectures,
xlab = "Conjecture (number of blue marbles)",
ylab = "Posterior probability",
main = "Posterior distribution for marble bag",
col = "steelblue",
border = "darkblue"
)
abline(h = 0, lty = 2, col = "gray40")El diagrama de barras muestra visualmente que la conjetura 3 domina, pero la conjetura 2 no está muy atrás. Esta incertidumbre es la distribución a posteriori — no elige una única respuesta "mejor", sino que nos dice cuánto creer en cada posibilidad.
2.1.3 El ejemplo del lanzamiento del globo
Ahora escalemos la misma lógica. En lugar de una bolsa de canicas, imagine un globo terráqueo. Lo lanzamos al aire y lo atrapamos. Cada vez, anotamos si nuestro dedo índice aterriza sobre agua (W) o tierra (L). Observamos la secuencia: W, L, W, W, W, L, W, L, W — es decir, 6 aguas en 9 lanzamientos.
El parámetro de interés es , la proporción del globo cubierta por agua. Podemos aproximar usando una malla de valores posibles y calculando, para cada valor, el número de formas de observar los datos.
# Grid approximation for the globe tossing problem
# Define a grid of 20 possible values for p (proportion of water)
p_grid <- seq(from = 0, to = 1, length.out = 20)
# Define a uniform prior: each value of p is equally plausible
prior <- rep(1, 20)
# Compute the likelihood: probability of 6 waters in 9 tosses
# for each value of p on the grid
likelihood <- dbinom(6, size = 9, prob = p_grid)
# Compute the unstandardized posterior
unstd_posterior <- likelihood * prior
# Standardize the posterior so it sums to 1
posterior <- unstd_posterior / sum(unstd_posterior)
# Display the results
data.frame(
p = round(p_grid, 3),
prior = prior,
likelihood = round(likelihood, 6),
posterior = round(posterior, 6)
)La aproximación por malla funciona mediante:
- Definir la malla de parámetros: Disponemos 20 valores equiespaciados de de 0 a 1.
- Calcular la verosimilitud: Para cada , usamos la distribución binomial para calcular la probabilidad de observar 6 aguas en 9 lanzamientos.
- Aplicar la distribución a priori: Multiplicamos la verosimilitud por la distribución a priori. Una distribución uniforme significa que cada valor de comienza con el mismo peso.
- Normalizar: Dividimos por la suma para que la posterior sea una distribución de probabilidad propia.
# Plot the grid-approximate posterior
p_grid <- seq(from = 0, to = 1, length.out = 20)
prior <- rep(1, 20)
likelihood <- dbinom(6, size = 9, prob = p_grid)
posterior <- (likelihood * prior) / sum(likelihood * prior)
plot(
p_grid, posterior,
type = "b",
xlab = "Proportion of water (p)",
ylab = "Posterior probability",
main = "Grid-approximate posterior: 6 waters in 9 tosses",
pch = 16,
col = "steelblue",
lwd = 2
)
grid()El gráfico muestra un pico cerca de (la proporción observada ), con incertidumbre extendiéndose por los valores vecinos. Con solo 20 puntos de malla, la aproximación es burda, pero captura la forma esencial de la posterior.
2.1.4 Actualización secuencial
La inferencia bayesiana se actualiza naturalmente a medida que llegan los datos. Cada observación actualiza la posterior, que se convierte en la distribución a priori para la siguiente observación. Esta es la actualización secuencial, y es una de las características más elegantes del marco bayesiano.
Supongamos que lanzamos el globo y observamos W. Luego lanzamos de nuevo y observamos L. Después de cada lanzamiento, podemos actualizar nuestras creencias:
El orden de los datos no importa — la posterior final es la misma ya sea que observemos W, L, W o L, W, W. Esto se debe a que la verosimilitud se factoriza:
# Demonstrate sequential updating
# Start with a uniform prior over 100 grid points
p_grid <- seq(0, 1, length.out = 100)
prior <- rep(1, 100)
# Sequence of observations: W, L, W, W, W, L, W, L, W
# W = 1 (water), L = 0 (land)
observations <- c(1, 0, 1, 1, 1, 0, 1, 0, 1)
# Update the posterior after each observation
cat("Sequential updating of the posterior:\n\n")
for (i in seq*along(observations)) {
likelihood <- dbinom(observations[i], size = 1, prob = p_grid)
posterior <- (likelihood * prior) / sum(likelihood _ prior)
# The posterior becomes the prior for the next observation
prior <- posterior
cat(sprintf("After toss %d (%s): peak p = %.3f\n",
i, ifelse(observations[i], "W", "L"),
p_grid[which.max(posterior)]))
}
cat("\nFinal posterior peak:", round(p_grid[which.max(posterior)], 3), "\n")Observe cómo el pico de la posterior se desplaza con cada observación. Después del primer W, el pico se mueve hacia más alto. Después del primer L, retrocede ligeramente. El pico final converge a , consistente con 6 aguas en 9 lanzamientos.
2.1.5 Evaluando la distribución a priori
La elección de la distribución a priori importa. Una distribución uniforme trata todos los valores de como igualmente plausibles. Pero también podríamos usar una distribución a priori informativa — por ejemplo, una que concentre probabilidad cerca de si creemos que el globo tiene aproximadamente partes iguales de agua y tierra.
# Compare different priors for the globe tossing problem
p_grid <- seq(0, 1, length.out = 100)
likelihood <- dbinom(6, size = 9, prob = p_grid)
# Prior 1: Uniform
prior_unif <- rep(1, 100)
# Prior 2: Concentrated near 0.5 (step function)
prior_step <- ifelse(p_grid < 0.5, 0, 1)
# Prior 3: Triangular, peaked at 0.5
prior_tri <- 1 - abs(p_grid - 0.5) * 2
# Compute posteriors
post*unif <- (likelihood * prior*unif) / sum(likelihood * prior*unif)
post_step <- (likelihood * prior*step) / sum(likelihood * prior*step)
post_tri <- (likelihood * prior*tri) / sum(likelihood * prior_tri)
# Plot comparison
plot(p_grid, post_unif, type = "l", lwd = 2, col = "steelblue",
xlab = "Proportion of water (p)", ylab = "Posterior density",
main = "Effect of prior on posterior", ylim = c(0, max(post_unif) * 1.1))
lines(p_grid, post_step, lwd = 2, col = "firebrick")
lines(p_grid, post_tri, lwd = 2, col = "darkgreen")
legend("topright",
legend = c("Uniform prior", "Step prior (p >= 0.5)", "Triangular prior"),
col = c("steelblue", "firebrick", "darkgreen"),
lwd = 2, bty = "n")Con solo 9 puntos de datos, la distribución a priori tiene un efecto notable sobre la posterior. A medida que crece el tamaño de muestra, la verosimilitud domina y la distribución a priori se vuelve menos influyente. Esta es una propiedad fundamental de la inferencia bayesiana: los datos pueden abrumar a la distribución a priori, pero la distribución a priori siempre contribuye.
La metáfora del jardín y el principio de indiferencia. El jardín de los datos que bifurcan es más que un dispositivo pedagógico. Codifica una verdad profunda sobre la inferencia: cada observación elimina posibilidades, y lo que queda es la posterior. El principio de indiferencia — asignar igual probabilidad a priori a cada conjetura — no es una afirmación sobre el mundo, sino una declaración de ignorancia. Cuando no tenemos razón para preferir una posibilidad sobre otra, les asignamos igual peso. Este es el punto de partida, no el punto de llegada, de la inferencia.
Overthinking
Por qué el orden de los datos no importa. La función de verosimilitud para observaciones independientes e idénticamente distribuidas (i.i.d.) se factoriza:
Dado que la multiplicación es conmutativa, el orden de los factores no cambia el producto. Por lo tanto, la posterior es la misma independientemente del orden en que lleguen los datos. Por esto la actualización secuencial produce el mismo resultado que la actualización por lotes — la verosimilitud no se preocupa por la secuencia, solo por los conteos.
Para el ejemplo del lanzamiento del globo, la verosimilitud es:
Esta depende solo del número de aguas (6) y tierras (3), no de su orden. La independencia del orden es consecuencia del supuesto i.i.d. Si las observaciones no son independientes (por ejemplo, si el globo se desgasta con el tiempo), la verosimilitud no se factorizaría y el orden importaría.
Resumen de la Sección 2.1
- La inferencia bayesiana es contar caminos a través de un jardín de datos que bifurcan.
- La posterior es proporcional al número de formas en que los datos podrían surgir bajo cada hipótesis, ponderado por la distribución a priori.
- La aproximación por malla calcula la posterior en un conjunto finito de valores del parámetro.
- La actualización secuencial significa que cada posterior se convierte en la distribución a priori para la siguiente observación.
- La distribución a priori codifica nuestras creencias antes de ver los datos; con suficientes datos, la verosimilitud domina.
- El orden de las observaciones no importa bajo supuestos i.i.d.