Skip to contents

R port of morie.laniyonu.actuarial_risk_disparity. Audits the Correctional Service of Canada's four ordinal risk instruments (Static, DFIA-R Dynamic, Offender Security Level, Reintegration Potential) and the two binary downstream outcomes (parole granted; institutional housing level) for race x gender bias.

Pass one of the four ordinal risk scores ("static", "dynamic", "osl", "reintegration") to run the Stage 1 threshold-specific ordinal logit; pass "parole" or "housing" to run the Stage 2 score-net-residual binary logit.

Usage

morie_laniyonu_actuarial_risk_disparity(
  df,
  outcome,
  race_cols,
  gender_col = "gender",
  score_col = NULL,
  control_cols = NULL,
  ordinal_levels = c("low", "medium", "high"),
  outcome_col = NULL,
  split_by_gender = TRUE,
  bootstrap_replicates = 200L,
  random_state = 20260513L
)

Arguments

df

Sentence-level (one row per sentence) CSC microdata.

outcome

One of "static", "dynamic", "osl", "reintegration", "parole", "housing".

race_cols

Character vector of 0/1 race indicator columns (White is the implicit reference; pass non-reference levels).

gender_col

Categorical gender column.

score_col

Required when outcome is "parole" or "housing"; the actuarial score column name (e.g. "reintegration_score_numeric" for parole).

control_cols

Optional additional control columns (age, priors, sentence length, etc.). Pre-dummy any categoricals.

ordinal_levels

Level ordering for ordinal outcomes (default c("low", "medium", "high")).

outcome_col

Optional override for the default column name.

split_by_gender

If TRUE (default), stratifies by gender_col; if FALSE, folds one-hot gender into the design.

bootstrap_replicates

Stage 2 only; bootstrap reps for residual race-coefficient SEs.

random_state

Seed for bootstrap.

Value

A named list of class morie_laniyonu_ard_result carrying the per-stratum coefficients and a multi-paragraph interpretation string.

A named list of class morie_laniyonu_ard_result.

Details

Two empirical stages match the paper:

  • Stage 1 (ordinal scores): threshold-specific cumulative-logit, fit as two separate binary logits at the low->medium and medium->high cutoffs, plus a proportional-odds LR test. The headline pattern is much larger |beta| at the low->medium cut than at medium->high.

  • Stage 2 (binary outcomes): the score-net-residual audit - logistic regression of outcome on actuarial score + race indicators (+ controls). A non-zero residual race coefficient is the disparate-treatment signal.

Caveat surfaced via warning() on every call (Goel et al. 2021): a non-zero residual race coefficient is evidence of OUTPUT disparity, not PREDICTIVE-VALIDITY disparity. The two are conceptually distinct; the paper's disparate-treatment claim rests on the former.

References

O'Connell, C., & Laniyonu, A. (2025). Race, gender, and risk assessments in Canadian federal prison. Race & Justice, 15(3), 428-453.

Goel, S., Shroff, R., Skeem, J., & Slobogin, C. (2021). The accuracy, equity, and jurisprudence of criminal risk assessment. In Research Handbook on Big Data Law (pp. 9-28).