Biden's Approval Rate in 2021-2022

Biden’s Approval Margins

approval_polllist <- read_csv('https://projects.fivethirtyeight.com/biden-approval-data/approval_polllist.csv') 

glimpse(approval_polllist)
## Rows: 4,569
## Columns: 22
## $ president           <chr> "Joe Biden", "Joe Biden", "Joe Biden", "Joe Biden"…
## $ subgroup            <chr> "All polls", "All polls", "All polls", "All polls"…
## $ modeldate           <chr> "9/18/2022", "9/18/2022", "9/18/2022", "9/18/2022"…
## $ startdate           <chr> "1/19/2021", "1/19/2021", "1/20/2021", "1/20/2021"…
## $ enddate             <chr> "1/21/2021", "1/21/2021", "1/21/2021", "1/21/2021"…
## $ pollster            <chr> "Morning Consult", "Rasmussen Reports/Pulse Opinio…
## $ grade               <chr> "B", "B", "B-", "B", "B", "B+", "B", "B+", "B-", "…
## $ samplesize          <dbl> 15000, 1500, 1115, 1993, 15000, 1516, 15000, 941, …
## $ population          <chr> "a", "lv", "a", "rv", "a", "a", "a", "rv", "rv", "…
## $ weight              <dbl> 0.2594, 0.3382, 1.1014, 0.0930, 0.2333, 1.2454, 0.…
## $ influence           <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ approve             <dbl> 50.0, 48.0, 55.5, 56.0, 51.0, 45.0, 52.0, 63.0, 58…
## $ disapprove          <dbl> 28.0, 45.0, 31.6, 31.0, 28.0, 28.0, 29.0, 37.0, 32…
## $ adjusted_approve    <dbl> 49.4, 49.1, 54.6, 55.4, 50.4, 46.0, 51.4, 59.4, 57…
## $ adjusted_disapprove <dbl> 30.9, 40.3, 32.4, 33.9, 30.9, 29.0, 31.9, 38.4, 32…
## $ multiversions       <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
## $ tracking            <lgl> TRUE, TRUE, NA, NA, TRUE, NA, TRUE, NA, NA, TRUE, …
## $ url                 <chr> "https://morningconsult.com/form/global-leader-app…
## $ poll_id             <dbl> 74272, 74247, 74248, 74246, 74273, 74327, 74274, 7…
## $ question_id         <dbl> 139491, 139395, 139404, 139394, 139492, 139570, 13…
## $ createddate         <chr> "1/28/2021", "1/22/2021", "1/22/2021", "1/22/2021"…
## $ timestamp           <chr> "14:51:31 18 Sep 2022", "14:51:31 18 Sep 2022", "1…
library(lubridate)
approval_polllist <- approval_polllist %>% 
  mutate(enddate = mdy(enddate),
         startdate = mdy(startdate),
         modeldate = mdy(modeldate),
         week = week(enddate)) 

Plot

This plot shows the net approval rate of Joe Biden for the 3 subroup of voters, highlighting also the 95% confidence interval.

approval_polllist %>% 
  mutate(year = year(enddate)) %>% 
  filter(year == 2022, week<50) %>%
  mutate(net_approval_rate = (approve-disapprove)) %>% 
  group_by(week, subgroup) %>% 
  summarise(
    mean_net_approve = mean(net_approval_rate),
    sd = sd(net_approval_rate),
    count = n(),
    se = sd/sqrt(count),
    lower95 = mean_net_approve - qt(0.975,count-1)*se,
    upper95 = mean_net_approve + qt(0.975,count-1)*se) %>% 

ggplot(aes(x = week, y=mean_net_approve, color = subgroup))+
  geom_line()+
  facet_wrap(~subgroup, nrow=3)+
  geom_ribbon(aes(ymin = lower95, ymax = upper95), alpha=0.2,linetype = "solid", nrow=3)+
  theme_bw()+
  labs(title = "Biden's Net Approval Ratings in 2022",
    subtitle = "Weekly Data, Approve - Disapprove, %",
    y= "", 
    x = ""
  )