## ----echo=FALSE, include=FALSE, warning=FALSE, message=FALSE------------------
knitr::opts_chunk$set(collapse = TRUE, comment = "#>", echo = FALSE,
                      warning = FALSE, message = FALSE)
library(poldis)
library(dplyr)
library(ggplot2)
library(scales)
library(tidyr)
library(stringr)
library(messydates)
library(ggthemes)
library(modelsummary)

## ----raw data, include=FALSE--------------------------------------------------
# For the raw data on speeches, survey results, and model scores, please go to:
# https://github.com/henriquesposito/poldis/tree/data.
# # Load and filter data
# US_presidential_speeches_1993_2025 <- readRDS("US_presidential_speeches_1993_2025.rds")
# # get priorities by president
# priorities <- select_priorities(US_presidential_speeches_1993_2025$text)
# urgency <- get_urgency(priorities, summarise = "mean")
# urgent_priorities <- urgency |>
#   select(doc_id, priorities, Frequency, Timing, Commitment, Intensity, Urgency) |>
#   mutate(priorities = stringr::str_squish(stringr::str_to_lower(
#     tm::removePunctuation(priorities)))) |>
#   left_join(US_presidential_speeches_1993_2025 |>
#               select(-c(text, title)) |>
#               mutate(doc_id = paste0("text", row_number())))
# # saveRDS(urgent_priorities, "urgent_priorities_US_presidential_speeches_1993_2025.rds") # save data
# urgent_priorities_US_presidential_speeches_1993_2025 <-
#   readRDS("urgent_priorities_US_presidential_speeches_1993_2025.rds") |>
#   mutate(president = factor(president, levels =
#                               c("Clinton", "Bush", "Obama", "Trump", "Biden")))
# comp_priorities <- urgent_priorities_US_presidential_speeches_1993_2025 |>
#   mutate(cat = case_when(grepl("climate change|global warming|paris agreement|climate breakdown|global heating|planetary emergency|greenhouse gases|carbon emissions|fossil fuels|sustainability|climate adaptation|renewable energ|extreme weather event|carbon footprint|sea-level ris|greenhouse effect|deforestation|environmental damage|ecosystem degradation|biodiversity loss|species extinction|climate justice|sustainable practices|decarboniz|net-zero emission|clean energ|solar energ|green polic|green industrial polic",
#                                priorities, ignore.case = TRUE) ~ "Climate Change",
#                          grepl("healthcare|affordable care|medicaid|medicare|public health|mental health|preventative care|medical costs|health costs|vaccination|pandemic|infection|epidemic",
#                                priorities, ignore.case = TRUE) ~ "Health",
#                          grepl("migrat|migrant|asylum seeker|refugee|border control|border security|deportation|repatriation", priorities,
#                                ignore.case = TRUE) ~ "Immigration",
#                          grepl("employment| job | jobs | wage|workforce|labor market| worker|employed", priorities,
#                                ignore.case = TRUE) ~ "Employment",
#                          .default = NA),
#          Year = as.numeric(messydates::year(date))) |>
#   drop_na(cat)
# saveRDS(comp_priorities, file = "comp_priorities.rds")

## -----------------------------------------------------------------------------
comp_priorities <- readRDS("comp_priorities.rds")
cc_data <- comp_priorities |>
  filter(cat == "Climate Change") |>
  pivot_longer(cols = Frequency:Intensity,
               names_to = "type", values_to = "score")
modelsummary(list("Commitment" = lm(score ~ president + Year,
                     data = subset(cc_data, type == "Commitment")),
            "Timing" = lm(score ~ president + Year,
               data = subset(cc_data, type == "Timing")),
            "Frequency" = lm(score ~ president + Year,
               data = subset(cc_data, type == "Frequency")),
            "Intensity" = lm(score ~ president + Year,
               data = subset(cc_data, type == "Intensity"))),
            estimate = "{estimate}{stars}",
            coef_omit = "Intercept",
            coef_rename = c("presidentClinton" = "Clinton",
                            "presidentBush" = "Bush",
                            "presidentObama" = "Obama",
                            "presidentTrump" = "Trump",
                            "presidentBiden" = "Biden"))

## ----fig.width=8, fig.height=5------------------------------------------------
comp_priorities |>
  filter(cat == "Climate Change") |>
  group_by(date, president) |>
  summarise(max_urgency = max(Urgency, na.rm = TRUE)) |>
  ggplot(aes(x = date, y = max_urgency)) +
  geom_point(aes(color = president), alpha = 0.3) +
  geom_smooth(aes(color = president), alpha = 0.25,
              method = "glm", se = TRUE, size = 2) +
  geom_density_2d(linewidth = 0.2, colour = "black", alpha = 0.2) +
  scale_x_date(date_breaks = "2 years", date_labels = "%y",
               limits = c(as.Date("1993/01/20"), as.Date("2025/01/20"))) +
  scale_color_brewer(palette = "Dark2", direction = "1") +
  labs(x = "Year", y = "Max Urgency Scores", color = "") +
  theme_clean(base_size = 11, base_family = "serif") +
  theme(legend.position = "bottom", plot.background = element_blank(),
        legend.text = element_text(size = 9.5),
        legend.background = element_blank(), plot.caption = element_text(hjust = 0.5),
        plot.title = element_text(hjust = 0.5), plot.subtitle = element_text(hjust = 0.5))

## ----fig.width=8, fig.height=5------------------------------------------------
comp_priorities |>
  group_by(date, cat) |>
  summarise(max_urgency = max(Urgency, na.rm = TRUE)) |>
  ggplot(aes(x = date, y = max_urgency)) +
  geom_smooth(aes(color = cat), se = FALSE, method = "gam", formula = y ~ s(x),
              method.args = list(method = "REML")) +
  scale_x_date(date_breaks = "2 years", date_labels = "%y",
                limits = c(as.Date("1993/01/20"), as.Date("2025/01/20"))) +
  scale_color_manual(breaks = c("Climate Change", "Employment", "Health", "Immigration"),
                     values = c("#66A61E", "#A6761D", "#7570B3", "#D95F02")) +
  annotate("rect", xmin = as.Date("2019/12/01"), xmax = as.Date("2023/08/01"),
           ymin = 0.96, ymax = 1.48, alpha=0.2, color="plum4", fill="plum") +
  annotate("text", x = as.Date("2021/10/01"), y = 0.94, label = "COVID-19", color="plum4") +
  geom_vline(xintercept =  as.Date("2001/01/20"), linetype="dotted", 
             color = "#446677", size = 0.5) +
  geom_vline(xintercept =  as.Date("2009/01/20"), linetype="dotted", 
             color = "#446677", size = 0.5) +
  geom_vline(xintercept =  as.Date("2017/01/20"), linetype="dotted", 
             color = "#446677", size = 0.5) +
  geom_vline(xintercept =  as.Date("2021/01/20"), linetype="dotted", 
             color = "#446677", size = 0.5) +
  annotate("text", x = as.Date("1997/01/20"), y = 1.52, label = "Clinton") +
  annotate("text", x = as.Date("2005/01/20"), y = 1.52, label = "Bush") +
  annotate("text", x = as.Date("2013/01/20"), y = 1.52, label = "Obama") +
  annotate("text", x = as.Date("2019/01/20"), y = 1.52, label = "Trump") +
  annotate("text", x = as.Date("2023/01/20"), y = 1.52, label = "Biden") +
  labs(x = "Year", y = "Max Urgency Scores", color = "") +
  theme_clean(base_size = 11, base_family = "serif") +
  theme(legend.position = "bottom", plot.background = element_blank(),
        legend.text = element_text(size = 9.5),
        legend.background = element_blank(), plot.caption = element_text(hjust = 0.5),
        plot.title = element_text(hjust = 0.5), plot.subtitle = element_text(hjust = 0.5))

