#> For execution on a local, multicore CPU with excess RAM we recommend calling
#> options(mc.cores = parallel::detectCores())
#>
#> Attaching package: 'multinma'
#> The following objects are masked from 'package:stats':
#>
#> dgamma, pgamma, qgamma
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
library(ggplot2)This vignette describes the analysis of 12 trials comparing 6
treatments against placebo for βthe treatment of rheumatoid arthritis
(RA) in patients who had failed on disease-modifying anti-rheumatic
drugs (DMARDs)β (Dias et al.
2011). The data are available in this package as
certolizumab:
head(certolizumab)
#> study trt r n disease_duration
#> 1 RAPID 1 Placebo 15 199 6.15
#> 2 RAPID 1 CZP 146 393 6.15
#> 3 RAPID 2 Placebo 4 127 5.85
#> 4 RAPID 2 CZP 80 246 5.85
#> 5 Kim 2007 Placebo 9 63 6.85
#> 6 Kim 2007 Adalimumab 28 65 6.85Dias et al. (2011) used this data to demonstrate baseline risk meta-regression models. Plotting the baseline risk against the treatment effect, we suspect there might be an effect of the baseline risk on the treatment effect. Specifically, the log baseline odds (placebo in this case) seem to be negatively linearly correlated with the odds ratio. For purposes of plotting only, we apply a continuity correction to the Abe 2006 study, in which no events were observed on placebo.
certolizumab <-
certolizumab %>%
group_by(study) %>%
mutate(
cc = any(r == 0),
probability = if_else(cc, (r + 0.5) / (n + 0.5), r / n),
odds = probability / (1 - probability),
log_odds = log(odds)
)
p_baseline_risk <-
left_join(
filter(certolizumab, trt != "Placebo"),
filter(certolizumab, trt == "Placebo"),
by = "study",
suffix = c("", "_baseline")
) %>%
mutate(log_odds_ratio = log_odds - log_odds_baseline, n_total = n + n_baseline) %>%
ggplot(aes(log_odds_baseline)) +
geom_hline(yintercept = 0, linetype = "dashed") +
labs(x = "Placebo log odds", y = "log Odds Ratio", size = "Sample Size") +
theme_multinma()
p_baseline_risk +
geom_point(aes(y = log_odds_ratio, size = n_total))We begin by setting up the network.
cert_net <- set_agd_arm(certolizumab,
study = study, trt = trt, n = n, r = r,
trt_class = if_else(trt == "Placebo", "Placebo", "Treatment"))
cert_net
#> A network with 12 AgD studies (arm-based).
#>
#> ------------------------------------------------------- AgD studies (arm-based) ----
#> Study Treatment arms
#> Abe 2006 2: Placebo | Infliximab
#> ARMADA 2: Placebo | Adalimumab
#> ATTEST 2: Placebo | Infliximab
#> CHARISMA 2: Placebo | Tocilizumab
#> DE019 2: Placebo | Adalimumab
#> Kim 2007 2: Placebo | Adalimumab
#> OPTION 2: Placebo | Tocilizumab
#> RAPID 1 2: Placebo | CZP
#> RAPID 2 2: Placebo | CZP
#> START 2: Placebo | Infliximab
#> ... plus 2 more studies
#>
#> Outcome type: count
#> ------------------------------------------------------------------------------------
#> Total number of treatments: 7, in 2 classes
#> Total number of studies: 12
#> Reference treatment is: Placebo
#> Network is connectedPlot the network structure.
We fit both fixed effect (FE) and random effects (RE) models. The
special variable .mu is used in the regression
formula to specify a baseline risk meta-regression model.
cert_fit_FE <- nma(cert_net,
trt_effects = "fixed",
regression = ~.mu:.trt,
prior_intercept = normal(scale = sqrt(1000)),
prior_trt = normal(scale = 100),
prior_reg = normal(scale = 100),
adapt_delta = 0.95)
#> Note: Setting "Placebo" as the network reference treatment.
#> Warning: There were 1 divergent transitions after warmup. See
#> https://mc-stan.org/misc/warnings.html#divergent-transitions-after-warmup
#> to find out why this is a problem and how to eliminate them.
#> Warning: Examine the pairs() plot to diagnose sampling problemsWe may see a few divergent transitions due to the zero on placebo in
Abe 2006; increasing adapt_delta to 0.95 here helps to
minimise these.
Basic parameter summaries are given by the print()
method:
cert_fit_FE
#> A fixed effects NMA with a binomial likelihood (logit link).
#> Regression model: ~.mu:.trt.
#> Centred covariates at the following overall mean values:
#> .mu
#> -2.41557
#> Inference for Stan model: binomial_1par.
#> 4 chains, each with iter=2000; warmup=1000; thin=1;
#> post-warmup draws per chain=1000, total post-warmup draws=4000.
#>
#> mean se_mean sd 2.5% 25% 50% 75% 97.5%
#> beta[.mu:.trtclassTreatment] -0.93 0.00 0.09 -1.03 -0.99 -0.96 -0.89 -0.69
#> d[Adalimumab] 2.12 0.00 0.11 1.90 2.05 2.12 2.20 2.35
#> d[CZP] 1.85 0.00 0.10 1.66 1.78 1.84 1.91 2.05
#> d[Etanercept] 2.06 0.01 0.32 1.48 1.86 2.05 2.26 2.72
#> d[Infliximab] 1.67 0.00 0.09 1.48 1.61 1.67 1.74 1.85
#> d[Rituximab] 0.36 0.01 0.51 -0.71 0.04 0.38 0.71 1.27
#> d[Tocilizumab] 2.19 0.00 0.14 1.91 2.11 2.20 2.28 2.45
#> lp__ -1708.68 0.08 3.13 -1715.63 -1710.57 -1708.31 -1706.44 -1703.58
#> n_eff Rhat
#> beta[.mu:.trtclassTreatment] 727 1.01
#> d[Adalimumab] 3907 1.00
#> d[CZP] 2337 1.00
#> d[Etanercept] 2871 1.00
#> d[Infliximab] 3269 1.00
#> d[Rituximab] 4177 1.00
#> d[Tocilizumab] 2148 1.00
#> lp__ 1587 1.00
#>
#> Samples were drawn using NUTS(diag_e) at Thu Feb 5 14:15:10 2026.
#> For each parameter, n_eff is a crude measure of effective sample size,
#> and Rhat is the potential scale reduction factor on split chains (at
#> convergence, Rhat=1).cert_fit_RE <- nma(cert_net,
trt_effects = "random",
regression = ~.mu:.trt,
prior_intercept = normal(scale = sqrt(1000)),
prior_trt = normal(scale = 100),
prior_reg = normal(scale = 100),
prior_het = half_normal(2.5),
adapt_delta = 0.95)
#> Note: Setting "Placebo" as the network reference treatment.
#> Warning: There were 2 divergent transitions after warmup. See
#> https://mc-stan.org/misc/warnings.html#divergent-transitions-after-warmup
#> to find out why this is a problem and how to eliminate them.
#> Warning: Examine the pairs() plot to diagnose sampling problemsBasic parameter summaries are given by the print()
method:
cert_fit_RE
#> A random effects NMA with a binomial likelihood (logit link).
#> Regression model: ~.mu:.trt.
#> Centred covariates at the following overall mean values:
#> .mu
#> -2.41557
#> Inference for Stan model: binomial_1par.
#> 4 chains, each with iter=2000; warmup=1000; thin=1;
#> post-warmup draws per chain=1000, total post-warmup draws=4000.
#>
#> mean se_mean sd 2.5% 25% 50% 75% 97.5%
#> beta[.mu:.trtclassTreatment] -0.96 0.00 0.10 -1.11 -1.00 -0.98 -0.92 -0.72
#> d[Adalimumab] 2.18 0.00 0.20 1.81 2.06 2.17 2.28 2.61
#> d[CZP] 1.82 0.01 0.23 1.34 1.71 1.82 1.93 2.29
#> d[Etanercept] 2.02 0.01 0.46 1.15 1.77 2.03 2.29 2.89
#> d[Infliximab] 1.71 0.00 0.21 1.31 1.60 1.70 1.82 2.14
#> d[Rituximab] 0.38 0.01 0.59 -0.85 0.03 0.40 0.75 1.46
#> d[Tocilizumab] 2.24 0.01 0.27 1.73 2.09 2.23 2.38 2.76
#> lp__ -1714.63 0.14 4.51 -1724.53 -1717.47 -1714.31 -1711.38 -1706.84
#> tau 0.22 0.01 0.18 0.01 0.10 0.19 0.29 0.70
#> n_eff Rhat
#> beta[.mu:.trtclassTreatment] 1131 1
#> d[Adalimumab] 2007 1
#> d[CZP] 1804 1
#> d[Etanercept] 1614 1
#> d[Infliximab] 2060 1
#> d[Rituximab] 3697 1
#> d[Tocilizumab] 1550 1
#> lp__ 1097 1
#> tau 609 1
#>
#> Samples were drawn using NUTS(diag_e) at Thu Feb 5 14:15:34 2026.
#> For each parameter, n_eff is a crude measure of effective sample size,
#> and Rhat is the potential scale reduction factor on split chains (at
#> convergence, Rhat=1).Model fit can be checked using the dic() function:
(dic_FE <- dic(cert_fit_FE))
#> Residual deviance: 27.4 (on 24 data points)
#> pD: 18.9
#> DIC: 46.3
(dic_RE <- dic(cert_fit_RE))
#> Residual deviance: 24.4 (on 24 data points)
#> pD: 21.7
#> DIC: 46.1We can also examine the residual deviance contributions with the
corresponding plot() method.
Plotting the estimated baseline risk effect (fixed effect model) together with the crude odds ratios.
cert_mu_reg <-
cert_fit_FE %>%
relative_effects(
newdata = tibble(.mu = seq(log(0.01), log(0.5), length.out = 20)),
study = .mu
) %>%
as_tibble() %>%
mutate(
trt = .trtb,
log_odds_baseline = as.numeric(as.character(.study))
)
p_baseline_risk +
facet_wrap(vars(trt)) +
geom_ribbon(aes(ymin = `2.5%`, ymax = `97.5%`), data = cert_mu_reg,
fill = "darkred", alpha = 0.3) +
geom_line(aes(y = mean), data = cert_mu_reg,
colour = "darkred") +
geom_point(aes(y = log_odds_ratio, size = n_total), alpha = 0.6)For comparison with Dias et al. (2011), we can produce relative effects
against placebo at the average observed log odds, using the
relative_effects() function:
newdata <- data.frame(.mu = cert_fit_FE$xbar[[".mu"]])
(cert_releff_FE <- relative_effects(cert_fit_FE, newdata = newdata))
#> ------------------------------------------------------------------ Study: New 1 ----
#>
#> Covariate values:
#> .mu
#> -2.42
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> d[New 1: Adalimumab] 2.12 0.11 1.90 2.05 2.12 2.20 2.35 3982 2078 1
#> d[New 1: CZP] 1.85 0.10 1.66 1.78 1.84 1.91 2.05 2581 1847 1
#> d[New 1: Etanercept] 2.06 0.32 1.48 1.86 2.05 2.26 2.72 3229 2509 1
#> d[New 1: Infliximab] 1.67 0.09 1.48 1.61 1.67 1.74 1.85 3330 2575 1
#> d[New 1: Rituximab] 0.36 0.51 -0.71 0.04 0.38 0.71 1.27 4416 2233 1
#> d[New 1: Tocilizumab] 2.19 0.14 1.91 2.11 2.20 2.28 2.45 2360 1640 1
plot(cert_releff_FE, ref_line = 0)(cert_releff_RE <- relative_effects(cert_fit_RE, newdata = newdata))
#> ------------------------------------------------------------------ Study: New 1 ----
#>
#> Covariate values:
#> .mu
#> -2.42
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> d[New 1: Adalimumab] 2.18 0.20 1.81 2.06 2.17 2.28 2.61 2361 1819 1
#> d[New 1: CZP] 1.82 0.23 1.34 1.71 1.82 1.93 2.29 2026 1460 1
#> d[New 1: Etanercept] 2.02 0.46 1.15 1.77 2.03 2.29 2.89 2277 1582 1
#> d[New 1: Infliximab] 1.71 0.21 1.31 1.60 1.70 1.82 2.14 2113 1595 1
#> d[New 1: Rituximab] 0.38 0.59 -0.85 0.03 0.40 0.75 1.46 3974 2709 1
#> d[New 1: Tocilizumab] 2.24 0.27 1.73 2.09 2.23 2.38 2.76 2004 1736 1
plot(cert_releff_RE, ref_line = 0)Without providing newdata,
relative_effects() will produce relative effects per study.
Note that the estimated study-specific intercepts are used.
(cert_releff_study_RE <- relative_effects(cert_fit_RE))
#> --------------------------------------------------------------- Study: Abe 2006 ----
#>
#> Covariate values:
#> .mu
#> -14.28
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> d[Abe 2006: Adalimumab] 13.86 12.25 2.91 5.56 9.50 17.95 48.82 1186 1238 1
#> d[Abe 2006: CZP] 13.49 12.24 2.69 5.24 9.09 17.49 48.54 1214 1242 1
#> d[Abe 2006: Etanercept] 13.70 12.22 2.89 5.44 9.35 17.68 48.76 1226 1277 1
#> d[Abe 2006: Infliximab] 13.39 12.25 2.43 5.12 9.04 17.35 48.48 1215 1242 1
#> d[Abe 2006: Rituximab] 12.05 12.28 0.90 3.77 7.65 15.99 47.16 1176 1319 1
#> d[Abe 2006: Tocilizumab] 13.91 12.26 2.94 5.62 9.57 18.03 49.07 1174 1238 1
#>
#> ----------------------------------------------------------------- Study: ARMADA ----
#>
#> Covariate values:
#> .mu
#> -2.48
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> d[ARMADA: Adalimumab] 2.25 0.53 1.33 1.89 2.22 2.57 3.39 3709 2400 1
#> d[ARMADA: CZP] 1.88 0.52 0.95 1.53 1.85 2.21 3.00 4189 2828 1
#> d[ARMADA: Etanercept] 2.09 0.63 0.89 1.68 2.09 2.48 3.35 3370 2224 1
#> d[ARMADA: Infliximab] 1.78 0.52 0.86 1.42 1.75 2.10 2.91 3608 2611 1
#> d[ARMADA: Rituximab] 0.44 0.77 -1.07 -0.05 0.45 0.93 1.94 4017 2632 1
#> d[ARMADA: Tocilizumab] 2.31 0.55 1.34 1.92 2.28 2.65 3.47 3042 2355 1
#>
#> ----------------------------------------------------------------- Study: ATTEST ----
#>
#> Covariate values:
#> .mu
#> -1.4
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> d[ATTEST: Adalimumab] 1.21 0.31 0.59 1.01 1.20 1.41 1.83 3393 2543 1
#> d[ATTEST: CZP] 0.84 0.36 0.12 0.61 0.84 1.07 1.55 2326 1870 1
#> d[ATTEST: Etanercept] 1.05 0.55 -0.01 0.73 1.05 1.37 2.09 2128 1757 1
#> d[ATTEST: Infliximab] 0.74 0.34 0.06 0.53 0.74 0.95 1.41 2539 2033 1
#> d[ATTEST: Rituximab] -0.60 0.63 -1.87 -0.98 -0.57 -0.19 0.58 4127 2683 1
#> d[ATTEST: Tocilizumab] 1.27 0.34 0.60 1.06 1.26 1.48 1.94 2926 2396 1
#>
#> --------------------------------------------------------------- Study: CHARISMA ----
#>
#> Covariate values:
#> .mu
#> -0.94
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> d[CHARISMA: Adalimumab] 0.77 0.38 0.05 0.52 0.76 1.02 1.52 3252 2312 1
#> d[CHARISMA: CZP] 0.41 0.43 -0.41 0.13 0.40 0.68 1.24 2360 1833 1
#> d[CHARISMA: Etanercept] 0.61 0.60 -0.55 0.26 0.61 0.98 1.75 2028 2016 1
#> d[CHARISMA: Infliximab] 0.30 0.41 -0.49 0.05 0.30 0.57 1.07 2673 2159 1
#> d[CHARISMA: Rituximab] -1.03 0.67 -2.44 -1.46 -1.01 -0.58 0.19 4156 2817 1
#> d[CHARISMA: Tocilizumab] 0.83 0.40 0.04 0.57 0.84 1.09 1.61 3170 2354 1
#>
#> ------------------------------------------------------------------ Study: DE019 ----
#>
#> Covariate values:
#> .mu
#> -2.29
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> d[DE019: Adalimumab] 2.06 0.31 1.47 1.86 2.05 2.26 2.68 3375 2171 1
#> d[DE019: CZP] 1.70 0.34 1.02 1.48 1.71 1.91 2.34 2636 1902 1
#> d[DE019: Etanercept] 1.90 0.52 0.91 1.60 1.91 2.22 2.91 2213 1920 1
#> d[DE019: Infliximab] 1.59 0.32 0.97 1.39 1.59 1.80 2.21 3048 2350 1
#> d[DE019: Rituximab] 0.26 0.62 -1.05 -0.12 0.28 0.66 1.44 4447 2552 1
#> d[DE019: Tocilizumab] 2.12 0.35 1.44 1.90 2.12 2.33 2.82 2795 1812 1
#>
#> --------------------------------------------------------------- Study: Kim 2007 ----
#>
#> Covariate values:
#> .mu
#> -1.84
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> d[Kim 2007: Adalimumab] 1.63 0.41 0.85 1.36 1.61 1.89 2.50 3739 1999 1
#> d[Kim 2007: CZP] 1.27 0.44 0.42 0.99 1.26 1.54 2.16 2774 2091 1
#> d[Kim 2007: Etanercept] 1.47 0.60 0.35 1.12 1.48 1.84 2.61 2344 1957 1
#> d[Kim 2007: Infliximab] 1.16 0.42 0.37 0.89 1.15 1.43 2.02 3291 2125 1
#> d[Kim 2007: Rituximab] -0.17 0.68 -1.56 -0.59 -0.14 0.26 1.15 4277 2621 1
#> d[Kim 2007: Tocilizumab] 1.69 0.43 0.85 1.41 1.68 1.95 2.57 3639 2282 1
#>
#> ----------------------------------------------------------------- Study: OPTION ----
#>
#> Covariate values:
#> .mu
#> -2.13
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> d[OPTION: Adalimumab] 1.91 0.30 1.35 1.72 1.90 2.09 2.52 3373 2464 1
#> d[OPTION: CZP] 1.54 0.33 0.87 1.35 1.55 1.74 2.17 2640 1711 1
#> d[OPTION: Etanercept] 1.75 0.52 0.74 1.45 1.75 2.06 2.72 2286 1752 1
#> d[OPTION: Infliximab] 1.44 0.31 0.85 1.25 1.44 1.62 2.06 2973 2273 1
#> d[OPTION: Rituximab] 0.10 0.63 -1.19 -0.27 0.12 0.51 1.28 3962 2818 1
#> d[OPTION: Tocilizumab] 1.97 0.34 1.27 1.75 1.97 2.18 2.65 2383 1925 1
#>
#> ---------------------------------------------------------------- Study: RAPID 1 ----
#>
#> Covariate values:
#> .mu
#> -2.53
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> d[RAPID 1: Adalimumab] 2.29 0.33 1.67 2.08 2.28 2.49 2.98 3327 1964 1
#> d[RAPID 1: CZP] 1.93 0.35 1.23 1.70 1.92 2.15 2.66 3099 2279 1
#> d[RAPID 1: Etanercept] 2.13 0.53 1.13 1.80 2.13 2.45 3.15 2679 1807 1
#> d[RAPID 1: Infliximab] 1.82 0.33 1.18 1.61 1.81 2.02 2.50 3389 2208 1
#> d[RAPID 1: Rituximab] 0.48 0.65 -0.87 0.07 0.51 0.91 1.69 4133 2948 1
#> d[RAPID 1: Tocilizumab] 2.35 0.38 1.65 2.11 2.34 2.58 3.13 2660 1705 1
#>
#> ---------------------------------------------------------------- Study: RAPID 2 ----
#>
#> Covariate values:
#> .mu
#> -3.55
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> d[RAPID 2: Adalimumab] 3.27 0.57 2.28 2.88 3.23 3.61 4.52 4000 2761 1
#> d[RAPID 2: CZP] 2.90 0.57 1.87 2.51 2.88 3.25 4.11 4250 2859 1
#> d[RAPID 2: Etanercept] 3.11 0.67 1.83 2.67 3.10 3.52 4.44 3853 2278 1
#> d[RAPID 2: Infliximab] 2.80 0.56 1.78 2.41 2.76 3.14 4.00 4139 2815 1
#> d[RAPID 2: Rituximab] 1.46 0.80 -0.08 0.94 1.44 1.98 3.07 4022 2838 1
#> d[RAPID 2: Tocilizumab] 3.33 0.61 2.25 2.92 3.29 3.69 4.62 3460 2346 1
#>
#> ------------------------------------------------------------------ Study: START ----
#>
#> Covariate values:
#> .mu
#> -2.32
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> d[START: Adalimumab] 2.09 0.27 1.58 1.92 2.08 2.26 2.63 3059 2273 1
#> d[START: CZP] 1.73 0.30 1.12 1.55 1.73 1.91 2.30 2561 1761 1
#> d[START: Etanercept] 1.93 0.50 0.99 1.65 1.94 2.23 2.88 2440 1717 1
#> d[START: Infliximab] 1.62 0.28 1.09 1.45 1.62 1.79 2.19 2830 2276 1
#> d[START: Rituximab] 0.29 0.61 -0.99 -0.09 0.31 0.68 1.41 4043 2526 1
#> d[START: Tocilizumab] 2.15 0.31 1.57 1.95 2.14 2.34 2.77 2406 1956 1
#>
#> ------------------------------------------------------------ Study: Strand 2006 ----
#>
#> Covariate values:
#> .mu
#> -2.03
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> d[Strand 2006: Adalimumab] 1.82 0.53 0.84 1.46 1.79 2.14 2.93 4525 2856 1
#> d[Strand 2006: CZP] 1.45 0.55 0.42 1.08 1.43 1.80 2.57 3280 2668 1
#> d[Strand 2006: Etanercept] 1.66 0.69 0.30 1.24 1.67 2.08 3.02 2675 2043 1
#> d[Strand 2006: Infliximab] 1.35 0.54 0.35 0.99 1.33 1.68 2.46 4041 2990 1
#> d[Strand 2006: Rituximab] 0.01 0.78 -1.52 -0.49 0.02 0.52 1.53 4077 2809 1
#> d[Strand 2006: Tocilizumab] 1.87 0.55 0.85 1.51 1.85 2.22 3.01 3974 2784 1
#>
#> --------------------------------------------------------- Study: Weinblatt 1999 ----
#>
#> Covariate values:
#> .mu
#> -3.94
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> d[Weinblatt 1999: Adalimumab] 3.65 1.32 1.75 2.74 3.44 4.30 6.82 3288 1531 1
#> d[Weinblatt 1999: CZP] 3.28 1.31 1.36 2.38 3.11 3.94 6.44 3529 1629 1
#> d[Weinblatt 1999: Etanercept] 3.49 1.37 1.34 2.54 3.33 4.20 6.70 3322 1590 1
#> d[Weinblatt 1999: Infliximab] 3.18 1.31 1.25 2.26 2.97 3.86 6.39 3367 1670 1
#> d[Weinblatt 1999: Rituximab] 1.84 1.43 -0.41 0.87 1.68 2.58 5.07 3417 1540 1
#> d[Weinblatt 1999: Tocilizumab] 3.71 1.35 1.73 2.80 3.51 4.38 7.04 2957 1404 1To produce predictions against a reference baseline risk
distribution, predict() will use the .mu
values sampled from the baseline distribution, for
example:
predict(cert_fit_RE, baseline = distr(qnorm, mean = cert_fit_RE$xbar[[".mu"]], sd = 0.5))
#> ------------------------------------------------------------------ Study: New 1 ----
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> pred[New 1: Placebo] -2.42 0.51 -3.43 -2.76 -2.43 -2.08 -1.43 4032 3972 1
#> pred[New 1: Adalimumab] -8.14 0.96 -9.81 -8.72 -8.21 -7.63 -6.01 1910 1468 1
#> pred[New 1: CZP] -8.51 1.05 -10.29 -9.11 -8.57 -8.00 -6.23 1814 1467 1
#> pred[New 1: Etanercept] -8.30 1.20 -10.42 -8.98 -8.36 -7.69 -5.73 1707 1511 1
#> pred[New 1: Infliximab] -8.61 1.01 -10.41 -9.19 -8.67 -8.09 -6.43 1814 1473 1
#> pred[New 1: Rituximab] -9.95 1.09 -12.02 -10.62 -9.98 -9.32 -7.67 2181 1597 1
#> pred[New 1: Tocilizumab] -8.09 0.94 -9.73 -8.65 -8.16 -7.59 -5.97 2057 1555 1When not passing a baseline distribution, predictions
will be produced per study. The estimated study-specific intercepts are
used in the baseline risk meta-regression.
predict(cert_fit_RE)
#> --------------------------------------------------------------- Study: Abe 2006 ----
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> pred[Abe 2006: Placebo] -14.28 12.22 -49.53 -18.29 -9.93 -6.06 -3.40 1243 1266 1
#> pred[Abe 2006: Adalimumab] -14.41 12.28 -49.67 -18.43 -10.14 -6.17 -3.30 1205 1268 1
#> pred[Abe 2006: CZP] -14.78 12.30 -49.99 -18.85 -10.50 -6.49 -3.45 1182 1266 1
#> pred[Abe 2006: Etanercept] -14.57 12.33 -49.84 -18.63 -10.28 -6.28 -3.06 1175 1239 1
#> pred[Abe 2006: Infliximab] -14.88 12.28 -50.01 -19.00 -10.61 -6.60 -3.72 1178 1275 1
#> pred[Abe 2006: Rituximab] -16.22 12.28 -51.31 -20.28 -11.93 -7.93 -4.90 1219 1230 1
#> pred[Abe 2006: Tocilizumab] -14.35 12.27 -49.53 -18.37 -10.06 -6.09 -3.23 1206 1276 1
#>
#> ----------------------------------------------------------------- Study: ARMADA ----
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> pred[ARMADA: Placebo] -2.48 0.49 -3.51 -2.79 -2.44 -2.13 -1.59 4817 2832 1
#> pred[ARMADA: Adalimumab] -2.61 0.59 -3.80 -2.98 -2.59 -2.22 -1.47 2808 2253 1
#> pred[ARMADA: CZP] -2.97 0.66 -4.30 -3.39 -2.95 -2.55 -1.69 2182 1544 1
#> pred[ARMADA: Etanercept] -2.77 0.81 -4.36 -3.26 -2.76 -2.26 -1.21 1978 1780 1
#> pred[ARMADA: Infliximab] -3.08 0.62 -4.33 -3.45 -3.07 -2.67 -1.93 2569 2094 1
#> pred[ARMADA: Rituximab] -4.42 0.80 -6.08 -4.92 -4.39 -3.87 -2.98 3506 2478 1
#> pred[ARMADA: Tocilizumab] -2.55 0.60 -3.80 -2.92 -2.53 -2.14 -1.43 3162 2151 1
#>
#> ----------------------------------------------------------------- Study: ATTEST ----
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> pred[ATTEST: Placebo] -1.40 0.24 -1.89 -1.56 -1.39 -1.23 -0.95 5431 2758 1
#> pred[ATTEST: Adalimumab] -1.53 0.38 -2.25 -1.76 -1.54 -1.30 -0.79 2345 1915 1
#> pred[ATTEST: CZP] -1.90 0.44 -2.74 -2.15 -1.90 -1.64 -1.02 1885 1640 1
#> pred[ATTEST: Etanercept] -1.69 0.64 -2.86 -2.05 -1.69 -1.33 -0.47 1884 1608 1
#> pred[ATTEST: Infliximab] -2.00 0.40 -2.79 -2.24 -2.00 -1.76 -1.22 2094 1883 1
#> pred[ATTEST: Rituximab] -3.34 0.66 -4.69 -3.75 -3.30 -2.90 -2.10 3808 2771 1
#> pred[ATTEST: Tocilizumab] -1.47 0.39 -2.24 -1.71 -1.47 -1.23 -0.72 2942 2168 1
#>
#> --------------------------------------------------------------- Study: CHARISMA ----
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> pred[CHARISMA: Placebo] -0.94 0.32 -1.58 -1.16 -0.93 -0.72 -0.35 4726 2843 1
#> pred[CHARISMA: Adalimumab] -1.07 0.43 -1.91 -1.36 -1.07 -0.79 -0.23 2596 1912 1
#> pred[CHARISMA: CZP] -1.44 0.49 -2.38 -1.74 -1.44 -1.14 -0.46 2117 1830 1
#> pred[CHARISMA: Etanercept] -1.23 0.68 -2.53 -1.62 -1.23 -0.84 -0.02 2045 1698 1
#> pred[CHARISMA: Infliximab] -1.54 0.46 -2.43 -1.84 -1.54 -1.25 -0.68 2310 2027 1
#> pred[CHARISMA: Rituximab] -2.88 0.69 -4.29 -3.30 -2.88 -2.43 -1.61 3707 2766 1
#> pred[CHARISMA: Tocilizumab] -1.02 0.43 -1.88 -1.30 -1.01 -0.73 -0.19 3120 2288 1
#>
#> ------------------------------------------------------------------ Study: DE019 ----
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> pred[DE019: Placebo] -2.29 0.25 -2.79 -2.45 -2.29 -2.13 -1.84 4962 2718 1
#> pred[DE019: Adalimumab] -2.42 0.37 -3.14 -2.66 -2.43 -2.19 -1.72 2570 1774 1
#> pred[DE019: CZP] -2.79 0.44 -3.62 -3.04 -2.80 -2.53 -1.93 1974 1528 1
#> pred[DE019: Etanercept] -2.58 0.63 -3.74 -2.94 -2.59 -2.22 -1.39 1988 1540 1
#> pred[DE019: Infliximab] -2.89 0.40 -3.68 -3.14 -2.90 -2.65 -2.12 2155 1628 1
#> pred[DE019: Rituximab] -4.23 0.66 -5.61 -4.65 -4.21 -3.79 -2.99 3635 2821 1
#> pred[DE019: Tocilizumab] -2.37 0.38 -3.11 -2.61 -2.37 -2.12 -1.59 2964 2038 1
#>
#> --------------------------------------------------------------- Study: Kim 2007 ----
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> pred[Kim 2007: Placebo] -1.84 0.37 -2.61 -2.07 -1.83 -1.59 -1.16 5262 2721 1
#> pred[Kim 2007: Adalimumab] -1.97 0.46 -2.87 -2.27 -1.98 -1.68 -1.08 3213 2617 1
#> pred[Kim 2007: CZP] -2.34 0.52 -3.36 -2.66 -2.34 -2.02 -1.32 2432 1976 1
#> pred[Kim 2007: Etanercept] -2.13 0.69 -3.43 -2.53 -2.13 -1.73 -0.80 2154 1762 1
#> pred[Kim 2007: Infliximab] -2.44 0.49 -3.45 -2.75 -2.44 -2.14 -1.52 2658 2315 1
#> pred[Kim 2007: Rituximab] -3.78 0.71 -5.29 -4.20 -3.76 -3.32 -2.42 3960 2880 1
#> pred[Kim 2007: Tocilizumab] -1.92 0.47 -2.87 -2.20 -1.91 -1.61 -0.98 3373 2126 1
#>
#> ----------------------------------------------------------------- Study: OPTION ----
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> pred[OPTION: Placebo] -2.13 0.23 -2.61 -2.28 -2.12 -1.97 -1.71 5078 3188 1
#> pred[OPTION: Adalimumab] -2.26 0.36 -2.94 -2.50 -2.28 -2.05 -1.52 2318 1679 1
#> pred[OPTION: CZP] -2.63 0.44 -3.47 -2.87 -2.64 -2.39 -1.73 1828 1521 1
#> pred[OPTION: Etanercept] -2.42 0.63 -3.59 -2.77 -2.43 -2.07 -1.22 1917 1644 1
#> pred[OPTION: Infliximab] -2.73 0.40 -3.52 -2.98 -2.74 -2.50 -1.97 1984 1602 1
#> pred[OPTION: Rituximab] -4.07 0.65 -5.46 -4.47 -4.04 -3.65 -2.83 3883 2516 1
#> pred[OPTION: Tocilizumab] -2.21 0.36 -2.94 -2.44 -2.21 -1.97 -1.51 2940 2079 1
#>
#> ---------------------------------------------------------------- Study: RAPID 1 ----
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> pred[RAPID 1: Placebo] -2.53 0.27 -3.09 -2.71 -2.53 -2.34 -2.03 4971 2813 1
#> pred[RAPID 1: Adalimumab] -2.66 0.39 -3.44 -2.90 -2.66 -2.42 -1.89 2521 2166 1
#> pred[RAPID 1: CZP] -3.03 0.46 -3.89 -3.29 -3.03 -2.76 -2.11 1964 1773 1
#> pred[RAPID 1: Etanercept] -2.82 0.65 -4.04 -3.20 -2.82 -2.45 -1.60 1888 1705 1
#> pred[RAPID 1: Infliximab] -3.13 0.43 -3.97 -3.40 -3.13 -2.86 -2.30 2138 1918 1
#> pred[RAPID 1: Rituximab] -4.47 0.67 -5.87 -4.88 -4.45 -4.04 -3.19 3638 2603 1
#> pred[RAPID 1: Tocilizumab] -2.60 0.40 -3.42 -2.85 -2.60 -2.36 -1.82 2952 2226 1
#>
#> ---------------------------------------------------------------- Study: RAPID 2 ----
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> pred[RAPID 2: Placebo] -3.55 0.54 -4.72 -3.88 -3.52 -3.18 -2.59 5608 2897 1
#> pred[RAPID 2: Adalimumab] -3.68 0.61 -4.96 -4.07 -3.66 -3.27 -2.56 3643 2472 1
#> pred[RAPID 2: CZP] -4.05 0.65 -5.39 -4.45 -4.03 -3.62 -2.87 2783 1916 1
#> pred[RAPID 2: Etanercept] -3.84 0.80 -5.46 -4.32 -3.81 -3.35 -2.38 2303 1948 1
#> pred[RAPID 2: Infliximab] -4.15 0.63 -5.49 -4.54 -4.11 -3.74 -3.03 3234 2359 1
#> pred[RAPID 2: Rituximab] -5.49 0.81 -7.18 -5.99 -5.46 -4.94 -4.03 4017 2786 1
#> pred[RAPID 2: Tocilizumab] -3.63 0.61 -4.96 -4.00 -3.60 -3.22 -2.51 3058 2744 1
#>
#> ------------------------------------------------------------------ Study: START ----
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> pred[START: Placebo] -2.32 0.18 -2.70 -2.45 -2.32 -2.20 -1.98 5203 2849 1
#> pred[START: Adalimumab] -2.45 0.34 -3.08 -2.66 -2.47 -2.25 -1.78 2273 1817 1
#> pred[START: CZP] -2.82 0.41 -3.57 -3.05 -2.84 -2.60 -1.99 1803 1504 1
#> pred[START: Etanercept] -2.61 0.62 -3.75 -2.94 -2.63 -2.27 -1.43 1818 1491 1
#> pred[START: Infliximab] -2.92 0.37 -3.64 -3.14 -2.93 -2.71 -2.24 1917 1606 1
#> pred[START: Rituximab] -4.26 0.64 -5.61 -4.64 -4.24 -3.85 -3.05 3738 2427 1
#> pred[START: Tocilizumab] -2.40 0.35 -3.06 -2.61 -2.40 -2.19 -1.71 2817 2219 1
#>
#> ------------------------------------------------------------ Study: Strand 2006 ----
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> pred[Strand 2006: Placebo] -2.03 0.51 -3.09 -2.36 -2.01 -1.68 -1.14 5460 2844 1
#> pred[Strand 2006: Adalimumab] -2.17 0.58 -3.36 -2.55 -2.16 -1.77 -1.09 3497 2591 1
#> pred[Strand 2006: CZP] -2.53 0.63 -3.82 -2.93 -2.52 -2.11 -1.38 2905 2179 1
#> pred[Strand 2006: Etanercept] -2.33 0.77 -3.83 -2.79 -2.32 -1.85 -0.89 2386 2015 1
#> pred[Strand 2006: Infliximab] -2.64 0.60 -3.86 -3.01 -2.63 -2.24 -1.53 3067 2289 1
#> pred[Strand 2006: Rituximab] -3.97 0.78 -5.60 -4.46 -3.93 -3.46 -2.51 4455 2595 1
#> pred[Strand 2006: Tocilizumab] -2.11 0.58 -3.31 -2.49 -2.08 -1.71 -1.03 3912 2564 1
#>
#> --------------------------------------------------------- Study: Weinblatt 1999 ----
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> pred[Weinblatt 1999: Placebo] -3.94 1.31 -7.14 -4.62 -3.74 -3.02 -2.00 3606 1600 1
#> pred[Weinblatt 1999: Adalimumab] -4.07 1.35 -7.27 -4.78 -3.88 -3.13 -1.98 3235 1566 1
#> pred[Weinblatt 1999: CZP] -4.44 1.38 -7.71 -5.15 -4.23 -3.49 -2.29 2890 1563 1
#> pred[Weinblatt 1999: Etanercept] -4.23 1.43 -7.66 -4.94 -4.03 -3.27 -2.09 2647 1585 1
#> pred[Weinblatt 1999: Infliximab] -4.54 1.36 -7.82 -5.25 -4.36 -3.60 -2.44 3068 1557 1
#> pred[Weinblatt 1999: Rituximab] -5.88 1.46 -9.24 -6.69 -5.72 -4.89 -3.51 2953 1547 1
#> pred[Weinblatt 1999: Tocilizumab] -4.01 1.34 -7.18 -4.70 -3.80 -3.07 -1.97 3457 1601 1We can also produce treatment rankings, rank probabilities, and cumulative rank probabilities.
(cert_ranks <- posterior_ranks(cert_fit_RE, newdata = newdata,
lower_better = FALSE))
#> ------------------------------------------------------------------ Study: New 1 ----
#>
#> Covariate values:
#> .mu
#> -2.42
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> rank[New 1: Placebo] 6.76 0.43 6 7 7 7 7 3099 NA 1
#> rank[New 1: Adalimumab] 2.08 0.87 1 1 2 3 4 2862 1784 1
#> rank[New 1: CZP] 3.84 0.92 2 3 4 4 5 2735 2479 1
#> rank[New 1: Etanercept] 2.86 1.44 1 2 3 4 5 2526 1208 1
#> rank[New 1: Infliximab] 4.40 0.83 2 4 5 5 5 1947 2095 1
#> rank[New 1: Rituximab] 6.20 0.54 6 6 6 6 7 3034 NA 1
#> rank[New 1: Tocilizumab] 1.87 0.99 1 1 2 2 4 2144 1651 1
plot(cert_ranks)(cert_rankprobs <- posterior_rank_probs(cert_fit_RE, newdata = newdata,
lower_better = FALSE))
#> ------------------------------------------------------------------ Study: New 1 ----
#>
#> Covariate values:
#> .mu
#> -2.42
#>
#> p_rank[1] p_rank[2] p_rank[3] p_rank[4] p_rank[5] p_rank[6] p_rank[7]
#> d[New 1: Placebo] 0.00 0.00 0.00 0.00 0.00 0.24 0.76
#> d[New 1: Adalimumab] 0.28 0.43 0.24 0.04 0.01 0.00 0.00
#> d[New 1: CZP] 0.02 0.06 0.23 0.46 0.23 0.01 0.00
#> d[New 1: Etanercept] 0.25 0.17 0.26 0.15 0.17 0.01 0.00
#> d[New 1: Infliximab] 0.01 0.02 0.11 0.29 0.56 0.01 0.00
#> d[New 1: Rituximab] 0.00 0.00 0.00 0.00 0.02 0.74 0.24
#> d[New 1: Tocilizumab] 0.45 0.31 0.16 0.05 0.02 0.00 0.00
plot(cert_rankprobs)(cert_cumrankprobs <- posterior_rank_probs(cert_fit_RE, cumulative = TRUE,
newdata = newdata, lower_better = FALSE))
#> ------------------------------------------------------------------ Study: New 1 ----
#>
#> Covariate values:
#> .mu
#> -2.42
#>
#> p_rank[1] p_rank[2] p_rank[3] p_rank[4] p_rank[5] p_rank[6] p_rank[7]
#> d[New 1: Placebo] 0.00 0.00 0.00 0.00 0.00 0.24 1
#> d[New 1: Adalimumab] 0.28 0.71 0.95 0.99 1.00 1.00 1
#> d[New 1: CZP] 0.02 0.08 0.31 0.77 0.99 1.00 1
#> d[New 1: Etanercept] 0.25 0.41 0.67 0.82 0.99 1.00 1
#> d[New 1: Infliximab] 0.01 0.03 0.14 0.43 0.99 1.00 1
#> d[New 1: Rituximab] 0.00 0.00 0.00 0.01 0.02 0.76 1
#> d[New 1: Tocilizumab] 0.45 0.77 0.93 0.98 1.00 1.00 1
plot(cert_cumrankprobs)It is also possible to combine baseline risk meta-regression with
regular meta-regression. For example, we can add
disease_duration to the regression formula.
nma(cert_net,
trt_effects = "fixed",
regression = ~(disease_duration + .mu):.trt,
prior_intercept = normal(scale = sqrt(1000)),
prior_trt = normal(scale = 100),
prior_reg = normal(scale = 100),
adapt_delta = 0.95)
#> Note: Setting "Placebo" as the network reference treatment.
#> A fixed effects NMA with a binomial likelihood (logit link).
#> Regression model: ~(disease_duration + .mu):.trt.
#> Centred covariates at the following overall mean values:
#> disease_duration .mu
#> 8.209583 -2.415570
#> Inference for Stan model: binomial_1par.
#> 4 chains, each with iter=2000; warmup=1000; thin=1;
#> post-warmup draws per chain=1000, total post-warmup draws=4000.
#>
#> mean se_mean sd 2.5% 25% 50% 75%
#> beta[disease_duration:.trtclassTreatment] -0.01 0.00 0.04 -0.09 -0.04 -0.01 0.01
#> beta[.trtclassTreatment:.mu] -0.93 0.00 0.09 -1.05 -1.00 -0.97 -0.89
#> d[Adalimumab] 2.15 0.00 0.15 1.86 2.05 2.15 2.25
#> d[CZP] 1.82 0.00 0.14 1.56 1.72 1.81 1.90
#> d[Etanercept] 2.13 0.01 0.36 1.46 1.89 2.11 2.35
#> d[Infliximab] 1.67 0.00 0.09 1.48 1.61 1.68 1.74
#> d[Rituximab] 0.39 0.01 0.52 -0.68 0.06 0.42 0.76
#> d[Tocilizumab] 2.17 0.00 0.15 1.87 2.07 2.17 2.27
#> lp__ -1708.98 0.07 3.14 -1716.09 -1710.87 -1708.68 -1706.67
#> 97.5% n_eff Rhat
#> beta[disease_duration:.trtclassTreatment] 0.07 1568 1
#> beta[.trtclassTreatment:.mu] -0.68 887 1
#> d[Adalimumab] 2.44 2157 1
#> d[CZP] 2.11 1499 1
#> d[Etanercept] 2.89 2010 1
#> d[Infliximab] 1.85 4134 1
#> d[Rituximab] 1.34 4198 1
#> d[Tocilizumab] 2.46 3418 1
#> lp__ -1703.73 1936 1
#>
#> Samples were drawn using NUTS(diag_e) at Thu Feb 5 14:16:01 2026.
#> For each parameter, n_eff is a crude measure of effective sample size,
#> and Rhat is the potential scale reduction factor on split chains (at
#> convergence, Rhat=1).