9  🍰 Postre

“There is no inference without assumption, but do not choose your assumptions for the sake of inference. Build complex models one piece at a time. Be critical. Be kind.”
– Richard McElreath

📅 Publicado 5 Junio 2022, Última actualización 20 Junio 2022

El Postre 2022 estima qué tan probable es que gane Gustavo Petro. A diferencia del Ajiaco, el Postre solo hace una transformación logística a un modelo sencillo que se puede interpretar como un pronóstico probabilístico para la segunda vuelta.

Veamos cómo se prepara.


Postre Logístico 2022

Este nuevo Postre recoge la probabilidad de que Gustavo Petro sea presidente, estimada por el modelo que se describe abajo.

Las probabilidades se obtienen de muchas simulaciones de cada uno de los parámetros del modelo, y luego calcular la mediana de la densidad que resulta de esas simulaciones.

En estas primeras estimaciones la densidad es bimodal, porque las encuestas se contradicen: las telefónicas dan como ganador a Hernandez, mientras que las presenciales dan como ganador a Petro.

Carrera apretada, según el modelo basado en las encuestas

Segun la más reciente estimación, Gustavo Petro tiene más o menos 46% de probabilidad de ganar

Ingredientes

Los únicos ingredientes de esta receta son las encuestas que han salido desde la primera vuelta. Como priors se toman los promedios y desviaciones estándar de cada candidato.

Priors por candidato
Candidato \(\mu_{t}\) \(\sigma_{t}\)
Gustavo Petro 45.0 2.5
Rodolfo Hernandez 46.6 5.9
1 Fecha: 2022-05-21
2 Encuestas disponibles: 13

Postre 2022: Priors

Receta

El Postre modela directamente las encuestas como una distribución binomial donde cada encuesta es un ensayo:

\[ N^{Petro}_i \sim \textrm{Binomial}(Muestra_i, \pi^{Petro}_i) \] donde \(N_i\) es la muestra de cada encuesta y \(\pi^{Petro}_i\) es la proporción de la intención de voto para Petro. La proporción de intención de voto \(\pi^{Petro}_i\) se determina a través de una función logística (log-link function) y, como es costumbre en este recetario, efectos aleatorios por encuestadora, la duración entre la encuesta y la estimación y una dummy para el tipo de encuestas (i.e. telefónica, presencial) así:

\[\textrm{logit} (\pi^{Petro}_i) = \alpha_{encuestadora} + \beta_1*duracion + \beta_2*tipo\]

Preparación


Este es el postre completo, con los priors del caso:

\[ N^{Petro}_i \sim \textrm{Binomial}(N_i, \pi^{Petro}_i) \] \[\textrm{logit} (\pi^{Petro}_i) = \alpha_{encuestadora} + \beta_1*duracion + \beta_2*tipo\] \[\small\alpha_{encuestadora} \sim Normal(\alpha,\sigma) \] \[\small\alpha \sim Normal(44, 5) \] \[\small\beta \sim Normal(0, 5) \] \[\small\sigma \sim HalfCauchy(0,5) \]

Estimación con ulam

El modelo estimado con ulam de McElreath a continuación:

Code
library(rethinking)

# Modelo logístico en map2stan:
postre2022_ulam <- ulam(
  alist(
    #modelo
    gp ~ dbinom(muestra,p),
    logit(p) <- a[encuestadora] + b1*dd + b2*tipo_1,
    #priors
    a[encuestadora] ~ dnorm(a,s),
    a ~ dnorm(45,5),
    b1 ~ dnorm(0,5),
    b2 ~ dnorm(0,5),
    s ~ dcauchy(0,5)
  ),
  data=list(
    N = postre2022_disponibles,
    encuestadora = postre2022_encuestas$encuestadora,
    muestra = postre2022_encuestas$muestra,
    dd = postre2022_encuestas$dd,
    tipo_1 = postre2022_encuestas$tipo_1,
    gp= postre2022_encuestas$gp
    ),
  control=list(adapt_delta=0.96),
  iter=1e4, 
  warmup=1000, 
  chains=4, 
  cores=4,
  log_lik=TRUE)