Prior
Creencia inicial sobre θ antes de ver los datos.
Capítulo 5
Creencia inicial sobre θ antes de ver los datos.
Qué tan probables son los datos dado θ.
Creencia actualizada después de ver los datos.
Un prior es conjugado cuando la posterior tiene la misma forma que el prior. Esto permite actualización analítica cerrada.
Prior Beta(α, β) + Likelihood Binomial → Posterior Beta(α + y, β + n - y). Ideal para proporciones.
Prior N(μ₀, σ₀²) + Likelihood N(μ, σ²) → Posterior N(μₙ, σₙ²). Para medias.
import numpy as np
from scipy import stats
# Beta-Binomial: estimar probabilidad de éxito
n_trials = 20
success = 15
# Prior: Beta(2, 2) — leve creencia hacia 0.5
alpha_prior, beta_prior = 2, 2
# Posterior: Beta(alpha_prior + success, beta_prior + n_trials - success)
alpha_post = alpha_prior + success
beta_post = beta_prior + n_trials - success
# Media posterior
media_post = alpha_post / (alpha_post + beta_post)
print(f"Media posterior: {media_post:.3f}")
# IC 95% (intervalo de credibilidad)
ci = stats.beta.ppf([0.025, 0.975], alpha_post, beta_post)
print(f"IC 95%: [{ci[0]:.3f}, {ci[1]:.3f}]")La posterior de hoy es el prior de mañana. Esto permite aprendizaje online:
# Actualización secuencial: mismo resultado que ver todos los datos juntos
alpha, beta = 2, 2
# Lote 1: 10 ensayos, 7 éxitos
alpha, beta = alpha + 7, beta + 3
print(f"After batch 1: Beta({alpha}, {beta})")
# Lote 2: 10 ensayos, 8 éxitos
alpha, beta = alpha + 8, beta + 2
print(f"After batch 2: Beta({alpha}, {beta})")
# Equivalente a 20 ensayos, 15 éxitos de una vez
print(f"Direct: Beta({2+15}, {2+5})")Cuando no hay conjugación, usamos MCMC (Markov Chain Monte Carlo) para muestrear de la posterior. PyMC lo hace fácil:
import pymc as pm
import numpy as np
data = np.random.normal(5, 2, 100)
with pm.Model():
# Prior: media normal, std uniforme
mu = pm.Normal("mu", mu=0, sigma=10)
sigma = pm.Uniform("sigma", lower=0, upper=10)
# Likelihood
obs = pm.Normal("obs", mu=mu, sigma=sigma, observed=data)
# MCMC sampling
trace = pm.sample(1000, tune=500, progressbar=False)
# Resumen
print(pm.summary(trace))
# La posterior de mu debería centrarse cerca de 5PyMC usa NUTS (No-U-Turn Sampler), una variante eficiente de Hamiltonian Monte Carlo.
| Aspecto | Frecuentista | Bayesiano |
|---|---|---|
| Parámetro | Fijo (desconocido) | Variable aleatoria |
| Inferencia | p-valor, IC | Posterior, IC de credibilidad |
| Interpretación IC | 95% de los intervalos contienen θ | 95% de probabilidad que θ esté en el intervalo |
| Requiere | Distribución muestral | Prior + likelihood |
En data science, lo mejor de ambos mundos: frecuentista para tests exploratorios, bayesiano para modelos complejos y cuando tienes conocimiento previo.