| Title: | Doubly Robust Matching-Adjusted Indirect Comparison for HTA |
|---|---|
| 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. |
| Authors: | Anupama Singh [aut, cre] |
| Maintainer: | Anupama Singh <[email protected]> |
| License: | GPL (>= 3) |
| Version: | 0.1.0 |
| Built: | 2026-05-31 07:41:59 UTC |
| Source: | https://github.com/heorlytics/drmaic |
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).
bootstrap_ci( dr_maic_result, R = 1000L, ci_type = c("bca", "perc", "norm"), alpha = 0.05, seed = NULL, parallel = FALSE, verbose = TRUE )bootstrap_ci( dr_maic_result, R = 1000L, ci_type = c("bca", "perc", "norm"), alpha = 0.05, seed = NULL, parallel = FALSE, verbose = TRUE )
dr_maic_result |
An object of class |
R |
Integer; number of bootstrap replicates. Default 1000. Use R >= 2000 for stable BCa intervals. |
ci_type |
Character; bootstrap CI type: |
alpha |
Numeric; significance level. Default 0.05. |
seed |
Integer; random seed for reproducibility. |
parallel |
Logical; use parallel computation if |
verbose |
Logical; show progress. Default |
Bootstrap procedure: The IPD are resampled with replacement B times. For each bootstrap replicate:
MAIC weights are recomputed on the resampled IPD.
The DR-MAIC estimator is evaluated.
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):
Percentile: uses the 2.5th and 97.5th percentiles of the bootstrap distribution.
BCa (Bias-Corrected and Accelerated): adjusts for bias and skewness. Recommended method per ISPOR guidance.
Normal: uses bootstrap standard error with normal quantiles.
NICE guidance alignment: NICE DSU TSD 18 recommends bootstrap CIs for MAIC to capture parameter uncertainty from the weight estimation step.
A list of class "maic_bootstrap" containing:
ci_maicBootstrap CI for standard MAIC ITC.
ci_stcBootstrap CI for STC ITC.
ci_drBootstrap CI for DR-MAIC ITC.
se_boot_drBootstrap SE for DR-MAIC.
boot_distributionData frame of bootstrap replicate estimates.
boot_plotggplot2 bootstrap distribution plot.
ci_typeCI type used.
RNumber of bootstrap replicates.
Efron B, Tibshirani RJ. (1993). An Introduction to the Bootstrap. Chapman and Hall/CRC.
Phillippo DM, et al. (2016). NICE DSU TSD 18.
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_plotdata(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
Runs a structured check of the key assumptions required for valid DR-MAIC inference, aligned with NICE DSU TSD 18 and Cochrane guidance.
check_assumptions( maic_weights, dr_maic_result = NULL, ess_threshold = 30, smd_threshold = 0.1 )check_assumptions( maic_weights, dr_maic_result = NULL, ess_threshold = 30, smd_threshold = 0.1 )
maic_weights |
A |
dr_maic_result |
Optional |
ess_threshold |
Minimum acceptable ESS% threshold. Default 30. |
smd_threshold |
Maximum acceptable |SMD| after weighting. Default 0.1. |
A data frame summarising assumption check results (invisibly). Prints a structured checklist to the console.
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.
compute_weights( ipd, target_moments, match_vars = NULL, match_var_types = NULL, optimizer = "BFGS", maxit = 10000L, verbose = TRUE )compute_weights( ipd, target_moments, match_vars = NULL, match_var_types = NULL, optimizer = "BFGS", maxit = 10000L, verbose = TRUE )
ipd |
A data frame of individual patient data from the index trial.
Must contain the covariates listed in |
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 |
match_vars |
Character vector of covariate names to match. If |
match_var_types |
Named character vector specifying the type of each
matching variable: |
optimizer |
Optimisation algorithm passed to |
maxit |
Maximum iterations for optimiser. Default 10000. |
verbose |
Logical; print convergence information. Default |
Statistical method:
Given individual patient data (IPD) from study A (index trial) with covariates
and target aggregate statistics
from study B (comparator), MAIC weights are defined by exponential tilting:
where solves the moment-matching equations:
Equivalently, minimises the convex objective:
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.
A list of class "maic_weights" containing:
weightsNumeric vector of normalized weights (sum to 1), length n.
weights_rawNumeric vector of unnormalized weights.
lambdaEstimated Lagrange multiplier vector .
essEffective sample size.
ess_pctESS as percentage of original n.
n_originalOriginal sample size.
convergenceConvergence code from stats::optim() (0 = success).
balance_beforeSMD before weighting (named vector).
balance_afterSMD after weighting (named vector).
match_varsCharacter vector of matched variables.
target_momentsTarget moments used for matching.
ipdOriginal IPD data frame (stored for downstream functions).
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.
# 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)# 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)
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.
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 )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 )
maic_weights |
An object of class |
outcome_var |
Character string; name of the outcome column in the IPD. |
outcome_type |
Character string; type of outcome:
|
time_var |
Character string; for |
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 |
comparator_se |
Numeric; standard error of |
effect_measure |
Character string; scale for the treatment effect:
|
outcome_model_formula |
A formula for the outcome regression model.
If |
outcome_model_family |
GLM family for outcome model. Default |
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. |
Statistical framework:
Let study A (index) provide IPD with outcome and covariates
, and study B (comparator) provide AgD with outcome summary
statistic . MAIC weights target the
covariate distribution of population B.
Three estimators are implemented:
(1) Standard MAIC (IPW):
(2) Standardised Treatment Comparison / g-computation (STC):
where from an outcome regression
model fitted on the IPD.
(3) Doubly Robust / Augmented estimator (DR-MAIC):
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 correctly balance
covariates (outcome model may be misspecified), or (ii) the outcome model
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:
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:
NICE DSU TSD 18 (Phillippo et al., 2016; 2020)
Cochrane Handbook Chapter 23 (Dias et al.)
ISPOR Task Force on Indirect Treatment Comparisons
Remiro-Azócar et al. (2022) Statistics in Medicine
A list of class "dr_maic" containing:
theta_maicMAIC (IPW) estimate in population B.
theta_stcSTC (g-computation) estimate in population B.
theta_drDoubly robust estimate in population B.
theta_comparatorComparator estimate (from AgD).
itc_maicIndirect treatment comparison (MAIC): A vs B effect.
itc_stcIndirect treatment comparison (STC): A vs B effect.
itc_drIndirect treatment comparison (DR): A vs B effect.
effect_measureEffect measure used.
outcome_modelFitted outcome model object.
residualsOutcome model residuals (Y_i - m_hat_i).
dr_correctionThe augmentation term (STC correction).
maic_weightsThe maic_weights object used.
nOriginal sample size.
essEffective sample size.
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.
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)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)
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.
maic_diagnostics( maic_weights, plot_type = "all", threshold = 0.1, title_suffix = NULL )maic_diagnostics( maic_weights, plot_type = "all", threshold = 0.1, title_suffix = NULL )
maic_weights |
An object of class |
plot_type |
Character vector specifying which plots to produce:
|
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. |
Standardised Mean Difference (SMD):
where 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 should be interpreted relative to the original n. ESS < 30% of n is a warning threshold per NICE guidance.
A list of class "maic_diagnostics" containing:
balance_tableData frame with SMD before/after weighting.
essEffective sample size.
ess_pctESS as % of original n.
n_balancedNumber of variables with |SMD| < threshold after weighting.
love_plotggplot2 Love plot object.
weight_plotggplot2 weight distribution plot.
all_balancedLogical; TRUE if all |SMD| < threshold after weighting.
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.
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_plotdata(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
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.
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" )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" )
dr_maic_result |
An object of class |
bootstrap_result |
Optional object of class |
sensitivity_result |
Optional object of class |
study_a_name |
Character; name of the index trial (Study A). Default |
study_b_name |
Character; name of the comparator trial (Study B). Default |
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; |
The report includes the following sections:
Study and population characteristics - IPD summary and AgD target moments
Weight estimation - ESS, convergence, moment-matching results
Covariate balance - SMD table (NICE TSD 18 format)
Treatment effect estimates - MAIC, STC, and DR-MAIC ITCs
Uncertainty - Bootstrap CIs (if provided)
Sensitivity analysis - E-values and trimming (if provided)
Assumptions and limitations - per NICE and Cochrane guidance
Methods description - citable methods paragraph
A list of class "nice_report" (invisibly) containing all
formatted sections. Also prints to console.
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.
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")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 aggregate data (AgD) representing published summary statistics from a hypothetical comparator trial in advanced NSCLC.
nsclc_agdnsclc_agd
A list with the following elements:
Mean age of trial population.
Proportion with ECOG 1/2.
Proportion with smoking history.
Proportion with PD-L1 >=50%.
Proportion with >= 1 prior line.
Observed response rate (proportion).
Standard error of response rate.
Sample size of comparator trial.
Median OS in months.
Log-HR (vs common reference arm, if available).
Simulated data. Not based on any real trial. For illustration only.
data(nsclc_agd) str(nsclc_agd)data(nsclc_agd) str(nsclc_agd)
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.
nsclc_ipdnsclc_ipd
A data frame with 200 rows and 8 variables:
Patient identifier.
Age in years (continuous).
ECOG performance status (binary: 0 = ECOG 0, 1 = ECOG 1/2).
Smoking history (binary: 1 = ever-smoker, 0 = never-smoker).
PD-L1 expression >=50% (binary: 1 = high, 0 = low/negative).
Number of prior lines of therapy (0 or 1).
Objective response (binary: 1 = responder, 0 = non-responder).
Overall survival time in months (censored).
Overall survival event indicator (1 = death, 0 = censored).
Simulated data. Not based on any real trial. For illustration only.
data(nsclc_ipd) head(nsclc_ipd) summary(nsclc_ipd)data(nsclc_ipd) head(nsclc_ipd) summary(nsclc_ipd)
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.
sensitivity_analysis( dr_maic_result, trim_percentiles = c(0.9, 0.95, 0.99), lovo = TRUE, outcome_model_specs = NULL, alpha = 0.05 )sensitivity_analysis( dr_maic_result, trim_percentiles = c(0.9, 0.95, 0.99), lovo = TRUE, outcome_model_specs = NULL, alpha = 0.05 )
dr_maic_result |
An object of class |
trim_percentiles |
Numeric vector of weight trimming percentiles (0-1).
Default |
lovo |
Logical; run leave-one-variable-out analysis. Default |
outcome_model_specs |
Optional list of alternative outcome model formulas for specification sensitivity. |
alpha |
Significance level. Default 0.05. |
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:
For OR, the converted RR = 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):
Transportability: the matched population is exchangeable with target B
No unmeasured effect modifiers: E-value addresses this
Positivity: overlap between IPD and target assessed via weight distribution
SUTVA: assumed throughout
A list of class "maic_sensitivity" containing:
evalueE-value for the main DR-MAIC estimate.
evalue_ciE-value for the confidence interval boundary.
trim_resultsData frame of trimming sensitivity results.
lovo_resultsData frame of leave-one-variable-out results.
evalue_plotggplot2 E-value plot.
trim_plotggplot2 trimming sensitivity plot.
lovo_plotggplot2 LOVO plot.
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.
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_plotdata(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