On August 9, 2014, Michael Brown, an unarmed black male, was fatally shot in Ferguson, Missouri, by Darren Wilson, a white police officer. Starting the day after this incident, members of the community protested and rioted against police brutality, which sparked national media attention, a debate about the power of law enforcement in general, and saw the outcrop of the Black Lives Matter Movement. These protests lasted on and off throughout the following months, reaching their peak on November 24, after a grand jury decided not to indict Wilson. Some demonstrations continued in the months following as well.

I have recently been very interested in political efficacy - that is, citizens’ faith and trust in government - in response to crises in their communities. I thought about researching the effect that events such as poor water quality (Flint, Michigan) or a natural disaster like forest fires (California) had on political participation before ultimately deciding to examine this subject in the context of in Ferguson’s police brutality issue and related unrest . In deciding to look into voter registration in Ferguson after the events of Fall 2014, I first examined it as I would have any other national occurrence, with the demonstrations against police brutality serving as the crisis at hand.

In the beginning of my research, I used the paper by Gimpel et. al, “Election-Year Stimuli and the Timing of Voter Registration” as guidance. From this paper, I was introduced to the concept of “disruptive stimuli”, which is stimuli that varies from the internal norms of society. This seemed fit perfectly with the goal I had in examining political participation when the norms of a community are disrupted, from natural disaster or infrastructure issues or, in this case, demonstrations that caught national attention. The matter I was looking into seemed straightforward - I would examine how voter registration changed according to the proximity of voters to Ferguson. I hypothesized that voter registration would increase the closer that voters were to Ferguson, with the close distance of the crisis motivating those to register. However, I then came across a paper by Hannah Walker, “Targeted: The Mobilizing Effect of Perceptions of Unfair Policing Practices”, which opened my eyes to the different factors and considerations that play into the issue I am researching.

In this paper, Hannah Walker explains that African Americans more likely to express political participation in response to unfair police practices in non-traditional ways. I realized I had been thinking about the issue in the wrong way: I shouldn’t measure voter registration in response to unrest as a way of measuring political participation, because the unrest itself was the political participation. As a result of this realization, I focused on framing my research in measuring registration response to the shooting itself rather than the protests. Further, I was wary of drawing false conclusions in which I attributed a change in registration to proximity when race was more influential in how people would engage politically. As St. Louis County is already highly segregated, with African American communities centered around the northeast part of the county (around Ferguson, more or less) and becoming predominantly white towards the southwest edges of the county, I worried that any measure that showed a correlation between distance from Ferguson and change in registration (and thus, a change in “political participation”) was actually showing patterns that could be attributed to what we already know about race.

Taking all this into consideration, I decided to examine the subject from various angles.

Getting Started

To begin, I loaded the R packages tidyverse and ggplot2, and set my working directory

Then, I read in the data. For this project, I used the Missouri Voter File.

This file includes all the voter registrations in Missouri, as well as registrants names, addresses, counties, zip codes, residential cities, and past voter history. It did not include age, birthdate, race, or gender information for any of the registrants. After exploring the database a little, I learned that the city of Ferguson, since it is a suburb of St. Louis, was grouped with it in the voter file, and therefore there was no one registered to the residential city of Ferguson. Luckily, I also discovered that the entire suburb of Ferguson has one zip code (63135), so I decided to examine voter registration numbers within different zip codes.

To simplify the data I was working with, I first used the filter function to filter out all registrants in the database except ones with the county identifier St. Louis. Then, I selected only the columns relevant to what I wanted to use, which were “Residential Zipcode” and “Registration Date”. I also decided to convert the values in the column “Registration Date” to dates, since they originally were read in as characters. For this, I used the as.Date function.

StLouisCounty <- "St. Louis"
StLouisVoters <- filter(MO.voters, County == "St. Louis")
(StLouisVoters.Basic <- select(StLouisVoters, `Residential ZipCode`, `Registration Date`))
## # A tibble: 731,988 x 2
##    `Residential ZipCode` `Registration Date`
##    <chr>                 <chr>              
##  1 63117                 12/13/2012         
##  2 63125                 09/27/2012         
##  3 63123                 10/10/2000         
##  4 63134                 02/01/2010         
##  5 63121                 12/08/2004         
##  6 63129                 10/04/1980         
##  7 63146                 09/24/2015         
##  8 63074                 09/27/2002         
##  9 63123                 08/09/1989         
## 10 63119                 08/27/2010         
## # … with 731,978 more rows
StLouisVoters.Basic$RegistrationDate <- as.Date(StLouisVoters.Basic$"Registration Date", format = "%m/%d/%Y")

To make my dataset a little smaller and manageable to work with yet still give myself room to use different time periods, I filtered the set so it showed data between 2010 and 2017 only. I also changed the zipcode that denotes Ferguson to “Ferguson” in order to make it more accessible when it comes to graphing.

StLouisVoters.Important <- StLouisVoters.Basic %>%
  filter(RegistrationDate >= "2010/01/01")
StLouisVoters.Important <- StLouisVoters.Important %>%
  filter(RegistrationDate <= "2017/06/30")
StLouisVoters.Important$`Residential ZipCode`<- recode(StLouisVoters.Important$`Residential ZipCode`, "63135" = "Ferguson", .default = StLouisVoters.Important$`Residential ZipCode`)

The first thing I wanted to show were the numbers in registration year to year in Ferguson and everywhere else in St. Louis County, to get an idea of how registration trends varied from Ferguson at the county level and over the years. However, instead of graphing January through December of each year, I wanted to look at the time period relevant to my project. Considering that the shooting happened in August, I started the graph in June, to see if there was any change once August came. Then, since the next municipal election happened in April, I closed the time period at the beginning of May, to see if people were reacting to the incident by planning on voting in the next election.

To do this, I created new data sets featuring registration dates from June 2013 through May 2014, June 2014 through May 2015, and June 2015 through May 2016. I created one with only registrations in Ferguson, and then with all the Zip Codes in St. Louis county except Ferguson. These will be the data I use for my plotting.

Ferguson.1314 <- StLouisVoters.Important %>%
  filter(grepl("Ferguson",`Residential ZipCode`))
Ferguson.1314 <- Ferguson.1314 %>%
  filter(RegistrationDate >= "2013/06/01" & RegistrationDate <= "2014/05/31")

AllOthers.1314 <- StLouisVoters.Important %>%
  filter(!grepl("Ferguson", `Residential ZipCode`))
AllOthers.1314 <- AllOthers.1314 %>%
  filter(RegistrationDate >= "2013/06/01" & RegistrationDate <= "2014/05/31")

(Repeated two more times for different time periods)

From this, I created the graphs.

Ferguson.1314graph <- ggplot(Ferguson.1314, aes(RegistrationDate)) + 
  geom_bar(color = "#5CC628") +
  labs(x = "Registration Date", 
       y = "Number of Registrants",
       title = "Ferguson 2013-2014")

I repeated this 5 more times for the other graphs, changing the data, color, and title.

Conclusion

Before looking into the data of this project, I made several assumptions about how voter registration was affected as a result of the act of police brutality in the city of Ferguson and the areas around it. My theories changed as I delved into different aspects of this project, but what I originally suspected – that Ferguson would see the greatest uptick in registrations at the time of the demonstrations – proved to be true, especially when compared to zip codes not experiencing unrest. Though I reasoned, using Walker’s paper as a guide, that political engagement may not have been carried out in the form of voter registration in Ferguson, and that predominantly white communities were more likely to register to vote in response to a feeling of injustice, the data showed otherwise.

This may be due to the nature of the problem people were retaliating against (either through demonstration or voter registration or both), in that white people may not have seen police brutality as an issue that affects them, or merely not believe it is real at all, and so their political participation was not at all affected by what was happening here.

Challenges

One of the greatest challenges I had in this research was wrapping my head around all the moving parts of my topic and building a cohesive plan for what I wanted to explore, in that it involved interacting the mathematic, quanitative part of my thinking with the theoretical and abstract. When I was thinking too conceptually or big-picture about this topic, it was hard for me to decide how I wanted to put the idea into practice with data manipulation, or if I did, I didn’t know how to phrase it in R terms. I knew what I wanted to explore, but I didn’t know exactly how to. There was a full week I spent on Google and YouTube, searching for one specific function that I just did not know the name of. It goes without saying (I think) that this is the first time I’ve worked with R, or any stats language in general, and that I have very little knowledge of statistics and its practical applications. In the end, there are some aspects of this project where I was unable to live up to the expectations I set for myself – I originally wanted to include GIS mapping, but the way the project changed from focusing on proximity to merely different regions to demographics made me unable to decide on even how I should spatially display the information I was trying to find out. If this project carries into the future, that is definitely something I want to figure out once and for all. Still, I was able to engage with R in meaningful ways over the course of this research, and even small victories felt great (for example, discovering the grid.arrange function in order to place graphs next to each other).

References

Gimpel, James G., Dyck, Joshua J., and Shaw, Daron R. “Election-Year Stimuli and the Timing of Voter Registration.” Party Politics, vol 13, no. 3, 2007, pp. 351-374.

Walker, Hannah L. “Targeted: The Mobilizing Effect of Perceptions of Unfair Policing Practices.” The Journal of Politics, 14 Nov. 2019.