Our project was inspired by this study. The authors explore the effects of the percent of a local government’s revenue that comes from collecting fines, fees, and asset forfeitures on the rate at which their police departments solve violent and property crimes. They find that as the share of revenue from fines increases, crime clearance rate falls.
The general court data is not coded in a uniform way. Therefore it is difficult to easily discern in what types of cases fines are being assessed. According to the study by Goldstein, et. al. linked above, over 80% of involuntary police contact (contact initiated by offers, as opposed to citizens calling the police, or initiating contact in some other way) occurs due to traffic violations. Additionally, police officers tend to have a high level of discretion about the severity of tickets during traffic stops.
Taking all of this into account, we ultimately want to investigate if, in traffic cases, the share of revenue that comes from fines is correlated to the number and severity of fines assessed for localities in Virginia. While beyond the scope of our project, the rates of fine and forfeitures as a percentage of income
# Load needed libraries
library(tidyverse)
library(janitor)
library(rcartocolor)
library(readxl)
library(sf)
library(tigris)
library(scales)
library(ggthemes)
library(modelsummary)
library(corrplot)
library(stargazer)
library(kableExtra)
options(tigris_use_cache = TRUE)
# Read in regional circuit court data
general <- readRDS("../data/gd_case_2017.RDS")
# Camel case to snake case
general <- general %>%
clean_names()
Title 46.2 of the Code of Virginia pertains to Motor Vehicles. Because of the high level of pulbic-police interaction and our hypothesis that police officers will have the highest degree of discression during traffic stops, we will only be looking at cases that include this code.
general %>%
filter(str_detect(code_section, "46.2", negate = FALSE)) %>%
select(case_type) %>%
filter(case_type == "Infraction" | case_type == "Misdemeanor" | case_type == "Felony") %>%
ggplot(aes(x = fct_infreq(case_type), fill = case_type)) +
geom_bar()
As expected, among traffic violations, the majority of cases are infractions. About one-sixth of cases are misdemeanors. There are very few felonies in the general court data for traffic cases. Many of the more serious cases, and therefore felonies, would likely be adjudicated in the circuit court.
fine_tab <- general %>%
filter(str_detect(code_section, "46.2", negate = FALSE)) %>%
mutate(num_cases = n()) %>%
filter(fine > 0) %>%
summarize(first(num_cases),
num_cases_fine = n(),
pct_fine = n() / first(num_cases),
min_fine = min(fine),
mean_fine = mean(fine),
median_fine = median(fine),
max_fine = max(fine)
)
kbl(fine_tab)
first(num_cases) | num_cases_fine | pct_fine | min_fine | mean_fine | median_fine | max_fine |
---|---|---|---|---|---|---|
1529438 | 1164897 | 0.7617 | 0.1 | 90.83 | 78 | 35288 |
Fines are present in about 75 percent of traffic cases. Fines range from $0.10 to $35,288 with an average fine of $90.83.
general <- general %>%
mutate(race7 = fct_collapse(race,
unknown = c("", "Unknown", "Unknown (Includes Not Applicable, Unknown)"),
amind = c("American Indian", "American Indian or Alaskan Native"),
asian = c("Asian or Pacific Islander", "Asian Or Pacific Islander"),
black = c("Black", "Black(Non-Hispanic)"),
white = c("White", "White Caucasian(Non-Hispanic)"),
latinx = c("Hispanic"),
remaining = c("Other(Includes Not Applicable, Unknown)", "NA")))
general %>%
filter(str_detect(code_section, "46.2", negate = FALSE)) %>%
filter(fine > 0) %>%
group_by(race7) %>%
ggplot(aes(fct_infreq(race7), fill = race7)) +
geom_bar() +
labs(y = "", title = "Number of Traffic Cases Filed by Race") +
guides(color = "none")