Teach network meta-analysis (NMA) for comparing multiple treatments simultaneously. Use when users need to compare more than two interventions, understand indirect comparisons, or create network plots and league tables.
This skill teaches network meta-analysis (NMA), also known as mixed treatment comparison (MTC), enabling comparison of multiple interventions simultaneously even when direct head-to-head trials don't exist.
Network meta-analysis extends traditional pairwise meta-analysis by combining direct and indirect evidence to compare multiple treatments. It's essential for clinical decision-making when choosing among several treatment options.
Activate this skill when users:
Definition: A statistical method that combines direct and indirect evidence to compare multiple treatments within a single analysis.
Key Teaching Points:
Socratic Questions:
Critical Concept: For indirect comparisons to be valid, studies must be similar enough that patients could have been enrolled in any of them.
Factors to Assess:
Teaching Framework:
Transitivity Check:
┌─────────────────────────────────────────┐
│ Could patients in A vs C trials have │
│ been enrolled in B vs C trials? │
│ │
│ YES → Transitivity likely holds │
│ NO → Indirect comparison may be │
│ biased (effect modification) │
└─────────────────────────────────────────┘
Network Plot Elements:
Types of Networks:
| Geometry | Description | Implications |
|---|---|---|
| Star | All comparisons to one reference | No consistency checks possible |
| Connected | Multiple paths between treatments | Can assess consistency |
| Disconnected | Separate subnetworks | Cannot compare all treatments |
Frequentist Approach (netmeta package):
library(netmeta)
# Create network meta-analysis
nma <- netmeta(
TE = effect_size,
seTE = standard_error,
treat1 = treatment1,
treat2 = treatment2,
studlab = study_id,
data = mydata,
sm = "OR", # Effect measure
random = TRUE, # Random effects
reference.group = "placebo"
)
# View results
summary(nma)
forest(nma)
netgraph(nma)
Bayesian Approach (gemtc/BUGSnet):
library(gemtc)
# Define network
network <- mtc.network(data.ab = arm_level_data)
# Run model
model <- mtc.model(network, type = "consistency")
results <- mtc.run(model, n.adapt = 5000, n.iter = 20000)
# Results
summary(results)
forest(relative.effect(results, t1 = "placebo"))
What is Inconsistency?
Methods to Assess:
R Code for Node-Splitting:
# Node-splitting analysis
netsplit(nma)
# Interpretation:
# p < 0.05 suggests inconsistency for that comparison
SUCRA (Surface Under Cumulative Ranking):
P-scores (frequentist equivalent):
# Get rankings
netrank(nma, small.values = "good")
# SUCRA-like plot
plot(netrank(nma))
Caution: Rankings have high uncertainty - always report with confidence intervals!
League Table:
# Create league table
netleague(nma, digits = 2)
Forest Plot of All Comparisons:
# Forest plot vs reference
forest(nma, reference.group = "placebo")
Network Graph:
# Network visualization
netgraph(nma,
plastic = FALSE,
thickness = "number.of.studies",
multiarm = TRUE)
Basic: "What is the difference between direct and indirect evidence?"
Intermediate: "What is the transitivity assumption and why is it important?"
Advanced: "How would you interpret a significant node-splitting test?"
"NMA always gives better estimates than pairwise MA"
"Treatment rankings are definitive"
"More connections = better network"
User: "I have 15 trials comparing 5 antidepressants. Some are head-to-head, some vs placebo. How do I analyze this?"
Response Framework:
Glass (the teaching agent) MUST adapt this content to the learner:
Example Adaptations:
meta-analysis-fundamentals - Basic concepts prerequisiteheterogeneity-analysis - Understanding between-study variationbayesian-meta-analysis - Alternative modeling approachgrade-assessment - Rating certainty of NMA evidence