Twitter: @nelsonamayad
Publicación: 28-05-2018
Última actualización: 28-05-2018.

“Beliefs are hypotheses to be tested, not treasures to be guarded.”
- Philip Tetlock


Este es el último plato de la primera vuelta: un contraste de los pronósticos y los resultados.

Fue un buen día para las encuestas y, claro, para las recetas basadas en encuestas. El mejor pronóstico fue el que resultó de las recetas bayesianas Simple y Mixta. Solo fracasaron en identificar la proporción de votos de Sergio Fajardo, la sorpresa de la jornada, pero acertaron para todos los otros candidatos. Más que cualquier otro pronóstico y que cualquier encuesta individual.

En conclusión: las encuestas son valiosas y su valor se determina conjuntamente, no por separado.

library(tidyverse)
library(RCurl)

# 1. Base: promedio de las encuestas
encuestas <- read.csv(text=getURL("https://raw.githubusercontent.com/nelsonamayad/Elecciones-presidenciales-2018/master/Elecciones%202018/encuestas2018.csv"))
encuestas <- encuestas %>% filter(n>26) %>% select(ivan_duque,gustavo_petro,sergio_fajardo,german_vargas_lleras,humberto_delacalle) %>% gather(candidato, int_voto)
encuestas <- encuestas %>% group_by(candidato) %>% summarize(int_voto=mean(int_voto) %>% format(digits=0))
encuestas <- tribble(~fecha,~candidato,~int_voto,
                "2018-05-19","Iván Duque",37,
                "2018-05-19","Gustavo Petro",27,
                "2018-05-19","Sergio Fajardo",13,
                "2018-05-19","Germán Vargas Lleras",8,
                "2018-05-19","Humberto de la Calle",3)
encuestas$fuente <- "18 Encuestas"

# 2. Cifras y Conceptos
cyc <- tribble(~fecha, ~candidato, ~int_voto_max,~int_voto_min,
               "2018-04-04","Iván Duque",37.7,37.2,
               "2018-04-04","Gustavo Petro",17.4,15.7,
               "2018-04-04","Sergio Fajardo",13.3,12.8,
               "2018-04-04","Germán Vargas Lleras",21.0,18.2,
               "2018-04-04","Humberto de la Calle",6.3,5.9,
               "2018-04-18","Iván Duque",36.4,35.6,
               "2018-04-18","Gustavo Petro",18.9,17,
               "2018-04-18","Sergio Fajardo",12.4,12.3,
               "2018-04-18","Germán Vargas Lleras",23.8,20.9,
               "2018-04-18","Humberto de la Calle",5.1,4.8,
               "2018-04-18","Iván Duque",36.9,33.7,
               "2018-04-18","Gustavo Petro",21.6,20.8,
               "2018-04-18","Sergio Fajardo",14.2,11.3,
               "2018-04-18","Germán Vargas Lleras",24.1,20.8,
               "2018-04-18","Humberto de la Calle",5.1,3.3,
               "2018-05-16","Iván Duque",36.9,32.9,
               "2018-05-16","Gustavo Petro",19.9,16.8,
               "2018-05-16","Sergio Fajardo",15.5,12.6,
               "2018-05-16","Germán Vargas Lleras",23.5,20.3,
               "2018-05-16","Humberto de la Calle",5,3.4,
               "2018-05-20","Iván Duque",37.2,33.7,
               "2018-05-20","Gustavo Petro",20.8,18.1,
               "2018-05-20","Sergio Fajardo",17.3,14.6,
               "2018-05-20","Germán Vargas Lleras",21.7,19,
               "2018-05-20","Humberto de la Calle",4.7,3.5
               )
cyc <- cyc %>% mutate(int_voto=(int_voto_max+int_voto_min)*0.5)
cyc$fuente <- "Cifras y Conceptos" 

# 3. El País
elpais <- tribble(~fecha,~candidato,~int_voto,
                  "2018-05-19","Sergio Fajardo",15.8,
                  "2018-05-19","Gustavo Petro",27,
                  "2018-05-19","Iván Duque",37,
                  "2018-05-19","Humberto de la Calle",3,
                  "2018-05-19","Germán Vargas Lleras",10.5)
elpais$fuente <- "El País"
  
# 4. ANIF
anif <- tribble(~fecha,~candidato,~int_voto,
      "2018-05-07","Iván Duque",(5/17)*100,
      "2018-05-07","Germán Vargas Lleras",(4.5/17)*100,
      "2018-05-07","Gustavo Petro",(3.2/17)*100,
      "2018-05-07","Sergio Fajardo",(2.3/17)*100,
      "2018-05-07","Humberto de la Calle",(1/17)*100)

anif$fuente <- "ANIF"

# 5. Resultado 1era vuelta
resultado <- tribble(~fecha,~candidato,~int_voto,
      "2018-05-27","Iván Duque",39.14,
      "2018-05-27","Germán Vargas Lleras",7.28,
      "2018-05-27","Gustavo Petro",25.08,
      "2018-05-27","Sergio Fajardo",23.73,
      "2018-05-27","Humberto de la Calle",2.06)

resultado$fuente <- "Resultado"

# 5. Recetas propias
recetas <- tribble(~fecha, ~candidato,~fuente,~int_voto,~int_voto_max,~int_voto_min,
    "2018-05-20","Sergio Fajardo","Simple",12.4,16.8,6.7,
    "2018-05-20","Gustavo Petro","Simple",26.4,32.2,23.5,
    "2018-05-20","Iván Duque","Simple",38.3,42.2,34.0,
    "2018-05-20","Humberto de la Calle","Simple",3.2,4.5,1.7,
    "2018-05-20","Germán Vargas Lleras","Simple",7.5,12.4,5.4,
    "2018-05-20","Sergio Fajardo","Mixta",13.1,16.9,8.9,
    "2018-05-20","Gustavo Petro","Mixta",26.8,31.0,23.5,
    "2018-05-20","Iván Duque","Mixta",38.1,41.9,34.2,
    "2018-05-20","Humberto de la Calle","Mixta",3.0,5.2,2.1,
    "2018-05-20","Germán Vargas Lleras","Mixta",7.5,11.1,5.7)

# Preparar calentao
calentao <- bind_rows(encuestas,recetas,cyc %>% filter(fecha==as.Date("2018-05-20")),anif,elpais)
calentao <- calentao %>% mutate(candidato=factor(candidato,levels=c("Humberto de la Calle","Germán Vargas Lleras","Sergio Fajardo","Gustavo Petro","Iván Duque")))
## Warning: Removed 15 rows containing missing values (geom_errorbar).


Ahora a preparar la última receta de las elecciones: el modelo probabilístico para la segunda vuelta. Va a ser, como las otras recetas, abierto y replicable.