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(...)Value
An object of class "morie_otis_result".
An object of class "morie_otis_result".
An object of class "morie_otis_result".
An object of class "morie_otis_result".
An object of class "morie_otis_result".
An object of class "morie_otis_result".
Details
Data source: Ontario's public "Data on Inmates in Ontario" detailed
records, annually released on the Ontario Data Catalogue under the
Open Government Licence – Ontario (Jahn v. Ontario, 2020).
Authorship chain: authored by the Service Management and Oversight
Branch; maintained by the Ministry of the Solicitor General
(maintainer branch: Business Intelligence and Insights Branch);
source system: the Offender Tracking Information System (OTIS) –
OTIS names the upstream system, not the download. The canonical
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.
Examples
# \donttest{
b01 <- morie_synth_otis("b01", n = 120L, seed = 1L)
res <- try(morie_otis_regional_placement(b01))
#> Error in morie_otis_rplace(...) :
#> argument "year" is missing, with no default
class(res)
#> [1] "try-error"
# }
# \donttest{
b01 <- morie_synth_otis("b01", n = 120L, seed = 1L)
res <- try(morie_otis_alert_state_combo(b01))
class(res)
#> [1] "morie_otis_result" "morie_rich_result" "list"
# }
# \donttest{
b01 <- morie_synth_otis("b01", n = 120L, seed = 1L)
res <- try(morie_otis_volatility(b01))
class(res)
#> [1] "morie_otis_result" "morie_rich_result" "list"
# }
# \donttest{
b01 <- morie_synth_otis("b01", n = 120L, seed = 1L)
res <- try(morie_otis_rc_trends(b01))
class(res)
#> [1] "morie_otis_result" "morie_rich_result" "list"
# }
# \donttest{
b01 <- morie_synth_otis("b01", n = 120L, seed = 1L)
res <- try(morie_otis_descriptives(b01))
class(res)
#> [1] "morie_otis_result" "morie_rich_result" "list"
# }
# \donttest{
b01 <- morie_synth_otis("b01", n = 120L, seed = 1L)
res <- try(morie_otis_dml(b01))
class(res)
#> [1] "morie_otis_result" "morie_rich_result" "list"
# }
