In order to discover the impact of AVR implementation in the state of Oregon since 2015, I conducted a thorough statistical analysis of the registration data contained in the most recent Oregon state voter file. However, the initial voter file contained a significant quantity of unecessary data for the purposes of this analysis. To resolve this issue, I decided to create a new dataset, “Registration.OR”, that would contain only the valid and relevant data for the purposes of this study.
By ensuring that I only accounted for active registrants, and by removing the erroneous data entries, missing values, and unecessary columns from the initial “Voters.OR” dataset, I was able to create a new “Registration.OR” dataset containing only the information required for this analysis. Furthermore, by mutating the “EFF_REGN_DATE” column into a new “Date” column in order to fit R’s standard date format, I was able to generate a chronologically organized list of registered voters by their most recent effective registration date. Lastly, I created a new “Total_Registered_Voters” column to keep track of the total registration volume in Oregon over time.
Voters.OR <- filter(Voters.OR, STATUS == "A")
Voters_Active.OR <- select(Voters.OR, VOTER_ID, BIRTH_DATE, EFF_REGN_DATE, PARTY_CODE)
Voters_Active.OR <- filter(Voters_Active.OR, EFF_REGN_DATE != "ACP")
Registration_Desc.OR <- arrange(Voters_Active.OR, desc(EFF_REGN_DATE), desc(BIRTH_DATE))
Registration_Desc.OR$EFF_REGN_DATE <- mdy(Registration_Desc.OR$EFF_REGN_DATE)
Voter.Registration.OR <- filter(Registration_Desc.OR, BIRTH_DATE !="1111", EFF_REGN_DATE >= "2015-01-01")
Registration.OR <- subset(Voter.Registration.OR, format(EFF_REGN_DATE, "%Y") == 2015)
Registration.OR <- Voter.Registration.OR %>%
mutate(Year = format(EFF_REGN_DATE, "%Y"),
Month = format(EFF_REGN_DATE, "%m")) %>%
group_by(Year, Month) %>%
summarise(Date = mean(EFF_REGN_DATE),
Total_Registered_Voters= n()) %>%
ungroup() %>%
mutate(Date = format(Date, "%y-%m"))
In this section, I created a summary list of Oregon’s total registered voters organized by their registration date (15-01 = January, 2015). Despite the existence of so-called “spikes” in registration rates resulting from ambitious partisan mobilization efforts, there remains a clear and continuous rise in the number of voters registered in Oregon each month since Oregon’s “Motor Voter” bill took effect on January 1, 2016.
count(Registration.OR, Date, Total_Registered_Voters)
## # A tibble: 57 x 3
## Date Total_Registered_Voters n
## <chr> <int> <int>
## 1 15-01 4682 1
## 2 15-02 6592 1
## 3 15-03 6490 1
## 4 15-04 8644 1
## 5 15-05 8776 1
## 6 15-06 8966 1
## 7 15-07 12234 1
## 8 15-08 14940 1
## 9 15-09 13632 1
## 10 15-10 12374 1
## # … with 47 more rows
To continue illustrating the growth in Oregon voters’ effective registration rates over time, I constructed a bar graph that visually demonstrates this dramatic increase. After the enactment of Oregon’s Motor Voter bill in January 2016, effective voter registration rates clearly maintain a consistent and upward trend. The noticable spikes in registration in October and November 2016, and in October and November 2018, are indicative of the voters’ response to the parties increasingly rigorous mobilization efforts in the months before a national election.
ggplot(data = Registration.OR) +
geom_bar(aes(x = Date, y = Total_Registered_Voters, group = 1, fill = Year), stat = "identity") +
theme (axis.text.x = element_text(angle = 45, hjust = 1))
Complementing the previous bar graph, this illustration presents a scatterplot overlayed with a line of best fit to represent the smooth and continous increase in the number of effectively registered voters extant across Oregon.
ggplot(data = Registration.OR, aes(x = Date, y = Total_Registered_Voters, group = 1))+
geom_point(shape = 23, fill = "black")+
geom_smooth(fill = "orange")+
theme (axis.text.x = element_text(angle = 45, hjust = 1))
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'