Python Data Science Program
📓 Abrir notebook en GitHub

Clase 193 — Stack bayesiano moderno: PyMC v5, NumPyro, ArviZ

Parte: 3 — Estadística Inferencial y Causal · Fuente: PyMC v5 docs + NumPyro docs + ArviZ docs. ⏱️ Duración estimada: 90 min.

🎯 Objetivo

Aprender el stack bayesiano moderno post-TheanoPyMC v5 (PyTensor), NumPyro (JAX), ArviZ (visualización backend-agnóstica)— a nivel de poder construir modelos jerárquicos serios, diagnosticar convergencia (r_hat, ess_bulk, divergences), comparar modelos con LOO-CV y WAIC, y elegir backend según escala.

📚 Resultados de aprendizaje

Al finalizar, el estudiante podrá:

🗺️ Temas

📖 Definiciones y características

📂 Dataset / recursos

🧪 Ejercicios

  1. PyMC v5 hierarchical: tip ~ Normal(α_day + β·bill, σ); α_day ~ Normal(μα, σα).
  2. Non-centered: re-parametrizar el modelo con α_day = μα + σα · z_day, z_day ~ N(0,1). Comparar divergences.
  3. PPC: pm.sample_posterior_predictive + az.plot_ppc. Decidir si modelo razonable.
  4. NumPyro version: traducir, comparar tiempo.
  5. LOO compare: 3 modelos (intercepto solo, + slope, + jerárquico). az.compare.

📝 Homework verificable

Modelo bayesiano completo sobre tips:

  1. PyMC v5 jerárquico con day como nivel.
  2. NumPyro mismo modelo.
  3. SVI en NumPyro como alternativa rápida.
  4. Comparar 3 enfoques: MCMC PyMC, MCMC NumPyro, SVI NumPyro.
  5. az.plot_trace, az.summary, az.compare para 2 variantes del modelo.

Criterio de aceptación: convergencia (r_hat ≤ 1.01); SVI cierra gap con MCMC en < 30 s; ArviZ plots producidos.

⚠️ Errores comunes

Síntoma / mensaje Causa y cómo arreglar
Divergences > 100 Funnel posterior. Fix: non-centered parameterization.
r_hat = 1.3 No convergió. Fix: más tune, target_accept=0.95, mejor init.
Prior Uniform(-1e6, 1e6) Plano no es "no informativo". Fix: weakly informative (Normal sigma grande).
SVI con resultados raros Posterior multimodal o AutoNormal no aplica. Fix: AutoMultivariateNormal o MCMC.
Comparar modelos con DIC Deprecated. Fix: LOO o WAIC.

❓ Preguntas frecuentes

❓ PyMC v5 o NumPyro?

PyMC v5 si tu modelo ya está en PyMC3/v4 (migración fácil). NumPyro si necesitás velocidad o GPU/TPU.

❓ SVI o MCMC?

MCMC para inferencia rigurosa. SVI para producción donde latencia importa.

❓ Stan?

Sí, alternativa madura. cmdstanpy. Sintaxis Stan propia. ArviZ integra.

❓ Edward2 / TFP?

TensorFlow Probability. Menos comunidad que PyMC/NumPyro. Bueno si ya en TF.

❓ Modelos jerárquicos cuándo non-centered?

Casi siempre. Centered solo si hay mucho data por nivel.

🔗 Referencias

➡️ Siguiente parte

Clase 194 — Versionado de datos con DVC

📥 Material descargable