Modelado Bayesiano con PyMC

Análisis jerárquico de conversión por canal — CULTIVA IA  ·  Junio 2026

PyMC 6.0.1 ArviZ 1.x NUTS · 4 cadenas Regresión Logística Jerárquica LOO · WAIC
8 000
Muestras posteriores
0
Divergencias
120
Campañas
1.001
R-hat máx.
Tasa de Conversión Posterior por Canal (mediana · HDI 90%)
SEO Orgánico
18.4%
mediana posterior
HDI 90%: 13.1% – 24.2%
Paid Ads
24.7%
mediana posterior
HDI 90%: 18.9% – 31.1%
Referral
31.2%
mediana posterior
HDI 90%: 24.8% – 38.5%
Content
14.9%
mediana posterior
HDI 90%: 10.2% – 20.1%
Email
22.1%
mediana posterior
HDI 90%: 16.3% – 28.4%
Forest Plot — Interceptos por Canal (escala logit)
Referral
+0.74
Paid Ads
+0.39
Email
+0.22
μ global
+0.07
SEO
-0.21
Content
-0.53
Barras = HDI 90% · Punto = mediana · Línea vertical = intercepto global μ
Valores en escala logit; convertir con σ(x) para probabilidades.
Hiperprior μ_α
0.07 [−0.31, 0.45]
Hiperprior σ_α
0.51 [0.28, 0.84]
β log-presupuesto
+0.18 [0.09, 0.28]
Curvas de Conversión vs Presupuesto (con HDI 90%)
Referral
Paid Ads
Email
SEO
Content
0% 10% 20% 30% 40% €200 €500 €1k €2k €5k €10k Presupuesto por campaña (€, escala log)
β_log_presupuesto = +0.18 [0.09, 0.28] — el presupuesto tiene efecto positivo pero moderado.
Puntos = observaciones reales. Bandas = HDI 90% posterior predictivo.
Diagnósticos MCMC — Resumen de Parámetros
Parámetro Media SD HDI 90% R-hat ESS bulk Estado
mu_alpha 0.072 0.238 [−0.31, 0.44] 1.000 3 241 OK
sigma_alpha 0.512 0.181 [0.28, 0.84] 1.001 2 887 OK
alpha[Referral] 0.742 0.194 [0.41, 1.07] 1.001 4 102 OK
alpha[Paid] 0.389 0.176 [0.09, 0.69] 1.000 3 784 OK
alpha[Email] 0.219 0.168 [−0.06, 0.49] 1.001 3 621 OK
alpha[SEO] −0.213 0.172 [−0.51, 0.08] 1.001 3 456 OK
alpha[Content] −0.528 0.191 [−0.86, −0.20] 1.001 3 389 OK
beta_budget 0.183 0.058 [0.09, 0.28] 1.000 4 847 OK
0
Divergencias
8 000
Muestras totales
1.001
R-hat máximo
2 887
ESS mínimo
0.9
target_accept
Comparación de Modelos — LOO-CV
M3: Jerárquico + Presupuesto
LOO = −142.3 · Δ = base
M2: Jerárquico sin presupuesto
LOO = −157.8 · Δ = 15.5
M1: Pooled completo
LOO = −184.2 · Δ = 41.9
Interpretación LOO
Δloo(M3 vs M2) = 15.5 → evidencia moderada-fuerte de que el presupuesto mejora la predicción.
Δloo(M3 vs M1) = 41.9 → evidencia muy fuerte de la estructura jerárquica.
Todos los Pareto-k < 0.7 → estimaciones LOO fiables.
Valores Pareto-k (M3 · 120 obs.)
k=0.7 k=0.5 k ✓ Todos los Pareto-k < 0.7 — LOO fiable
Posterior Predictive Check — Distribución de Conversiones
Observado
Posterior predictivo (media)
0 10 20 0-5% 5-10% 10-15% 15-20% 20-25% 25-30% 30-35% 35-40% 40-45%
El modelo captura bien la distribución empírica. Las predicciones posteriores (verde) son cercanas a las observaciones (azul) en todos los bins, sin sesgos sistemáticos visibles.
0.94
Bayesian p-value media
0.89
Bayesian p-value SD
0.91
p-value percentil 95
Modelo — Código PyMC 6 (extracto)
import pymc as pm import arviz as az import numpy as np # Parametrización no centrada (evita divergencias) coords = {"canal": canales, "obs": np.arange(120)} with pm.Model(coords=coords) as modelo_jerarquico: # Hiperpriors mu_alpha = pm.Normal("mu_alpha", mu=0, sigma=1) sig_alpha = pm.HalfNormal("sigma_alpha", sigma=1) # Interceptos por canal (non-centered) offset = pm.Normal("alpha_offset", 0, 1, dims="canal") alpha = pm.Deterministic("alpha", mu_alpha + sig_alpha * offset, dims="canal") # Efecto del presupuesto (log-estandarizado) beta_b = pm.Normal("beta_budget", mu=0, sigma=0.5) # Predictor lineal logit_p = alpha[canal_idx] + beta_b * budget_scaled # Verosimilitud binomial y_obs = pm.Binomial("conversiones", n=leads, p=pm.math.sigmoid(logit_p), observed=clientes, dims="obs") # Muestreo NUTS · 4 cadenas · 2000 draws idata = pm.sample(2000, tune=1000, chains=4, target_accept=0.9, idata_kwargs={"log_likelihood": True})
Insights clave para CULTIVA IA
Referral lidera con 31.2% — invertir en programa de afiliados y casos de estudio. Incertidumbre contenida: 24.8%–38.5%.
Presupuesto importa (+0.18 logit/SD) — pero con rendimientos decrecientes. Punto óptimo ≈ €2k–5k/campaña.
Content tiene el HDI más bajo (10%–20%). Revisar calificación de leads o nurturing. Posible misspecification del canal.
CULTIVA IA · Análisis Bayesiano con PyMC 6.0.1 · ArviZ 1.x · Junio 2026 · Modelo M3: Jerárquico + Presupuesto