## ----setup, include = FALSE---------------------------------------------------
has_sm <- requireNamespace("sensemakr", quietly = TRUE)
has_kf <- requireNamespace("konfound", quietly = TRUE)
has_ev <- requireNamespace("EValue", quietly = TRUE)
knitr::opts_chunk$set(collapse = TRUE, comment = "#>",
                      fig.width = 6.5, fig.height = 4, eval = has_sm)

## ----eval = !has_sm, echo = FALSE, results = "asis"---------------------------
# cat("*This vignette needs the 'sensemakr' package for the example data;",
#     "install it to see the output.*")

## ----model--------------------------------------------------------------------
library(confoundvis)
data("darfur", package = "sensemakr")

fit <- lm(peacefactor ~ directlyharmed + age + farmer_dar + herder_dar +
            pastvoted + hhsize_darfur + female + village, data = darfur)
coef(summary(fit))["directlyharmed", ]

## ----path-r2------------------------------------------------------------------
p_r2 <- sens_path_lm(fit, treatment = "directlyharmed",
                     lambda = seq(0, 0.3, by = 0.001))
p_r2

## ----path-itcv----------------------------------------------------------------
it <- itcv_lm(fit, treatment = "directlyharmed",
              lambda = seq(0, 0.3, by = 0.001))
c(r = it$r, r_crit = it$r_crit, ITCV = it$itcv,
  ITCV_unconditional = it$itcv_unconditional)

## ----curve-r2-----------------------------------------------------------------
plot_robustness_curve(p_r2, points = FALSE)

## ----curve-itcv---------------------------------------------------------------
plot_robustness_curve(it$path, points = FALSE)

## ----impacts------------------------------------------------------------------
imp <- covariate_impacts(fit, "directlyharmed", metric = "partial_r2")
imp[order(-imp$impact), c("covariate", "term_df", "r2dz.x", "r2yz.dx",
                          "bias_index")]

## ----love---------------------------------------------------------------------
plot_sensitivity_love(imp)

## ----love-itcv----------------------------------------------------------------
imp_it <- covariate_impacts(fit, "directlyharmed", metric = "itcv")
plot_sensitivity_love(imp_it)

## ----contour------------------------------------------------------------------
plot_sensitivity_contour(attr(imp_it, "threshold"),
                         benchmarks = imp_it[!is.na(imp_it$r_yu), ])

## ----report-------------------------------------------------------------------
sens_report(p_r2)
sens_report(it$path)

## ----sensemakr----------------------------------------------------------------
s <- sensemakr::sensemakr(fit, treatment = "directlyharmed",
                          benchmark_covariates = "female", kd = 1:3)
p_sm <- from_sensemakr(s, lambda = seq(0, 0.3, by = 0.001))
robustness_points(p_sm)
unlist(s$sensitivity_stats[c("rv_q", "rv_qa")])

## ----konfound, eval = has_sm && has_kf----------------------------------------
k <- suppressWarnings(suppressMessages(
  konfound::konfound(fit, directlyharmed, to_return = "raw_output")))
p_kf <- from_konfound(k, lambda = seq(0, 0.3, by = 0.001))
c(confoundvis = it$itcv, konfound_itcvGz = k$itcvGz)

## ----evalue, eval = has_ev----------------------------------------------------
e <- EValue::evalues.RR(est = 1.8, lo = 1.3, hi = 2.5)
p_ev <- from_evalue(e, lambda = seq(1, 4, by = 0.01))
plot_robustness_curve(p_ev, points = FALSE)

