Anchored Indirect Treatment Comparison (Bucher ITC)
A transparent comparison of two treatments never randomized head-to-head, formed by differencing their randomized relative effects against the same common comparator on one compatible effect scale. It preserves the within-trial randomization but depends on the trials being sufficiently similar in their effect-modifier distributions and estimands.
On this page
If two trials each compare a different treatment with the same older treatment, an anchored indirect comparison can estimate how the two newer treatments compare. It subtracts the two trial effects in a consistent direction. The arithmetic is simple; the hard part is deciding whether the trials are similar enough that the shared comparator is a fair bridge.
An anchored indirect treatment comparison (ITC) answers a head-to-head evidence gap with two randomized comparisons that share a comparator. Suppose one trial estimates treatment A versus B, another estimates C versus B, and the decision needs A versus C. On a consistent log effect scale, the Bucher estimate is
`theta_AC = theta_AB - theta_CB`.
Here each theta is oriented as the first named treatment relative to the second. For example, theta_AB is log(OR for A versus B), and theta_CB is log(OR for C versus B). If the two trial estimates are independent, `SE(theta_AC) = sqrt(SE(theta_AB)^2 + SE(theta_CB)^2)`; a 95% confidence interval is `theta_AC ± 1.96 × SE(theta_AC)`, then exponentiated for an odds ratio, risk ratio, or hazard ratio.
The shared anchor B matters. Each input contrast comes from randomized arms within its own trial, so baseline prognostic factors that do not modify the relative effect are protected by randomization. That protection does not extend across trials to effect modifiers: if prior treatment, disease severity, dose, outcome timing, or assessment rules alter a relative effect and differ between the A-versus-B and C-versus-B trials, the chained A-versus-C estimate can be biased. This cross-trial similarity (often called transitivity) is a clinical and design judgement, not a p-value test.
Pros, cons, and trade-offs
The calculation is transparent and preserves randomized within-trial contrasts. Its main cost is dependence on cross-trial similarity: the common comparator does not repair incompatible estimands, unmeasured effect modification, or selective evidence inclusion. A sparse network also limits diagnostics and precision.
When not to use
Do not use this method to bridge a disconnected evidence base, to compare absolute response rates across unrelated single arms, or to reconcile incompatible estimands. Pre-specify and tabulate the PICO and estimand for every contributing trial: eligible population, intervention dose/regimen, common comparator definition, endpoint definition, analysis population, follow-up horizon, intercurrent-event strategy, and effect measure. Convert estimates only when a valid common scale and variance are available. Odds ratios and hazard ratios are non-collapsible, so an adjusted conditional estimate from one trial and an unadjusted marginal estimate from another are not automatically commensurate.
In payer or AMCP-format dossier work, the calculation is an evidence-synthesis input rather than proof of comparative effectiveness. Provide the systematic-review flow, network diagram, directed contrast table, similarity assessment for known effect modifiers, source risk-of-bias appraisal, and sensitivity analyses. A loop-free two-study ITC cannot test consistency because it has no independent direct-versus-indirect pathway. The ISPOR ITC Good Practices and its ISPOR-AMCP-NPC questionnaire provide a practical appraisal structure.
Decision diagram
%%{init: {'themeVariables': {'fontSize': '16px'}}}%%
flowchart TD
INPUT["Two randomized contrasts<br/>A versus B: θ_AB<br/>C versus B: θ_CB"]
INPUT --> SIM["Check compatibility<br/>PICO, estimand, and<br/>effect modifiers"]
SIM -->|If defensible| SUB["Indirect A versus C<br/>θ_AC = θ_AB − θ_CB"]
SUB --> SE["For independent estimates<br/>SE_AC = √(SE_AB² + SE_CB²)"]
SE --> OUT["Report A versus C + CI<br/>Explain similarity limits"]Worked example
Scenario
A reimbursement review needs the odds ratio for an adverse event on therapy A versus therapy C. No A-versus-C trial exists. A systematic review identifies one A-versus-B trial and one C-versus-B trial with the same adverse-event definition and 24-week horizon. Effects are reported as log odds ratios for active therapy versus B. Clinical review still must judge whether prior-therapy exposure and disease severity, both plausible effect modifiers, are comparable across the two trials.
Dataset
Illustrative randomized trial estimates on a common, directed log-odds-ratio scale. Negative values favor the first named therapy for an undesirable binary outcome.
| comparison | effect_measure | log_or | standard_error |
|---|---|---|---|
| A versus B | log odds ratio for A/B | -0.405465 | 0.12 |
| C versus B | log odds ratio for C/B | -0.105361 | 0.14 |
Steps
- Keep The Orientation Explicit
both input effects are first treatment versus B.
- Calculate The A-Versus-C Log Odds Ratio As Logor(A/B) Minus Logor(C/B)
-0.405465 - (-0.105361) = -0.300104.
With independent trial estimates, calculate SE = sqrt(0.12 squared + 0.14 squared) = 0.184391.
- Form The 95% Interval On The Log Scale
-0.300104 ± 1.96 × 0.184391, giving (-0.661510, 0.061302).
- Exponentiate
OR(A/C) = 0.7407 with 95% CI (0.5161, 1.0632). This illustrative interval includes 1; it does not establish a difference at the stated 95% confidence level.
Before using the estimate, document whether the trials are compatible on the decision PICO and distributions of known effect modifiers. Arithmetic cannot test that assumption.
Result
The illustrative Bucher estimate is OR(A versus C) = 0.74 (95% CI 0.52 to 1.06). It suggests lower odds of the undesirable outcome for A than C, but the interval includes no difference and the estimate remains conditional on cross-trial similarity.
Trade-offs
Code example
Execution not verified · inspect inputs and dependencies before use
Self-contained illustrative Bucher arithmetic for two independent randomized trial estimates. `log_or_ab` is A versus B and `log_or_cb` is C versus B. The code reports A versus C, so reversing the requested contrast requires reversing the sign before exponentiation.
import math
# Synthetic illustrative trial effects, both oriented as first therapy versus B.
log_or_ab, se_ab = -0.405465, 0.12 # A versus B
log_or_cb, se_cb = -0.105361, 0.14 # C versus B
log_or_ac = log_or_ab - log_or_cb
se_ac = math.sqrt(se_ab**2 + se_cb**2) # independent trial estimates
ci_log = (log_or_ac - 1.96 * se_ac, log_or_ac + 1.96 * se_ac)
or_ac = math.exp(log_or_ac)
ci_or = tuple(math.exp(x) for x in ci_log)
print(f"log OR (A vs C): {log_or_ac:.6f}")
print(f"SE: {se_ac:.6f}")
print(f"OR (A vs C): {or_ac:.4f}; 95% CI: ({ci_or[0]:.4f}, {ci_or[1]:.4f})")
print("Interpretation: the illustrative 95% CI includes 1; assess trial similarity separately.")Execution not verified · inspect inputs and dependencies before use
Self-contained base-R implementation of the same independent-trial Bucher calculation and directed A-versus-C contrast.
# Synthetic illustrative trial effects, both oriented as first therapy versus B.
log_or_ab <- -0.405465; se_ab <- 0.12 # A versus B
log_or_cb <- -0.105361; se_cb <- 0.14 # C versus B
log_or_ac <- log_or_ab - log_or_cb
se_ac <- sqrt(se_ab^2 + se_cb^2) # independent trial estimates
ci_log <- log_or_ac + c(-1, 1) * 1.96 * se_ac
or_ac <- exp(log_or_ac)
ci_or <- exp(ci_log)
cat(sprintf("log OR (A vs C): %.6f\n", log_or_ac))
cat(sprintf("SE: %.6f\n", se_ac))
cat(sprintf("OR (A vs C): %.4f; 95%% CI: (%.4f, %.4f)\n", or_ac, ci_or[1], ci_or[2]))
cat("Interpretation: the illustrative 95% CI includes 1; assess trial similarity separately.\n")Execution not verified · inspect inputs and dependencies before use
Source-reviewed SAS DATA-step arithmetic for the same independent-trial Bucher calculation. This is an illustrative template: the user must verify that both extracted estimates use the same endpoint, horizon, estimand, effect scale, and directed orientation before running it.
data bucher_itc;
length comparison $12;
log_or_ab = -0.405465; se_ab = 0.12; /* A versus B */
log_or_cb = -0.105361; se_cb = 0.14; /* C versus B */
log_or_ac = log_or_ab - log_or_cb; /* A versus C */
se_ac = sqrt(se_ab**2 + se_cb**2); /* independent trial estimates */
lower_log = log_or_ac - 1.96 * se_ac;
upper_log = log_or_ac + 1.96 * se_ac;
or_ac = exp(log_or_ac);
lower_or = exp(lower_log);
upper_or = exp(upper_log);
comparison = 'A versus C';
run;
proc print data=bucher_itc noobs;
var comparison log_or_ac se_ac or_ac lower_or upper_or;
format log_or_ac se_ac 8.6 or_ac lower_or upper_or 8.4;
run;Citations
- [1]Bucher HC, Guyatt GH, Griffith LE, Walter SD. The results of direct and indirect treatment comparisons in meta-analysis of randomized controlled trials. Journal of Clinical Epidemiology. 1997;50(6):683-691.
- [2]Jansen JP, Fleurence R, Devine B, et al. Interpreting indirect treatment comparisons and network meta-analysis for health-care decision making: report of the ISPOR Task Force on Indirect Treatment Comparisons Good Research Practices: Part 1. Value in Health. 2011;14(4):417-428.
- [3]Hoaglin DC, Hawkins N, Jansen JP, et al. Conducting indirect-treatment-comparison and network-meta-analysis studies: report of the ISPOR Task Force on Indirect Treatment Comparisons Good Research Practices: Part 2. Value in Health. 2011;14(4):429-437.
- [4]Jansen JP, Trikalinos T, Cappelleri JC, et al. Indirect treatment comparison/network meta-analysis study questionnaire to assess relevance and credibility to inform health care decision making: an ISPOR-AMCP-NPC Good Practice Task Force report. Value in Health. 2014;17(2):157-173.