## ----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))