R/bias-bounds.R
robustness_value.RdThis function computes the robustness value of a target parameter estimated via debiased machine learning.
The robustness value describes the minimum strength of association (parameterized in terms of R2) that omitted variables would need to have both with the outcome and with the Riesz Representer so that the confidence bounds for the target parameter includes zero (or another threshold of interest).
robustness_value(...)
# S3 method for class 'dml'
robustness_value(model, theta = 0, alpha = 0.05, ...)
# S3 method for class 'dml.bounds'
robustness_value(model, theta = 0, alpha = 0.05, ...)arguments passed to other methods.
an object of class dml or dml_bounds.
the null hypothesis of interest for the target parameter theta. Default is theta =0 (zero null hypothesis).
significance level. Default is alpha = 0.05.
A named numeric vector of robustness values.
Chernozhukov, V., Cinelli, C., Newey, W., Sharma, A., and Syrgkanis, V. (2026). "Long Story Short: Omitted Variable Bias in Causal Machine Learning." Review of Economics and Statistics. doi:10.1162/REST.a.1705
Wang, J., Sant'Anna, P. H. C., Chernozhukov, V., and Cinelli, C. (2026). "Omitted Variable Bias in Difference-in-Differences Designs." Working Paper. (Conditional ATT/ATU formulation.)
data("pension")
set.seed(3); idx <- sample(nrow(pension), 2000)
y <- pension$net_tfa[idx]
d <- pension$e401[idx]
x <- model.matrix(~ -1 + age + inc + educ + fsize + marr + twoearn + pira + hown,
data = pension[idx, ])
fit <- dml(y, d, x, model = "plm", cf.folds = 2, cf.seed = 3, verbose = FALSE)
# smallest confounding strength that would overturn the conclusion
robustness_value(fit, theta = 0, alpha = 0.05)
#> ate
#> 0.06307403