2026-03-20

Introduction

This analysis examines Federal Prisoner Statistics Collected Under the First Step Act in 2025 to:

  • Identify the relationship between enrollment and completion of recidivism reduction programs and prisoner risk level

  • Find gaps in what programs are rather than should be focusing on and what may be creating a barrier between participation and completion

  • Conduct a risk/needs assessment to determine which groups are most vulnerable to recidivism

More often than not, recidivism, or re-offending within a few years after release, is the result of underlying issues such as poverty, lack of re-entery resources, substance abuse, and mental health disorders not being addressed during incarceration. Understanding how programs address these needs is essential for reducing risk and improving outcomes.

Data Source

This project uses data from the Bureau of Justice Statistics (BJS), specifically:

  • fpscufsa25t10.csv: Recidivism risk classification of persons in federal prison by demographics

  • fpscufsa25t11.csv: Evidence-Based Recidivism Reduction (EBRR) Programs and Productive Activities (PA) by prisoner needs met

  • fpscufsa25t12.csv: Enrollment and completion of EBRR programs and PAs by program or activity and recidivism risk level

Variables Used

  • Enrolled: Number of prisoners enrolled in each program

  • Completed: Number of Prisoners who completed the program

  • Risk Level: Prisoner risk classification (e.g., Minimum, Low, Medium, High)

  • Program: Name of the program/activity (e.g., Opioid Use Disorder: Release and Recovery)

  • Program Focus: Which underlying issues that lead to recidivism are addressed (e.g., Anger, Mental Health, Substance Use, Trauma)

  • Race / Ethnicity: Demographic characteristics of prisoners

Data Preparation

Loaded Datasets:

t12 <- read.csv("fpscufsa25t12.csv", skip = 10)
colnames(t12) <- c("facility", "program", "risk_level", "enrolled", "completed")
t12_clean <- t12 %>%
  mutate(program = trimws(program)) %>%
  filter(!is.na(enrolled), !is.na(completed), !is.na(risk_level))
t11 <- read.csv("fpscufsa25t11.csv", skip = 11)
t11 <- t11[, -2]
t11 <- t11[, -2]
colnames(t11) <- c("program", "anger", "antisocial", "cognition", "dyslexia", "education", "family_parenting", "finance_poverty", "medical", "mental_health", "recreation", "substance_use", "trauma", "work")
# t10 - reformatted, excludes gender, age, sentencing lengths
t10 <- tribble(~characteristic, ~total, ~min_risk, ~low_risk, ~med_risk, ~high_risk,
               "White", 79836, 13061, 38703, 13365, 14707,
               "Black", 55300, 2683, 19962, 12454, 20201,
               "Asian/Native American", 1986, 512, 1008, 240, 226,
               "American Indian", 4087, 306, 1401, 815, 1565,
               "Hispanic", 39717, 5039, 21406, 6726, 6546,
               "Non-Hispanic", 101492, 11523, 39668, 20148, 30153)

# t11 - converts x used to mark needs met to binary 1 and 0
t11_clean <- t11 %>%
  mutate(
    program = trimws(program),
    across(anger:work, ~ifelse(tolower(trimws(.)) == "x", 1, 0))
  )

Plotly Scatter: Enrollment vs Completion Risk Level Result

The scatterplot shows a strong positive relationship between enrollment and completion and lowering risk levels. This suggests that while participation is important, completion likely has a stronger impact on reducing recidivism risk, as the points indicating enrollment but closer towards the lower end of completion tend to be high risk.

3D Plotly

3D Plot Analysis

Observations:

  • Enrollment: In most cases, inmates are placed in risk reduction programs rather than given full freedom to choose what they want to participate in themselves. This may explain why enrollment starts off high while completion rates end up low.

  • Completion: Completing a program further reduces risk level. If inmates are failing to complete programs, fewer needs are being addressed, increasing their likelihood of re-offending.

  • Number of Needs Addressed by Program: By including an additional number of needs addressed variable, we can see that programs addressing multiple needs are less likely to be completed. This may be due to a program’s intensity or difficulty for participants dealing with severe or long-term issues.

ggplot Heatmap: Needs Coverage by Risk Level

The heatmap shows high risk prisoners are more likely to be placed in programs targeting cognition, mental health, and substance use. These needs appear to be strong indicators of recidivism risk. However, some needs such as poverty, trauma, or work, which most would assume are also big risk indicators, show lower coverage across all risk levels. This suggests that certain critical areas are under-addressed, potentially contributing to recidivism.

ggplot Bar Chart: Risk Level by Ethnicity and Race

African American and Hispanic prisoners are disproportionately categorized as medium or high risk. While many would assume this suggests a need for targeted intervention, systemic factors and potential biases may also contribute to these disparities. Understanding these patterns is crucial for more accurate risk assessments, as they affect not only which programs an individual is placed in, but sentencing lengths and outcomes as well.

Statistical Analysis:

Mean enrollment, completion, and completion rates calculated by risk level:

## # A tibble: 5 × 4
##   risk_level mean_enrolled mean_completed completion_rate
##   <chr>              <dbl>          <dbl>           <dbl>
## 1 High                9.60          4.19            0.437
## 2 Low                17.2          10.1             0.585
## 3 Medium              7.17          3.79            0.528
## 4 Minimum             7.10          4.55            0.641
## 5 Unassigned          1.21          0.615           0.508

Statistical Analysis Continued:

T-Test comparing high and low risk groups for program completion.

## 
##  Welch Two Sample t-test
## 
## data:  completed by risk_level
## t = -18.923, df = 5829.2, p-value < 2.2e-16
## alternative hypothesis: true difference in means between group High and group Low is not equal to 0
## 95 percent confidence interval:
##  -6.482973 -5.265839
## sample estimates:
## mean in group High  mean in group Low 
##           4.190959          10.065365

Interpretation

  • The difference in program completion between high and low risk prisoners is statistically significant (p < 0.001)

  • Low risk prisoners complete about 6 more programs than high risk prisoners. This suggests that the more programs are completed (and therefore more issues are addressed), the more recidivism risk lowers.

Conclusion

The analysis shows completing, not only being enrolled in, a program plays a critical role in recidivism risk reduction. While most inmates may enter a program, many end up never completing it, especially those who would benefit the most. This could be due to multiple factors: maybe higher risk inmates experience more difficulty transitioning into these programs, giving up on old habits, or require greater incentives.

What we know, is the statistical analysis confirms that more programs completed effectively reduces recidivism risk. The main issue found, is current programs are not as effective for high risk, more complex individuals.

To better reduce recidivism, correctional programs should focus on:

  • Reducing program intensity and making overcoming addictions, educational barriers, and financial literacy more accessable.

  • Expanding programs to include needs that are currently overlooked like financial stability, job search, and reentry support.

References

https://bjs.ojp.gov/library/publications/federal-prisoner-statistics-collected-under-first-step-act-2025#0-0