Partido político que postula en las elecciones presidenciales del año 2021 en Perú con el candidato César Acuña.

1 Introducción

Este artículo tiene como finalidad hacer un análisis exploratorio superficial sobre la propuesta electoral del partido político peruano Alianza Para El Progreso. Para lo cual se hicieron uso de diferentes herramientas como la nube de palabras, análisis de sentimiento, entre otros.

Candidato presidencial: César Acuña Peralta.

Empresario y político peruano que fue alcalde de la provincia de Trujillo, gobernador regional de La Libertad y congresista de la República. Es el líder del partido Alianza para el Progreso y candidato a la presidencia 2021, además de ser propietario del consorcio universitario César Vallejo y el Señor de Sipán.

Si deseas revisar el pdf de la propuesta del partido Alianza Para el Progreso, haz click en el siguiente enlace. (Si no se abre con click izquierdo, abrir con click derecho en una nueva ventana)

1.1 Paquetes utilizados

#Paquetes necesarios

library(pacman)
p_load(tidyverse, tidytext, wordcloud2, pdftools, patchwork,
       widyr,dplyr, magrittr,ggplot2, readxl,scales,foreign, gganimate, kableExtra)

options(scipen=999)
options(digits = 3)

1.2 Lectura de datos

apptextm <- pdf_text("plan de alianza para el progreso.pdf")

1.3 Limpieza de datos

#Para jalar las palabras del pdf.

apptextm <- paste(apptextm, collapse=" ")

#Removiendo números y signos de puntuación.

apptextm <- str_remove_all(apptextm, "[:punct:]")
apptextm <- str_remove_all(apptextm, "[:digit:]")

#Removiendo palabras.

apptextm <-  str_remove_all(apptextm, "ii")
apptextm <-  str_remove_all(apptextm, "iii")
apptextm <-  str_remove_all(apptextm, "etc")
apptextm <-  str_remove_all(apptextm, "wwww")

#Cabe considerar que para hacerlo de mejor forma se deben usar algoritmos más avanzados.

#Guardando como un archivo de texto .
write_lines(apptextm, "apptextm.txt")

#Empezando a trabajar con el txt.

apptextm <- scan("apptextm.txt",
                  encoding="UTF-8", what ="char",
                  sep="\n")

apptextm <- tibble(apptextm) %>%
  unnest_tokens(Palabra,apptextm)

#Empezando a trabajar con los stopwords.

stopwords_es_1 <- read_excel("CustomStopWords.xlsx")
names(stopwords_es_1) <- c("Palabra","Fuente")

stopwords_es_2 <- tibble(Palabra =c(""),Fuente="Mis StopWords")
stopwords_es <- rbind(stopwords_es_1, stopwords_es_2)
stopwords_es <- stopwords_es[!duplicated(stopwords_es$Palabra),]

#Removiendo los stopwords.
apptextm <- apptextm %>% anti_join(stopwords_es)

#Obteniendo frecuencias por .
apptextm_frecuencia <- apptextm %>%
  count(Palabra, sort=TRUE)

2 Nube de palabras

Esta imagen se realiza a partir de la propuesta electoral del partido Alianza Para el Progreso.

#Nube de palabras con el paquete wordcloud2

set.seed(2021)
wordcloud2(apptextm_frecuencia,
           size = 0.7, 
           minRotation = -pi/6, 
           maxRotation = -pi/6,
           rotateRatio = 1,
           backgroundColor = "black",
           color = "random-light")

3 Palabras más frecuentes

#Se hizo uso del paquete forcats.

grafico <- apptextm_frecuencia %>%
  top_n(10) %>%
  ggplot() +
  aes(x=fct_reorder(Palabra,n),y=n,fill=Palabra)+
  geom_col()+
  geom_text(aes(label=n),vjust=0.25, hjust= 1.2, size=5) + 
  labs(x=NULL, y = "Frecuencia",
       title="Palabra más frecuentes de la propuesta del partido APP") +
  theme_minimal()+
  theme(legend.position="none")+
  coord_flip()

grafico

4 Tabla con las palabras más frecuentes

#Se hizo uso del paquete kableExtra.

kbl(apptextm_frecuencia[1:10, 1:2], caption = "Top 10 palabras más frecuentes") %>%
  kable_classic(full_width = F, html_font = "Cambria", font_size = 20) 
Top 10 palabras más frecuentes
Palabra n
nacional 241
objetivo 240
sistema 210
perú 207
estratégico 191
gestión 191
empresas 181
desarrollo 168
inversión 166
nivel 163

5 Análisis de sentimientos

# se uso el paquete gganimate

sentimientos <- read.delim("sentimientos_2.txt")

sentimientos <- as.tibble(sentimientos)

propuesta_sentimiento <- apptextm_frecuencia %>% 
  inner_join(sentimientos,by=c("Palabra"="palabra"))

propuesta_sentimiento%>% count(sentimiento) %>% ggplot() +
  aes(x=fct_reorder(sentimiento,n),
      y=n,
      fill=sentimiento) + 
  geom_col(show.legend = F) + coord_flip() +
  geom_text(aes(label=n),vjust=0.25, hjust= 1.2, size=5) + 
  labs(title ="Análisis de sentimientos de la propuesta Alianza Para el Progreso",
       caption = "Fuente: Propia",
       x = "Sentimientos",
       y= "Frecuencia") +
  theme_bw() +   scale_fill_brewer(palette = "Spectral") +   
  transition_states(n) + enter_grow() + 
  shadow_mark()

6 Comparación de sentimientos

propuesta_sentimiento2 <- apptextm %>% 
  inner_join(sentimientos, by = c("Palabra"="palabra")) %>% 
  count(Palabra, sentimiento) %>% group_by(sentimiento) %>% arrange(-n) %>% 
  top_n(4,n)

Comparación_emociones <- propuesta_sentimiento2 %>% ggplot() +
  aes(n, fct_reorder(Palabra,n), fill = sentimiento) +
  geom_col(show.legend = FALSE) +
  facet_wrap( ~ sentimiento, scales= "free") +
  labs(title= "Comparación de Emociones",
       x="Frecuencia" , y="Palabra")

Comparación_emociones

7 Gráfico de donas sobre los sentimientos

#Se hizo uso del paquete ggplot2, foreign, scales, tidyverse, magrittr.

DATA1 <- propuesta_sentimiento  %>%
  group_by(sentimiento) %>%
  summarise(Count = n()) %>%
  mutate(Sentimiento = sentimiento,
         Ratio = Count / sum(Count),
         Porcentaje = percent(Ratio %>% round(2)))

ggplot(DATA1)+
  aes(x=2,y=Ratio,label=Porcentaje,fill=Sentimiento) +
  geom_bar(stat="identity") +
  geom_text(position=position_stack(vjust=0.5),size=4)+
  coord_polar(theta = "y", direction = -1)+
  xlim(0,3)+ # Pruebe que pasa si elimina esta capa y si pone xlim(1,3)
  labs(title="Gráfico de dona", 
       subtitle="Proporción de Sentimiento")+
  theme_void()

8 Conclusiones

  • Las palabras más frecuentes dentro de su propuesta son nacional, objetivo, sistema, Perú, estrategico, gestión, empresas, desarrollo, inversión y nivel.

  • La propuesta del partido político APP tiene un fuerte enfoque en los sentimientos positivos tales como generar confianza, sin embargo, respecto a la variedad, son más los negativos (ira, miedo y tristeza).

  • Con la ayuda de la comparación de sentimientos observamos que dentro de la propuesta electoral, inversión es una palabra que destaca en varios sentimientos negativos (ira, asombro y disgusto); por otro lado, la palabra objetivo destaca en sentimientos como confianza y premonición.