Ontario Restrictive Confinement (OTIS)¶
Part of Statistical Methods — MORIE’s statistical-methods reference.
MORIE provides 250+ correctional/sociolegal functions for Ontario correctional system data — restrictive confinement placements, alert statuses, regional movement patterns, recidivism, risk assessment, sentence analytics, custody metrics, compliance monitoring, and causal inference across fiscal years 2023-2025.
This module bridges criminology, sociolegal studies, and
epidemiological methods using the same DML/IPW/AIPW infrastructure
as the CPADS public health analysis. All functions are dataset-agnostic
and implemented as individual files in morie.fn/ (≤7-char names).
Key function families:
Placement (15):
rpl_r,rpl_a,rpl_g,rpl_ra-rpl_gt,rprat,rpdur,rpfrq,rpfst,rpgapAlerts (12):
alrt1-alrt3,alco,altm,aldur,alesc,altrn,alprv,alinc,alrsk,alcmxVolatility (3):
vol_r,vol_a,vol_tRecidivism (10):
rcdsm,rcd_r,rcd_a,rcd_g,rcdtm,rcdkm,rcdhz,rcdcx,rcdpr,rcdrtRisk (10):
rskcl,rskau,rskcb,rskfr,rskbr,rskpr,rskov,rskth,rskdc,rsktdSentence (10):
sntln,sntmd,sntpr,sntsr,sntrl,sntag,sntgn,sntrg,sntdp,sntvlCustody (15):
cstdy,cstoc,cstin,cstsg-cstgpCompliance (15):
cmprt-cmpgn,insprt-inspfr,odesc-orankDML/Causal (15):
odml1-odml4,oate1,oatt1,ohet1,ogate,ocate,oipw1,odid1,oiv1,omed1,osns1,oaipwDemographics (15):
odm_r-odm_y,osumm-opairCore (6):
rpl,astc,vol,rct,otd,oml
Data¶
Source: Ontario Ministry of the Solicitor General (data.ontario.ca)
Coverage: Fiscal years 2023-2025, 5 Ontario regions
Records: ~1.9M expanded placement records
Unit: Individual × fiscal year × placement event
Key variables:
gender— sex / gender (Male, Female).age_category— age group (18-24, 25-49, 50+).region— Ontario region (Central, Eastern, Northern, Toronto, Western).mental_health_alert— mental-health flag (Yes / No).suicide_risk_alert— suicide-risk flag (Yes / No).suicide_watch_alert— suicide-watch flag (Yes / No).number_of_placements— count of placements (integer).
Alert-State Encoding¶
Three binary alerts (mental health, suicide risk, suicide watch) produce 8 possible combinations. The codes used in the package:
a1— mental health only (1, 0, 0).a4— mental health + suicide risk (1, 1, 0).a5— suicide risk + suicide watch (0, 1, 1).a7— all three alerts (1, 1, 1).a8— no alerts (0, 0, 0).
(Vector entries are mental_health, suicide_risk, suicide_watch in
that order. Codes a2, a3, a6 cover the remaining permutations.)
The complexity index (ac) counts how many distinct alert
states a person experienced across their placement events. Higher
complexity indicates more variable alert status over time.
Methods¶
Regional placement analysis — Python
rplace, Rget_region_by_age().Alert-state encoding — Python
astcmb, Rdt_unbiasedblock.Regional volatility — Python
volat, R volatility section.Trends over time — Python
rctrnd, R temporal analysis.Descriptive statistics — Python
otdesc, R sections 1-4.DML IRM (ATE / ATT) — Python
otdml, Rrun_dml_analysis().Propensity score matching — Python
morie.matching, RMatchIt.AIPW (doubly robust) — Python
morie.causal, RWeightIt+lm_robust.Mixed effects (GLMM) — R only (
lme4,glmmTMB).DHARMa diagnostics — R only (
DHARMa).
Usage¶
from morie.otis import rplace, astcmb, otdml
import pandas as pd
# Load expanded placement data (via R bridge or direct)
# df = pd.read_csv("data/cache/dt_expanded.csv")
# Regional placement by year
result = rplace(df, year=2024, sex="Male")
print(result.props)
# Alert-state complexity
alerts = astcmb(df)
print(alerts.summary)
# DML causal analysis
dml = otdml(df, outcome="Y", treatment="D")
print(f"ATE: {dml.ate:.3f} (p={dml.ate_pval:.4f})")
References¶
Ontario Ministry of the Solicitor General (2025). Restrictive Confinement Detailed Dataset. data.ontario.ca.
Jahn v. Ontario (2020). Settlement Agreement — Inmate Data Disclosure.
Chernozhukov, V., Chetverikov, D., Demirer, M., Duflo, E., Hansen, C., Newey, W., & Robins, J. (2018). Double/debiased machine learning for treatment and structural parameters. Econometrics Journal, 21(1), C1-C68.