Skip to content
StatsOtter A workspace for causal thinking
Method library WORKFLOW / 062
Research workflow/3 steps

Sensitivity analysis & the E-value (Ding & VanderWeele)

01
The method workspace

Follow the analysis.

Select a node to explore the method

Method mapInput → 3 steps → output
START WITHInput data
ARRIVE ATResults
Read step 01
Inside the methodReasoning, equations & implementation
Step 1 of 3
01
Data prep

Record the observed risk ratio and its confidence interval

Data preparation — shapes the raw inputs into what the estimator expects.

What happens here

Start from a reported RR with its 95% confidence limits.

Reads fromNot specified Feeds into#2
Key code
# Install:  install.packages("EValue")
library(EValue)
RR  <- 1.5
lo  <- 1.2
hi  <- 1.9

Reference / docs ↗

Discussion on this step (0)
StatsOtterDiscussion starter · Editorial note

Before using this step, make its assumptions and its output explicit. A useful peer note explains what you would check, what could go wrong, or what would change your interpretation.

Questions to explore
  1. Which assumption matters most here, and what evidence could challenge it?
  2. What would you check before passing this output to the next step?

Peer discussion

  • Bring your experience, a question, or a different perspective.
02
Data contract

Inputs & data

A point estimate (risk ratio, or converted OR/HR/standardized mean difference) and its confidence interval.

Show data format & exampleHide example
 estimate | type | lo   | hi
     3.90 | RR   | 1.80 | 8.50
     0.80 | RR   | 0.55 | 1.15
03
Read the evidence

Results & interpretation

1 figure Workflow discussion 0
01FigureConfounding strength (risk-ratio scale) needed to explain away RR = 1.5 — the E-value is 2.37.

Result figure rendered by StatsOtter from the package's documented example — unofficial community showcase; all credit to the original authors.

The estimate

\text{E-value}=\mathrm{RR}+\sqrt{\mathrm{RR}\,(\mathrm{RR}-1)}

Context & interpretation

⚠️ Unofficial community showcase of EValue (docs). Not affiliated with the authors — all credit to Peng Ding & coauthors; this summarizes public documentation.

The E-value, from Ding & VanderWeele's assumption-free sensitivity analysis, quantifies robustness to unmeasured confounding without modeling the confounder. Given an observed risk ratio RR (adjusted for measured covariates), the bounding factor implies that a confounder associated with both treatment and outcome by risk ratios RR_EU and RR_UD can explain the result only if both exceed a threshold. The E-value is the smallest such mutual association strength: E = RR + sqrt(RR x (RR - 1)) (using max(RR, 1/RR)). A separate E-value bounds what is needed to shift the confidence interval to the null. Larger E-values mean an observed effect is more robust. The result is sharp and requires no assumptions on the confounder's distribution or its interactions—only that associations are on the risk-ratio scale (other effect measures are first converted to an approximate RR).

What you get — An E-value for the point estimate and an E-value for the CI limit nearest the null.

Example output

> evalues.RR(est = 1.5, lo = 1.2, hi = 1.9)
          point    lower hi
RR     1.500000 1.200000 NA
E-values 2.366432 1.689898 NA

Links: package · paper

Peer notes

Discuss the workflow (0)

  • No comments yet — start the conversation.
IN THE MARGINS

Peer discussion