Language: en-GB
Title: Doubly Robust Matching-Adjusted Indirect Comparison for HTA
Version: 0.1.0
Description: Implements Doubly Robust Matching-Adjusted Indirect Comparison (DR-MAIC) for population-adjusted indirect treatment comparisons in health technology appraisal (HTA). The package provides: (1) standard MAIC via entropy balancing / exponential tilting; (2) augmented/doubly robust MAIC combining inverse probability weighting with outcome regression; (3) comprehensive covariate balance diagnostics including standardised mean differences, Love plots, and effective sample size; (4) sensitivity analyses including E-values, weight trimming, and variable exclusion analyses; (5) bootstrap confidence intervals; and (6) submission-ready outputs aligned with NICE Decision Support Unit Technical Support Document 18, Cochrane Handbook guidance on indirect comparisons, and ISPOR best practice guidelines. Supports binary (risk difference, risk ratio, odds ratio) and time-to-event (hazard ratio) outcomes.
License: GPL (≥ 3)
Encoding: UTF-8
RoxygenNote: 7.3.3
Depends: R (≥ 4.0.0)
Imports: stats, survival, boot, ggplot2
Suggests: knitr, rmarkdown, testthat (≥ 3.0.0)
VignetteBuilder: knitr
Config/testthat/edition: 3
LazyData: true
URL: https://github.com/Anupama-Singh01/drMAIC
BugReports: https://github.com/Anupama-Singh01/drMAIC/issues
NeedsCompilation: no
Packaged: 2026-03-24 19:14:24 UTC; AnupamaSingh
Author: Anupama Singh [aut, cre]
Maintainer: Anupama Singh <anupama.singh@pharmacoevidence.com>
Repository: CRAN
Date/Publication: 2026-03-29 15:50:15 UTC

drMAIC: Doubly Robust Matching-Adjusted Indirect Comparison

Description

The drMAIC package implements doubly robust (DR) and standard MAIC methods for population-adjusted indirect treatment comparisons (ITC) in health technology appraisal (HTA). It is designed for settings where:

Core workflow

  1. compute_weights(): Estimate MAIC weights via entropy balancing

  2. dr_maic(): Compute standard MAIC, STC, and DR-MAIC estimates

  3. maic_diagnostics(): Assess covariate balance and weight quality

  4. bootstrap_ci(): Non-parametric bootstrap confidence intervals

  5. sensitivity_analysis(): E-values, trimming, LOVO analyses

  6. nice_report(): NICE/HTA submission-ready formatted output

Statistical methods

The doubly robust estimator combines inverse probability weighting (MAIC) with outcome regression (STC/g-computation):

\hat\theta_{DR} = \hat\theta_{STC} + \sum_i \omega_i(Y_i - \hat m(X_i))

This estimator is consistent if either the weight model or the outcome regression model is correctly specified.

Guideline alignment

Author(s)

Maintainer: Anupama Singh anupama.singh@pharmacoevidence.com

References

Phillippo DM, Ades AE, Dias S, et al. (2016). NICE DSU Technical Support Document 18.

Remiro-Azocar A, Heath A, Baio G. (2022). Methods for population-adjusted indirect comparisons in HTA. Statistics in Medicine, 41(28), 5558-5569.

Signorovitch JE, Wu EQ, Yu AP, et al. (2010). Comparative effectiveness without head-to-head trials. PharmacoEconomics, 28(10), 935-945.

See Also

Useful links:


Bootstrap Confidence Intervals for DR-MAIC

Description

Computes non-parametric bootstrap confidence intervals for the DR-MAIC indirect treatment comparison estimate. Three interval types are available: percentile, basic (Hall), and bias-corrected and accelerated (BCa).

Usage

bootstrap_ci(
  dr_maic_result,
  R = 1000L,
  ci_type = c("bca", "perc", "norm"),
  alpha = 0.05,
  seed = NULL,
  parallel = FALSE,
  verbose = TRUE
)

Arguments

dr_maic_result

An object of class "dr_maic" from dr_maic().

R

Integer; number of bootstrap replicates. Default 1000. Use R >= 2000 for stable BCa intervals.

ci_type

Character; bootstrap CI type: "bca" (default), "perc", or "norm".

alpha

Numeric; significance level. Default 0.05.

seed

Integer; random seed for reproducibility.

parallel

Logical; use parallel computation if parallel package is available. Default FALSE.

verbose

Logical; show progress. Default TRUE.

Details

Bootstrap procedure: The IPD are resampled with replacement B times. For each bootstrap replicate:

  1. MAIC weights are recomputed on the resampled IPD.

  2. The DR-MAIC estimator is evaluated.

  3. The ITC is computed.

Bootstrap resampling captures variance from both the weight estimation and outcome regression steps, providing honest uncertainty quantification for the doubly robust estimator.

Bootstrap CI methods (per Efron and Tibshirani, 1993):

NICE guidance alignment: NICE DSU TSD 18 recommends bootstrap CIs for MAIC to capture parameter uncertainty from the weight estimation step.

Value

A list of class "maic_bootstrap" containing:

ci_maic

Bootstrap CI for standard MAIC ITC.

ci_stc

Bootstrap CI for STC ITC.

ci_dr

Bootstrap CI for DR-MAIC ITC.

se_boot_dr

Bootstrap SE for DR-MAIC.

boot_distribution

Data frame of bootstrap replicate estimates.

boot_plot

ggplot2 bootstrap distribution plot.

ci_type

CI type used.

R

Number of bootstrap replicates.

References

Efron B, Tibshirani RJ. (1993). An Introduction to the Bootstrap. Chapman and Hall/CRC.

Phillippo DM, et al. (2016). NICE DSU TSD 18.

Examples


data(nsclc_ipd); data(nsclc_agd)
w   <- compute_weights(nsclc_ipd,
         c(age = nsclc_agd$mean_age, ecog = nsclc_agd$prop_ecog1,
           smoker = nsclc_agd$prop_smoker), c("age","ecog","smoker"))
res <- dr_maic(w, "response", "binary",
               comparator_estimate = nsclc_agd$response_rate,
               comparator_se       = nsclc_agd$response_se)
boot_res <- bootstrap_ci(res, R = 500, seed = 42)
print(boot_res)
boot_res$boot_plot



Check Assumptions for DR-MAIC

Description

Runs a structured check of the key assumptions required for valid DR-MAIC inference, aligned with NICE DSU TSD 18 and Cochrane guidance.

Usage

check_assumptions(
  maic_weights,
  dr_maic_result = NULL,
  ess_threshold = 30,
  smd_threshold = 0.1
)

Arguments

maic_weights

A maic_weights object from compute_weights().

dr_maic_result

Optional dr_maic object for outcome model checks.

ess_threshold

Minimum acceptable ESS% threshold. Default 30.

smd_threshold

Maximum acceptable |SMD| after weighting. Default 0.1.

Value

A data frame summarising assumption check results (invisibly). Prints a structured checklist to the console.


Compute MAIC Weights via Entropy Balancing

Description

Estimates matching-adjusted indirect comparison (MAIC) weights by solving the entropy balancing / exponential tilting problem. Weights are chosen so that the weighted moments of the IPD covariates match the aggregate data (AgD) target moments. The method follows the approach described in Signorovitch et al. (2010) and formalised by Phillippo et al. (2016) and NICE DSU TSD 18.

Usage

compute_weights(
  ipd,
  target_moments,
  match_vars = NULL,
  match_var_types = NULL,
  optimizer = "BFGS",
  maxit = 10000L,
  verbose = TRUE
)

Arguments

ipd

A data frame of individual patient data from the index trial. Must contain the covariates listed in match_vars.

target_moments

A named numeric vector or list of target aggregate statistics (means, and optionally variances/proportions) from the comparator study AgD. Names must match column names in ipd.

match_vars

Character vector of covariate names to match. If NULL, uses all names in target_moments.

match_var_types

Named character vector specifying the type of each matching variable: "mean" (continuous, match on mean), "mean_sd" (continuous, match on mean AND standard deviation via second moment), or "proportion" (binary, match on proportion). Defaults to "mean" for all variables.

optimizer

Optimisation algorithm passed to stats::optim(). Default "BFGS". Use "Nelder-Mead" if BFGS fails to converge.

maxit

Maximum iterations for optimiser. Default 10000.

verbose

Logical; print convergence information. Default TRUE.

Details

Statistical method: Given individual patient data (IPD) from study A (index trial) with covariates X_i, i=1,\ldots,n and target aggregate statistics \bar{X}_{target} from study B (comparator), MAIC weights are defined by exponential tilting:

w_i = \exp(X_i^\top \hat{\lambda})

where \hat{\lambda} solves the moment-matching equations:

\sum_{i=1}^n w_i X_i = n \bar{X}_{target}

Equivalently, \hat{\lambda} minimises the convex objective:

Q(\lambda) = \sum_{i=1}^n \exp(X_i^\top \lambda) - n \lambda^\top \bar{X}_{target}

Weights are returned in two forms: raw (unnormalized, sum to n_eff) and normalized (sum to 1). The normalized weights are used for estimation.

NICE alignment: The weight computation follows NICE DSU TSD 18 (Phillippo et al., 2016, 2020) guidance on MAIC for population-adjusted ITC.

Value

A list of class "maic_weights" containing:

weights

Numeric vector of normalized weights (sum to 1), length n.

weights_raw

Numeric vector of unnormalized weights.

lambda

Estimated Lagrange multiplier vector \hat{\lambda}.

ess

Effective sample size.

ess_pct

ESS as percentage of original n.

n_original

Original sample size.

convergence

Convergence code from stats::optim() (0 = success).

balance_before

SMD before weighting (named vector).

balance_after

SMD after weighting (named vector).

match_vars

Character vector of matched variables.

target_moments

Target moments used for matching.

ipd

Original IPD data frame (stored for downstream functions).

References

Signorovitch JE, Wu EQ, Yu AP, et al. (2010). Comparative effectiveness without head-to-head trials: a method for matching-adjusted indirect comparisons applied to psoriasis treatment with adalimumab or etanercept. PharmacoEconomics, 28(10), 935-945.

Phillippo DM, Ades AE, Dias S, et al. (2016). Methods for population-adjusted indirect comparisons in submissions to NICE. NICE Decision Support Unit TSD 18.

Phillippo DM, Ades AE, Dias S, et al. (2020). Population adjustment methods for indirect comparisons: A review of national institute for health and care excellence technology appraisals. International Journal of Technology Assessment in Health Care, 36(5), 454-461.

Examples


# Load example NSCLC dataset
data(nsclc_ipd)
data(nsclc_agd)

# Target moments from AgD comparator trial
target <- c(
  age     = nsclc_agd$mean_age,
  ecog    = nsclc_agd$prop_ecog1,
  smoker  = nsclc_agd$prop_smoker
)

# Compute MAIC weights
w <- compute_weights(
  ipd            = nsclc_ipd,
  target_moments = target,
  match_vars     = c("age", "ecog", "smoker")
)
print(w)
summary(w)


Doubly Robust MAIC Estimation

Description

Estimates a population-adjusted treatment effect using the doubly robust (augmented) MAIC estimator. This combines inverse probability weighting (MAIC) with outcome regression (parametric g-computation / STC) into a single estimator that is consistent if either the weight model or the outcome model is correctly specified.

Usage

dr_maic(
  maic_weights,
  outcome_var,
  outcome_type = c("binary", "continuous", "tte"),
  time_var = NULL,
  comparator_estimate,
  comparator_se = NULL,
  effect_measure = NULL,
  outcome_model_formula = NULL,
  outcome_model_family = NULL,
  additional_covariates = NULL,
  alpha = 0.05
)

Arguments

maic_weights

An object of class "maic_weights" from compute_weights().

outcome_var

Character string; name of the outcome column in the IPD.

outcome_type

Character string; type of outcome: "binary" (default), "continuous", or "tte" (time-to-event).

time_var

Character string; for outcome_type = "tte", the name of the time variable in the IPD.

comparator_estimate

Numeric; the outcome estimate from the comparator (AgD) study B. For binary outcomes, a proportion; for TTE, a median survival or log-HR depending on effect_measure.

comparator_se

Numeric; standard error of comparator_estimate. Used for variance estimation of the ITC.

effect_measure

Character string; scale for the treatment effect: "RD" (risk difference), "RR" (risk ratio), "OR" (odds ratio), "HR" (hazard ratio). Default is "OR" for binary, "HR" for TTE, "MD" (mean difference) for continuous.

outcome_model_formula

A formula for the outcome regression model. If NULL (default), uses all matched covariates as predictors.

outcome_model_family

GLM family for outcome model. Default binomial() for binary outcomes, gaussian() for continuous.

additional_covariates

Character vector of additional prognostic covariates to include in the outcome model (beyond matched variables). These improve efficiency but are not required for the DR property.

alpha

Significance level for confidence intervals. Default 0.05.

Details

Statistical framework:

Let study A (index) provide IPD with outcome Y_i and covariates X_i, and study B (comparator) provide AgD with outcome summary statistic \hat{\theta}_B. MAIC weights \omega_i target the covariate distribution of population B.

Three estimators are implemented:

(1) Standard MAIC (IPW):

\hat{\theta}_{MAIC} = \frac{\sum_i \omega_i Y_i}{\sum_i \omega_i}

(2) Standardised Treatment Comparison / g-computation (STC):

\hat{\theta}_{STC} = \frac{\sum_i \omega_i \hat{m}(X_i)}{\sum_i \omega_i}

where \hat{m}(X_i) = \hat{E}[Y \mid X_i] from an outcome regression model fitted on the IPD.

(3) Doubly Robust / Augmented estimator (DR-MAIC):

\hat{\theta}_{DR} = \hat{\theta}_{STC} + \frac{\sum_i \omega_i (Y_i - \hat{m}(X_i))}{\sum_i \omega_i}

The DR estimator equals the MAIC estimator plus a bias-correction term based on outcome model residuals, weighted towards population B. It is consistent if either (i) the weights \omega_i correctly balance covariates (outcome model may be misspecified), or (ii) the outcome model \hat{m} is correctly specified (weights may be misspecified) — the double robustness property (Lunceford and Davidian, 2004; Tan, 2010; Remiro-Azocar, 2022).

The indirect treatment comparison is then:

\hat{\Delta} = \hat{\theta}_{DR,A} - \hat{\theta}_B

For binary outcomes the comparison can be on the risk difference, log-risk ratio, or log-odds ratio scale. For time-to-event outcomes, the log-hazard ratio is estimated via a weighted Cox model (or Weibull regression).

Alignment with guidelines:

Value

A list of class "dr_maic" containing:

theta_maic

MAIC (IPW) estimate in population B.

theta_stc

STC (g-computation) estimate in population B.

theta_dr

Doubly robust estimate in population B.

theta_comparator

Comparator estimate (from AgD).

itc_maic

Indirect treatment comparison (MAIC): A vs B effect.

itc_stc

Indirect treatment comparison (STC): A vs B effect.

itc_dr

Indirect treatment comparison (DR): A vs B effect.

effect_measure

Effect measure used.

outcome_model

Fitted outcome model object.

residuals

Outcome model residuals (Y_i - m_hat_i).

dr_correction

The augmentation term (STC correction).

maic_weights

The maic_weights object used.

n

Original sample size.

ess

Effective sample size.

References

Remiro-Azócar A, Heath A, Baio G. (2022). Methods for population-adjusted indirect comparisons in health technology appraisal. Medical Decision Making, 42(3), 386-401.

Lunceford JK, Davidian M. (2004). Stratification and weighting via the propensity score in estimation of causal treatment effects. Statistics in Medicine, 23(19), 2937-2960.

Tan Z. (2010). Bounded, efficient and doubly robust estimation with inverse weighting. Biometrika, 97(3), 661-682.

Phillippo DM, Ades AE, Dias S, et al. (2016). NICE DSU Technical Support Document 18: Methods for population-adjusted indirect comparisons in submissions to NICE.

Examples


data(nsclc_ipd)
data(nsclc_agd)

# Step 1: Compute weights
w <- compute_weights(
  ipd            = nsclc_ipd,
  target_moments = c(age = nsclc_agd$mean_age,
                     ecog   = nsclc_agd$prop_ecog1,
                     smoker = nsclc_agd$prop_smoker),
  match_vars     = c("age", "ecog", "smoker")
)

# Step 2: DR-MAIC for binary outcome
res <- dr_maic(
  maic_weights         = w,
  outcome_var          = "response",
  outcome_type         = "binary",
  comparator_estimate  = nsclc_agd$response_rate,
  comparator_se        = nsclc_agd$response_se,
  effect_measure       = "OR"
)
print(res)
summary(res)



Covariate Balance Diagnostics for MAIC

Description

Produces covariate balance diagnostics following NICE DSU TSD 18 and Cochrane guidance. Includes: standardised mean differences (SMD) before and after weighting, Love plot, weight distribution visualisations, and effective sample size reporting.

Usage

maic_diagnostics(
  maic_weights,
  plot_type = "all",
  threshold = 0.1,
  title_suffix = NULL
)

Arguments

maic_weights

An object of class "maic_weights" from compute_weights().

plot_type

Character vector specifying which plots to produce: "love" (Love plot of SMDs), "weights" (weight distribution), "balance" (balance table), "all" (default — produces all).

threshold

Numeric; SMD threshold line on Love plot. Default 0.1 (standard threshold used by NICE and Austin and Stuart, 2015).

title_suffix

Optional character string appended to plot titles.

Details

Standardised Mean Difference (SMD):

SMD_j = \frac{\bar{X}_{j,weighted} - \mu_{j,target}}{s_j}

where s_j is the unweighted standard deviation of covariate j in the IPD (per NICE DSU TSD 18 recommendation). |SMD| < 0.1 indicates good balance.

Effective Sample Size (ESS):

ESS = \frac{(\sum_i w_i)^2}{\sum_i w_i^2}

ESS should be interpreted relative to the original n. ESS < 30% of n is a warning threshold per NICE guidance.

Value

A list of class "maic_diagnostics" containing:

balance_table

Data frame with SMD before/after weighting.

ess

Effective sample size.

ess_pct

ESS as % of original n.

n_balanced

Number of variables with |SMD| < threshold after weighting.

love_plot

ggplot2 Love plot object.

weight_plot

ggplot2 weight distribution plot.

all_balanced

Logical; TRUE if all |SMD| < threshold after weighting.

References

Austin PC, Stuart EA. (2015). Moving towards best practice when using inverse probability of treatment weighting (IPTW) using the propensity score to estimate causal treatment effects in observational studies. Statistics in Medicine, 34(28), 3661-3679.

Phillippo DM, Ades AE, Dias S, et al. (2016). NICE DSU TSD 18.

Examples


data(nsclc_ipd)
data(nsclc_agd)

w <- compute_weights(
  ipd            = nsclc_ipd,
  target_moments = c(age = nsclc_agd$mean_age,
                     ecog = nsclc_agd$prop_ecog1,
                     smoker = nsclc_agd$prop_smoker),
  match_vars     = c("age", "ecog", "smoker")
)

diag <- maic_diagnostics(w)
print(diag)
diag$love_plot
diag$weight_plot



Generate NICE/HTA Submission-Ready Report

Description

Produces a structured, submission-ready report of the DR-MAIC analysis aligned with NICE DSU TSD 18, Cochrane Handbook Chapter 23, and ISPOR best practice guidance for population-adjusted indirect treatment comparisons.

Usage

nice_report(
  dr_maic_result,
  bootstrap_result = NULL,
  sensitivity_result = NULL,
  study_a_name = "Study A",
  study_b_name = "Study B",
  indication = "",
  treatment_a = "Treatment A",
  treatment_b = "Treatment B",
  submission_date = format(Sys.Date(), "%d %B %Y"),
  output_format = "console"
)

Arguments

dr_maic_result

An object of class "dr_maic".

bootstrap_result

Optional object of class "maic_bootstrap" from bootstrap_ci().

sensitivity_result

Optional object of class "maic_sensitivity" from sensitivity_analysis().

study_a_name

Character; name of the index trial (Study A). Default "Study A".

study_b_name

Character; name of the comparator trial (Study B). Default "Study B".

indication

Character; disease indication. Default "".

treatment_a

Character; treatment in index trial.

treatment_b

Character; treatment in comparator trial.

submission_date

Character; date of submission. Default: today's date.

output_format

Character; "console" (default) or "list".

Details

The report includes the following sections:

  1. Study and population characteristics - IPD summary and AgD target moments

  2. Weight estimation - ESS, convergence, moment-matching results

  3. Covariate balance - SMD table (NICE TSD 18 format)

  4. Treatment effect estimates - MAIC, STC, and DR-MAIC ITCs

  5. Uncertainty - Bootstrap CIs (if provided)

  6. Sensitivity analysis - E-values and trimming (if provided)

  7. Assumptions and limitations - per NICE and Cochrane guidance

  8. Methods description - citable methods paragraph

Value

A list of class "nice_report" (invisibly) containing all formatted sections. Also prints to console.

References

Phillippo DM, Ades AE, Dias S, et al. (2016). NICE DSU TSD 18.

Dias S, Sutton AJ, Ades AE, Welton NJ. (2013). A generalised linear modelling framework for pairwise and network meta-analysis of randomised controlled trials. Statistics in Medicine, 32(13), 2312-2330.

Higgins JPT, et al. (2023). Cochrane Handbook for Systematic Reviews of Interventions, Version 6.4. Chapter 23.

ISPOR Task Force. (2014). Indirect treatment comparison/network meta-analysis study questionnaire to assess relevance and credibility. Value in Health.

Examples


data(nsclc_ipd); data(nsclc_agd)
w   <- compute_weights(nsclc_ipd,
         c(age = nsclc_agd$mean_age, ecog = nsclc_agd$prop_ecog1,
           smoker = nsclc_agd$prop_smoker), c("age","ecog","smoker"))
res <- dr_maic(w, "response", "binary",
               comparator_estimate = nsclc_agd$response_rate,
               comparator_se       = nsclc_agd$response_se)
nice_report(res,
            study_a_name  = "KEYNOTE-024",
            study_b_name  = "IMpower150",
            indication    = "Advanced NSCLC",
            treatment_a   = "Pembrolizumab",
            treatment_b   = "Atezolizumab + Bevacizumab + Chemo")



Simulated NSCLC Aggregate Data (Study B — Comparator)

Description

Simulated aggregate data (AgD) representing published summary statistics from a hypothetical comparator trial in advanced NSCLC.

Usage

nsclc_agd

Format

A list with the following elements:

mean_age

Mean age of trial population.

prop_ecog1

Proportion with ECOG 1/2.

prop_smoker

Proportion with smoking history.

prop_pdl1_high

Proportion with PD-L1 >=50%.

prop_prior_lines

Proportion with >= 1 prior line.

response_rate

Observed response rate (proportion).

response_se

Standard error of response rate.

n_agd

Sample size of comparator trial.

os_median

Median OS in months.

os_hr_ref

Log-HR (vs common reference arm, if available).

Source

Simulated data. Not based on any real trial. For illustration only.

Examples

data(nsclc_agd)
str(nsclc_agd)

Simulated NSCLC Individual Patient Data (Study A)

Description

A simulated individual patient dataset (IPD) representing a hypothetical single-arm trial of an immunotherapy agent in advanced non-small cell lung cancer (NSCLC). Created for demonstration of the drMAIC package.

Usage

nsclc_ipd

Format

A data frame with 200 rows and 8 variables:

patient_id

Patient identifier.

age

Age in years (continuous).

ecog

ECOG performance status (binary: 0 = ECOG 0, 1 = ECOG 1/2).

smoker

Smoking history (binary: 1 = ever-smoker, 0 = never-smoker).

pdl1_high

PD-L1 expression >=50% (binary: 1 = high, 0 = low/negative).

prior_lines

Number of prior lines of therapy (0 or 1).

response

Objective response (binary: 1 = responder, 0 = non-responder).

os_time

Overall survival time in months (censored).

os_event

Overall survival event indicator (1 = death, 0 = censored).

Source

Simulated data. Not based on any real trial. For illustration only.

Examples

data(nsclc_ipd)
head(nsclc_ipd)
summary(nsclc_ipd)

Sensitivity Analysis for DR-MAIC

Description

Conducts pre-specified sensitivity analyses for the DR-MAIC indirect treatment comparison, including: (1) E-value analysis for unmeasured confounding; (2) weight trimming sensitivity; (3) variable exclusion (leave-one-out) analysis; and (4) outcome model specification sensitivity.

Usage

sensitivity_analysis(
  dr_maic_result,
  trim_percentiles = c(0.9, 0.95, 0.99),
  lovo = TRUE,
  outcome_model_specs = NULL,
  alpha = 0.05
)

Arguments

dr_maic_result

An object of class "dr_maic" from dr_maic().

trim_percentiles

Numeric vector of weight trimming percentiles (0-1). Default c(0.90, 0.95, 0.99).

lovo

Logical; run leave-one-variable-out analysis. Default TRUE.

outcome_model_specs

Optional list of alternative outcome model formulas for specification sensitivity.

alpha

Significance level. Default 0.05.

Details

E-value analysis: The E-value quantifies the minimum strength of unmeasured confounding required to explain away the observed treatment effect (VanderWeele & Ding, 2017). For an observed risk ratio RR:

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

For OR, the converted RR = OR^{0.5} is used (when outcome is not rare). A large E-value indicates the result is robust to unmeasured confounding.

Weight trimming sensitivity: Extreme weights are trimmed at specified percentiles, and the effect estimate is recomputed. This assesses the influence of patients with extreme weights on the ITC.

Leave-one-variable-out (LOVO): Each matched variable is excluded in turn, and the full DR-MAIC analysis is re-run. This assesses which variables most influence the estimate.

Assumptions tested (per NICE DSU TSD 18 and Cochrane guidance):

Value

A list of class "maic_sensitivity" containing:

evalue

E-value for the main DR-MAIC estimate.

evalue_ci

E-value for the confidence interval boundary.

trim_results

Data frame of trimming sensitivity results.

lovo_results

Data frame of leave-one-variable-out results.

evalue_plot

ggplot2 E-value plot.

trim_plot

ggplot2 trimming sensitivity plot.

lovo_plot

ggplot2 LOVO plot.

References

VanderWeele TJ, Ding P. (2017). Sensitivity analysis in observational research: introducing the E-value. Annals of Internal Medicine, 167(4), 268-274.

Phillippo DM, et al. (2016). NICE DSU TSD 18.

Cochrane Handbook, Chapter 23: Including variants on randomized trials.

Examples


data(nsclc_ipd)
data(nsclc_agd)

w   <- compute_weights(nsclc_ipd,
         c(age = nsclc_agd$mean_age, ecog = nsclc_agd$prop_ecog1,
           smoker = nsclc_agd$prop_smoker),
         c("age","ecog","smoker"))
res <- dr_maic(w, "response", "binary",
               comparator_estimate = nsclc_agd$response_rate,
               comparator_se       = nsclc_agd$response_se)
sa  <- sensitivity_analysis(res)
sa$evalue
sa$trim_plot