Population-specific relative effects

ML-NMR relative effects by study population

ML-NMR
Population-average conditional relative effects against the reference for each treatment, in each study population of the network.
ML-NMRSpecialized

Population-specific relative effects example

Population-average conditional relative effects (probit differences in PASI 75) against placebo for six biologics in each of the nine study populations, from ML-NMR; posterior medians with 66% and 95% credible intervals. Data: multinma plaque psoriasis example.
Family
Multilevel network meta-regression
Purpose
Show how relative effects on the model scale change across populations because of effect modification.
Inputs
A fitted ML-NMR model with treatment-covariate interactions.
Software
R multinma::relative_effects() + plot()

What it shows

With effect modifiers in the model, a relative effect is only defined for a population. ML-NMR produces population-average conditional effects, evaluated at each population’s covariate distribution on the model’s linear predictor scale, for every study population in the network (or any target population supplied). A standard NMA forest plot would show one row per treatment; this display repeats it for every population so that the effect modification becomes visible.

How to read it

  • Panels: study populations.
  • Rows: treatments versus the reference.
  • Points and bars: posterior median with 66% and 95% credible intervals, on the model scale (here probit).

Interpretation

The ordering of treatments is identical in every population, with ixekizumab Q2W highest and etanercept lowest, and the probit differences shift only slightly between populations. On this scale, effect modification by the included covariates is modest. The marginal effects show how the same model translates into larger between-population differences on the probability scale.

Pitfalls

  • Conditional effects on a link scale are not directly interpretable as risk differences; report marginal effects for decisions.
  • The populations are defined by summary statistics for aggregate studies; the correlation structure between covariates is assumed.
  • Stable effects across the network’s populations do not guarantee stability in a very different target population.

Code

Shared model (R/models/plaque-psoriasis-mlnmr.R)

# ML-NMR of PASI 75 response in plaque psoriasis (Phillippo et al. 2020):
# IPD from 4 ixekizumab trials, aggregate data from 5 secukinumab trials.
library(multinma)
library(dplyr)

trt_class <- function(trtc) case_when(
  trtc == "PBO" ~ "Placebo",
  trtc %in% c("IXE_Q2W", "IXE_Q4W", "SEC_150", "SEC_300") ~ "IL-17 blocker",
  trtc == "ETN" ~ "TNFa blocker",
  trtc == "UST" ~ "IL-12/23 blocker"
)

# Rescale covariates: BSA as a proportion, weight in 10 kg, duration in decades
pso_ipd <- plaque_psoriasis_ipd |>
  mutate(bsa = bsa / 100, weight = weight / 10, durnpso = durnpso / 10,
         prevsys = as.numeric(prevsys), psa = as.numeric(psa),
         trtclass = trt_class(trtc)) |>
  filter(complete.cases(durnpso, prevsys, bsa, weight, psa, pasi75))
pso_agd <- plaque_psoriasis_agd |>
  mutate(bsa_mean = bsa_mean / 100, bsa_sd = bsa_sd / 100,
         weight_mean = weight_mean / 10, weight_sd = weight_sd / 10,
         durnpso_mean = durnpso_mean / 10, durnpso_sd = durnpso_sd / 10,
         prevsys = prevsys / 100, psa = psa / 100,
         trtclass = trt_class(trtc))

pso_net <- combine_network(
  set_ipd(pso_ipd, study = studyc, trt = trtc, r = pasi75, trt_class = trtclass),
  set_agd_arm(pso_agd, study = studyc, trt = trtc, r = pasi75_r, n = pasi75_n,
              trt_class = trtclass),
  trt_ref = "PBO"
)

# Quasi-Monte Carlo integration points over each aggregate study's covariates
pso_net <- add_integration(pso_net,
  durnpso = distr(qgamma, mean = durnpso_mean, sd = durnpso_sd),
  prevsys = distr(qbern, prob = prevsys),
  bsa = distr(qlogitnorm, mean = bsa_mean, sd = bsa_sd),
  weight = distr(qgamma, mean = weight_mean, sd = weight_sd),
  psa = distr(qbern, prob = psa),
  n_int = 64
)

# Fixed-effect ML-NMR, probit link, effect modifiers shared within treatment class
pso_fit <- nma(pso_net, trt_effects = "fixed", link = "probit", likelihood = "bernoulli2",
               regression = ~ (durnpso + prevsys + bsa + weight + psa) * .trt,
               class_interactions = "common",
               prior_intercept = normal(scale = 10), prior_trt = normal(scale = 10),
               prior_reg = normal(scale = 10), init_r = 0.1, QR = TRUE, seed = 2026,
               int_thin = 8, int_check = FALSE)  # save partial integrals for the error plot

Figure

library(multinma)
source("R/models/plaque-psoriasis-mlnmr.R")  # builds pso_net and fits pso_fit

# Population-average conditional relative effects (probit scale) against
# placebo in each of the 9 study populations
plot(relative_effects(pso_fit), ref_line = 0)

References

  • Phillippo DM, Dias S, Ades AE, et al. Multilevel network meta-regression for population-adjusted treatment comparisons. J R Stat Soc Ser A. 2020;183:1189-1210. doi:10.1111/rssa.12579
  • relative_effects() reference. multinma documentation. dmphillippo.github.io/multinma