| name | maic-methodology |
| description | Deep methodology knowledge for MAIC including assumptions, weight diagnostics, ESS interpretation, and anchored vs unanchored decisions. Use when conducting or reviewing MAIC analyses. |
MAIC Methodology
Comprehensive methodological guidance for conducting rigorous Matching-Adjusted Indirect Comparisons following NICE DSU TSD 18.
When to Use This Skill
- Deciding whether to use MAIC vs other ITC methods
- Selecting covariates for matching
- Interpreting weight diagnostics and ESS
- Choosing between anchored and unanchored MAIC
- Reviewing MAIC code or results
Fundamental Assumptions
Key Assumption: Conditional Constancy of Relative Effects
For Anchored MAIC:
- The relative treatment effect (vs common comparator) is the same across populations AFTER adjusting for effect modifiers
- This is untestable - relies on clinical judgment
- Requires all effect modifiers to be included in matching
No Unmeasured Effect Modifiers
Critical: MAIC assumes that adjusting for measured covariates
removes all population differences that modify treatment effects.
If there are unmeasured effect modifiers:
├── Anchored MAIC: Biased indirect comparison
└── Unanchored MAIC: Even more biased
There is NO WAY to test this assumption with available data.
Unanchored MAIC: Additional Assumptions
- All prognostic factors (not just effect modifiers) must be adjusted
- Absolute treatment effects are transportable across populations
- Much stronger, often implausible assumptions
- Should be avoided if anchored is possible
When to Use MAIC
MAIC is Appropriate When:
- IPD available for one trial (index trial)
- Only AgD available for comparator trial
- Important population differences exist between trials
- Effect modifiers are known and measured
- Sufficient overlap in covariate distributions
MAIC May Not Be Best When:
- Populations are very similar → Standard ITC may suffice
- Little covariate overlap → ESS will be very low
- Effect modifiers unknown → Cannot ensure adjustment
- Connected network exists → Consider NMA first
Covariate Selection
Selection Criteria
Include covariates that are:
├── Effect modifiers (interact with treatment effect)
│ - Based on clinical evidence
│ - Biological plausibility
│ - Subgroup analyses from trials
├── Available in both trials
│ - IPD: Individual-level data
│ - AgD: Published summary statistics
└── Different between trial populations
- Check if actually imbalanced
- No need to match on similar values
What NOT to Include
- Variables balanced between populations (wasteful)
- Pure prognostic factors in anchored MAIC (cancel out)
- Variables not reported in AgD (impossible to match)
- Too many variables (ESS concerns)
Practical Strategy
- Start with clinical knowledge - Known effect modifiers
- Check availability - What's reported in AgD?
- Assess imbalance - Compare IPD means to AgD targets
- Start conservative - Fewer variables, check ESS
- Iterate - Add variables if ESS remains acceptable
Effective Sample Size (ESS)
Definition
ESS = (Σ weights)² / Σ(weights²)
Represents the "equivalent" unweighted sample size
that would give same precision as weighted analysis.
Interpretation Guidelines
| ESS (% of original) | Interpretation | Recommendation |
|---|---|---|
| >70% | Good | Proceed with confidence |
| 50-70% | Acceptable | Proceed with caution |
| 30-50% | Concerning | Reconsider covariates |
| <30% | Poor | Results likely unreliable |
Causes of Low ESS
- Many covariates included
- Large population differences
- Little overlap in distributions
- Including unnecessary covariates
Improving ESS
- Remove covariates balanced between populations
- Remove covariates unlikely to be effect modifiers
- Consider whether MAIC is feasible
- Accept higher uncertainty in exchange for validity
Weight Diagnostics
Essential Checks
1. ESS Calculation
check_weights(weights_obj)
# Look at ESS and ESS percentage
2. Weight Distribution
# Check for extreme weights
summary(weights_obj$data$weights)
max(weights) / sum(weights) # Single observation influence
3. Covariate Balance
# Before vs After weighting
# Should see AgD targets achieved after weighting
Red Flags
- Single observation has >5% of total weight
- ESS < 30% of original
- Covariates not balanced after weighting
- Convergence issues in weight estimation
Anchored vs Unanchored
Anchored MAIC (Preferred)
Scenario:
- Index trial: Treatment A vs Common comparator (C)
- External trial: Treatment B vs Common comparator (C)
- Target: A vs B
Methodology:
- Weight IPD to match external population
- Estimate A vs C in weighted IPD
- Extract B vs C from external AgD
- Bucher method: (A vs C) - (B vs C) = A vs B
Advantages:
- Only need to adjust for effect modifiers
- Prognostic factors cancel out (appear in both arms)
- More robust to unmeasured confounding
Unanchored MAIC (Use with Caution)
Scenario:
- No common comparator
- Single-arm external study
- Target: Direct comparison A vs B
Methodology:
- Weight IPD to match external population
- Estimate absolute outcome in weighted IPD (treatment A)
- Compare directly to external outcome (treatment B)
Critical Limitations:
- Must adjust for ALL prognostic factors
- Assumes absolute effects transportable
- Highly susceptible to unmeasured confounding
- Should be sensitivity analysis only
Decision Framework
Is there a common comparator in both trials?
├── Yes → ANCHORED MAIC (strongly preferred)
│ - Adjust for effect modifiers
│ - Bucher method for indirect comparison
│
└── No → Consider alternatives first
├── Can NMA with other studies provide estimate?
├── Can we use ML-NMR with partial network?
└── Last resort: UNANCHORED MAIC
- Adjust for ALL prognostic factors
- Report with strong caveats
- Sensitivity analysis
MAIC vs STC
When to Prefer MAIC
- Concerned about outcome model misspecification
- Covariate-outcome relationship uncertain
- Want method-of-moments balancing
When to Prefer STC
- Outcome model well-understood
- Continuous covariates (natural handling)
- Want to use regression framework
- Higher precision if model correct
Recommendation
- Run both as sensitivity analysis
- If results agree, more confidence
- If results differ, investigate why
Reporting Requirements
Methods
- Justification for MAIC over other methods
- Covariate selection rationale
- Effect modifier justification
- Anchored vs unanchored justification
- Weight estimation method
- Confidence interval method (bootstrap type)
Results
- ESS and percentage of original
- Weight distribution summary
- Covariate balance table (before/after)
- Treatment effect with 95% CI
- Comparison to unadjusted estimate
- Sensitivity analyses
Common Pitfalls
1. Including Too Many Covariates
- Reduces ESS unnecessarily
- May include non-effect modifiers
- Start minimal, justify additions
2. Ignoring Low ESS
- Proceeding when ESS < 30%
- Not reporting ESS prominently
- Results may be unreliable
3. Using Unanchored When Anchored Possible
- Much stronger assumptions
- Higher bias risk
- Always prefer anchored
4. Not Checking Covariate Balance
- Weights may not achieve balance
- Must verify targets achieved
5. Missing Sensitivity Analyses
- Different covariate sets
- Comparison with STC
- Robustness to assumptions
Quick Reference Code
library(maicplus)
# 1. Prepare targets from AgD
agd_targets <- c(
AGE = 62.5,
MALE = 0.55,
ECOG1 = 0.35
)
# 2. Center IPD
ipd_centered <- center_ipd(ipd, agd_targets)
# 3. Estimate weights
weights <- estimate_weights(
data = ipd_centered,
centered_colnames = c("AGE_centered", "MALE_centered", "ECOG1_centered"),
n_boot_iteration = 1000,
set_seed_boot = 12345
)
# 4. Check weights (CRITICAL)
check_weights(weights)
# - ESS should be >50% of original
# - No extreme weights
# - Balance achieved
# 5. Run anchored MAIC
result <- maic_anchored(
weights_object = weights,
ipd = ipd,
pseudo_ipd = pseudo_ipd,
trt_ipd = "TreatmentA",
trt_agd = "TreatmentB",
trt_common = "Placebo",
endpoint_type = "binary",
eff_measure = "OR",
boot_ci_type = "perc"
)
# 6. Report
result$inferential$summary
Resources
- NICE DSU TSD 18: Population-adjusted indirect comparisons
- Signorovitch et al. (2010): Original MAIC methodology
- Phillippo et al. (2016): Methods review
- maicplus package documentation