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.R
infer1.R
infer2.R
infer3.R
infer4.R
infer5.R
source("../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.<- read_csv("../data/EncuestasWikipedia-Colombia2022.csv") %>%
datos 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
) datos
<-
g1 %>%
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))
<- datos %>%
g1 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")
<- datos %>%
g2 mutate(year = year(fecha_publicacion)) %>%
select(alfredo_saade:federico_gutierrez, year) %>%
pivot_longer(cols = -year) %>%
mutate(coalicion = if_else(
%in% c(
name "alfredo_saade",
"arelis_uriana",
"camilo_romero",
"francia_marquez",
"gustavo_petro"
),true = "Pacto Histórico",
false = if_else(
%in% c(
name "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(
%in% c(
name "alfredo_saade",
"arelis_uriana",
"camilo_romero",
"francia_marquez",
"gustavo_petro"
),true = "Pacto Histórico",
false = if_else(
%in% c(
name "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(
%in% c(
name "alfredo_saade",
"arelis_uriana",
"camilo_romero",
"francia_marquez",
"gustavo_petro"
),true = "Pacto Histórico",
false = if_else(
%in% c(
name "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(
%in% c(
name "alfredo_saade",
"arelis_uriana",
"camilo_romero",
"francia_marquez",
"gustavo_petro"
),true = "Pacto Histórico",
false = if_else(
%in% c(
name "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
)