Skip to contents

Formula: adjusted estimate vs (R2_y~u.x, R2_d~u.x)

Usage

Chzlt(model, treat = NULL, cov = NULL, R2_yu = 0, R2_du = 0, q = 1)

Arguments

model

Outcome vector y.

treat

Treatment vector D.

cov

An n x k matrix of observed covariates, or NULL.

R2_yu

Hypothesised partial R2 with the outcome.

R2_du

Hypothesised partial R2 with the treatment.

q

Fraction of the estimate the confounder would explain.

Value

List with estimate, tau, se, t, df, bias, adjusted_se, rv_q, r2_yd_x, robust, n, method.

Details

The bias an omitted confounder U can produce is bounded by |bias| = se sqrt(df) sqrt(R2_yu R2_du / (1 - R2_du)), so a claim survives U exactly when the adjusted estimate keeps its sign. The robustness value RV_q is the common partial R2 at which the adjusted estimate is driven to zero: feeding RV back in as both R2 values returns an adjusted estimate of exactly zero, the identity used to check this implementation.

References

Cinelli & Hazlett (2020), Making Sense of Sensitivity, JRSS B 82(1):39-67.

Examples

set.seed(1)
Chzlt(model = rnorm(50), treat = rbinom(50, 1, 0.5),
      cov = matrix(rnorm(100), 50, 2), R2_yu = 0.1, R2_du = 0.1)
#> $estimate
#> [1] 0.1842935
#> 
#> $tau
#> [1] 0.3472155
#> 
#> $se
#> [1] 0.2278883
#> 
#> $t
#> [1] 1.523621
#> 
#> $df
#> [1] 46
#> 
#> $bias
#> [1] 0.162922
#> 
#> $adjusted_se
#> [1] 0.2304065
#> 
#> $rv_q
#> [1] 0.2008255
#> 
#> $r2_yd_x
#> [1] 0.04804124
#> 
#> $robust
#> [1] 1
#> 
#> $n
#> [1] 50
#> 
#> $method
#> [1] "Cinelli-Hazlett omitted-variable-bias sensitivity"
#> 
#> attr(,"class")
#> [1] "morie_rich_result" "list"