Multidimensional scaling ranking plot

MDS rank plot

NMA
Treatments placed along a dimension recovered by multidimensional scaling of the pairwise effect matrix.
NMASpecialized

Multidimensional scaling ranking plot example

Classical multidimensional scaling of absolute pairwise log odds ratios for response in the antidepressant network. Distances between points reproduce the network estimates. Data: netmeta::Linde2015.
Family
Treatment ranking
Purpose
Display treatments on a single axis that preserves how different they are, not just their order.
Inputs
The matrix of pairwise network estimates.
Software
Stata mdsrank; R cmdscale() with ggplot2 (shown)

What it shows

Chung and Lumley suggested multidimensional scaling for exploring network meta-analysis data. Stata’s mdsrank applies it to the matrix of pairwise relative effects and plots treatments on the resulting dimension. Unlike a ranking, the positions keep the distances: treatments that are close on the axis have similar effects. Under a consistency model the pairwise effects are exactly one-dimensional, so a single axis reproduces them; with inconsistent evidence (for example, direct estimates only) more dimensions appear.

How to read it

  • Horizontal axis: the first MDS dimension, on the scale of the effect measure.
  • Points: treatments; distances approximate absolute pairwise effects.
  • Direction: oriented here so that better response lies to the right.

Interpretation

Hypericum sits furthest right. Low-dose SARI, TCA, SNRI, and SSRI form a tight cluster, so their ranking among themselves has little practical meaning. NaSSa, rMAO-A, and placebo sit apart at the left, with NRI in between.

Pitfalls

  • MDS reproduces point estimates only; uncertainty is not shown.
  • The sign and origin of the axis are arbitrary.
  • Additional dimensions, if any, are hard to interpret clinically.

Code

library(netmeta)

# Antidepressants in primary care (Linde et al. 2015): arm-level binary outcomes
data(Linde2015)
d <- Linde2015
nma_for <- function(v, small) {
  p <- pairwise(treat = list(d$treatment1, d$treatment2, d$treatment3),
                event = list(d[[paste0(v, 1)]], d[[paste0(v, 2)]], d[[paste0(v, 3)]]),
                n = list(d$n1, d$n2, d$n3), studlab = d$id, sm = "OR", allstudies = TRUE)
  netmeta(p, common = FALSE, reference.group = "Placebo", small.values = small)
}
library(ggplot2)

resp <- nma_for("resp", small = "undesirable")

# Classical multidimensional scaling of the matrix of absolute pairwise
# log odds ratios. Under a consistency model the distances are exactly
# one-dimensional, so the first dimension orders the treatments
dist <- abs(resp$TE.random)
mds <- cmdscale(dist, k = 1)
pts <- data.frame(treatment = rownames(mds), dim1 = mds[, 1])
# Orient the dimension so that better treatments lie to the right
if (cor(pts$dim1, resp$TE.random[pts$treatment, "Placebo"]) < 0) pts$dim1 <- -pts$dim1
pts$side <- ifelse(rank(pts$dim1) %% 2 == 0, 1, -1)

ggplot(pts, aes(dim1, 0)) +
  geom_hline(yintercept = 0, colour = "#7a828c") +
  geom_point(size = 4.5, colour = "#1d4e89") +
  ggrepel::geom_text_repel(aes(label = treatment), nudge_y = 0.25 * pts$side,
                           direction = "x", size = 3.6, segment.colour = "#b9b3a6") +
  scale_y_continuous(limits = c(-0.5, 0.5), breaks = NULL) +
  labs(x = "MDS dimension 1 (log odds ratio scale; better response to the right)", y = NULL,
       title = "Multidimensional scaling ranking plot",
       subtitle = "Response to antidepressants; distances between points reproduce |log OR| between treatments") +
  theme(panel.grid.major.y = element_blank())
network meta consistency
mdsrank, best(max) labels(...)

References

  • Chung H, Lumley T. Graphical exploration of network meta-analysis data: the use of multidimensional scaling. Clin Trials. 2008;5:301-307. doi:10.1177/1740774508093614
  • Chaimani A, Higgins JPT, Mavridis D, Spyridonos P, Salanti G. Graphical tools for network meta-analysis in STATA. PLoS One. 2013;8:e76654. doi:10.1371/journal.pone.0076654