Network meta-analysis — indirect comparison and treatment ranking
How a network meta-analysis estimates a head-to-head comparison nobody ever randomised, which cell of a league table has no trial behind it at all, why the inconsistency test netmeta prints by default is not the model you fitted, and why a ranking has to be read next to an effect size.
A table with two drugs nobody ever compared
Clinical questions often look like this: there are ten drugs for the condition, and no trial has ever put the first one against the seventh. A network meta-analysis (NMA) exists for exactly that situation. It joins every trial into one graph — nodes are treatments, edges are comparisons somebody actually randomised — and then uses the shared comparators to work out the pairs that have no edge between them.
The arithmetic behind that is a subtraction. Given trials of A against B and of C against B,
The identity always holds arithmetically. For it to be a valid comparison of A with C, two assumptions have to hold as well:
- Transitivity: the factors that modify treatment effect (severity, age, background therapy, follow-up, outcome definition) are distributed similarly enough across the A-versus-B trials and the C-versus-B trials that the shared comparator B is interchangeable between them. This is a clinical and methodological judgement, not a test.
- Consistency: the direct and indirect evidence for the same pair are estimating the same quantity. It is the only statistically visible face of transitivity — and it is visible only on pairs that have both a direct and an indirect route.
This page uses metadat::dat.senn2013: 26 randomised trials of glucose-lowering drugs, 10 treatments including placebo, 6646 participants in total. The outcome is change in HbA1c in percentage points, and lower is better.
The raw data are arm-based long format, one row per trial arm, 53 rows in all. netmeta needs contrast-based input, so the first step is always pairwise(). That produces 28 contrasts: 25 two-arm trials contribute one each, and the single three-arm trial contributes choose(3, 2).
The evidence network: which pairs were actually tested
figures/scripts/B7-05-network-meta.R| Treatment | Trials | Participants |
|---|---|---|
| acarbose | 3 | 108 |
| benfluorex | 2 | 189 |
| metformin | 8 | 1470 |
| miglitol | 3 | 208 |
| pioglitazone | 3 | 546 |
| placebo | 19 | 2062 |
| rosiglitazone | 10 | 1312 |
| sitagliptin | 1 | 106 |
| sulfonylurea | 3 | 513 |
| vildagliptin | 1 | 132 |
Three numbers to establish first:
- The network is connected.
netconnection()reports 1 subnetwork. More than one, and there is no such thing as putting all these treatments on a single table; they have to be analysed separately. - There are 15 designs, meaning 15 distinct combinations of arms. One of them,
placebo:acarbose:metformin, is the only three-arm design. - Only 15 pairs carry direct evidence. 10 treatments give 45 pairwise comparisons, so 30 pairs have no head-to-head trial whatsoever.
The third point is the most important thing in the network plot, and it is the one thing the plot does not draw: an absent edge is invisible. Reading a network plot means actively counting which pairs are empty, not admiring the ones that are joined.
After pooling: the league table and its heterogeneity
The model is a random-effects netmeta (generalised least squares) with mean difference as the summary measure, placebo as the reference group, and the model told that smaller is better (small.values = "desirable").
Heterogeneity: τ² = 0.109, τ = 0.330, I² = 81.4% (72.0% to 87.7%). The total Q is 97.0 (df = 18, p < 0.001), of which the within-design part is Q = 74.4 (df = 11, p < 0.001).
An I² tells you what proportion of the dispersion is not sampling error. It does not tell you where that dispersion lives. The design-level decomposition does. The table below lists only the 5 designs with more than one trial, which are the only ones with a within-design Q to compute:
| Design | Q | df | p |
|---|---|---|---|
| metformin:rosiglitazone | 0.2 | 1 | 0.665 |
| placebo:benfluorex | 4.4 | 1 | 0.036 |
| placebo:metformin | 42.2 | 2 | < 0.001 |
| placebo:miglitol | 6.4 | 2 | 0.040 |
| placebo:rosiglitazone | 21.3 | 5 | < 0.001 |
57% of the within-design heterogeneity comes from a single design, placebo:metformin (Q = 42.2, df = 2), and adding placebo:rosiglitazone accounts for 85% of it. That is far more useful than “I² is 81%”: it points at which trials’ entry criteria to go and read, rather than telling you to distrust the whole network. What each of these statistics actually measures is in Heterogeneity — I², τ² and prediction intervals.
The league table below is an excerpt, and it does not mark the empty cells
The full league table has 45 rows, and printing all of them just makes readers scroll past. What follows is an excerpt: the 9 comparisons against placebo plus the 3 comparisons among the top three, 12 rows in all. A negative value means the first treatment lowers HbA1c more than the second.
| Comparison | Network MD (95% CI) | Direct trials | Evidence |
|---|---|---|---|
| acarbose vs placebo | -0.84 (-1.32 to -0.36) | 2 | direct + indirect |
| benfluorex vs placebo | -0.73 (-1.29 to -0.17) | 2 | direct + indirect |
| metformin vs placebo | -1.13 (-1.43 to -0.82) | 4 | direct + indirect |
| miglitol vs placebo | -0.95 (-1.40 to -0.50) | 3 | direct + indirect |
| pioglitazone vs placebo | -1.13 (-1.56 to -0.70) | 1 | direct + indirect |
| rosiglitazone vs placebo | -1.23 (-1.48 to -0.98) | 6 | direct + indirect |
| sitagliptin vs placebo | -0.57 (-1.26 to 0.12) | 1 | direct + indirect |
| sulfonylurea vs placebo | -0.42 (-0.89 to 0.06) | 0 | indirect only |
| vildagliptin vs placebo | -0.70 (-1.39 to -0.01) | 1 | direct + indirect |
| metformin vs pioglitazone | 0.00 (-0.44 to 0.44) | 1 | direct + indirect |
| metformin vs rosiglitazone | 0.11 (-0.22 to 0.43) | 2 | direct + indirect |
| pioglitazone vs rosiglitazone | 0.10 (-0.33 to 0.54) | 1 | direct + indirect |
Do direct and indirect agree? Net-splitting
Consistency is the one thing this method can check about itself. netsplit() — also called SIDE, separating indirect from direct evidence — does three things for every pair that has direct evidence: estimate it from the direct trials alone, estimate it from the indirect routes alone, and test the difference between the two.
figures/scripts/B7-05-network-meta.R| Comparison | Direct trials | Proportion direct | Direct MD | Indirect MD | p for difference |
|---|---|---|---|---|---|
| acarbose:metformin | 1 | 28% | 0.20 | 0.32 | 0.84 |
| acarbose:placebo | 2 | 65% | -0.86 | -0.81 | 0.93 |
| acarbose:sulfonylurea | 1 | 53% | -0.40 | -0.45 | 0.92 |
| benfluorex:placebo | 2 | 100% | -0.73 | no indirect route | not applicable |
| metformin:pioglitazone | 1 | 44% | -0.16 | 0.13 | 0.52 |
| metformin:placebo | 4 | 56% | -1.18 | -1.06 | 0.69 |
| metformin:rosiglitazone | 2 | 34% | 0.07 | 0.12 | 0.88 |
| metformin:sulfonylurea | 1 | 45% | -0.37 | -0.99 | 0.19 |
| miglitol:placebo | 3 | 100% | -0.95 | no indirect route | not applicable |
| pioglitazone:placebo | 1 | 39% | -1.30 | -1.02 | 0.54 |
| pioglitazone:rosiglitazone | 1 | 35% | 0.10 | 0.11 | 0.99 |
| rosiglitazone:placebo | 6 | 76% | -1.18 | -1.40 | 0.46 |
| sitagliptin:placebo | 1 | 100% | -0.57 | no indirect route | not applicable |
| vildagliptin:placebo | 1 | 100% | -0.70 | no indirect route | not applicable |
| rosiglitazone:sulfonylurea | 1 | 43% | -1.20 | -0.52 | 0.16 |
The number of pairs whose difference reaches statistical significance is 0, and the smallest p value is 0.156. That is: on this data, no inconsistency between direct and indirect evidence was detected.
Read that sentence literally. SIDE tests have very little power — most pairs here rest on one or two direct trials, both intervals are wide, and declaring them different would take an enormous gap. Not detecting inconsistency is not the same as consistency holding, in exactly the way a non-significant Q test is not evidence of homogeneity.
A pair with no inconsistency test did not pass one
The indirect column is empty for the last 4 rows above: benfluorex:placebo, miglitol:placebo, sitagliptin:placebo, vildagliptin:placebo.
The reason is that these four drugs hang off the network through placebo alone — they are leaves. There is one route from benfluorex to placebo, namely those direct trials themselves; with no second route, there is nothing to compare the direct estimate against. netsplit() returns NA for them, which is not a failed test but no test at all.
This is the mirror image of the sulfonylurea case in the previous section: one is an estimate with no direct trial, the other a direct trial with no indirect route. Both print as an ordinary cell in the league table, and the evidence behind them is of entirely different kinds.
What it means in practice is that the network point estimate for these four is essentially their own pairwise meta-analysis — the table in the next section shows the largest shift is only 0.046 percentage points. Their point estimates borrow nothing from the network and undergo no consistency check.
What does change is the interval: the network’s τ² is estimated across all designs rather than from those one or two trials, so the interval can get wider (sitagliptin, vildagliptin) or narrower (benfluorex, miglitol). Listing them in the same ranking table as the estimate for rosiglitazone, which several routes corroborate, puts two different grades of evidence side by side.
What borrowing indirect evidence costs
Network estimates are usually described as borrowing strength and therefore being more precise. On this data the comparison can be made directly: for each drug, put the pairwise meta-analysis of its placebo-controlled trials alone next to the estimate from the whole network.
| Drug | Direct trials | Direct evidence only, MD (95% CI) | Network MD (95% CI) | CI width (direct to network) |
|---|---|---|---|---|
| acarbose | 2 | -0.82 (-1.09 to -0.55) | -0.84 (-1.32 to -0.36) | 0.54 to 0.96 |
| benfluorex | 2 | -0.69 (-1.44 to 0.07) | -0.73 (-1.29 to -0.17) | 1.51 to 1.12 |
| metformin | 4 | -1.12 (-1.84 to -0.40) | -1.13 (-1.43 to -0.82) | 1.44 to 0.60 |
| miglitol | 3 | -0.95 (-1.41 to -0.49) | -0.95 (-1.40 to -0.50) | 0.92 to 0.91 |
| pioglitazone | 1 | -1.30 (-1.55 to -1.05) | -1.13 (-1.56 to -0.70) | 0.50 to 0.86 |
| rosiglitazone | 6 | -1.18 (-1.40 to -0.96) | -1.23 (-1.48 to -0.98) | 0.44 to 0.50 |
| sitagliptin | 1 | -0.57 (-0.82 to -0.32) | -0.57 (-1.26 to 0.12) | 0.51 to 1.39 |
| sulfonylurea | 0 | no direct trial | -0.42 (-0.89 to 0.06) | — to 0.94 |
| vildagliptin | 1 | -0.70 (-0.95 to -0.45) | -0.70 (-1.39 to -0.01) | 0.50 to 1.39 |
Most rows shift very little, but pioglitazone runs against the intuition. Its direct evidence is 1 trial, giving MD -1.30 (-1.55 to -1.05); the network estimate is -1.13 (-1.56 to -0.70). The indirect evidence pulls the point estimate 0.17 percentage points towards the null and widens the interval (0.50 to 0.86).
An interval can widen for two reasons. An indirect route chains several contrasts together, and the uncertainty of each link accumulates; and the network’s τ² is estimated across all designs, so that whole parcel of heterogeneity is added to every cell — including a cell built on one trial that looked clean on its own. Borrowing strength does not guarantee precision. It guarantees borrowing the whole network’s uncertainty as well.
The other direction: the direct column for sulfonylurea is empty, so its network estimate exists out of nothing — a pairwise meta-analysis simply cannot produce that number. This is where the real value of an NMA lies, at the cost of that entire cell resting on transitivity.
The ranking comes last, and never without the effect size
Only now does ranking arrive. netmeta gives a P-score, the frequentist counterpart of the SUCRA (surface under the cumulative ranking curve) that Bayesian NMAs usually report; the two are equivalent by definition and normally close in value. It means the extent to which a treatment outperforms the others on average, and it runs between 0 and 1.
figures/scripts/B7-05-network-meta.R| Rank | Treatment | P-score | MD vs placebo (95% CI) | CI width | Trials | Participants |
|---|---|---|---|---|---|---|
| 1 | rosiglitazone | 0.893 | -1.23 (-1.48 to -0.98) | 0.50 | 10 | 1312 |
| 2 | metformin | 0.782 | -1.13 (-1.43 to -0.82) | 0.60 | 8 | 1470 |
| 3 | pioglitazone | 0.775 | -1.13 (-1.56 to -0.70) | 0.86 | 3 | 546 |
| 4 | miglitol | 0.614 | -0.95 (-1.40 to -0.50) | 0.91 | 3 | 208 |
| 5 | acarbose | 0.520 | -0.84 (-1.32 to -0.36) | 0.96 | 3 | 108 |
| 6 | benfluorex | 0.436 | -0.73 (-1.29 to -0.17) | 1.12 | 2 | 189 |
| 7 | vildagliptin | 0.423 | -0.70 (-1.39 to -0.01) | 1.39 | 1 | 132 |
| 8 | sitagliptin | 0.333 | -0.57 (-1.26 to 0.12) | 1.39 | 1 | 106 |
| 9 | sulfonylurea | 0.210 | -0.42 (-0.89 to 0.06) | 0.94 | 3 | 513 |
| 10 | placebo | 0.014 | (reference) | — | 19 | 2062 |
No difference was detected between first and second place
The P-score for rosiglitazone is 0.893 and for metformin it is 0.782. Presented as probabilities, that gap looks like something. In effect-size terms it is MD -1.23 against -1.13, a difference of 0.11 percentage points of HbA1c.
And the head-to-head network estimate for those two is already in the league table: metformin:rosiglitazone is 0.11 (-0.22 to 0.43). The interval includes zero, so the network detected no difference between first and second place. The fact that one is printed on the first row and the other on the second carries no statistical evidence in itself.
Second against third is starker. metformin has an MD of -1.127 and pioglitazone -1.129, a difference of 0.002 — and the point estimate of third place is the more negative of the two, that is, better on effect size. It ranks lower because the P-score also accounts for the uncertainty in its comparisons with every other treatment, and pioglitazone has the wider interval (0.86 against 0.60).
Three limitations of P-score and SUCRA
- It contains no effect size. A P-score is only the extent of outperforming the others. First and second place here differ by 0.112 in P-score, which is 0.11 percentage points of HbA1c; a P-score gap of the same size on other data could correspond to an entirely different clinical difference. Whether a gap is worth switching drugs for is not a question a ranking can answer.
- First place may be winning by very little. Already seen above: the head-to-head interval for first and second place includes zero.
- The uncertainty in the ranking itself is far larger than it looks. A P-score is a point estimate, and papers rarely give an interval for it. What actually addresses this is the distribution of each treatment across the ranks (a rankogram), or a sensitivity analysis showing whether dropping one or two trials flips the order.
Reading a network meta-analysis
- Where the network plot has no edges. Find out first whether the pair you care about has any direct trial. If not, that cell rests entirely on transitivity.
- Whether the network is connected. Splitting into two subnetworks and presenting one combined table anyway is among the worst errors available.
- Where the transitivity argument is. There should be a passage of text, or an appendix table, comparing the distribution of effect modifiers across designs. “We assume transitivity holds” is the same as writing nothing.
- Which model the inconsistency test was computed under. When the design-by-treatment Q is highly significant, check whether it shares the heterogeneity assumption of the primary analysis. SIDE tests belong in the paper pair by pair, not as one summary p value.
- How many pairs have no inconsistency test. Treatments attached to the network only through a shared comparator have estimates that no consistency check has ever touched.
- Whether the primary conclusion is written in effect sizes or in ranks. An abstract that says “X ranked first” without saying what the MD of X against Y was is a warning sign.
- Whether the ranking is presented with its uncertainty. A bare P-score or SUCRA point estimate leaves a reader no way to judge whether the order is stable.
- Which design the heterogeneity lives in. One overall I² is not enough; only the design-level decomposition points at which trials to go and read.
Run it yourself
library(metadat)
library(netmeta)
data(dat.senn2013, package = "metadat")
d <- dat.senn2013 # arm-based: one row per trial arm
# -- Step one: arm-based -> contrast-based --
# A three-arm trial expands into choose(3, 2) rows, and those rows are
# correlated with one another. netmeta handles that correlation; it is the
# thing most easily lost when the data are reshaped by hand.
pw <- pairwise(treat = treatment, n = ni, mean = mi, sd = sdi,
studlab = study, data = d, sm = "MD")
nrow(pw)
# -- Is the network connected? --
netconnection(treat1, treat2, studlab, data = pw)
# -- Random-effects NMA --
net <- netmeta(TE, seTE, treat1, treat2, studlab, data = pw,
sm = "MD", common = FALSE, random = TRUE,
reference.group = "placebo",
small.values = "desirable") # lower HbA1c is better
net
netgraph(net, thickness = "number.of.studies", number.of.studies = TRUE)
# -- League table: every cell gets a number, pairs nobody randomised included --
netleague(net, digits = 2)
# -- Direct versus indirect (SIDE) --
# NA in the direct column means no head-to-head trial; NA in the indirect
# column means there is no second route to compare against.
netsplit(net)
# WARNING: the "Test of inconsistency (between designs)" line printed by
# print(net) is the COMMON-EFFECT decomposition. This page fits a
# random-effects model; its matching test is here:
decomp.design(net)$Q.inc.random
# Which design the heterogeneity lives in (more useful than one overall I^2)
decomp.design(net)$Q.het.design
# -- Ranking last, and never on its own --
netrank(net, small.values = "desirable")
forest(net, reference.group = "placebo")Verified with R 4.6.0, netmeta 3.6.1, meta 8.5.0 and metadat 1.6.0
import itertools
import numpy as np
import pandas as pd
# arm-based -> contrast-based. Python handles this step comfortably; the model
# itself still has to go back to R (or be written as a hierarchical model in
# PyMC / Stan and validated yourself).
# Three of the studies in metadat::dat.senn2013, including the one
# three-arm trial, carried here so this block runs on its own. The full
# 26 are on the R side above.
arms = pd.DataFrame(
[("Willms (1999)", "metformin", 29, -2.50, 0.862),
("Willms (1999)", "acarbose", 31, -2.30, 1.782),
("Willms (1999)", "placebo", 29, -1.30, 1.831),
("Baksi (2004)", "rosiglitazone", 218, -1.20, 1.112),
("Baksi (2004)", "placebo", 233, 0.10, 1.036),
("Alex (1998)", "metformin", 291, 0.13, 1.428),
("Alex (1998)", "sulfonylurea", 300, 0.50, 1.450)],
columns=["study", "treatment", "ni", "mi", "sdi"],
)
rows = []
for study, g in arms.groupby("study"):
for a, b in itertools.combinations(g.itertuples(), 2):
rows.append({
"studlab": study,
"treat1": a.treatment,
"treat2": b.treatment,
"TE": a.mi - b.mi,
"seTE": np.sqrt(a.sdi ** 2 / a.ni + b.sdi ** 2 / b.ni),
})
contrasts = pd.DataFrame(rows)
print(contrasts.shape)
# Note: the rows a three-arm trial expands into are not independent, since they
# share an arm. Ignoring that correlation understates the standard errors.
# netmeta deals with it internally; a hand-written model has to do it itself.Python has no counterpart to netmeta: statsmodels does pairwise meta-analysis only, with no frequentist NMA, no net-splitting and no P-score. What is shown below is the step Python is genuinely good at — reshaping the arm-based table into contrast-based form.
Common misuses
| Misuse | Why it is wrong |
|---|---|
| Treating every cell of a league table as equally strong evidence | Most cells have no direct trial at all and rest on transitivity alone |
| Claiming transitivity holds because an inconsistency test was non-significant | Those tests have very little power, and for one-route pairs they do not exist |
Quoting the common-effect inconsistency Q that netmeta prints next to random-effects results | The two make different assumptions about τ², so it reports an inconsistency the model does not claim |
| Making the ranking the primary conclusion | A P-score carries no effect size, and adjacent ranks may not differ significantly at all |
| Reporting only the P-score or SUCRA point estimate | The uncertainty of the rank itself is invisible, so stability cannot be judged |
| Writing “ranked first” as “most effective” | The head-to-head interval for first and second place may include zero |
| Forcing one combined table onto a disconnected network | No estimable comparison exists between two subnetworks |
| Assuming that borrowing indirect evidence always improves precision | Indirect routes accumulate uncertainty, and the network’s τ² is added to every cell |
| Writing a pair whose interval crosses zero as “equivalent” | Not statistically significant is not equivalence; that claim needs a non-inferiority design with a pre-specified margin |
| Reporting a single overall I² | Only the design-level decomposition shows where the heterogeneity lives |
| Merging clinically non-interchangeable comparators into one node (different doses, different routes) | Transitivity is broken directly, and the model will not complain |
The rest of the groundwork under a network meta-analysis — how an effect size and its variance are computed, what fixed and random effects are each asking, what every element of a forest plot encodes — lives in Effect sizes and their variances, Fixed-effect and random-effects models and Forest and funnel plots. The systematic review process as a whole is in Systematic review and meta-analysis.
Reproducing every number on this page
/opt/homebrew/bin/Rscript figures/scripts/B7-05-network-meta.RRead the figure
The answer comes from the same statistical output that produced this page's figures, not from a number typed in beside them.
In this league table the network estimate for sulfonylurea against placebo is -0.417 (95% CI -0.889 to 0.056). How does that cell differ from the metformin against placebo cell?
Show the answer and why
Correct answer: That cell has no head-to-head trial at all: the -0.417 is inferred along three indirect routes, and the league table prints it exactly like a cell backed by direct trials
Sulfonylurea was never compared head to head with placebo: its direct trial count is zero. The -0.417 is inferred through metformin, acarbose and rosiglitazone, and the league table prints it as an ordinary cell, indistinguishable from the metformin cell that rests on four direct trials. The 0.944 is its interval width, and width is not the point — the point is whether anyone actually compared these two drugs, and a narrow purely indirect estimate is still purely indirect. As for -1.127, that is the metformin estimate against placebo, a cell with four direct trials whose direct and indirect estimates have additionally been checked against each other; the two cells are nothing alike as evidence. The first thing to do with a league table is to go back to the network graph or the direct-trial counts and mark which cells nobody ever compared.
Printing the netmeta object gives a between-design inconsistency test of Q = 22.53 on df = 7, p = 0.002, which looks like a badly inconsistent network. Can that number go straight into the report?
Show the answer and why
Correct answer: No. That is the common-effect decomposition, which assumes no between-study heterogeneity; recomputed under the random-effects model this page actually fits, the same between-design test gives p = 0.948, no signal at all
That line is the common-effect decomposition: it assumes no heterogeneity between studies, so the whole 0.109 of τ² gets attributed to designs disagreeing with each other. The same between-design test computed under the design-by-treatment interaction random-effects model this page fits gives p = 0.948, no signal at all, and it agrees with the pairwise SIDE tests — whose smallest p is 0.156, a long way from significance. Calling that close to significance reads an undetected result as half a signal. Putting the common-effect number beside a random-effects league table tells the reader the network is inconsistent when the model says no such thing, and a claim of inconsistency undermines the whole set of pooled results, while the gap here comes purely from how the two tests treat τ². A report should state which model the inconsistency test was computed under, and a reader who sees a very significant between-design Q should first check whether it shares the heterogeneity assumption of the main analysis.
In the netsplit table, 0 comparisons show a statistically significant direct-versus-indirect difference, and the smallest p value is 0.156. Can that be written up as consistency having been confirmed?
Show the answer and why
Correct answer: No. Most comparisons rest on one or two direct trials, and the interval for the difference stretches to an upper bound of 1.546; at that width nothing can be declared different, and undetected is not the same as consistent
SIDE tests have very little power here: most comparisons in this network rest on one or two direct trials, both the direct and the indirect interval are wide, and the interval for their difference therefore stretches as far as 1.546. At that width nothing short of an enormous discrepancy can be declared. So the wording is that no direct-versus-indirect inconsistency was detected — the same point as a non-significant Q not meaning homogeneity. The 0.156 is indeed far from significance, but that reflects power, not corroboration. The 0.948 is the between-design random-effects test, computed on the same data under the same heterogeneity assumption as SIDE, so their agreement is not two independent pieces of evidence and adding them up counts one fact twice. Four comparisons have no indirect route at all, and netsplit returns not applicable for them rather than a pass.
Vildagliptin was compared with placebo in exactly one trial. Its network estimate against placebo is -0.700, and the pairwise estimate from that single trial is also -0.700. What did the network do for it?
Show the answer and why
Correct answer: The point estimate borrowed nothing; what changed is the interval, because the network uses a τ² estimated across all designs, stretching it to 1.385
Vildagliptin is a leaf of the network: it hangs off placebo alone, and the only route from it to placebo is the single direct trial itself. With no second route there is nothing to borrow and nothing to check consistency against — netsplit returns not applicable for it rather than a pass. So the point estimate is untouched. What changes is the interval: the network uses a τ² estimated across all designs rather than from that one trial, and the interval stretches from 0.499 to 1.385. The 0.499 is precisely the width from that single trial, so reading it as the narrowed post-network result reverses the direction. The 0.423 is its P-score, a ranking summary rather than new evidence; printing a leaf beside treatments corroborated along several routes on one ranking table puts unequal grades of evidence side by side, and nothing on the surface shows it.
The top P-score belongs to rosiglitazone at 0.893, with metformin second at 0.782. As probabilities the gap looks substantial. What does it look like as an effect size?
Show the answer and why
Correct answer: Their head-to-head network estimate has an upper limit of 0.430 and includes zero, so the network detects no difference between first and second place
A P-score says how far a treatment is on average better than the others; it carries no effect size. The head-to-head network estimate for first and second place sits in the league table with an upper limit of 0.430, including zero — the network detects no difference between them, and printing one on the first row and the other on the second carries no statistical evidence of its own. The 0.107 is the gap between them relative to placebo, that many percentage points of HbA1c; agreeing in direction is not the same as reflecting effect size, and an identical P-score gap can correspond to a wholly different clinical difference in other data. The 0.112 is the gap in P-score itself, a unitless relative quantity that cannot answer whether the difference is worth a change of drug. Conclusions belong in effect sizes with intervals — how much this drug differs from that comparator, how wide the interval, how many direct trials underneath — with the ranking in an appendix or forced onto the same figure as the effect size.
On this ranking table sitagliptin has a P-score of 0.333, an interval against placebo of width 1.388 and exactly one trial behind it, while first-placed rosiglitazone has a width of 0.501 from 10 trials. What problem with ranking tables does that show?
Show the answer and why
Correct answer: That ranking tables flatten evidence strength: sitagliptin's interval against placebo has an upper limit of 0.124, crossing zero and not statistically significant, yet it still prints as an ordinary place beside the rest
The usual teaching story is that the top-ranked treatment is the one with the least evidence and the widest interval, and this data is not that story: the leader has 10 trials and an interval width of 0.501, the narrowest of any active drug. The problem runs the other way — the table flattens evidence strength altogether. Sitagliptin rests on a single trial and its interval against placebo has an upper limit of 0.124, crossing zero and not statistically significant in this data, yet it prints as an ordinary place, looking exactly like a leader built on 10 trials. As for -0.570, that is its point estimate and the number is right, but nothing was earned: a ranking table has no threshold, and every treatment gets a place, placebo included. The 0.501 really is the narrowest interval, but a trustworthy leader is not a trustworthy table — second and third place have almost overlapping point estimates and different places, which is the counterexample on the same table.
Chapters that use this method
Watch next
為什麼傳遞性假設對網絡統合分析很重要?
利用 Stata 進行網絡統合分析
使用 SUCRA 進行網絡統合分析治療排名
元件網絡統合分析簡介Sources and licences
This page is original writing