De modelos estáticos a un enfoque dinámico
\[ \newcommand{\pasto}[1]{\color{red}{#1}} \newcommand{\millos}[1]{\color{blue}{#1}} \]
La estadística clásica estima parámetros.
La estadística Bayesiana modela incertidumbre.
\[ \text{Posterior} \propto \text{Verosimilitud} \times \text{Prior} \]
\[ p(\theta \mid y) \propto p(y \mid \theta) p(\theta) \]
Antes de ver los datos → tenemos creencias.
Observamos los datos → actualizamos.
Después de ver los datos → obtenemos la distribución posterior.
Los parámetros no son números fijos.
Son variables aleatorias.
La incertidumbre es parte del modelo.
El ataque no es un número fijo.
La defensa no es un número fijo.
Son procesos latentes que evolucionan en el tiempo.
Los datos provienen del registro histórico de partidos \((2021- 2023-I)\).
Cada fila corresponde a un encuentro.
# A tibble: 6 × 9
Round Wk Day Date Time local Score Away Attendance
<chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
1 Apertura — First stage 1 Wed 44951 0.63194444444444442 Unión Mag… 2–1 Atlé… 1
2 Apertura — First stage 1 Wed 44951 0.72222222222222221 Águilas D… 1–1 Juni… 2
3 Apertura — First stage 1 Tue 44950 0.83333333333333337 Bucaraman… 0–0 Envi… 1
4 Apertura — First stage 1 Thu 44952 0.66666666666666663 Boyacá Ch… 2–0 Alia… 1
5 Apertura — First stage 1 Thu 44952 0.75694444444444442 Deportes … 2–1 Amér… 17
6 Apertura — First stage 1 Fri 44953 0.72222222222222221 Jaguares … 2–2 Sant… 2
Se realizaron las siguientes operaciones:
goles_local
goles_visitante
Identificación numérica de los equipos:
id_local
id_visitante
Cada fila representa:
Un partido oficial de liga profesional colombiana.
Variables fundamentales para el modelo:
Goles del equipo local
Goles del equipo visitante
Identidad de ambos equipos
Temporada
Variable respuesta: conteos (número de goles).
Distribución natural: Poisson.
Dependencia estructural: equipo local vs equipo visitante.
Jerarquía: equipos comparten distribución común de habilidades.
\[ Y_{g,L}\sim \text{Poisson}(\theta_{g,L}),\qquad Y_{g,V}\sim \text{Poisson}(\theta_{g,V}) \]
\[ \log \theta_{g,L} = \text{local} + att_{L(g)} + def_{V(g)} \]
\[ \log \theta_{g,V} = att_{V(g)} + def_{L(g)} \]
\[ Y_{g,L}\sim \text{Poisson}(\theta_{g,L}),\qquad Y_{g,V}\sim \text{Poisson}(\theta_{g,V}) \]
\[ \log \theta_{g,L} = \text{local} + att_{L(g)} + def_{V(g)} \]
\[ \log \theta_{g,V} = att_{V(g)} + def_{L(g)} \]
\[ Y_{g,L}\sim \text{Poisson}(\theta_{g,L}),\qquad Y_{g,V}\sim \text{Poisson}(\theta_{g,V}) \]
\[ \log \theta_{g,V} = att_{V(g)} + def_{L(g)} \]
\[ \log \theta_{g,L} = \bbox[yellow]{\text{local}} + att_{L(g)} + def_{V(g)} \]
\(\bbox[yellow]{\text{local}}\) es la ventaja promedio de jugar en casa (en escala log).
Si \(\bbox[yellow]{\text{local}}>0\), el local tiende a anotar más que en cancha neutral.
La intensidad de goles del local depende de la ventaja de local, del ataque del equipo local y de la “debilidad defensiva” del visitante.
\[ Y_{g,L}\sim \text{Poisson}(\theta_{g,L}),\qquad Y_{g,V}\sim \text{Poisson}(\theta_{g,V}) \]
\[ \log \theta_{g,L} = \text{local} + att_{L(g)} + def_{V(g)} \]
\[ \log \theta_{g,V} = att_{V(g)} + def_{L(g)} \]
\[ Y_{g,L}\sim \text{Poisson}(\theta_{g,L}),\qquad Y_{g,V}\sim \text{Poisson}(\theta_{g,V}) \]
\[ \log \theta_{g,L} = \text{local} + att_{L(g)} + def_{V(g)} \]
\[ \log \theta_{g,V} = att_{V(g)} + def_{L(g)} \]
La intensidad de goles del visitante depende de su ataque y de la “debilidad defensiva” del local.
\[ \log \theta_{g,L} = \text{local} + att_{L(g)} + def_{V(g)} \] \[ \log \theta_{g,V} = att_{V(g)} + def_{L(g)} \]
Partido \(g = 87\)
Deportivo Pasto (local) Millonarios (visitante)
\[ 0 \;-\; 1 \]
\[ \pasto{\log \theta_{87,L}} = \]
\[ \pasto{\log \theta_{87,L}} = \text{local} \]
\[ \pasto{\log \theta_{87,L}} = \text{local} + \pasto{att_{5}} \]
\[ \pasto{\log \theta_{87,L}} = \text{local} + \pasto{att_{5}} + \millos{def_{11}} \]
\[ \millos{\log \theta_{87,V}} = \millos{att_{11}} + \pasto{def_{5}} \]
Supongamos:
\[ \millos{att_{11}} = 0.35 \qquad \pasto{def_{5}} = -0.40 \]
\[ \log \theta_{87,V} = 0.35 - 0.40 = -0.05 \]
\[ \theta_{87,V} = \exp(-0.05) \approx 0.95 \]
Interpretación:
La intensidad esperada de gol de Millonarios es aproximadamente 0.95 goles.
Si \(Y_{87,V} \sim \text{Poisson}(0.95)\)
\[ P(Y_{87,V}=1) = 0.95 e^{-0.95} \approx 0.36 \]
Recordemos:
\[ \log \theta_{g,L} = \text{local} + att_{L(g)} + def_{V(g)} \]
🔴 Ataque positivo
→ aumenta la intensidad de gol del equipo.
🔵 Defensa negativa
→ reduce la intensidad de gol del rival.
📌 Importante:
El modelo combina:
Capacidad ofensiva
+ Debilidad defensiva del rival
El gol esperado es un equilibrio entre quién ataca y quién defiende.
Posterior summary
| Parámetro | Media | IC 90% |
|---|---|---|
| local | 0.33 | (0.22 , 0.44) |
| σ_att | 0.087 | (0.01 , 0.18) |
| σ_def | 0.086 | (0.01 , 0.17) |
| σ_u | 0.075 | (0.006 , 0.18) |
Todos los \(\hat R \approx 1\)
Buen ESS → cadenas bien mezcladas.
\[ \text{local_adv} = 0.33 \]
\[ \exp(0.33) \approx 1.39 \]
Interpretación:
El equipo local anota en promedio 39% más goles que si jugara en cancha neutral.
\[ \sigma_{att} = 0.087 \]
\[ \sigma_{def} = 0.086 \]
Ambos muy similares.
No hay diferencias extremas entre equipos (en el modelo básico).
⚠️ Aquí empieza el tema del shrinkage.
Si
\[ att_t \sim \mathcal{N}(0, \sigma_{att}^2)\,\,\,\sigma_{att} = 0.087 \]
Entonces el 95% de ataques están aprox en: \((-0.17, 0.17)\)
En escala de goles:
\[ \exp(0.17) \approx 1.19 \]
Diferencias moderadas entre equipos.
El modelo básico dice:
Pero… ¿Esto es real o es shrinkage excesivo?
¿La liga es realmente tan homogénea?
¿O el modelo está suavizando diferencias reales?
Este modelo asume:
Diagnóstico: buena estructura promedio, mala dinámica.
Objetivo:
reducir sensibilidad a extremos
estabilizar estimación sin “aplastar” equipos fuertes/débiles
Ejemplos: priors más robustas, colas pesadas (t), varianzas separadas más realistas.
\[ Y_{g,L}\sim \text{Poisson}(\theta_{g,L}),\qquad Y_{g,V}\sim \text{Poisson}(\theta_{g,V}) \]
\(\log \theta_{g,L} = \text{local} + att_{L(g)} + def_{V(g)}\) : efectos fijos
\(\log \theta_{g,V} = att_{V(g)} + def_{L(g)}\) : efectos fijos
\(\log \theta_{g,L} = \text{local} + att_{L(g)} + def_{V(g)} + u_g\) : efecto aleatorio
\(\log \theta_{g,V} = att_{V(g)} + def_{L(g)}+ u_g\) : efecto aleatorio
\[ Y_{g,L}\sim \text{Poisson}(\theta_{g,L}),\qquad Y_{g,V}\sim \text{Poisson}(\theta_{g,V}) \]
\[ \log \theta_{g,L} = \text{local} + att_{L(g)} + def_{V(g)} + u_g \]
\[ \log \theta_{g,V} = att_{V(g)} + def_{L(g)} + u_g \]
\(u_g\): efecto específico del partido (captura intensidad compartida)
El término (u_g) induce correlación entre goles local y visitante sin usar Poisson bivariada.
\[ att^{std}_t \sim t_3(0,1) \] \[ def^{std}_t \sim t_3(0,1) \]
Centrada en 0 Escala 1 Solo 3 grados de libertad (Var=3)
✔ Permite valores extremos ✔ Reduce overshrinkage ✔ No aplasta equipos muy fuertes
El modelo normal puro tiende a sobre-encoger (overshrinkage), como discuten Baio & Blangiardo
\[ u_g \sim \mathcal{N}(0,\sigma_u^2) \]
Captura:
Ritmo del partido
Clima
Árbitro
Intensidad táctica
\[ u_g \sim \mathcal{N}(0,\sigma_u^2) \]
Induce correlación entre goles local y visitante
El fútbol no es estacionario.
El fútbol no es estacionario.
Es un proceso que cambia con el tiempo.
El fútbol no es estacionario.
Es un proceso que cambia con el tiempo.
Por eso, los modelos estáticos se quedan cortos.
\[ Y_{g,L}\sim \text{Poisson}(\theta_{g,L}),\qquad Y_{g,V}\sim \text{Poisson}(\theta_{g,V}) \]
\(\log \theta_{g,L} = \text{local} + att_{L(g)} + def_{V(g)}\) : Parámetros fijos
Estados latentes dependientes del tiempo.
Ahora definimos:
\[ att_{t,k} \]
\[ def_{t,k} \]
donde:
Para cada partido ( g ):
\[ Y_{g,L}\sim \text{Poisson}(\theta_{g,L}),\qquad Y_{g,V}\sim \text{Poisson}(\theta_{g,V}) \]
con:
\[ \log \lambda_{g,L} = \alpha + local + att_{L(g),k(g)} + def_{V(g),k(g)} \]
\[ \log \lambda_{g,V}= \alpha + att_{V(g),k(g)} + def_{L(g),k(g)} \]
Para cada equipo:
\[ att_{t,1} \sim Normal(0, \sigma_{att0}^2) \]
\[ def_{t,1} \sim Normal(0, \sigma_{def0}^2) \]
con restricción:
\[ \sum_t att_{t,1} = 0 \,\,\,\, \sum_t def_{t,1} = 0 \]
Para ( k ):
\[ att_{t,k}= att_{t,k-1} + \epsilon_{t,k} \]
\[ \epsilon_{t,k} \sim Normal(0, \sigma_{att_rw}^2) \]
\[ def_{t,k}= def_{t,k-1} + \xi_{t,k} \]
\[ \xi_{t,k} \sim Normal(0, \sigma_{def_rw}^2) \]
El mejor predictor del ataque mañana es el ataque hoy.
El cambio es suave.
No hay regresión a la media.
Es un proceso tipo caminata aleatoria.
\[ \alpha \sim Normal(0,1.5^2) \]
\[ local \sim Normal(0,0.7^2) \]
\[ \sigma_{att0} \sim Exponential(1) \]
\[ \sigma_{def0} \sim Exponential(1) \]
\[ \sigma_{att_rw} \sim Exponential(2) \]
\[ \sigma_{def_rw} \sim Exponential(2) \]
En el modelo estático tenemos: \(p(att_t \mid Y)\)
Un solo ataque por equipo.
\(p(att_{t,k} \mid Y)\) para cada equipo y cada tiempo: La distribución posterior del estado latente dado toda la temporada.
El fútbol puede modelarse como proceso estocástico dinámico.
El enfoque Bayesiano permite cuantificar incertidumbre real.
La evolución ataque–defensa revela estructura latente.
Baio, G., & Blangiardo, M. (2010). Bayesian hierarchical model for the prediction of football results. Journal of Applied Statistics, 37(2), 253–264. https://doi.org/10.1080/02664760802684177
Dixon, M. J., & Coles, S. G. (1997). Modelling association football scores and inefficiencies in the football betting market. Journal of the Royal Statistical Society: Series C (Applied Statistics), 46(2), 265–280.
Gelman, A., Carlin, J., Stern, H., Dunson, D., Vehtari, A., & Rubin, D. (2013). Bayesian data analysis (3rd ed.). CRC Press.
Stan Development Team. (2023). Stan modeling language users guide and reference manual.
Vehtari, A., Gelman, A., & Gabry, J. (2017). Practical Bayesian model evaluation using leave-one-out cross-validation and WAIC. Statistics and Computing, 27(5), 1413–1432.
🌐 https://dannacruz.github.io/bayesiana/