Six lightweight callables mirroring the Python module
morie.otis: regional-placement matrices, alert-state combo
encoding, regional volatility, restrictive-confinement trends,
descriptive statistics, and a partialled-out Plug-in DML (PLR)
ATE/ATT estimator. Each public callable returns a named list with
classes c("morie_otis_result", "morie_rich_result", "list")
carrying summary_lines, optional tables, a
plain-language interpretation, and machine-readable
payload entries.
Usage
morie_otis_regional_placement(...)
morie_otis_alert_state_combo(...)
morie_otis_volatility(...)
morie_otis_rc_trends(...)
morie_otis_descriptives(...)
morie_otis_dml(...)Details
Data sources: anonymized Ontario MCSCS placement records released
under the Jahn v. Ontario (2020) settlement. The canonical OTIS
table has 76,934 rows (FY 2022/23 – 2024/25). See
morie_otis_load in otis_analyze.R for the
canonical loader.
Year-lock invariant
OTIS UniqueIndividual_ID (format YYYY-XXXXX-AA) is
randomly reassigned every fiscal year and re-randomized per dataset
file even within a year. The variable_taxonomy.R registry
enforces cross_year_safe = FALSE for this column. Every
aggregation below operates within EndFiscalYear; cross-year
joins on the ID are forbidden by design.
References
Ontario Ministry of the Solicitor General (2025). Restrictive Confinement Detailed Dataset. https://data.ontario.ca.
Jahn v. Ontario (2020). Settlement Agreement – Inmate Data Disclosure.
Chernozhukov, V. et al. (2018). Double/debiased machine learning for treatment and structural parameters. Econometrics Journal, 21(1), C1-C68.