Skip to contents

Each person receives one sentence and reveals only the outcome under it. With no assumption on how sentences were assigned, the probability of the outcome under sentence t is identified only up to \([P(y=1, z=t),\; P(y=1, z=t) + P(z \ne t)]\), both ends attainable (Research.P11.Pop.outcome_bounds); the contrast between the two sentences lies in an interval of width exactly one that always contains zero (ate_width_one, ate_contains_zero). The interval is the honest report of an observational sentencing comparison before any selection assumption is added; assumptions narrow it, data alone cannot.

Usage

morie_sentence_effect_bounds(y, z, weights = NULL, contrast = NULL)

Arguments

y

Binary outcome per person (0/1, e.g. reconviction within two years).

z

Sentence per person, a vector with exactly two distinct values.

weights

Optional non-negative weights.

contrast

Which of the two sentence values is the treatment (default the second in sorted order); the other is the comparison.

Value

A list with levels, joint and pz per sentence, outcome_bounds (a 2 x 2 matrix, one row per sentence), ate_bounds, ate_width (always 1), naive_difference (the difference of observed rates, which the interval always contains) and theorems.

Examples

set.seed(1)
z <- sample(c("community", "custody"), 500, replace = TRUE, prob = c(0.6, 0.4))
y <- rbinom(500, 1, ifelse(z == "custody", 0.55, 0.35))
morie_sentence_effect_bounds(y, z)
#> $levels
#>  comparison   treatment 
#> "community"   "custody" 
#> 
#> $joint
#> community   custody 
#>     0.208     0.192 
#> 
#> $pz
#> community   custody 
#>     0.624     0.376 
#> 
#> $outcome_bounds
#>           lower upper
#> community 0.208 0.584
#> custody   0.192 0.816
#> 
#> $ate_bounds
#>  lower  upper 
#> -0.392  0.608 
#> 
#> $ate_width
#> [1] 1
#> 
#> $naive_difference
#> [1] 0.177305
#> 
#> $theorems
#> [1] "Research.P11.Pop.outcome_bounds"    "Research.P11.Pop.lower_attained"   
#> [3] "Research.P11.Pop.upper_attained"    "Research.P11.Pop.ate_width_one"    
#> [5] "Research.P11.Pop.ate_contains_zero"
#>