# introduccion-a-la-estadistica-bayesiana-con-pymc
Introducción a la estadística bayesiana con PyMC
Volver a la portada del cursoProyecto Final de Modelado Bayesiano
Sección 6 · Proyecto Final
Proyecto Final de Modelado Bayesiano
Este proyecto integra el curso completo en un análisis bayesiano de extremo a extremo. Construirás dos regresiones lineales bayesianas con PyMC sobre datos clínicos reales, verificarás que el muestreo sea confiable, comprobarás que cada modelo reproduce los datos y decidirás cuál predice mejor usando validación cruzada aproximada (LOO). El resultado no es un número, sino una distribución posterior bien diagnosticada y una conclusión justificada.
Objetivo
Estimar cómo se relacionan el índice de masa corporal, la presión arterial y un marcador sanguíneo con la progresión de la diabetes, cuantificando la incertidumbre de cada efecto. Compararás dos modelos:
- Modelo A: un predictor,
bmi. - Modelo B: tres predictores,
bmi,bpys5.
Ambos comparten la misma estructura, con predictores y respuesta estandarizados:
$$y_i \sim \mathcal{N}(\alpha + \mathbf{x}_i^\top \boldsymbol{\beta}, \sigma), \quad \alpha, \beta_j \sim \mathcal{N}(0, 1), \quad \sigma \sim \text{HalfNormal}(1)$$Dataset
Usa sklearn.datasets.load_diabetes(as_frame=True). No requiere descarga. Contiene 442 pacientes y 10 variables: age, sex, bmi, bp y seis mediciones séricas, s1 a s6. La respuesta es una medida cuantitativa de la progresión de la enfermedad un año después de la medición inicial, con valores entre 25 y 346. Estandariza los predictores elegidos y la respuesta (media 0, desviación estándar 1) antes de modelar.
Entregables
- Notebook ejecutado (
.ipynb) que corra de principio a fin sin errores, con todas las salidas visibles yrandom_seedfijo en cada llamada aleatoria. - Reporte breve (una a dos páginas, puede ir en celdas de markdown al final del notebook) que responda las preguntas de la sección correspondiente.
Pasos requeridos
- Carga y exploración: carga el dataset, selecciona
bmi,bpys5, revisa sus correlaciones con la respuesta y estandariza. - Especificación: define ambos modelos con
pm.Model(coords=...), usapm.Datapara la matriz de diseño ydimspara nombrar los coeficientes. - Prior predictive check: ejecuta
pm.sample_prior_predictivey confirma que los priors generan respuestas en un rango plausible para datos estandarizados. - Muestreo: usa
pm.samplecon al menos 4 cadenas yrandom_seedfijo. En Windows sin compilador de C++, usanuts_sampler="nutpie". - Diagnóstico: presenta
az.summaryconr_hat,ess_bulkyess_tail, cuenta las divergencias ensample_statse incluyeaz.plot_trace. - Posterior predictive check: genera réplicas con
pm.sample_posterior_predictivey compáralas con los datos medianteaz.plot_ppc. - Comparación: calcula el log-likelihood de cada modelo (
pm.compute_log_likelihood) y compáralos conaz.compare(..., ic="loo"). Revisa los valores de Pareto $k$ conaz.loo. - Interpretación: reporta la media y el HDI del 94 % (
hdi_3%,hdi_97%) de cada coeficiente del modelo elegido.
Preguntas que el reporte debe responder
- ¿Por qué los priors elegidos son débilmente informativos en la escala estandarizada? ¿Qué mostró el prior predictive check?
- ¿Convergieron ambos modelos? Cita los valores de
r_hat, ESS y el número de divergencias. - ¿El posterior predictivo reproduce la forma de la distribución observada? ¿Dónde falla, si falla?
- ¿Qué modelo tiene mayor
elpd_loo? ¿La diferencia es grande en relación condse? - ¿Cuál de los tres predictores tiene el efecto más fuerte? ¿Algún HDI incluye el cero?
- ¿Qué significa, en términos del problema, un aumento de una desviación estándar en
bmi?
Criterios de evaluación
- Especificación del modelo (20 %): priors justificados,
HalfNormalparasigma, likelihood conectada a los datos conobservedy dimensiones con nombre. - Verificación de priors (10 %): prior predictive check presente y comentado.
- Diagnóstico de convergencia (20 %):
r_hat≤ 1.01, ESS suficiente, cero divergencias o un plan explícito para corregirlas. - Validación (20 %): PPC comentado y comparación con LOO interpretada con
elpd_diff,dsey Pareto $k$. - Interpretación (20 %): conclusiones con HDI expresadas en el lenguaje del problema, sin confundirlas con intervalos de confianza.
- Reproducibilidad y claridad (10 %): semillas fijas, notebook que corre de principio a fin y reporte legible.
Extensiones opcionales
- Likelihood robusta: sustituye la
pm.Normaldel modelo B porpm.StudentTcon un prior para los grados de libertadnu, y compárala con LOO frente a la versión normal. - Más predictores: agrega
age,sexo las demás mediciones séricas y observa si elelpd_loomejora o si solo crecep_loo. - Sensibilidad a priors: repite el ajuste con $\beta_j \sim \mathcal{N}(0, 0.5)$ y $\mathcal{N}(0, 5)$ y documenta cuánto cambia el posterior.
- Predicción: usa
pm.set_datapara predecir la progresión de pacientes hipotéticos y reporta intervalos predictivos, no solo la media.
Recomendaciones
Construye primero el modelo A completo, de los datos a la interpretación, y después generaliza al modelo B. No escribas conclusiones si el diagnóstico falla: un r_hat alto o las divergencias invalidan cualquier HDI. Y trata el reporte como parte del modelo: justificar cada decisión pesa tanto como el código que la implementa.