The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
confoundvis is a common interface to established sensitivity analyses for unmeasured confounding. Each framework keeps its own parameter and its own published formula. confoundvis stores the results in one object. Robustness curves, tables, and reports work for every framework; surfaces, contours, and covariate benchmarks are provided only where the framework defines them. It adds no new sensitivity parameter or measure.
| Framework | Source | confoundvis function | Agrees with |
|---|---|---|---|
| Partial R² / robustness value | Cinelli & Hazlett (2020) | sens_path_lm(), from_sensemakr() |
sensemakr |
| Impact threshold (ITCV) | Frank (2000) | itcv_lm(), from_konfound() |
konfound |
| Robustness of inference to replacement (RIR) | Frank et al. (2013) | rir_lm(),
from_konfound(index = "RIR") |
konfound |
| E-value | VanderWeele & Ding (2017) | from_evalue() |
EValue |
| Rosenbaum bounds, matched pairs | Rosenbaum (2002) | sens_path_pairs() |
DOS2, sensitivity2x2xk,
sensitivitymv |
| Tool | Partial R² | ITCV | RIR | E-value | Rosenbaum |
|---|---|---|---|---|---|
plot_robustness_curve(),
robustness_points() |
✓ | ✓ | ✓ | ✓ | ✓ |
sens_table() |
✓ | ✓ | ✓ | ✓ | ✓ |
sens_report() |
✓ | ✓ | ✓ | ✓ | ✓ |
sens_surface(),
plot_sensitivity_surface() |
✓ | ✓ | – | ✓ | ✓ |
covariate_impacts(),
plot_sensitivity_love() |
✓ | ✓ | – | – | – |
plot_sensitivity_contour() (exact correlation
contour) |
– | ✓ | – | – | – |
RIR has a single sensitivity parameter, so it has no two-parameter surface. Covariate benchmarks need a fitted linear model, so they are not available for E-values or matched pairs.
install.packages("confoundvis")
# development version
# install.packages("pak")
pak::pak("subirhait/confoundvis")library(confoundvis)
data("darfur", package = "sensemakr")
fit <- lm(peacefactor ~ directlyharmed + age + farmer_dar + herder_dar +
pastvoted + hhsize_darfur + female + village, data = darfur)
p_r2 <- sens_path_lm(fit, treatment = "directlyharmed") # sensemakr's RV
it <- itcv_lm(fit, treatment = "directlyharmed") # konfound's ITCV
rr <- rir_lm(fit, treatment = "directlyharmed") # konfound's RIR
sens_table(partial_r2 = p_r2, itcv = it$path, rir = rr$path)
plot_sensitivity_surface(sens_surface(p_r2))
sens_report(p_r2)See vignette("confoundvis-workflow") for the full
workflow, including E-values and matched pairs.
A sensitivity display shows how strong confounding would have to be to change a conclusion. It cannot show whether such a confounder exists, and it inherits the assumptions of the framework that produced it.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.