library(tidyverse)
library(readxl)
library(janitor)
library(DT)
library(rvest)
library(lubridate)
library(cowplot)
library(ggsci)
library(splines)
library(qqplotr)
library(broom)
library(infer)
library(plotly)explor_candidate.Rinfer1.Rinfer2.Rinfer3.Rinfer4.Rinfer5.Rsource("../functions-R/explor_candidate.R")
source("../functions-R/infer1.R")
source("../functions-R/infer2.R")
source("../functions-R/infer3.R")
source("../functions-R/infer4.R")
source("../functions-R/infer5.R")rvest. Esta biblioteca permite implementar técnicas de Web scraping con R.datos <- read_csv("../data/EncuestasWikipedia-Colombia2022.csv") %>%
mutate(fecha_publicacion = as.Date(fecha_publicacion, format = "%d-%m-%Y")) %>%
select(fuente:margen_de_error,
alfredo_saade,
arelis_uriana,
camilo_romero,
francia_marquez,
gustavo_petro,
alejandro_gaviria,
carlos_amaya,
jorge_enrique_robledo,
juan_manuel_galan,
sergio_fajardo,
alejandro_char,
aydee_lizarazo,
david_barguil,
enrique_penalosa,
federico_gutierrez,
blanco,
ninguno,
ns_nr
)
datosg1 <-
datos %>%
count(firma_encuestadora) %>%
ggplot(aes(x = fct_reorder(firma_encuestadora, n), y = n)) +
geom_segment(aes(
x = fct_reorder(firma_encuestadora, n),
xend = fct_reorder(firma_encuestadora, n),
y = 0,
yend = n - 0.5
),
color = "dodgerblue2") +
geom_point(size = 6,
alpha = 0.5,
color = "dodgerblue2") +
geom_text(aes(label = n), size = 2.7) +
coord_flip() +
labs(x = "Firma encuestadora",
y = "Total de encuestas")
g2 <-
datos %>%
mutate(year = year(fecha_publicacion)) %>%
count(firma_encuestadora, year) %>%
filter(!is.na(year)) %>%
mutate(year = as.factor(year)) %>%
ggplot(aes(x = year, y = n, fill = firma_encuestadora)) +
geom_col(position = "dodge") +
scale_fill_igv() +
labs(x = "Año",
y = "Total de encuestas",
fill = "",
color = "") +
theme(legend.position = "top")
plot_grid(g1,
g2,
ncol = 1,
align = "hv",
labels = list("A)", "B)"))muestra) y el error de las encuestas (margen_de_error) para cada firma encuestadora.datos %>%
select(firma_encuestadora, muestra, margen_de_error) %>%
pivot_longer(cols = -firma_encuestadora) %>%
ggplot(aes(x = firma_encuestadora, y = value, fill = firma_encuestadora)) +
facet_wrap(~name, scales = "free") +
geom_boxplot(show.legend = FALSE) +
labs(x = "Firma encuestadora", y = "") +
scale_fill_igv() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))g1 <- datos %>%
select(alfredo_saade:federico_gutierrez) %>%
pivot_longer(cols = everything()) %>%
group_by(name) %>%
summarise(total_encuestas = sum(!is.na(value))) %>%
ungroup() %>%
ggplot(aes(x = fct_reorder(name, total_encuestas), y = total_encuestas)) +
geom_segment(aes(
x = fct_reorder(name, total_encuestas),
xend = fct_reorder(name, total_encuestas),
y = 0,
yend = total_encuestas - 1.1
),
color = "dodgerblue2") +
geom_point(size = 6,
alpha = 0.5,
color = "dodgerblue2") +
geom_text(aes(label = total_encuestas), size = 2.7) +
coord_flip() +
labs(x = "",
y = "Total de encuestas")
g2 <- datos %>%
mutate(year = year(fecha_publicacion)) %>%
select(alfredo_saade:federico_gutierrez, year) %>%
pivot_longer(cols = -year) %>%
mutate(coalicion = if_else(
name %in% c(
"alfredo_saade",
"arelis_uriana",
"camilo_romero",
"francia_marquez",
"gustavo_petro"
),
true = "Pacto Histórico",
false = if_else(
name %in% c(
"alejandro_gaviria",
"carlos_amaya",
"jorge_enrique_robledo",
"juan_manuel_galan",
"sergio_fajardo"
),
true = "Centro Esperanza",
false = "Equipo por Colombia"
)
)) %>%
group_by(coalicion, year) %>%
summarise(total_encuestas = sum(!is.na(value))) %>%
ungroup() %>%
filter(!is.na(year)) %>%
ggplot(aes(
x = year,
y = total_encuestas,
fill = coalicion
)) +
geom_col(position = "dodge") +
scale_fill_igv() +
scale_color_igv() +
labs(x = "",
y = "Total de encuestas",
fill = "",
color = "") +
theme(legend.position = "top")
plot_grid(g1,
g2,
ncol = 1,
align = "hv",
labels = list("A)", "B)"))g1 <-
datos %>%
mutate(year = year(fecha_publicacion)) %>%
select(alfredo_saade:federico_gutierrez, year) %>%
pivot_longer(cols = -year) %>%
mutate(coalicion = if_else(
name %in% c(
"alfredo_saade",
"arelis_uriana",
"camilo_romero",
"francia_marquez",
"gustavo_petro"
),
true = "Pacto Histórico",
false = if_else(
name %in% c(
"alejandro_gaviria",
"carlos_amaya",
"jorge_enrique_robledo",
"juan_manuel_galan",
"sergio_fajardo"
),
true = "Centro Esperanza",
false = "Equipo por Colombia"
)
)) %>%
filter(!is.na(year)) %>%
mutate(year = as.factor(year)) %>%
ggplot(aes(
x = year,
y = value,
fill = coalicion,
color = coalicion
)) +
geom_boxplot(alpha = 0.6) +
scale_fill_igv() +
scale_color_igv() +
labs(x = "Año",
y = "Intención de voto (%)",
fill = "",
color = "") +
theme(legend.position = "top")
g2 <-
datos %>%
select(alfredo_saade:federico_gutierrez, fecha_publicacion) %>%
pivot_longer(cols = -fecha_publicacion) %>%
mutate(coalicion = if_else(
name %in% c(
"alfredo_saade",
"arelis_uriana",
"camilo_romero",
"francia_marquez",
"gustavo_petro"
),
true = "Pacto Histórico",
false = if_else(
name %in% c(
"alejandro_gaviria",
"carlos_amaya",
"jorge_enrique_robledo",
"juan_manuel_galan",
"sergio_fajardo"
),
true = "Centro Esperanza",
false = "Equipo por Colombia"
)
)) %>%
group_by(fecha_publicacion, coalicion) %>%
summarise(mediana = median(value, na.rm = TRUE)) %>%
ungroup() %>%
ggplot(aes(x = fecha_publicacion, y = mediana, color = coalicion)) +
geom_line() +
scale_color_igv() +
labs(x = "Fecha", y = "Intención de voto (%)",
color = "") +
theme(legend.position = "top")
g3 <-
datos %>%
select(alfredo_saade:federico_gutierrez, fecha_publicacion) %>%
pivot_longer(cols = -fecha_publicacion) %>%
mutate(coalicion = if_else(
name %in% c(
"alfredo_saade",
"arelis_uriana",
"camilo_romero",
"francia_marquez",
"gustavo_petro"
),
true = "Pacto Histórico",
false = if_else(
name %in% c(
"alejandro_gaviria",
"carlos_amaya",
"jorge_enrique_robledo",
"juan_manuel_galan",
"sergio_fajardo"
),
true = "Centro Esperanza",
false = "Equipo por Colombia"
)
)) %>%
group_by(fecha_publicacion, coalicion) %>%
summarise(mediana = median(value, na.rm = TRUE)) %>%
ungroup() %>%
ggplot(aes(x = fecha_publicacion, y = mediana, color = coalicion)) +
geom_smooth(method = "gam",
formula = y ~ ns(x, df = 5),
se = FALSE) +
scale_color_igv() +
labs(x = "Fecha", y = "Intención de voto (%)",
color = "") +
theme(legend.position = "top")
g4 <-
datos %>%
select(alfredo_saade:federico_gutierrez, fecha_publicacion) %>%
pivot_longer(cols = -fecha_publicacion) %>%
group_by(fecha_publicacion, name) %>%
summarise(mediana = median(value, na.rm = TRUE)) %>%
ungroup() %>%
filter(name %in% c("gustavo_petro", "sergio_fajardo", "federico_gutierrez")) %>%
ggplot(aes(x = fecha_publicacion, y = mediana, color = name)) +
geom_line() +
scale_color_igv() +
labs(x = "Fecha", y = "Intención de voto (%)",
color = "") +
theme(legend.position = "top")
plot_grid(g1,
g2,
g3,
g4,
ncol = 2,
nrow = 2,
align = "hv",
labels = list("A)", "B)", "C)", "D)"))explor_candidate(data = datos, candidate = "gustavo_petro")explor_candidate(data = datos, candidate = "sergio_fajardo")explor_candidate(data = datos, candidate = "alejandro_char")explor_candidate(data = datos, candidate = "federico_gutierrez")explor_candidate(data = datos, candidate = "juan_manuel_galan")datos %>%
select(alfredo_saade:federico_gutierrez) %>%
pivot_longer(cols = everything()) %>%
ggplot(aes(sample = value)) +
facet_wrap(~name, scales = "free", ncol = 3, nrow = 5) +
stat_qq_band() +
stat_qq_point() +
stat_qq_line() datos %>%
select(alfredo_saade:federico_gutierrez) %>%
pivot_longer(cols = everything()) %>%
mutate(value = log10(value)) %>%
ggplot(aes(sample = value)) +
facet_wrap(~name, scales = "free", ncol = 3, nrow = 5) +
stat_qq_band() +
stat_qq_point() +
stat_qq_line()# Inferencia clásica original
res_infer1 <-
datos %>%
select(alfredo_saade:federico_gutierrez) %>%
map(.f = infer1) %>%
bind_rows() %>%
mutate(candidato = datos %>%
select(alfredo_saade:federico_gutierrez) %>%
names())
# Inferencia clásica logaritmos
res_infer2 <-
datos %>%
select(alfredo_saade:federico_gutierrez) %>%
map(.f = infer2) %>%
bind_rows() %>%
mutate(candidato = datos %>%
select(alfredo_saade:federico_gutierrez) %>%
names())
# Inferencia Bootstrapping (percentiles)
res_infer3 <-
datos %>%
select(alfredo_saade:federico_gutierrez) %>%
map(.f = infer3) %>%
bind_rows() %>%
mutate(candidato = datos %>%
select(alfredo_saade:federico_gutierrez) %>%
names())
# Inferencia Bootstrapping (error estándar)
res_infer4 <-
datos %>%
select(alfredo_saade:federico_gutierrez) %>%
map(.f = infer4) %>%
bind_rows() %>%
mutate(candidato = datos %>%
select(alfredo_saade:federico_gutierrez) %>%
names())
# Inferencia Bootstrapping (error estándar) - mediana
res_infer5 <-
datos %>%
select(alfredo_saade:federico_gutierrez) %>%
map(.f = infer5) %>%
bind_rows() %>%
mutate(candidato = datos %>%
select(alfredo_saade:federico_gutierrez) %>%
names())
# Datos con estimativas finales
data_estimaciones <-
inner_join(x = res_infer1, y = res_infer2, by = "candidato") %>%
inner_join(x = ., y = res_infer3, by = "candidato") %>%
inner_join(x = ., y = res_infer4, by = "candidato") %>%
inner_join(x = ., y = res_infer5, by = "candidato") %>%
relocate(candidato, everything()) %>%
mutate(across(where(is.numeric), round, digits = 2))
data_estimaciones %>%
datatable(
rownames = FALSE,
extensions = c('Buttons', "FixedColumns"),
options = list(dom = 'Bfrtip',
scrollX = TRUE,
buttons = c('excel'),
fixedColumns = list(leftColumns = 1))
)write_csv(x = data_estimaciones, file = "../data/estimaciones_consultas_presidenciales.csv")ggplotly(
data_estimaciones %>%
pivot_longer(cols = -candidato) %>%
separate(name, into = c("tipo", "metodo")) %>%
pivot_wider(names_from = tipo, values_from = value) %>%
ggplot(aes(
x = candidato,
y = estimate,
ymin = li,
ymax = ls
)) +
facet_wrap( ~ metodo, scales = "free", ncol = 2) +
geom_point() +
geom_errorbar(width = 0.1) +
coord_flip() +
labs(x = "", y = ""),
width = 800,
height = 650
)