Key Findings
Nationally
Summary:
This section calculates the average number of years individuals spent in prison past their parole eligibility year by race and ethnicity. The analysis excludes states with unreliable or missing data and states that abolished discretionary parole to ensure results are robust and representative.
Finding:
Code
# ---------------------------------------------------------------------------- #
# Years Spent in Prison Past Parole Eligibility
# ---------------------------------------------------------------------------- #
# Combine excluded states
<- unique(c(
combined_excluded_states $state,
states_with_high_missing$state,
states_with_high_missing_race
states_to_exclude
))
# Remove states that abolished parole
<- setdiff(
valid_states $state,
ncrp_yearendpop_filteredunique(c(combined_excluded_states, states_abolished_parole$state))
)
# Filter NCRP data to valid states only
<- fnc_filter_pe_population_criteria(
ncrp_yearendpop_filtered data = ncrp_yearendpop_filtered,
exclude = states_to_exclude,
dont_filter = states_nofilter
)
# Filter NCRP data to people currently eligible for parole (also past parole eligibility since it's yearend)
<- ncrp_yearendpop_filtered |>
ncrp_past_pe filter(state %in% valid_states, parelig_status == "Current")
# Average time served past PE for people still in prison by race and ethnicity and state
<- ncrp_past_pe |>
avg_past_pe_race_by_state filter(race != "Unknown") |>
filter(
%in% states_use_other_race_eth$state |
state !state %in% states_use_other_race_eth$state &
(%in% c("White, non-Hispanic", "Hispanic, any race", "Black, non-Hispanic"))
race |>
) mutate(years_to_estimated_pey = abs(years_to_estimated_pey)) |>
group_by(state, race, rptyear) |>
summarise(
avg_years_to_estimated_pey = mean(years_to_estimated_pey, na.rm = TRUE),
total_years_past_pe = sum(years_to_estimated_pey, na.rm = TRUE),
people = n(),
.groups = "drop"
|>
) fnc_filter_by_year(which_overall_year)
# Calculate weighted averages
<- avg_past_pe_race_by_state |>
avg_past_pe_race group_by(race) |>
summarise(
avg_years_to_estimated_pey = sum(avg_years_to_estimated_pey * people, na.rm = TRUE) / sum(people, na.rm = TRUE),
total_years_past_pe = sum(total_years_past_pe, na.rm = TRUE),
people = sum(people, na.rm = TRUE),
.groups = "drop"
)
# Get states used
<- unique(avg_past_pe_race_by_state$state)
included_states <- avg_past_pe_race_by_state |>
states_using_2018_data filter(rptyear == 2018) |>
pull(state) |>
unique()
# Generate Text Outputs
cat("In 2019, ",
highlight_number(comma(avg_past_pe_race$people[avg_past_pe_race$race == "White, non-Hispanic"])),
"White, non-Hispanic individuals collectively spent",
highlight_number(comma(round(avg_past_pe_race$total_years_past_pe[avg_past_pe_race$race == "White, non-Hispanic"], 1))),
"years in prison past their parole eligibility year across",
highlight_number(length(included_states)), "states, serving an average of",
highlight_number(round(avg_past_pe_race$avg_years_to_estimated_pey[avg_past_pe_race$race == "White, non-Hispanic"], 1)),
"years beyond parole eligibility.<br><br>")
In 2019, 81,734 White, non-Hispanic individuals collectively spent 244,565 years in prison past their parole eligibility year across 24 states, serving an average of 3 years beyond parole eligibility.
Code
cat("In 2019, ",
highlight_number(comma(avg_past_pe_race$people[avg_past_pe_race$race == "Black, non-Hispanic"])),
"Black, non-Hispanic individuals collectively spent",
highlight_number(comma(round(avg_past_pe_race$total_years_past_pe[avg_past_pe_race$race == "Black, non-Hispanic"], 1))),
"years in prison past their parole eligibility year across",
highlight_number(length(included_states)), "states, serving an average of",
highlight_number(round(avg_past_pe_race$avg_years_to_estimated_pey[avg_past_pe_race$race == "Black, non-Hispanic"], 1)),
"years beyond parole eligibility.<br><br>")
In 2019, 74,764 Black, non-Hispanic individuals collectively spent 280,147 years in prison past their parole eligibility year across 24 states, serving an average of 3.7 years beyond parole eligibility.
Code
cat("In 2019, ",
highlight_number(comma(avg_past_pe_race$people[avg_past_pe_race$race == "Hispanic, any race"])),
"Hispanic individuals collectively spent",
highlight_number(comma(round(avg_past_pe_race$total_years_past_pe[avg_past_pe_race$race == "Hispanic, any race"], 1))),
"years in prison past their parole eligibility year across",
highlight_number(length(included_states)), "states, serving an average of",
highlight_number(round(avg_past_pe_race$avg_years_to_estimated_pey[avg_past_pe_race$race == "Hispanic, any race"], 1)),
"years beyond parole eligibility.<br><br>")
In 2019, 34,296 Hispanic individuals collectively spent 111,719 years in prison past their parole eligibility year across 24 states, serving an average of 3.3 years beyond parole eligibility.
Note: The following states used 2018 data due to unreliable 2019 data: Hawaii
Included states ( 24 ): Arkansas, Colorado, Connecticut, Georgia, Hawaii, Idaho, Iowa, Kentucky, Maryland, Massachusetts, Mississippi, Missouri, Montana, Nevada, New Hampshire, New York, North Dakota, Pennsylvania, Rhode Island, South Carolina, Tennessee, Texas, West Virginia, Wyoming
By Offense
Summary:
This section analyzes the offense types of individuals held past their parole eligibility year, distinguishing between violent and nonviolent offenses. Nonviolent offenses are further categorized into Property, Drug, and Public Order offenses.
Finding:
Code
# Categorize offenses into violent vs. nonviolent, keeping "Unknown" offenses for initial analysis
<- ncrp_past_pe |>
ncrp_past_pe_offense_initial mutate(offense_group = case_when(
%in% c("Murder or Nonnegligent Manslaughter",
fbi_index "Negligent Manslaughter",
"Rape or Sexual Assault",
"Robbery",
"Aggravated or Simple Assault",
"Other Violent Offenses") ~ "Violent",
%in% c("Drug", "Public Order", "Property") ~ "Nonviolent",
fbi_index TRUE ~ fbi_index))
# Filter out "Unknown" offenses for further analysis
<- ncrp_past_pe_offense_initial |>
ncrp_past_pe_offense_filtered filter(offense_group != "Unknown") |>
fnc_filter_by_year(which_overall_year)
# Check if each state has all nonviolent offense types (Property, Drug, Public Order)
<- ncrp_past_pe_offense_filtered |>
states_with_all_offenses filter(offense_group == "Nonviolent") |>
group_by(state) |>
summarise(has_property = any(fbi_index == "Property"),
has_drug = any(fbi_index == "Drug"),
has_public_order = any(fbi_index == "Public Order"),
.groups = "drop") |>
filter(has_property & has_drug & has_public_order) |>
pull(state)
# Summarize counts for nonviolent offense subcategories
# Property, Drug, Public Order
<- ncrp_past_pe_offense_filtered |>
nonviolent_summary filter(offense_group == "Nonviolent") |>
group_by(fbi_index) |>
summarise(total_people = n(), .groups = "drop")
# Extract counts for subcategories
<- nonviolent_summary$total_people[nonviolent_summary$fbi_index == "Property"]
property_offense_count <- nonviolent_summary$total_people[nonviolent_summary$fbi_index == "Drug"]
drug_offense_count <- nonviolent_summary$total_people[nonviolent_summary$fbi_index == "Public Order"]
public_order_offense_count
# Total nonviolent count and states with all offenses
<- sum(nonviolent_summary$total_people)
nonviolent_offense_count <- length(states_with_all_offenses)
states_with_nonviolent
# Generate output sentence
cat("Over", highlight_number(comma(nonviolent_offense_count)),
"people held past their parole eligibility year were convicted of nonviolent offenses in",
highlight_number(states_with_nonviolent), "states. Thousands of people who have not committed violent offenses remain incarcerated after their parole eligibility date. This includes approximately",
highlight_number(comma(property_offense_count)), "people convicted of property offenses,",
highlight_number(comma(drug_offense_count)), "convicted of drug offenses, and",
highlight_number(comma(public_order_offense_count)), "convicted of public order offenses.\n\n")
Over 86,711 people held past their parole eligibility year were convicted of nonviolent offenses in 24 states. Thousands of people who have not committed violent offenses remain incarcerated after their parole eligibility date. This includes approximately 33,861 people convicted of property offenses, 28,214 convicted of drug offenses, and 24,636 convicted of public order offenses.
Note: The following states used 2018 data due to unreliable 2019 data: Hawaii
Included states ( 24 ): Arkansas, Colorado, Connecticut, Georgia, Hawaii, Idaho, Iowa, Kentucky, Maryland, Massachusetts, Mississippi, Missouri, Montana, Nevada, New Hampshire, New York, North Dakota, Pennsylvania, Rhode Island, South Carolina, Tennessee, Texas, West Virginia, Wyoming