Example: Atrial fibrillation

library(multinma)
options(mc.cores = parallel::detectCores())

This vignette describes the analysis of 26 trials comparing 17 treatments in 4 classes for the prevention of stroke in patients with atrial fibrillation (Cooper et al. 2009). The data are available in this package as atrial_fibrillation:

head(atrial_fibrillation)
#>     studyc studyn                                  trtc trtn      trt_class   r    n    E stroke
#> 1 ACTIVE-W      1 Standard adjusted dose anti-coagulant    3 Anti-coagulant  65 3371 4200   0.15
#> 2 ACTIVE-W      1         Low dose aspirin + copidogrel   16  Anti-platelet 106 3335 4180   0.15
#> 3 AFASAK 1      2                 Placebo/Standard care    1        Control  19  336  398   0.06
#> 4 AFASAK 1      2 Standard adjusted dose anti-coagulant    3 Anti-coagulant   9  335  413   0.06
#> 5 AFASAK 1      2                      Low dose aspirin    5  Anti-platelet  16  336  409   0.06
#> 6 AFASAK 2      3 Standard adjusted dose anti-coagulant    3 Anti-coagulant  11  170  355   0.10
#>   year followup
#> 1 2006      1.3
#> 2 2006      1.3
#> 3 1989      1.2
#> 4 1989      1.2
#> 5 1989      1.2
#> 6 1998      2.2

Cooper et al. (2009) used this data to demonstrate meta-regression models, which we recreate here.

Setting up the network

Whilst we have data on the patient-years at risk in each study (E), we ignore this here to follow the analysis of Cooper et al. (2009), instead analysing the number of patients with stroke (r) out of the total (n) in each arm. We use the function set_agd_arm() to set up the network, making sure to specify the treatment classes trt_class. We remove the WASPO study from the network as both arms had zero events, and this study therefore contributes no information.

af_net <- set_agd_arm(atrial_fibrillation[atrial_fibrillation$studyc != "WASPO", ], 
                      study = studyc,
                      trt = trtc,
                      r = r, 
                      n = n,
                      trt_class = trt_class)
af_net
#> A network with 25 AgD studies (arm-based).
#> 
#> ------------------------------------------------------- AgD studies (arm-based) ---- 
#>  Study         Treatment arms                                                                     
#>  ACTIVE-W      2: Standard adjusted dose anti-coagulant | Low dose aspirin + copidogrel           
#>  AFASAK 1      3: Standard adjusted dose anti-coagulant | Low dose aspirin | Placebo/Standard care
#>  AFASAK 2      4: Standard adjusted dose anti-coagulant | Fixed dose warfarin | Fixed dose warf...
#>  BAATAF        2: Low adjusted dose anti-coagulant | Placebo/Standard care                        
#>  BAFTA         2: Standard adjusted dose anti-coagulant | Low dose aspirin                        
#>  CAFA          2: Standard adjusted dose anti-coagulant | Placebo/Standard care                   
#>  Chinese ATAFS 2: Standard adjusted dose anti-coagulant | Low dose aspirin                        
#>  EAFT          3: Standard adjusted dose anti-coagulant | Medium dose aspirin | Placebo/Standar...
#>  ESPS 2        4: Dipyridamole | Low dose aspirin | Low dose aspirin + dipyridamole | Placebo/S...
#>  JAST          2: Low dose aspirin | Placebo/Standard care                                        
#>  ... plus 15 more studies
#> 
#>  Outcome type: count
#> ------------------------------------------------------------------------------------
#> Total number of treatments: 17, in 4 classes
#> Total number of studies: 25
#> Reference treatment is: Standard adjusted dose anti-coagulant
#> Network is connected

(A better analysis, accounting for differences in the patient-years at risk between studies, can be performed by specifying a rate outcome with r and E in set_agd_arm() above. The following code remains identical.)

Plot the network with the plot() method:

plot(af_net, weight_nodes = TRUE, weight_edges = TRUE, show_trt_class = TRUE) + 
  ggplot2::theme(legend.position = "bottom", legend.box = "vertical")

Meta-analysis models

We fit two (random effects) models:

  1. A standard NMA model without any covariates (model 1 of Cooper et al. (2009));
  2. A meta-regression model adjusting for the proportion of individuals in each study with prior stroke, with shared interaction coefficients by treatment class (model 4b of Cooper et al. (2009)).

NMA with no covariates

We fit a random effects model using the nma() function with trt_effects = "random". We use \(\mathrm{N}(0, 100^2)\) prior distributions for the treatment effects \(d_k\) and study-specific intercepts \(\mu_j\), and a \(\textrm{half-N}(5^2)\) prior for the heterogeneity standard deviation \(\tau\). We can examine the range of parameter values implied by these prior distributions with the summary() method:

summary(normal(scale = 100))
#> A Normal prior distribution: location = 0, scale = 100.
#> 50% of the prior density lies between -67.45 and 67.45.
#> 95% of the prior density lies between -196 and 196.
summary(half_normal(scale = 5))
#> A half-Normal prior distribution: location = 0, scale = 5.
#> 50% of the prior density lies between 0 and 3.37.
#> 95% of the prior density lies between 0 and 9.8.

Fitting the model with the nma() function. We increase the target acceptance rate adapt_delta = 0.99 to minimise divergent transition warnings.

af_fit_1 <- nma(af_net, 
                trt_effects = "random",
                prior_intercept = normal(scale = 100),
                prior_trt = normal(scale = 100),
                prior_het = half_normal(scale = 5),
                adapt_delta = 0.99)
#> Note: Setting "Standard adjusted dose anti-coagulant" as the network reference treatment.

Basic parameter summaries are given by the print() method:

af_fit_1
#> A random effects NMA with a binomial likelihood (logit link).
#> 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%
#> d[Acenocoumarol]                                -0.80    0.01 0.80    -2.46    -1.31    -0.76
#> d[Alternate day aspirin]                        -1.03    0.02 1.39    -4.40    -1.83    -0.89
#> d[Dipyridamole]                                  0.59    0.01 0.44    -0.27     0.31     0.61
#> d[Fixed dose warfarin]                           0.93    0.01 0.40     0.16     0.66     0.92
#> d[Fixed dose warfarin + low dose aspirin]        0.47    0.01 0.44    -0.46     0.21     0.48
#> d[Fixed dose warfarin + medium dose aspirin]     0.89    0.01 0.32     0.23     0.68     0.89
#> d[High dose aspirin]                             0.51    0.01 0.76    -1.02     0.02     0.52
#> d[Indobufen]                                     0.24    0.01 0.46    -0.66    -0.05     0.24
#> d[Low adjusted dose anti-coagulant]             -0.29    0.01 0.38    -1.04    -0.54    -0.29
#> d[Low dose aspirin]                              0.61    0.00 0.21     0.20     0.48     0.61
#> d[Low dose aspirin + copidogrel]                 0.51    0.01 0.36    -0.24     0.31     0.52
#> d[Low dose aspirin + dipyridamole]               0.27    0.01 0.47    -0.65    -0.04     0.27
#> d[Medium dose aspirin]                           0.39    0.00 0.20    -0.02     0.26     0.39
#> d[Placebo/Standard care]                         0.76    0.00 0.20     0.36     0.63     0.76
#> d[Triflusal]                                     0.63    0.01 0.61    -0.56     0.23     0.62
#> d[Ximelagatran]                                 -0.09    0.00 0.26    -0.64    -0.25    -0.09
#> lp__                                         -5000.80    0.22 7.42 -5016.17 -5005.75 -5000.39
#> tau                                              0.28    0.01 0.14     0.04     0.18     0.27
#>                                                   75%    97.5% n_eff Rhat
#> d[Acenocoumarol]                                -0.26     0.73  3619    1
#> d[Alternate day aspirin]                        -0.05     1.27  3181    1
#> d[Dipyridamole]                                  0.89     1.45  3363    1
#> d[Fixed dose warfarin]                           1.19     1.70  3253    1
#> d[Fixed dose warfarin + low dose aspirin]        0.76     1.32  2735    1
#> d[Fixed dose warfarin + medium dose aspirin]     1.10     1.50  3404    1
#> d[High dose aspirin]                             1.02     1.97  4685    1
#> d[Indobufen]                                     0.53     1.14  3618    1
#> d[Low adjusted dose anti-coagulant]             -0.04     0.44  3466    1
#> d[Low dose aspirin]                              0.75     1.04  2160    1
#> d[Low dose aspirin + copidogrel]                 0.72     1.21  3514    1
#> d[Low dose aspirin + dipyridamole]               0.58     1.20  2790    1
#> d[Medium dose aspirin]                           0.51     0.76  2707    1
#> d[Placebo/Standard care]                         0.88     1.13  1781    1
#> d[Triflusal]                                     1.02     1.83  3188    1
#> d[Ximelagatran]                                  0.07     0.44  3028    1
#> lp__                                         -4995.54 -4987.55  1087    1
#> tau                                              0.36     0.59   635    1
#> 
#> Samples were drawn using NUTS(diag_e) at Tue Jan  9 17:59:08 2024.
#> 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).

By default, summaries of the study-specific intercepts \(\mu_j\) and study-specific relative effects \(\delta_{jk}\) are hidden, but could be examined by changing the pars argument:

# Not run
print(af_fit_1, pars = c("d", "mu", "delta"))

The prior and posterior distributions can be compared visually using the plot_prior_posterior() function:

plot_prior_posterior(af_fit_1, prior = c("trt", "het"))

We can compute relative effects against placebo/standard care with the relative_effects() function with the trt_ref argument:

(af_1_releff <- relative_effects(af_fit_1, trt_ref = "Placebo/Standard care"))
#>                                               mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS
#> d[Standard adjusted dose anti-coagulant]     -0.76 0.20 -1.13 -0.88 -0.76 -0.63 -0.36     1810
#> d[Acenocoumarol]                             -1.56 0.82 -3.25 -2.07 -1.52 -1.00  0.01     3675
#> d[Alternate day aspirin]                     -1.79 1.38 -5.06 -2.58 -1.64 -0.81  0.46     4123
#> d[Dipyridamole]                              -0.16 0.42 -0.98 -0.43 -0.16  0.11  0.63     4880
#> d[Fixed dose warfarin]                        0.17 0.43 -0.70 -0.12  0.17  0.46  1.02     3066
#> d[Fixed dose warfarin + low dose aspirin]    -0.28 0.40 -1.10 -0.52 -0.28 -0.03  0.51     3888
#> d[Fixed dose warfarin + medium dose aspirin]  0.13 0.37 -0.60 -0.11  0.13  0.37  0.86     3162
#> d[High dose aspirin]                         -0.24 0.76 -1.76 -0.74 -0.24  0.26  1.20     5348
#> d[Indobufen]                                 -0.51 0.49 -1.48 -0.83 -0.53 -0.20  0.47     3205
#> d[Low adjusted dose anti-coagulant]          -1.05 0.36 -1.76 -1.29 -1.05 -0.81 -0.34     4975
#> d[Low dose aspirin]                          -0.14 0.21 -0.55 -0.28 -0.14  0.00  0.27     4033
#> d[Low dose aspirin + copidogrel]             -0.25 0.41 -1.06 -0.50 -0.25 -0.01  0.59     3167
#> d[Low dose aspirin + dipyridamole]           -0.49 0.44 -1.35 -0.79 -0.49 -0.21  0.39     4030
#> d[Medium dose aspirin]                       -0.37 0.22 -0.82 -0.51 -0.37 -0.23  0.06     2964
#> d[Triflusal]                                 -0.13 0.64 -1.39 -0.55 -0.13  0.29  1.14     3218
#> d[Ximelagatran]                              -0.84 0.33 -1.50 -1.04 -0.85 -0.65 -0.18     2285
#>                                              Tail_ESS Rhat
#> d[Standard adjusted dose anti-coagulant]         1925    1
#> d[Acenocoumarol]                                 3166    1
#> d[Alternate day aspirin]                         2582    1
#> d[Dipyridamole]                                  3306    1
#> d[Fixed dose warfarin]                           3114    1
#> d[Fixed dose warfarin + low dose aspirin]        2742    1
#> d[Fixed dose warfarin + medium dose aspirin]     2734    1
#> d[High dose aspirin]                             3311    1
#> d[Indobufen]                                     2578    1
#> d[Low adjusted dose anti-coagulant]              3087    1
#> d[Low dose aspirin]                              3000    1
#> d[Low dose aspirin + copidogrel]                 2473    1
#> d[Low dose aspirin + dipyridamole]               2993    1
#> d[Medium dose aspirin]                           3129    1
#> d[Triflusal]                                     2685    1
#> d[Ximelagatran]                                  1980    1

These estimates can easily be plotted with the plot() method:

plot(af_1_releff, ref_line = 0)

We can also produce treatment rankings, rank probabilities, and cumulative rank probabilities.

(af_1_ranks <- posterior_ranks(af_fit_1))
#>                                                  mean   sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS
#> rank[Standard adjusted dose anti-coagulant]      5.33 1.45    3   4   5   6  8.00     2382     2934
#> rank[Acenocoumarol]                              2.92 2.93    1   1   2   3 13.00     3916     3370
#> rank[Alternate day aspirin]                      3.74 4.34    1   1   2   5 16.00     4798     3568
#> rank[Dipyridamole]                              11.33 3.74    4   9  12  14 17.00     4225       NA
#> rank[Fixed dose warfarin]                       14.13 3.00    7  13  15  16 17.00     2957       NA
#> rank[Fixed dose warfarin + low dose aspirin]    10.13 3.85    3   7  10  13 17.00     4049     2672
#> rank[Fixed dose warfarin + medium dose aspirin] 14.09 2.67    8  13  15  16 17.00     3527       NA
#> rank[High dose aspirin]                         10.32 5.24    2   6  11  16 17.00     4845       NA
#> rank[Indobufen]                                  8.05 3.92    2   5   8  11 16.00     3349     2952
#> rank[Low adjusted dose anti-coagulant]           3.79 2.21    1   2   3   5 10.00     3887     3581
#> rank[Low dose aspirin]                          11.74 2.18    7  10  12  13 16.00     3523     3515
#> rank[Low dose aspirin + copidogrel]             10.49 3.48    4   8  10  13 17.00     3318     2782
#> rank[Low dose aspirin + dipyridamole]            8.15 3.88    2   5   8  11 16.00     3683     3248
#> rank[Medium dose aspirin]                        9.17 2.14    5   8   9  11 14.00     3578     3450
#> rank[Placebo/Standard care]                     13.43 1.81   10  12  14  15 16.03     3499     3261
#> rank[Triflusal]                                 11.33 4.63    3   7  12  16 17.00     3325       NA
#> rank[Ximelagatran]                               4.86 2.27    2   3   4   6 11.00     2457     2301
#>                                                 Rhat
#> rank[Standard adjusted dose anti-coagulant]        1
#> rank[Acenocoumarol]                                1
#> rank[Alternate day aspirin]                        1
#> rank[Dipyridamole]                                 1
#> rank[Fixed dose warfarin]                          1
#> rank[Fixed dose warfarin + low dose aspirin]       1
#> rank[Fixed dose warfarin + medium dose aspirin]    1
#> rank[High dose aspirin]                            1
#> rank[Indobufen]                                    1
#> rank[Low adjusted dose anti-coagulant]             1
#> rank[Low dose aspirin]                             1
#> rank[Low dose aspirin + copidogrel]                1
#> rank[Low dose aspirin + dipyridamole]              1
#> rank[Medium dose aspirin]                          1
#> rank[Placebo/Standard care]                        1
#> rank[Triflusal]                                    1
#> rank[Ximelagatran]                                 1
plot(af_1_ranks)

(af_1_rankprobs <- posterior_rank_probs(af_fit_1))
#>                                              p_rank[1] p_rank[2] p_rank[3] p_rank[4] p_rank[5]
#> d[Standard adjusted dose anti-coagulant]          0.00      0.01      0.08      0.19      0.28
#> d[Acenocoumarol]                                  0.37      0.31      0.10      0.05      0.04
#> d[Alternate day aspirin]                          0.48      0.17      0.06      0.04      0.03
#> d[Dipyridamole]                                   0.00      0.01      0.01      0.02      0.03
#> d[Fixed dose warfarin]                            0.00      0.00      0.00      0.00      0.01
#> d[Fixed dose warfarin + low dose aspirin]         0.00      0.01      0.02      0.04      0.05
#> d[Fixed dose warfarin + medium dose aspirin]      0.00      0.00      0.00      0.00      0.00
#> d[High dose aspirin]                              0.02      0.06      0.06      0.05      0.05
#> d[Indobufen]                                      0.01      0.04      0.07      0.09      0.08
#> d[Low adjusted dose anti-coagulant]               0.08      0.23      0.26      0.16      0.09
#> d[Low dose aspirin]                               0.00      0.00      0.00      0.00      0.00
#> d[Low dose aspirin + copidogrel]                  0.00      0.01      0.01      0.02      0.03
#> d[Low dose aspirin + dipyridamole]                0.01      0.04      0.08      0.08      0.07
#> d[Medium dose aspirin]                            0.00      0.00      0.00      0.01      0.03
#> d[Placebo/Standard care]                          0.00      0.00      0.00      0.00      0.00
#> d[Triflusal]                                      0.00      0.02      0.04      0.04      0.04
#> d[Ximelagatran]                                   0.02      0.09      0.19      0.21      0.17
#>                                              p_rank[6] p_rank[7] p_rank[8] p_rank[9] p_rank[10]
#> d[Standard adjusted dose anti-coagulant]          0.24      0.13      0.05      0.02       0.00
#> d[Acenocoumarol]                                  0.03      0.03      0.02      0.01       0.01
#> d[Alternate day aspirin]                          0.03      0.03      0.02      0.02       0.01
#> d[Dipyridamole]                                   0.05      0.06      0.07      0.08       0.08
#> d[Fixed dose warfarin]                            0.01      0.02      0.02      0.03       0.04
#> d[Fixed dose warfarin + low dose aspirin]         0.06      0.08      0.09      0.09       0.09
#> d[Fixed dose warfarin + medium dose aspirin]      0.01      0.01      0.02      0.03       0.04
#> d[High dose aspirin]                              0.05      0.05      0.05      0.05       0.05
#> d[Indobufen]                                      0.11      0.10      0.09      0.08       0.07
#> d[Low adjusted dose anti-coagulant]               0.06      0.05      0.03      0.02       0.01
#> d[Low dose aspirin]                               0.01      0.02      0.05      0.08       0.12
#> d[Low dose aspirin + copidogrel]                  0.05      0.08      0.11      0.10       0.11
#> d[Low dose aspirin + dipyridamole]                0.09      0.11      0.10      0.09       0.07
#> d[Medium dose aspirin]                            0.06      0.12      0.18      0.20       0.17
#> d[Placebo/Standard care]                          0.00      0.00      0.01      0.02       0.04
#> d[Triflusal]                                      0.05      0.06      0.06      0.06       0.06
#> d[Ximelagatran]                                   0.12      0.07      0.05      0.03       0.02
#>                                              p_rank[11] p_rank[12] p_rank[13] p_rank[14] p_rank[15]
#> d[Standard adjusted dose anti-coagulant]           0.00       0.00       0.00       0.00       0.00
#> d[Acenocoumarol]                                   0.01       0.01       0.01       0.01       0.01
#> d[Alternate day aspirin]                           0.01       0.01       0.01       0.01       0.01
#> d[Dipyridamole]                                    0.08       0.09       0.08       0.10       0.09
#> d[Fixed dose warfarin]                             0.06       0.06       0.07       0.09       0.14
#> d[Fixed dose warfarin + low dose aspirin]          0.08       0.09       0.07       0.06       0.06
#> d[Fixed dose warfarin + medium dose aspirin]       0.05       0.07       0.09       0.12       0.16
#> d[High dose aspirin]                               0.05       0.04       0.05       0.05       0.06
#> d[Indobufen]                                       0.06       0.05       0.04       0.03       0.04
#> d[Low adjusted dose anti-coagulant]                0.01       0.00       0.00       0.00       0.00
#> d[Low dose aspirin]                                0.16       0.18       0.16       0.11       0.07
#> d[Low dose aspirin + copidogrel]                   0.10       0.09       0.07       0.08       0.07
#> d[Low dose aspirin + dipyridamole]                 0.07       0.05       0.04       0.04       0.03
#> d[Medium dose aspirin]                             0.11       0.08       0.04       0.02       0.01
#> d[Placebo/Standard care]                           0.08       0.14       0.21       0.22       0.18
#> d[Triflusal]                                       0.05       0.05       0.05       0.06       0.08
#> d[Ximelagatran]                                    0.01       0.01       0.00       0.00       0.00
#>                                              p_rank[16] p_rank[17]
#> d[Standard adjusted dose anti-coagulant]           0.00       0.00
#> d[Acenocoumarol]                                   0.00       0.00
#> d[Alternate day aspirin]                           0.02       0.02
#> d[Dipyridamole]                                    0.08       0.07
#> d[Fixed dose warfarin]                             0.21       0.24
#> d[Fixed dose warfarin + low dose aspirin]          0.05       0.05
#> d[Fixed dose warfarin + medium dose aspirin]       0.22       0.17
#> d[High dose aspirin]                               0.08       0.18
#> d[Indobufen]                                       0.03       0.02
#> d[Low adjusted dose anti-coagulant]                0.00       0.00
#> d[Low dose aspirin]                                0.03       0.01
#> d[Low dose aspirin + copidogrel]                   0.05       0.04
#> d[Low dose aspirin + dipyridamole]                 0.03       0.02
#> d[Medium dose aspirin]                             0.00       0.00
#> d[Placebo/Standard care]                           0.09       0.03
#> d[Triflusal]                                       0.11       0.17
#> d[Ximelagatran]                                    0.00       0.00
plot(af_1_rankprobs)

(af_1_cumrankprobs <- posterior_rank_probs(af_fit_1, cumulative = TRUE))
#>                                              p_rank[1] p_rank[2] p_rank[3] p_rank[4] p_rank[5]
#> d[Standard adjusted dose anti-coagulant]          0.00      0.01      0.09      0.29      0.57
#> d[Acenocoumarol]                                  0.37      0.68      0.78      0.83      0.86
#> d[Alternate day aspirin]                          0.48      0.65      0.71      0.75      0.78
#> d[Dipyridamole]                                   0.00      0.01      0.02      0.04      0.07
#> d[Fixed dose warfarin]                            0.00      0.00      0.00      0.01      0.01
#> d[Fixed dose warfarin + low dose aspirin]         0.00      0.02      0.04      0.08      0.13
#> d[Fixed dose warfarin + medium dose aspirin]      0.00      0.00      0.00      0.00      0.01
#> d[High dose aspirin]                              0.02      0.08      0.14      0.19      0.24
#> d[Indobufen]                                      0.01      0.05      0.12      0.21      0.29
#> d[Low adjusted dose anti-coagulant]               0.08      0.31      0.57      0.72      0.82
#> d[Low dose aspirin]                               0.00      0.00      0.00      0.00      0.00
#> d[Low dose aspirin + copidogrel]                  0.00      0.01      0.02      0.04      0.07
#> d[Low dose aspirin + dipyridamole]                0.01      0.05      0.13      0.21      0.28
#> d[Medium dose aspirin]                            0.00      0.00      0.00      0.01      0.04
#> d[Placebo/Standard care]                          0.00      0.00      0.00      0.00      0.00
#> d[Triflusal]                                      0.00      0.02      0.06      0.10      0.14
#> d[Ximelagatran]                                   0.02      0.11      0.30      0.51      0.68
#>                                              p_rank[6] p_rank[7] p_rank[8] p_rank[9] p_rank[10]
#> d[Standard adjusted dose anti-coagulant]          0.80      0.93      0.98      1.00       1.00
#> d[Acenocoumarol]                                  0.89      0.92      0.94      0.95       0.96
#> d[Alternate day aspirin]                          0.80      0.83      0.86      0.88       0.89
#> d[Dipyridamole]                                   0.12      0.17      0.24      0.32       0.41
#> d[Fixed dose warfarin]                            0.02      0.04      0.06      0.10       0.14
#> d[Fixed dose warfarin + low dose aspirin]         0.19      0.26      0.36      0.45       0.54
#> d[Fixed dose warfarin + medium dose aspirin]      0.01      0.02      0.04      0.07       0.12
#> d[High dose aspirin]                              0.29      0.34      0.40      0.45       0.50
#> d[Indobufen]                                      0.40      0.50      0.59      0.66       0.73
#> d[Low adjusted dose anti-coagulant]               0.88      0.93      0.96      0.97       0.99
#> d[Low dose aspirin]                               0.01      0.03      0.07      0.16       0.28
#> d[Low dose aspirin + copidogrel]                  0.12      0.20      0.31      0.41       0.52
#> d[Low dose aspirin + dipyridamole]                0.37      0.47      0.57      0.66       0.72
#> d[Medium dose aspirin]                            0.09      0.21      0.39      0.58       0.75
#> d[Placebo/Standard care]                          0.00      0.00      0.01      0.02       0.06
#> d[Triflusal]                                      0.19      0.25      0.31      0.37       0.43
#> d[Ximelagatran]                                   0.80      0.88      0.93      0.96       0.97
#>                                              p_rank[11] p_rank[12] p_rank[13] p_rank[14] p_rank[15]
#> d[Standard adjusted dose anti-coagulant]           1.00       1.00       1.00       1.00       1.00
#> d[Acenocoumarol]                                   0.97       0.97       0.98       0.99       0.99
#> d[Alternate day aspirin]                           0.91       0.92       0.93       0.95       0.96
#> d[Dipyridamole]                                    0.49       0.58       0.66       0.76       0.85
#> d[Fixed dose warfarin]                             0.19       0.25       0.32       0.41       0.55
#> d[Fixed dose warfarin + low dose aspirin]          0.62       0.71       0.78       0.84       0.90
#> d[Fixed dose warfarin + medium dose aspirin]       0.17       0.24       0.33       0.45       0.61
#> d[High dose aspirin]                               0.55       0.59       0.64       0.68       0.74
#> d[Indobufen]                                       0.80       0.85       0.89       0.92       0.95
#> d[Low adjusted dose anti-coagulant]                0.99       0.99       1.00       1.00       1.00
#> d[Low dose aspirin]                                0.45       0.63       0.78       0.90       0.96
#> d[Low dose aspirin + copidogrel]                   0.61       0.70       0.77       0.85       0.92
#> d[Low dose aspirin + dipyridamole]                 0.79       0.84       0.89       0.92       0.96
#> d[Medium dose aspirin]                             0.86       0.93       0.97       0.99       1.00
#> d[Placebo/Standard care]                           0.14       0.28       0.48       0.70       0.88
#> d[Triflusal]                                       0.48       0.53       0.58       0.64       0.73
#> d[Ximelagatran]                                    0.99       0.99       1.00       1.00       1.00
#>                                              p_rank[16] p_rank[17]
#> d[Standard adjusted dose anti-coagulant]           1.00          1
#> d[Acenocoumarol]                                   1.00          1
#> d[Alternate day aspirin]                           0.98          1
#> d[Dipyridamole]                                    0.93          1
#> d[Fixed dose warfarin]                             0.76          1
#> d[Fixed dose warfarin + low dose aspirin]          0.95          1
#> d[Fixed dose warfarin + medium dose aspirin]       0.83          1
#> d[High dose aspirin]                               0.82          1
#> d[Indobufen]                                       0.98          1
#> d[Low adjusted dose anti-coagulant]                1.00          1
#> d[Low dose aspirin]                                0.99          1
#> d[Low dose aspirin + copidogrel]                   0.96          1
#> d[Low dose aspirin + dipyridamole]                 0.98          1
#> d[Medium dose aspirin]                             1.00          1
#> d[Placebo/Standard care]                           0.98          1
#> d[Triflusal]                                       0.83          1
#> d[Ximelagatran]                                    1.00          1
plot(af_1_cumrankprobs)

Network meta-regression adjusting for proportion of prior stroke

We now consider a meta-regression model adjusting for the proportion of individuals in each study with prior stroke, with shared interaction coefficients by treatment class. The regression model is specified in the nma() function using a formula in the regression argument. The formula ~ .trt:stroke means that interactions of prior stroke with treatment will be included; the .trt special variable indicates treatment, and stroke is in the original data set. We specify class_interactions = "common" to denote that the interaction parameters are to be common (i.e. shared) between treatments within each class. (Setting class_interactions = "independent" would fit model 2 of Cooper et al. (2009) with separate interactions for each treatment, data permitting.) We use the same prior distributions as above, but additionally require a prior distribution for the regression coefficients prior_reg; we use a \(\mathrm{N}(0, 100^2)\) prior distribution. The QR decomposition can greatly improve the efficiency of sampling for regression models by decorrelating the sampling space; we specify that this should be used with QR = TRUE, and increase the target acceptance rate adapt_delta = 0.99 to minimise divergent transition warnings.

af_fit_4b <- nma(af_net, 
                 trt_effects = "random",
                 regression = ~ .trt:stroke,
                 class_interactions = "common",
                 QR = TRUE,
                 prior_intercept = normal(scale = 100),
                 prior_trt = normal(scale = 100),
                 prior_reg = normal(scale = 100),
                 prior_het = half_normal(scale = 5),
                 adapt_delta = 0.99)
#> Note: Setting "Standard adjusted dose anti-coagulant" as the network reference treatment.
#> Warning: There were 9 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 problems

Basic parameter summaries are given by the print() method:

af_fit_4b
#> A random effects NMA with a binomial likelihood (logit link).
#> Regression model: ~.trt:stroke.
#> Centred covariates at the following overall mean values:
#>    stroke 
#> 0.2957377 
#> 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%
#> beta[.trtclassControl:stroke]                    0.70    0.01 0.44    -0.17     0.41     0.70
#> beta[.trtclassAnti-platelet:stroke]              0.93    0.01 0.41     0.09     0.66     0.92
#> beta[.trtclassMixed:stroke]                      3.87    0.03 2.12    -0.22     2.45     3.85
#> d[Acenocoumarol]                                 0.36    0.01 0.99    -1.67    -0.29     0.36
#> d[Alternate day aspirin]                        -0.94    0.03 1.48    -4.26    -1.68    -0.75
#> d[Dipyridamole]                                  0.58    0.01 0.41    -0.23     0.31     0.58
#> d[Fixed dose warfarin]                           0.65    0.01 0.38    -0.08     0.39     0.64
#> d[Fixed dose warfarin + low dose aspirin]        1.45    0.01 0.75    -0.04     0.97     1.44
#> d[Fixed dose warfarin + medium dose aspirin]     1.00    0.00 0.30     0.41     0.80     0.99
#> d[High dose aspirin]                             0.43    0.01 0.75    -1.03    -0.09     0.44
#> d[Indobufen]                                    -0.41    0.01 0.48    -1.38    -0.72    -0.42
#> d[Low adjusted dose anti-coagulant]             -0.43    0.01 0.37    -1.14    -0.68    -0.42
#> d[Low dose aspirin]                              0.72    0.00 0.20     0.34     0.59     0.72
#> d[Low dose aspirin + copidogrel]                 0.65    0.01 0.28     0.10     0.48     0.64
#> d[Low dose aspirin + dipyridamole]               0.25    0.01 0.42    -0.61    -0.03     0.26
#> d[Medium dose aspirin]                           0.35    0.00 0.18     0.00     0.23     0.35
#> d[Placebo/Standard care]                         0.79    0.00 0.19     0.43     0.67     0.79
#> d[Triflusal]                                     0.93    0.01 0.59    -0.20     0.52     0.92
#> d[Ximelagatran]                                 -0.08    0.01 0.22    -0.49    -0.21    -0.08
#> lp__                                         -5016.74    0.20 6.88 -5030.95 -5021.36 -5016.39
#> tau                                              0.18    0.01 0.12     0.01     0.09     0.17
#>                                                   75%    97.5% n_eff Rhat
#> beta[.trtclassControl:stroke]                    0.98     1.58  4562    1
#> beta[.trtclassAnti-platelet:stroke]              1.19     1.74  4632    1
#> beta[.trtclassMixed:stroke]                      5.27     8.07  5145    1
#> d[Acenocoumarol]                                 1.03     2.23  4777    1
#> d[Alternate day aspirin]                         0.04     1.28  2135    1
#> d[Dipyridamole]                                  0.85     1.34  5133    1
#> d[Fixed dose warfarin]                           0.89     1.44  4750    1
#> d[Fixed dose warfarin + low dose aspirin]        1.95     2.91  5772    1
#> d[Fixed dose warfarin + medium dose aspirin]     1.19     1.60  4025    1
#> d[High dose aspirin]                             0.95     1.88  7699    1
#> d[Indobufen]                                    -0.09     0.55  2929    1
#> d[Low adjusted dose anti-coagulant]             -0.18     0.29  5180    1
#> d[Low dose aspirin]                              0.85     1.10  4963    1
#> d[Low dose aspirin + copidogrel]                 0.82     1.23  2482    1
#> d[Low dose aspirin + dipyridamole]               0.53     1.07  5688    1
#> d[Medium dose aspirin]                           0.46     0.69  4757    1
#> d[Placebo/Standard care]                         0.91     1.16  5067    1
#> d[Triflusal]                                     1.32     2.14  5086    1
#> d[Ximelagatran]                                  0.05     0.36  1812    1
#> lp__                                         -5011.73 -5004.46  1144    1
#> tau                                              0.26     0.46   457    1
#> 
#> Samples were drawn using NUTS(diag_e) at Tue Jan  9 17:59:35 2024.
#> 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).

The estimated treatment effects d[] shown here correspond to relative effects at the reference level of the covariate, here proportion of prior stroke centered at the network mean value 0.296.

By default, summaries of the study-specific intercepts \(\mu_j\) and study-specific relative effects \(\delta_{jk}\) are hidden, but could be examined by changing the pars argument:

# Not run
print(af_fit_4b, pars = c("d", "mu", "delta"))

The prior and posterior distributions can be compared visually using the plot_prior_posterior() function:

plot_prior_posterior(af_fit_4b, prior = c("reg", "het"))

We can compute relative effects against placebo/standard care with the relative_effects() function with the trt_ref argument, which by default produces relative effects for the observed proportions of prior stroke in each study:

# Not run
(af_4b_releff <- relative_effects(af_fit_4b, trt_ref = "Placebo/Standard care"))
plot(af_4b_releff, ref_line = 0)

We can produce estimated treatment effects for particular covariate values using the newdata argument. For example, treatment effects when no individuals or all individuals have prior stroke are produced by

(af_4b_releff_01 <- relative_effects(af_fit_4b, 
                                     trt_ref = "Placebo/Standard care",
                                     newdata = data.frame(stroke = c(0, 1), 
                                                          label = c("stroke = 0", "stroke = 1")),
                                     study = label))
#> ------------------------------------------------------------- Study: stroke = 0 ---- 
#> 
#> Covariate values:
#>  stroke
#>       0
#> 
#>                                                           mean   sd  2.5%   25%   50%   75% 97.5%
#> d[stroke = 0: Standard adjusted dose anti-coagulant]     -0.58 0.24 -1.03 -0.74 -0.58 -0.42 -0.14
#> d[stroke = 0: Acenocoumarol]                             -1.37 0.84 -3.15 -1.88 -1.36 -0.80  0.23
#> d[stroke = 0: Alternate day aspirin]                     -1.80 1.48 -5.07 -2.53 -1.62 -0.81  0.44
#> d[stroke = 0: Dipyridamole]                              -0.28 0.44 -1.14 -0.57 -0.28  0.02  0.55
#> d[stroke = 0: Fixed dose warfarin]                        0.07 0.43 -0.78 -0.23  0.06  0.34  0.95
#> d[stroke = 0: Fixed dose warfarin + low dose aspirin]    -0.28 0.33 -0.91 -0.48 -0.28 -0.08  0.39
#> d[stroke = 0: Fixed dose warfarin + medium dose aspirin] -0.73 0.66 -2.03 -1.16 -0.74 -0.30  0.59
#> d[stroke = 0: High dose aspirin]                         -0.43 0.79 -1.99 -0.97 -0.42  0.12  1.09
#> d[stroke = 0: Indobufen]                                 -1.27 0.56 -2.35 -1.62 -1.27 -0.91 -0.17
#> d[stroke = 0: Low adjusted dose anti-coagulant]          -1.01 0.33 -1.66 -1.23 -1.00 -0.79 -0.37
#> d[stroke = 0: Low dose aspirin]                          -0.14 0.23 -0.58 -0.29 -0.14  0.01  0.29
#> d[stroke = 0: Low dose aspirin + copidogrel]             -0.21 0.35 -0.90 -0.43 -0.21  0.01  0.50
#> d[stroke = 0: Low dose aspirin + dipyridamole]           -0.61 0.46 -1.53 -0.91 -0.61 -0.30  0.28
#> d[stroke = 0: Medium dose aspirin]                       -0.51 0.26 -1.01 -0.69 -0.51 -0.34  0.00
#> d[stroke = 0: Triflusal]                                  0.07 0.63 -1.12 -0.35  0.07  0.48  1.35
#> d[stroke = 0: Ximelagatran]                              -0.66 0.32 -1.29 -0.87 -0.66 -0.46 -0.03
#>                                                          Bulk_ESS Tail_ESS Rhat
#> d[stroke = 0: Standard adjusted dose anti-coagulant]         4634     2641    1
#> d[stroke = 0: Acenocoumarol]                                 4476     2240    1
#> d[stroke = 0: Alternate day aspirin]                         3453     1839    1
#> d[stroke = 0: Dipyridamole]                                  4963     2665    1
#> d[stroke = 0: Fixed dose warfarin]                           5186     2843    1
#> d[stroke = 0: Fixed dose warfarin + low dose aspirin]        4886     2731    1
#> d[stroke = 0: Fixed dose warfarin + medium dose aspirin]     4938     2404    1
#> d[stroke = 0: High dose aspirin]                             6949     3581    1
#> d[stroke = 0: Indobufen]                                     3791     2665    1
#> d[stroke = 0: Low adjusted dose anti-coagulant]              6520     2953    1
#> d[stroke = 0: Low dose aspirin]                              5197     3078    1
#> d[stroke = 0: Low dose aspirin + copidogrel]                 3007     2332    1
#> d[stroke = 0: Low dose aspirin + dipyridamole]               5658     2996    1
#> d[stroke = 0: Medium dose aspirin]                           5213     3185    1
#> d[stroke = 0: Triflusal]                                     5415     2728    1
#> d[stroke = 0: Ximelagatran]                                  3269     1890    1
#> 
#> ------------------------------------------------------------- Study: stroke = 1 ---- 
#> 
#> Covariate values:
#>  stroke
#>       1
#> 
#>                                                           mean   sd  2.5%   25%   50%   75% 97.5%
#> d[stroke = 1: Standard adjusted dose anti-coagulant]     -1.29 0.35 -1.98 -1.51 -1.28 -1.06 -0.61
#> d[stroke = 1: Acenocoumarol]                              1.79 2.25 -2.53  0.28  1.78  3.31  6.15
#> d[stroke = 1: Alternate day aspirin]                     -1.58 1.50 -4.96 -2.33 -1.39 -0.59  0.71
#> d[stroke = 1: Dipyridamole]                              -0.06 0.39 -0.86 -0.31 -0.05  0.22  0.69
#> d[stroke = 1: Fixed dose warfarin]                       -0.64 0.52 -1.62 -1.00 -0.64 -0.30  0.38
#> d[stroke = 1: Fixed dose warfarin + low dose aspirin]     2.89 2.19 -1.37  1.44  2.84  4.34  7.19
#> d[stroke = 1: Fixed dose warfarin + medium dose aspirin]  2.44 1.62 -0.67  1.36  2.43  3.51  5.67
#> d[stroke = 1: High dose aspirin]                         -0.20 0.74 -1.64 -0.70 -0.21  0.30  1.24
#> d[stroke = 1: Indobufen]                                 -1.04 0.53 -2.10 -1.39 -1.03 -0.70 -0.04
#> d[stroke = 1: Low adjusted dose anti-coagulant]          -1.72 0.50 -2.71 -2.04 -1.70 -1.38 -0.73
#> d[stroke = 1: Low dose aspirin]                           0.08 0.29 -0.51 -0.09  0.09  0.27  0.65
#> d[stroke = 1: Low dose aspirin + copidogrel]              0.01 0.39 -0.78 -0.22  0.02  0.26  0.79
#> d[stroke = 1: Low dose aspirin + dipyridamole]           -0.39 0.41 -1.20 -0.64 -0.39 -0.12  0.43
#> d[stroke = 1: Medium dose aspirin]                       -0.29 0.25 -0.81 -0.44 -0.28 -0.13  0.20
#> d[stroke = 1: Triflusal]                                  0.29 0.65 -0.96 -0.14  0.29  0.72  1.59
#> d[stroke = 1: Ximelagatran]                              -1.36 0.41 -2.19 -1.63 -1.36 -1.11 -0.55
#>                                                          Bulk_ESS Tail_ESS Rhat
#> d[stroke = 1: Standard adjusted dose anti-coagulant]         5253     2803    1
#> d[stroke = 1: Acenocoumarol]                                 5469     3296    1
#> d[stroke = 1: Alternate day aspirin]                         3471     1827    1
#> d[stroke = 1: Dipyridamole]                                  5512     2568    1
#> d[stroke = 1: Fixed dose warfarin]                           4667     2415    1
#> d[stroke = 1: Fixed dose warfarin + low dose aspirin]        5561     2993    1
#> d[stroke = 1: Fixed dose warfarin + medium dose aspirin]     5495     2958    1
#> d[stroke = 1: High dose aspirin]                             7169     2983    1
#> d[stroke = 1: Indobufen]                                     3219     2128    1
#> d[stroke = 1: Low adjusted dose anti-coagulant]              4853     2936    1
#> d[stroke = 1: Low dose aspirin]                              5811     3024    1
#> d[stroke = 1: Low dose aspirin + copidogrel]                 3535     2513    1
#> d[stroke = 1: Low dose aspirin + dipyridamole]               5677     3038    1
#> d[stroke = 1: Medium dose aspirin]                           4469     1901    1
#> d[stroke = 1: Triflusal]                                     5178     2802    1
#> d[stroke = 1: Ximelagatran]                                  4628     2118    1
plot(af_4b_releff_01, ref_line = 0)

The estimated class interactions (against the reference “Mixed” class) are very uncertain.

plot(af_fit_4b, pars = "beta", stat = "halfeye", ref_line = 0)

The interactions are more straightforward to interpret if we transform the interaction coefficients (using the consistency equations) so that they are against the control class:

af_4b_beta <- as.array(af_fit_4b, pars = "beta")

# Subtract beta[Control:stroke] from the other class interactions
af_4b_beta[ , , 2:3] <- sweep(af_4b_beta[ , , 2:3], 1:2, 
                              af_4b_beta[ , , "beta[.trtclassControl:stroke]"], FUN = "-")

# Set beta[Anti-coagulant:stroke] = -beta[Control:stroke]
af_4b_beta[ , , "beta[.trtclassControl:stroke]"] <- -af_4b_beta[ , , "beta[.trtclassControl:stroke]"]
names(af_4b_beta)[1] <- "beta[.trtclassAnti-coagulant:stroke]"

# Summarise
summary(af_4b_beta)
#>                                       mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS
#> beta[.trtclassAnti-coagulant:stroke] -0.70 0.44 -1.58 -0.98 -0.70 -0.41  0.17     4551     3050
#> beta[.trtclassAnti-platelet:stroke]   0.22 0.34 -0.46  0.00  0.21  0.44  0.90     4732     3203
#> beta[.trtclassMixed:stroke]           3.17 2.16 -1.04  1.73  3.12  4.60  7.46     5425     3012
#>                                      Rhat
#> beta[.trtclassAnti-coagulant:stroke]    1
#> beta[.trtclassAnti-platelet:stroke]     1
#> beta[.trtclassMixed:stroke]             1
plot(summary(af_4b_beta), stat = "halfeye", ref_line = 0)

There is some evidence that the effect of anti-coagulants increases (compared to control) with prior stroke. There is little evidence the effect of anti-platelets reduces with prior stroke, although the point estimate represents a substantial reduction in effectiveness, and the 95% Credible Interval includes values that correspond to substantial increases in treatment effect. The interaction effect of stroke on mixed treatments is very uncertain, but potentially indicates a substantial reduction in treatment effects with prior stroke.

We can also produce treatment rankings, rank probabilities, and cumulative rank probabilities. By default (without the newdata argument specified), these are produced at the value of stroke for each study in the network in turn. To instead produce rankings for when no individuals or all individuals have prior stroke, we specify the newdata argument.

(af_4b_ranks <- posterior_ranks(af_fit_4b,
                                newdata = data.frame(stroke = c(0, 1), 
                                                     label = c("stroke = 0", "stroke = 1")), 
                                study = label))
#> ------------------------------------------------------------- Study: stroke = 0 ---- 
#> 
#> Covariate values:
#>  stroke
#>       0
#> 
#>                                                              mean   sd 2.5% 25% 50% 75% 97.5%
#> rank[stroke = 0: Standard adjusted dose anti-coagulant]      7.69 1.86    4   6   8   9    11
#> rank[stroke = 0: Acenocoumarol]                              4.00 3.74    1   1   3   5    15
#> rank[stroke = 0: Alternate day aspirin]                      4.03 4.48    1   1   2   5    17
#> rank[stroke = 0: Dipyridamole]                              11.18 3.66    4   9  11  14    17
#> rank[stroke = 0: Fixed dose warfarin]                       14.15 2.82    7  13  15  16    17
#> rank[stroke = 0: Fixed dose warfarin + low dose aspirin]    11.02 3.66    4   8  11  14    17
#> rank[stroke = 0: Fixed dose warfarin + medium dose aspirin]  7.22 4.58    1   3   6  11    17
#> rank[stroke = 0: High dose aspirin]                          9.70 5.34    1   5  10  15    17
#> rank[stroke = 0: Indobufen]                                  3.62 2.70    1   2   3   4    12
#> rank[stroke = 0: Low adjusted dose anti-coagulant]           4.51 2.42    1   3   4   6    11
#> rank[stroke = 0: Low dose aspirin]                          12.86 1.95    9  12  13  14    16
#> rank[stroke = 0: Low dose aspirin + copidogrel]             11.98 2.92    6  10  12  14    17
#> rank[stroke = 0: Low dose aspirin + dipyridamole]            7.86 3.67    2   5   7  10    16
#> rank[stroke = 0: Medium dose aspirin]                        8.59 2.17    4   7   9  10    13
#> rank[stroke = 0: Placebo/Standard care]                     14.22 1.95   10  13  15  16    17
#> rank[stroke = 0: Triflusal]                                 13.43 3.98    4  11  15  17    17
#> rank[stroke = 0: Ximelagatran]                               6.95 2.67    3   5   7   9    13
#>                                                             Bulk_ESS Tail_ESS Rhat
#> rank[stroke = 0: Standard adjusted dose anti-coagulant]         4362     3245    1
#> rank[stroke = 0: Acenocoumarol]                                 4594     3642    1
#> rank[stroke = 0: Alternate day aspirin]                         4764     3638    1
#> rank[stroke = 0: Dipyridamole]                                  4956       NA    1
#> rank[stroke = 0: Fixed dose warfarin]                           5367       NA    1
#> rank[stroke = 0: Fixed dose warfarin + low dose aspirin]        4953     2926    1
#> rank[stroke = 0: Fixed dose warfarin + medium dose aspirin]     4857     3147    1
#> rank[stroke = 0: High dose aspirin]                             6906       NA    1
#> rank[stroke = 0: Indobufen]                                     3434     2581    1
#> rank[stroke = 0: Low adjusted dose anti-coagulant]              4312     3475    1
#> rank[stroke = 0: Low dose aspirin]                              4670     3413    1
#> rank[stroke = 0: Low dose aspirin + copidogrel]                 3031     2544    1
#> rank[stroke = 0: Low dose aspirin + dipyridamole]               5589     3497    1
#> rank[stroke = 0: Medium dose aspirin]                           4938     3575    1
#> rank[stroke = 0: Placebo/Standard care]                         3457       NA    1
#> rank[stroke = 0: Triflusal]                                     5635       NA    1
#> rank[stroke = 0: Ximelagatran]                                  3779     1771    1
#> 
#> ------------------------------------------------------------- Study: stroke = 1 ---- 
#> 
#> Covariate values:
#>  stroke
#>       1
#> 
#>                                                              mean   sd 2.5% 25%  50% 75% 97.5%
#> rank[stroke = 1: Standard adjusted dose anti-coagulant]      3.62 1.12    2   3  4.0   4     6
#> rank[stroke = 1: Acenocoumarol]                             13.14 4.44    1  14 15.0  16    17
#> rank[stroke = 1: Alternate day aspirin]                      4.47 4.01    1   1  3.0   7    14
#> rank[stroke = 1: Dipyridamole]                              10.62 2.70    6   9 11.0  13    15
#> rank[stroke = 1: Fixed dose warfarin]                        7.17 2.75    3   5  6.0   8    14
#> rank[stroke = 1: Fixed dose warfarin + low dose aspirin]    15.71 3.01    5  16 17.0  17    17
#> rank[stroke = 1: Fixed dose warfarin + medium dose aspirin] 15.39 1.98    8  15 16.0  16    17
#> rank[stroke = 1: High dose aspirin]                          9.52 3.99    2   6  9.0  13    16
#> rank[stroke = 1: Indobufen]                                  4.96 2.15    1   4  5.0   6    10
#> rank[stroke = 1: Low adjusted dose anti-coagulant]           2.02 1.30    1   1  2.0   2     5
#> rank[stroke = 1: Low dose aspirin]                          11.85 1.84    8  11 12.0  13    16
#> rank[stroke = 1: Low dose aspirin + copidogrel]             11.14 2.44    6   9 11.0  13    16
#> rank[stroke = 1: Low dose aspirin + dipyridamole]            8.20 2.63    3   6  8.0  10    14
#> rank[stroke = 1: Medium dose aspirin]                        8.63 1.71    6   7  8.5  10    12
#> rank[stroke = 1: Placebo/Standard care]                     11.18 1.98    7  10 11.0  13    15
#> rank[stroke = 1: Triflusal]                                 12.20 3.12    5  10 13.0  14    17
#> rank[stroke = 1: Ximelagatran]                               3.18 1.43    1   2  3.0   4     6
#>                                                             Bulk_ESS Tail_ESS Rhat
#> rank[stroke = 1: Standard adjusted dose anti-coagulant]         3559     3436    1
#> rank[stroke = 1: Acenocoumarol]                                 4338       NA    1
#> rank[stroke = 1: Alternate day aspirin]                         4720     3214    1
#> rank[stroke = 1: Dipyridamole]                                  4671     3179    1
#> rank[stroke = 1: Fixed dose warfarin]                           3937     2989    1
#> rank[stroke = 1: Fixed dose warfarin + low dose aspirin]        3791       NA    1
#> rank[stroke = 1: Fixed dose warfarin + medium dose aspirin]     3408       NA    1
#> rank[stroke = 1: High dose aspirin]                             6368     2865    1
#> rank[stroke = 1: Indobufen]                                     3829     2755    1
#> rank[stroke = 1: Low adjusted dose anti-coagulant]              3476     3187    1
#> rank[stroke = 1: Low dose aspirin]                              4046     3000    1
#> rank[stroke = 1: Low dose aspirin + copidogrel]                 3316     2866    1
#> rank[stroke = 1: Low dose aspirin + dipyridamole]               4983     3143    1
#> rank[stroke = 1: Medium dose aspirin]                           3922     3315    1
#> rank[stroke = 1: Placebo/Standard care]                         4793     3116    1
#> rank[stroke = 1: Triflusal]                                     5238       NA    1
#> rank[stroke = 1: Ximelagatran]                                  3094     1493    1
plot(af_4b_ranks)

(af_4b_rankprobs <- posterior_rank_probs(af_fit_4b,
                                         newdata = data.frame(stroke = c(0, 1), 
                                                              label = c("stroke = 0", "stroke = 1")), 
                                         study = label))
#> ------------------------------------------------------------- Study: stroke = 0 ---- 
#> 
#> Covariate values:
#>  stroke
#>       0
#> 
#>                                                          p_rank[1] p_rank[2] p_rank[3] p_rank[4]
#> d[stroke = 0: Standard adjusted dose anti-coagulant]          0.00      0.00      0.00      0.03
#> d[stroke = 0: Acenocoumarol]                                  0.26      0.23      0.13      0.09
#> d[stroke = 0: Alternate day aspirin]                          0.45      0.14      0.08      0.06
#> d[stroke = 0: Dipyridamole]                                   0.00      0.00      0.01      0.03
#> d[stroke = 0: Fixed dose warfarin]                            0.00      0.00      0.00      0.00
#> d[stroke = 0: Fixed dose warfarin + low dose aspirin]         0.00      0.00      0.01      0.03
#> d[stroke = 0: Fixed dose warfarin + medium dose aspirin]      0.04      0.10      0.12      0.11
#> d[stroke = 0: High dose aspirin]                              0.03      0.06      0.08      0.08
#> d[stroke = 0: Indobufen]                                      0.15      0.27      0.20      0.13
#> d[stroke = 0: Low adjusted dose anti-coagulant]               0.05      0.14      0.21      0.20
#> d[stroke = 0: Low dose aspirin]                               0.00      0.00      0.00      0.00
#> d[stroke = 0: Low dose aspirin + copidogrel]                  0.00      0.00      0.00      0.01
#> d[stroke = 0: Low dose aspirin + dipyridamole]                0.01      0.03      0.07      0.10
#> d[stroke = 0: Medium dose aspirin]                            0.00      0.00      0.00      0.02
#> d[stroke = 0: Placebo/Standard care]                          0.00      0.00      0.00      0.00
#> d[stroke = 0: Triflusal]                                      0.00      0.00      0.01      0.02
#> d[stroke = 0: Ximelagatran]                                   0.00      0.02      0.05      0.10
#>                                                          p_rank[5] p_rank[6] p_rank[7] p_rank[8]
#> d[stroke = 0: Standard adjusted dose anti-coagulant]          0.09      0.15      0.21      0.20
#> d[stroke = 0: Acenocoumarol]                                  0.06      0.04      0.03      0.02
#> d[stroke = 0: Alternate day aspirin]                          0.04      0.03      0.02      0.02
#> d[stroke = 0: Dipyridamole]                                   0.03      0.05      0.06      0.06
#> d[stroke = 0: Fixed dose warfarin]                            0.00      0.01      0.01      0.02
#> d[stroke = 0: Fixed dose warfarin + low dose aspirin]         0.04      0.05      0.05      0.06
#> d[stroke = 0: Fixed dose warfarin + medium dose aspirin]      0.10      0.07      0.06      0.05
#> d[stroke = 0: High dose aspirin]                              0.06      0.05      0.04      0.04
#> d[stroke = 0: Indobufen]                                      0.07      0.05      0.03      0.02
#> d[stroke = 0: Low adjusted dose anti-coagulant]               0.14      0.09      0.06      0.04
#> d[stroke = 0: Low dose aspirin]                               0.00      0.00      0.00      0.01
#> d[stroke = 0: Low dose aspirin + copidogrel]                  0.01      0.02      0.03      0.05
#> d[stroke = 0: Low dose aspirin + dipyridamole]                0.11      0.11      0.09      0.08
#> d[stroke = 0: Medium dose aspirin]                            0.05      0.09      0.15      0.17
#> d[stroke = 0: Placebo/Standard care]                          0.00      0.00      0.00      0.00
#> d[stroke = 0: Triflusal]                                      0.03      0.03      0.02      0.03
#> d[stroke = 0: Ximelagatran]                                   0.16      0.16      0.13      0.12
#>                                                          p_rank[9] p_rank[10] p_rank[11] p_rank[12]
#> d[stroke = 0: Standard adjusted dose anti-coagulant]          0.16       0.10       0.05       0.01
#> d[stroke = 0: Acenocoumarol]                                  0.02       0.02       0.02       0.01
#> d[stroke = 0: Alternate day aspirin]                          0.02       0.02       0.02       0.02
#> d[stroke = 0: Dipyridamole]                                   0.08       0.08       0.09       0.09
#> d[stroke = 0: Fixed dose warfarin]                            0.03       0.04       0.06       0.07
#> d[stroke = 0: Fixed dose warfarin + low dose aspirin]         0.08       0.09       0.09       0.10
#> d[stroke = 0: Fixed dose warfarin + medium dose aspirin]      0.05       0.04       0.04       0.04
#> d[stroke = 0: High dose aspirin]                              0.03       0.05       0.05       0.05
#> d[stroke = 0: Indobufen]                                      0.02       0.01       0.01       0.01
#> d[stroke = 0: Low adjusted dose anti-coagulant]               0.03       0.02       0.01       0.01
#> d[stroke = 0: Low dose aspirin]                               0.03       0.06       0.12       0.17
#> d[stroke = 0: Low dose aspirin + copidogrel]                  0.06       0.11       0.12       0.13
#> d[stroke = 0: Low dose aspirin + dipyridamole]                0.09       0.08       0.07       0.05
#> d[stroke = 0: Medium dose aspirin]                            0.17       0.15       0.10       0.06
#> d[stroke = 0: Placebo/Standard care]                          0.01       0.03       0.05       0.09
#> d[stroke = 0: Triflusal]                                      0.04       0.04       0.06       0.05
#> d[stroke = 0: Ximelagatran]                                   0.08       0.06       0.05       0.03
#>                                                          p_rank[13] p_rank[14] p_rank[15]
#> d[stroke = 0: Standard adjusted dose anti-coagulant]           0.00       0.00       0.00
#> d[stroke = 0: Acenocoumarol]                                   0.02       0.01       0.02
#> d[stroke = 0: Alternate day aspirin]                           0.02       0.01       0.01
#> d[stroke = 0: Dipyridamole]                                    0.10       0.09       0.08
#> d[stroke = 0: Fixed dose warfarin]                             0.09       0.09       0.15
#> d[stroke = 0: Fixed dose warfarin + low dose aspirin]          0.10       0.09       0.08
#> d[stroke = 0: Fixed dose warfarin + medium dose aspirin]       0.04       0.04       0.04
#> d[stroke = 0: High dose aspirin]                               0.04       0.05       0.06
#> d[stroke = 0: Indobufen]                                       0.00       0.01       0.00
#> d[stroke = 0: Low adjusted dose anti-coagulant]                0.01       0.00       0.00
#> d[stroke = 0: Low dose aspirin]                                0.20       0.20       0.13
#> d[stroke = 0: Low dose aspirin + copidogrel]                   0.13       0.12       0.10
#> d[stroke = 0: Low dose aspirin + dipyridamole]                 0.04       0.03       0.03
#> d[stroke = 0: Medium dose aspirin]                             0.02       0.01       0.00
#> d[stroke = 0: Placebo/Standard care]                           0.13       0.18       0.21
#> d[stroke = 0: Triflusal]                                       0.06       0.07       0.09
#> d[stroke = 0: Ximelagatran]                                    0.02       0.01       0.01
#>                                                          p_rank[16] p_rank[17]
#> d[stroke = 0: Standard adjusted dose anti-coagulant]           0.00       0.00
#> d[stroke = 0: Acenocoumarol]                                   0.02       0.00
#> d[stroke = 0: Alternate day aspirin]                           0.02       0.03
#> d[stroke = 0: Dipyridamole]                                    0.08       0.06
#> d[stroke = 0: Fixed dose warfarin]                             0.19       0.23
#> d[stroke = 0: Fixed dose warfarin + low dose aspirin]          0.07       0.05
#> d[stroke = 0: Fixed dose warfarin + medium dose aspirin]       0.04       0.03
#> d[stroke = 0: High dose aspirin]                               0.09       0.14
#> d[stroke = 0: Indobufen]                                       0.00       0.00
#> d[stroke = 0: Low adjusted dose anti-coagulant]                0.00       0.00
#> d[stroke = 0: Low dose aspirin]                                0.06       0.02
#> d[stroke = 0: Low dose aspirin + copidogrel]                   0.08       0.04
#> d[stroke = 0: Low dose aspirin + dipyridamole]                 0.02       0.01
#> d[stroke = 0: Medium dose aspirin]                             0.00       0.00
#> d[stroke = 0: Placebo/Standard care]                           0.20       0.10
#> d[stroke = 0: Triflusal]                                       0.14       0.31
#> d[stroke = 0: Ximelagatran]                                    0.00       0.00
#> 
#> ------------------------------------------------------------- Study: stroke = 1 ---- 
#> 
#> Covariate values:
#>  stroke
#>       1
#> 
#>                                                          p_rank[1] p_rank[2] p_rank[3] p_rank[4]
#> d[stroke = 1: Standard adjusted dose anti-coagulant]          0.01      0.13      0.32      0.34
#> d[stroke = 1: Acenocoumarol]                                  0.04      0.03      0.01      0.01
#> d[stroke = 1: Alternate day aspirin]                          0.37      0.10      0.05      0.06
#> d[stroke = 1: Dipyridamole]                                   0.00      0.00      0.00      0.01
#> d[stroke = 1: Fixed dose warfarin]                            0.00      0.01      0.02      0.06
#> d[stroke = 1: Fixed dose warfarin + low dose aspirin]         0.00      0.01      0.01      0.00
#> d[stroke = 1: Fixed dose warfarin + medium dose aspirin]      0.00      0.00      0.00      0.00
#> d[stroke = 1: High dose aspirin]                              0.02      0.02      0.03      0.03
#> d[stroke = 1: Indobufen]                                      0.03      0.09      0.11      0.18
#> d[stroke = 1: Low adjusted dose anti-coagulant]               0.43      0.33      0.11      0.06
#> d[stroke = 1: Low dose aspirin]                               0.00      0.00      0.00      0.00
#> d[stroke = 1: Low dose aspirin + copidogrel]                  0.00      0.00      0.00      0.00
#> d[stroke = 1: Low dose aspirin + dipyridamole]                0.00      0.01      0.02      0.02
#> d[stroke = 1: Medium dose aspirin]                            0.00      0.00      0.00      0.00
#> d[stroke = 1: Placebo/Standard care]                          0.00      0.00      0.00      0.00
#> d[stroke = 1: Triflusal]                                      0.00      0.00      0.01      0.01
#> d[stroke = 1: Ximelagatran]                                   0.08      0.26      0.30      0.20
#>                                                          p_rank[5] p_rank[6] p_rank[7] p_rank[8]
#> d[stroke = 1: Standard adjusted dose anti-coagulant]          0.14      0.03      0.01      0.00
#> d[stroke = 1: Acenocoumarol]                                  0.02      0.02      0.02      0.02
#> d[stroke = 1: Alternate day aspirin]                          0.08      0.08      0.06      0.03
#> d[stroke = 1: Dipyridamole]                                   0.01      0.04      0.07      0.11
#> d[stroke = 1: Fixed dose warfarin]                            0.18      0.24      0.16      0.09
#> d[stroke = 1: Fixed dose warfarin + low dose aspirin]         0.01      0.01      0.01      0.01
#> d[stroke = 1: Fixed dose warfarin + medium dose aspirin]      0.00      0.00      0.01      0.01
#> d[stroke = 1: High dose aspirin]                              0.07      0.10      0.11      0.07
#> d[stroke = 1: Indobufen]                                      0.25      0.16      0.08      0.04
#> d[stroke = 1: Low adjusted dose anti-coagulant]               0.03      0.01      0.00      0.00
#> d[stroke = 1: Low dose aspirin]                               0.00      0.00      0.01      0.03
#> d[stroke = 1: Low dose aspirin + copidogrel]                  0.01      0.02      0.04      0.06
#> d[stroke = 1: Low dose aspirin + dipyridamole]                0.07      0.13      0.18      0.15
#> d[stroke = 1: Medium dose aspirin]                            0.02      0.06      0.17      0.25
#> d[stroke = 1: Placebo/Standard care]                          0.00      0.01      0.02      0.06
#> d[stroke = 1: Triflusal]                                      0.01      0.03      0.04      0.05
#> d[stroke = 1: Ximelagatran]                                   0.10      0.04      0.01      0.00
#>                                                          p_rank[9] p_rank[10] p_rank[11] p_rank[12]
#> d[stroke = 1: Standard adjusted dose anti-coagulant]          0.00       0.00       0.00       0.00
#> d[stroke = 1: Acenocoumarol]                                  0.01       0.01       0.01       0.02
#> d[stroke = 1: Alternate day aspirin]                          0.03       0.02       0.02       0.02
#> d[stroke = 1: Dipyridamole]                                   0.11       0.13       0.12       0.12
#> d[stroke = 1: Fixed dose warfarin]                            0.06       0.05       0.03       0.04
#> d[stroke = 1: Fixed dose warfarin + low dose aspirin]         0.01       0.01       0.01       0.01
#> d[stroke = 1: Fixed dose warfarin + medium dose aspirin]      0.01       0.00       0.01       0.01
#> d[stroke = 1: High dose aspirin]                              0.06       0.06       0.06       0.06
#> d[stroke = 1: Indobufen]                                      0.02       0.01       0.01       0.01
#> d[stroke = 1: Low adjusted dose anti-coagulant]               0.00       0.00       0.00       0.00
#> d[stroke = 1: Low dose aspirin]                               0.06       0.11       0.18       0.24
#> d[stroke = 1: Low dose aspirin + copidogrel]                  0.11       0.13       0.15       0.16
#> d[stroke = 1: Low dose aspirin + dipyridamole]                0.13       0.09       0.07       0.05
#> d[stroke = 1: Medium dose aspirin]                            0.23       0.14       0.08       0.03
#> d[stroke = 1: Placebo/Standard care]                          0.11       0.17       0.19       0.18
#> d[stroke = 1: Triflusal]                                      0.05       0.05       0.07       0.08
#> d[stroke = 1: Ximelagatran]                                   0.00       0.00       0.00       0.00
#>                                                          p_rank[13] p_rank[14] p_rank[15]
#> d[stroke = 1: Standard adjusted dose anti-coagulant]           0.00       0.00       0.00
#> d[stroke = 1: Acenocoumarol]                                   0.02       0.05       0.44
#> d[stroke = 1: Alternate day aspirin]                           0.02       0.03       0.01
#> d[stroke = 1: Dipyridamole]                                    0.12       0.10       0.03
#> d[stroke = 1: Fixed dose warfarin]                             0.02       0.02       0.01
#> d[stroke = 1: Fixed dose warfarin + low dose aspirin]          0.01       0.02       0.05
#> d[stroke = 1: Fixed dose warfarin + medium dose aspirin]       0.01       0.02       0.25
#> d[stroke = 1: High dose aspirin]                               0.10       0.13       0.04
#> d[stroke = 1: Indobufen]                                       0.00       0.00       0.00
#> d[stroke = 1: Low adjusted dose anti-coagulant]                0.00       0.00       0.00
#> d[stroke = 1: Low dose aspirin]                                0.21       0.11       0.03
#> d[stroke = 1: Low dose aspirin + copidogrel]                   0.15       0.11       0.03
#> d[stroke = 1: Low dose aspirin + dipyridamole]                 0.04       0.02       0.01
#> d[stroke = 1: Medium dose aspirin]                             0.01       0.01       0.00
#> d[stroke = 1: Placebo/Standard care]                           0.14       0.07       0.03
#> d[stroke = 1: Triflusal]                                       0.13       0.31       0.06
#> d[stroke = 1: Ximelagatran]                                    0.00       0.00       0.00
#>                                                          p_rank[16] p_rank[17]
#> d[stroke = 1: Standard adjusted dose anti-coagulant]           0.00       0.00
#> d[stroke = 1: Acenocoumarol]                                   0.19       0.07
#> d[stroke = 1: Alternate day aspirin]                           0.00       0.00
#> d[stroke = 1: Dipyridamole]                                    0.02       0.01
#> d[stroke = 1: Fixed dose warfarin]                             0.01       0.00
#> d[stroke = 1: Fixed dose warfarin + low dose aspirin]          0.19       0.65
#> d[stroke = 1: Fixed dose warfarin + medium dose aspirin]       0.50       0.16
#> d[stroke = 1: High dose aspirin]                               0.02       0.02
#> d[stroke = 1: Indobufen]                                       0.00       0.00
#> d[stroke = 1: Low adjusted dose anti-coagulant]                0.00       0.00
#> d[stroke = 1: Low dose aspirin]                                0.02       0.01
#> d[stroke = 1: Low dose aspirin + copidogrel]                   0.02       0.01
#> d[stroke = 1: Low dose aspirin + dipyridamole]                 0.00       0.00
#> d[stroke = 1: Medium dose aspirin]                             0.00       0.00
#> d[stroke = 1: Placebo/Standard care]                           0.01       0.00
#> d[stroke = 1: Triflusal]                                       0.03       0.06
#> d[stroke = 1: Ximelagatran]                                    0.00       0.00

# Modify the default output with ggplot2 functionality
library(ggplot2)
plot(af_4b_rankprobs) + 
  facet_grid(Treatment~Study, labeller = label_wrap_gen(20)) + 
  theme(strip.text.y = element_text(angle = 0))

(af_4b_cumrankprobs <- posterior_rank_probs(af_fit_4b, cumulative = TRUE,
                                            newdata = data.frame(stroke = c(0, 1), 
                                                                 label = c("stroke = 0", "stroke = 1")), 
                                            study = label))
#> ------------------------------------------------------------- Study: stroke = 0 ---- 
#> 
#> Covariate values:
#>  stroke
#>       0
#> 
#>                                                          p_rank[1] p_rank[2] p_rank[3] p_rank[4]
#> d[stroke = 0: Standard adjusted dose anti-coagulant]          0.00      0.00      0.01      0.03
#> d[stroke = 0: Acenocoumarol]                                  0.26      0.50      0.63      0.72
#> d[stroke = 0: Alternate day aspirin]                          0.45      0.59      0.67      0.73
#> d[stroke = 0: Dipyridamole]                                   0.00      0.01      0.02      0.04
#> d[stroke = 0: Fixed dose warfarin]                            0.00      0.00      0.00      0.00
#> d[stroke = 0: Fixed dose warfarin + low dose aspirin]         0.00      0.01      0.02      0.05
#> d[stroke = 0: Fixed dose warfarin + medium dose aspirin]      0.04      0.14      0.26      0.37
#> d[stroke = 0: High dose aspirin]                              0.03      0.09      0.16      0.24
#> d[stroke = 0: Indobufen]                                      0.15      0.43      0.63      0.76
#> d[stroke = 0: Low adjusted dose anti-coagulant]               0.05      0.18      0.40      0.59
#> d[stroke = 0: Low dose aspirin]                               0.00      0.00      0.00      0.00
#> d[stroke = 0: Low dose aspirin + copidogrel]                  0.00      0.00      0.01      0.01
#> d[stroke = 0: Low dose aspirin + dipyridamole]                0.01      0.04      0.11      0.20
#> d[stroke = 0: Medium dose aspirin]                            0.00      0.00      0.00      0.03
#> d[stroke = 0: Placebo/Standard care]                          0.00      0.00      0.00      0.00
#> d[stroke = 0: Triflusal]                                      0.00      0.00      0.02      0.04
#> d[stroke = 0: Ximelagatran]                                   0.00      0.02      0.07      0.17
#>                                                          p_rank[5] p_rank[6] p_rank[7] p_rank[8]
#> d[stroke = 0: Standard adjusted dose anti-coagulant]          0.12      0.27      0.47      0.67
#> d[stroke = 0: Acenocoumarol]                                  0.78      0.82      0.85      0.87
#> d[stroke = 0: Alternate day aspirin]                          0.77      0.79      0.82      0.84
#> d[stroke = 0: Dipyridamole]                                   0.08      0.13      0.18      0.25
#> d[stroke = 0: Fixed dose warfarin]                            0.01      0.02      0.03      0.05
#> d[stroke = 0: Fixed dose warfarin + low dose aspirin]         0.09      0.14      0.20      0.25
#> d[stroke = 0: Fixed dose warfarin + medium dose aspirin]      0.47      0.54      0.60      0.65
#> d[stroke = 0: High dose aspirin]                              0.31      0.36      0.41      0.45
#> d[stroke = 0: Indobufen]                                      0.84      0.89      0.92      0.93
#> d[stroke = 0: Low adjusted dose anti-coagulant]               0.74      0.83      0.88      0.92
#> d[stroke = 0: Low dose aspirin]                               0.00      0.00      0.01      0.02
#> d[stroke = 0: Low dose aspirin + copidogrel]                  0.02      0.05      0.08      0.12
#> d[stroke = 0: Low dose aspirin + dipyridamole]                0.31      0.42      0.51      0.59
#> d[stroke = 0: Medium dose aspirin]                            0.07      0.17      0.32      0.49
#> d[stroke = 0: Placebo/Standard care]                          0.00      0.00      0.00      0.01
#> d[stroke = 0: Triflusal]                                      0.06      0.09      0.11      0.15
#> d[stroke = 0: Ximelagatran]                                   0.33      0.49      0.62      0.74
#>                                                          p_rank[9] p_rank[10] p_rank[11] p_rank[12]
#> d[stroke = 0: Standard adjusted dose anti-coagulant]          0.84       0.93       0.98       0.99
#> d[stroke = 0: Acenocoumarol]                                  0.89       0.91       0.93       0.94
#> d[stroke = 0: Alternate day aspirin]                          0.86       0.88       0.89       0.91
#> d[stroke = 0: Dipyridamole]                                   0.33       0.41       0.50       0.60
#> d[stroke = 0: Fixed dose warfarin]                            0.08       0.12       0.17       0.25
#> d[stroke = 0: Fixed dose warfarin + low dose aspirin]         0.33       0.42       0.51       0.61
#> d[stroke = 0: Fixed dose warfarin + medium dose aspirin]      0.70       0.74       0.78       0.82
#> d[stroke = 0: High dose aspirin]                              0.48       0.53       0.58       0.63
#> d[stroke = 0: Indobufen]                                      0.95       0.96       0.97       0.98
#> d[stroke = 0: Low adjusted dose anti-coagulant]               0.95       0.97       0.98       0.99
#> d[stroke = 0: Low dose aspirin]                               0.05       0.11       0.24       0.40
#> d[stroke = 0: Low dose aspirin + copidogrel]                  0.18       0.29       0.41       0.54
#> d[stroke = 0: Low dose aspirin + dipyridamole]                0.68       0.76       0.83       0.88
#> d[stroke = 0: Medium dose aspirin]                            0.66       0.81       0.91       0.96
#> d[stroke = 0: Placebo/Standard care]                          0.02       0.04       0.10       0.19
#> d[stroke = 0: Triflusal]                                      0.18       0.22       0.28       0.33
#> d[stroke = 0: Ximelagatran]                                   0.83       0.89       0.94       0.97
#>                                                          p_rank[13] p_rank[14] p_rank[15]
#> d[stroke = 0: Standard adjusted dose anti-coagulant]           1.00       1.00       1.00
#> d[stroke = 0: Acenocoumarol]                                   0.96       0.97       0.98
#> d[stroke = 0: Alternate day aspirin]                           0.93       0.94       0.96
#> d[stroke = 0: Dipyridamole]                                    0.69       0.78       0.86
#> d[stroke = 0: Fixed dose warfarin]                             0.34       0.43       0.58
#> d[stroke = 0: Fixed dose warfarin + low dose aspirin]          0.71       0.80       0.88
#> d[stroke = 0: Fixed dose warfarin + medium dose aspirin]       0.86       0.90       0.94
#> d[stroke = 0: High dose aspirin]                               0.67       0.72       0.77
#> d[stroke = 0: Indobufen]                                       0.99       0.99       1.00
#> d[stroke = 0: Low adjusted dose anti-coagulant]                1.00       1.00       1.00
#> d[stroke = 0: Low dose aspirin]                                0.60       0.80       0.93
#> d[stroke = 0: Low dose aspirin + copidogrel]                   0.67       0.79       0.89
#> d[stroke = 0: Low dose aspirin + dipyridamole]                 0.92       0.94       0.97
#> d[stroke = 0: Medium dose aspirin]                             0.99       1.00       1.00
#> d[stroke = 0: Placebo/Standard care]                           0.32       0.49       0.71
#> d[stroke = 0: Triflusal]                                       0.39       0.46       0.55
#> d[stroke = 0: Ximelagatran]                                    0.98       0.99       1.00
#>                                                          p_rank[16] p_rank[17]
#> d[stroke = 0: Standard adjusted dose anti-coagulant]           1.00          1
#> d[stroke = 0: Acenocoumarol]                                   1.00          1
#> d[stroke = 0: Alternate day aspirin]                           0.97          1
#> d[stroke = 0: Dipyridamole]                                    0.94          1
#> d[stroke = 0: Fixed dose warfarin]                             0.77          1
#> d[stroke = 0: Fixed dose warfarin + low dose aspirin]          0.95          1
#> d[stroke = 0: Fixed dose warfarin + medium dose aspirin]       0.97          1
#> d[stroke = 0: High dose aspirin]                               0.86          1
#> d[stroke = 0: Indobufen]                                       1.00          1
#> d[stroke = 0: Low adjusted dose anti-coagulant]                1.00          1
#> d[stroke = 0: Low dose aspirin]                                0.98          1
#> d[stroke = 0: Low dose aspirin + copidogrel]                   0.96          1
#> d[stroke = 0: Low dose aspirin + dipyridamole]                 0.99          1
#> d[stroke = 0: Medium dose aspirin]                             1.00          1
#> d[stroke = 0: Placebo/Standard care]                           0.90          1
#> d[stroke = 0: Triflusal]                                       0.69          1
#> d[stroke = 0: Ximelagatran]                                    1.00          1
#> 
#> ------------------------------------------------------------- Study: stroke = 1 ---- 
#> 
#> Covariate values:
#>  stroke
#>       1
#> 
#>                                                          p_rank[1] p_rank[2] p_rank[3] p_rank[4]
#> d[stroke = 1: Standard adjusted dose anti-coagulant]          0.01      0.15      0.47      0.81
#> d[stroke = 1: Acenocoumarol]                                  0.04      0.06      0.08      0.09
#> d[stroke = 1: Alternate day aspirin]                          0.37      0.47      0.52      0.58
#> d[stroke = 1: Dipyridamole]                                   0.00      0.00      0.00      0.01
#> d[stroke = 1: Fixed dose warfarin]                            0.00      0.01      0.04      0.10
#> d[stroke = 1: Fixed dose warfarin + low dose aspirin]         0.00      0.01      0.02      0.02
#> d[stroke = 1: Fixed dose warfarin + medium dose aspirin]      0.00      0.00      0.00      0.01
#> d[stroke = 1: High dose aspirin]                              0.02      0.04      0.07      0.10
#> d[stroke = 1: Indobufen]                                      0.03      0.12      0.23      0.41
#> d[stroke = 1: Low adjusted dose anti-coagulant]               0.43      0.77      0.88      0.95
#> d[stroke = 1: Low dose aspirin]                               0.00      0.00      0.00      0.00
#> d[stroke = 1: Low dose aspirin + copidogrel]                  0.00      0.00      0.00      0.01
#> d[stroke = 1: Low dose aspirin + dipyridamole]                0.00      0.01      0.03      0.05
#> d[stroke = 1: Medium dose aspirin]                            0.00      0.00      0.00      0.00
#> d[stroke = 1: Placebo/Standard care]                          0.00      0.00      0.00      0.00
#> d[stroke = 1: Triflusal]                                      0.00      0.00      0.01      0.02
#> d[stroke = 1: Ximelagatran]                                   0.08      0.34      0.65      0.84
#>                                                          p_rank[5] p_rank[6] p_rank[7] p_rank[8]
#> d[stroke = 1: Standard adjusted dose anti-coagulant]          0.95      0.99      1.00      1.00
#> d[stroke = 1: Acenocoumarol]                                  0.11      0.13      0.16      0.17
#> d[stroke = 1: Alternate day aspirin]                          0.67      0.75      0.81      0.84
#> d[stroke = 1: Dipyridamole]                                   0.02      0.06      0.13      0.24
#> d[stroke = 1: Fixed dose warfarin]                            0.27      0.51      0.67      0.76
#> d[stroke = 1: Fixed dose warfarin + low dose aspirin]         0.03      0.04      0.05      0.06
#> d[stroke = 1: Fixed dose warfarin + medium dose aspirin]      0.01      0.01      0.02      0.03
#> d[stroke = 1: High dose aspirin]                              0.17      0.27      0.37      0.44
#> d[stroke = 1: Indobufen]                                      0.66      0.83      0.90      0.94
#> d[stroke = 1: Low adjusted dose anti-coagulant]               0.98      0.99      0.99      1.00
#> d[stroke = 1: Low dose aspirin]                               0.00      0.00      0.01      0.04
#> d[stroke = 1: Low dose aspirin + copidogrel]                  0.01      0.04      0.08      0.14
#> d[stroke = 1: Low dose aspirin + dipyridamole]                0.12      0.26      0.44      0.59
#> d[stroke = 1: Medium dose aspirin]                            0.02      0.08      0.25      0.50
#> d[stroke = 1: Placebo/Standard care]                          0.00      0.01      0.03      0.09
#> d[stroke = 1: Triflusal]                                      0.03      0.06      0.11      0.16
#> d[stroke = 1: Ximelagatran]                                   0.94      0.98      0.99      1.00
#>                                                          p_rank[9] p_rank[10] p_rank[11] p_rank[12]
#> d[stroke = 1: Standard adjusted dose anti-coagulant]          1.00       1.00       1.00       1.00
#> d[stroke = 1: Acenocoumarol]                                  0.18       0.20       0.21       0.23
#> d[stroke = 1: Alternate day aspirin]                          0.87       0.89       0.91       0.93
#> d[stroke = 1: Dipyridamole]                                   0.35       0.48       0.60       0.72
#> d[stroke = 1: Fixed dose warfarin]                            0.82       0.87       0.90       0.94
#> d[stroke = 1: Fixed dose warfarin + low dose aspirin]         0.07       0.08       0.08       0.09
#> d[stroke = 1: Fixed dose warfarin + medium dose aspirin]      0.04       0.04       0.05       0.06
#> d[stroke = 1: High dose aspirin]                              0.51       0.57       0.62       0.68
#> d[stroke = 1: Indobufen]                                      0.96       0.98       0.99       0.99
#> d[stroke = 1: Low adjusted dose anti-coagulant]               1.00       1.00       1.00       1.00
#> d[stroke = 1: Low dose aspirin]                               0.10       0.21       0.39       0.63
#> d[stroke = 1: Low dose aspirin + copidogrel]                  0.25       0.38       0.53       0.68
#> d[stroke = 1: Low dose aspirin + dipyridamole]                0.72       0.81       0.88       0.93
#> d[stroke = 1: Medium dose aspirin]                            0.73       0.87       0.95       0.98
#> d[stroke = 1: Placebo/Standard care]                          0.20       0.37       0.56       0.74
#> d[stroke = 1: Triflusal]                                      0.21       0.26       0.33       0.40
#> d[stroke = 1: Ximelagatran]                                   1.00       1.00       1.00       1.00
#>                                                          p_rank[13] p_rank[14] p_rank[15]
#> d[stroke = 1: Standard adjusted dose anti-coagulant]           1.00       1.00       1.00
#> d[stroke = 1: Acenocoumarol]                                   0.25       0.29       0.73
#> d[stroke = 1: Alternate day aspirin]                           0.95       0.99       0.99
#> d[stroke = 1: Dipyridamole]                                    0.85       0.94       0.98
#> d[stroke = 1: Fixed dose warfarin]                             0.96       0.98       0.99
#> d[stroke = 1: Fixed dose warfarin + low dose aspirin]          0.10       0.12       0.17
#> d[stroke = 1: Fixed dose warfarin + medium dose aspirin]       0.07       0.09       0.34
#> d[stroke = 1: High dose aspirin]                               0.78       0.92       0.96
#> d[stroke = 1: Indobufen]                                       1.00       1.00       1.00
#> d[stroke = 1: Low adjusted dose anti-coagulant]                1.00       1.00       1.00
#> d[stroke = 1: Low dose aspirin]                                0.84       0.95       0.97
#> d[stroke = 1: Low dose aspirin + copidogrel]                   0.83       0.94       0.97
#> d[stroke = 1: Low dose aspirin + dipyridamole]                 0.97       0.99       0.99
#> d[stroke = 1: Medium dose aspirin]                             0.99       1.00       1.00
#> d[stroke = 1: Placebo/Standard care]                           0.88       0.96       0.99
#> d[stroke = 1: Triflusal]                                       0.53       0.84       0.91
#> d[stroke = 1: Ximelagatran]                                    1.00       1.00       1.00
#>                                                          p_rank[16] p_rank[17]
#> d[stroke = 1: Standard adjusted dose anti-coagulant]           1.00          1
#> d[stroke = 1: Acenocoumarol]                                   0.93          1
#> d[stroke = 1: Alternate day aspirin]                           1.00          1
#> d[stroke = 1: Dipyridamole]                                    0.99          1
#> d[stroke = 1: Fixed dose warfarin]                             1.00          1
#> d[stroke = 1: Fixed dose warfarin + low dose aspirin]          0.35          1
#> d[stroke = 1: Fixed dose warfarin + medium dose aspirin]       0.84          1
#> d[stroke = 1: High dose aspirin]                               0.98          1
#> d[stroke = 1: Indobufen]                                       1.00          1
#> d[stroke = 1: Low adjusted dose anti-coagulant]                1.00          1
#> d[stroke = 1: Low dose aspirin]                                0.99          1
#> d[stroke = 1: Low dose aspirin + copidogrel]                   0.99          1
#> d[stroke = 1: Low dose aspirin + dipyridamole]                 1.00          1
#> d[stroke = 1: Medium dose aspirin]                             1.00          1
#> d[stroke = 1: Placebo/Standard care]                           1.00          1
#> d[stroke = 1: Triflusal]                                       0.94          1
#> d[stroke = 1: Ximelagatran]                                    1.00          1

plot(af_4b_cumrankprobs) + 
  facet_grid(Treatment~Study, labeller = label_wrap_gen(20)) + 
  theme(strip.text.y = element_text(angle = 0))

Model fit and comparison

Model fit can be checked using the dic() function:

(af_dic_1 <- dic(af_fit_1))
#> Residual deviance: 60.4 (on 61 data points)
#>                pD: 48.6
#>               DIC: 109.1
(af_dic_4b <- dic(af_fit_4b))
#> Residual deviance: 58.2 (on 61 data points)
#>                pD: 48.1
#>               DIC: 106.3

Both models fit the data well, having posterior mean residual deviance close to the number of data points. The DIC is slightly lower for the meta-regression model, although only by a couple of points (substantial differences are usually considered 3-5 points). The estimated heterogeneity standard deviation is much lower for the meta-regression model, suggesting that adjusting for the proportion of patients with prior stroke is explaining some of the heterogeneity in the data.

We can also examine the residual deviance contributions with the corresponding plot() method.

plot(af_dic_1)

plot(af_dic_4b)

References

Cooper, N. J., A. J. Sutton, D. Morris, A. E. Ades, and N. J. Welton. 2009. “Addressing Between-Study Heterogeneity and Inconsistency in Mixed Treatment Comparisons: Application to Stroke Prevention Treatments in Individuals with Non-Rheumatic Atrial Fibrillation.” Statistics in Medicine 28 (14): 1861–81. https://doi.org/10.1002/sim.3594.