🍽️ Entrada, las encuestas

encuestas
candidatos
encuestadoras

Las encuestas públicamente disponibles tabuladas para comparar y descargar

Autor/a
Afiliación

Recetas Electorales

Análisis independiente

Fecha de publicación

11 de marzo de 2018

Fecha de última modificación

10 de febrero de 2022

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

Si la intención de voto es una proxy de la votación efectiva, vale la pena ver la historia completa. Sin índices abstrusos ni maromas estadisticas complejas.

La entrada recoge la proporción de intención de voto para cada candidato que han registrado todas las encuestas. Con estos datos se presenta una curva LOESS de la tendencia con un intervalo de confianza de 95%. Cada punto es proporcional a la muestra de intención de voto de cada encuesta.

Los datos compilados de las encuestas están consolidados en Github gracias a la información que las encuestadoras Invamer, CNCSocial, Datexco, Cifras y Conceptos, Yanhaas, Guarumo y CELAGeopolitica han hecho públicas.


Todas las encuestas juntas

Ver código
library(tidyverse)
library(plotly)
library(lubridate)
library(ggrepel)

# Parametros ####
shape_entrada <- c(4,16,17,3,15,25,8,10)
colors_entrada <- c(
  "Germán Vargas Lleras" = "royalblue4",
  "Gustavo Petro"="gold2",
  "Humberto de la Calle"="red2",
  "Ivan Duque"="orangered",
  "Sergio Fajardo"="green4")

#1. Importar encuestas desde GitHub #### 
encuestas_ulr_2018 <- "https://raw.githubusercontent.com/nelsonamayad/Elecciones-presidenciales-2018/master/Elecciones%202018/encuestas2018.csv"
encuestas_2018 <- readr::read_csv(encuestas_ulr_2018)

# ggplot entrada ####
entrada_2018 <- encuestas_2018 %>%
  # Seleccionar candidatos que encabezan las encuestas
  dplyr::select(n,fecha,encuestadora,ivan_duque,gustavo_petro,sergio_fajardo,german_vargas_lleras, humberto_delacalle, m_error=margen_error, muestra) %>%
  # Pivotear los datos
  tidyr::pivot_longer(cols = c("ivan_duque","gustavo_petro","sergio_fajardo","german_vargas_lleras", "humberto_delacalle"), 
                      names_to = "candidato", values_to = "int_voto") %>% 
  # Seleccionar solo las encuestas hechas en 2018
  dplyr::filter(as_date(fecha, tz="GMT") >= as_date('2018-01-01', tz="GMT")) %>% 
  # Crear algunas variables
  dplyr::mutate(e_max = int_voto + m_error,
                e_min = int_voto - m_error,
                fecha = as_date(fecha),
                candidato = factor(candidato, levels=c("ivan_duque","gustavo_petro","sergio_fajardo","german_vargas_lleras","humberto_delacalle")),
                nombres = case_when(candidato=="ivan_duque" ~ "Ivan Duque",
                                    candidato=="gustavo_petro" ~ "Gustavo Petro",
                                    candidato=="sergio_fajardo" ~ "Sergio Fajardo",
                                    candidato=="german_vargas_lleras" ~ "Germán Vargas Lleras",
                                    candidato=="humberto_delacalle" ~ "Humberto de la Calle")) %>%
  # ggplot
  ggplot(aes(x=fecha,y=int_voto, color=nombres))+ #frame=month(fecha)
  # Puntos
  geom_point(aes(shape=encuestadora,
                 text = paste('Candidato: ', nombres,
                              '<br>Intencion de voto:', int_voto,
                              '<br>Encuestadora:',encuestadora,
                              '<br>Fecha:', fecha)), 
             show.legend = FALSE)+
  # LOESS
  geom_smooth(method="loess", linetype="dotdash", se=TRUE, show.legend = FALSE)+
  # Margenes de error
  geom_linerange(aes(ymax=e_max, ymin=e_min), show.legend = FALSE) +
  #  1era vuelta
  geom_vline(aes(xintercept = as.numeric(as_date("2018-05-27"))))+
  # Opciones
  labs(x="", 
       y="% Intención voto",
       caption="Fuente: Encuestas de intención de voto elecciones 2018. www.recetas-electorales.com")+
   scale_shape_manual(values=shape_entrada)+
   scale_color_manual(values=colors_entrada)+
   coord_cartesian(ylim=c(0,60))+
   theme(legend.position="none",
         panel.background=element_rect(fill="white", color="white"))

# ggplotly ####
ggplotly(entrada_2018, tooltip = "text")

Buscador de encuestas

Ver código
library(tidyverse)
library(lubridate)
library(DT)

#DT ####
encuestas_2018 %>%
  # Seleccionar candidatos que encabezan las encuestas
  dplyr::select(n,fecha,encuestadora,ivan_duque,gustavo_petro,sergio_fajardo,german_vargas_lleras, humberto_delacalle, m_error=margen_error, muestra, fuente, link) %>%
  # Pivotear los datos
  tidyr::pivot_longer(cols = c("ivan_duque","gustavo_petro","sergio_fajardo","german_vargas_lleras", "humberto_delacalle"), 
                      names_to = "candidato", values_to = "int_voto") %>% 
  # Seleccionar solo las encuestas hechas en 2018
  dplyr::filter(as_date(fecha, tz="GMT") >= as_date('2018-01-01', tz="GMT")) %>% 
  # Crear algunas variables
  dplyr::mutate(e_max = int_voto + m_error,
                e_min = int_voto - m_error,
                fecha = as_date(fecha),
                candidato = factor(candidato, levels=c("ivan_duque","gustavo_petro","sergio_fajardo","german_vargas_lleras","humberto_delacalle")),
                nombres = case_when(candidato=="ivan_duque" ~ "Iván Duque",
                                    candidato=="gustavo_petro" ~ "Gustavo Petro",
                                    candidato=="sergio_fajardo" ~ "Sergio Fajardo",
                                    candidato=="german_vargas_lleras" ~ "Germán Vargas Lleras",
                                    candidato=="humberto_delacalle" ~ "Humberto de la Calle")) %>%
  #Select variables
  dplyr::select(fecha,encuestadora,nombres,int_voto,m_error,muestra, fuente,link) %>%
  DT::datatable(extensions = "Buttons",
                options = list(dom = 'Bfrtip',
                               buttons = c('copy', 'csv', 'excel'),
                               autoWidth = TRUE,
                               scrollX = TRUE,
                               initComplete = JS(
          "function(settings, json) {",
          paste0("$(this.api().table().container()).css({'font-size': '", "10px", "'});"),
          "}")),
                colnames = c('Fecha', 'Encuestadora', 'Candidato', 'Intencion de voto', 'Margen de error',"Muestra","Fuente","Enlace"),
                caption = 'Tabla de encuestadoras') %>%
  DT::formatStyle(columns = colnames(.), fontSize = '50%')
Ver código
#                   "$(this.api().table().header()).css({'font-size': '75%','background-color': '#ff4800', 'color': '#fff'});",

Cómo citar

BibTeX
@online{recetas_electorales2018,
  author = {{Recetas Electorales}},
  title = {🍽️ Entrada, las encuestas},
  date = {2018-03-11},
  url = {https://www.recetas-electorales.com/elecciones/2018-colombia/2018-03-11-entrada-2018/2018-entrada.html},
  langid = {es}
}
Por favor, cita este trabajo como:
Recetas Electorales. 2018. “🍽️ Entrada, las encuestas.” March 11. https://www.recetas-electorales.com/elecciones/2018-colombia/2018-03-11-entrada-2018/2018-entrada.html.