Skip to contents

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(...)

Arguments

...

Arguments forwarded verbatim to the canonical short-named OTIS primitive (e.g. morie_otis_rplace, morie_otis_astcmb, morie_otis_volat, morie_otis_rctrnd, morie_otis_otdesc). See those functions for full per-primitive argument lists.

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"             
# }