library(multinma)
options(mc.cores = parallel::detectCores())
This vignette describes the analysis of 50 trials of 8 thrombolytic
drugs (streptokinase, SK; alteplase, t-PA; accelerated alteplase, Acc
t-PA; streptokinase plus alteplase, SK+tPA; reteplase, r-PA;
tenocteplase, TNK; urokinase, UK; anistreptilase, ASPAC) plus
per-cutaneous transluminal coronary angioplasty (PTCA) (Boland
et al. 2003; Lu and Ades
2006; Dias et al. 2011,
2010). The
number of deaths in 30 or 35 days following acute myocardial infarction
are recorded. The data are available in this package as
thrombolytics
:
head(thrombolytics)
#> studyn trtn trtc r n
#> 1 1 1 SK 1472 20251
#> 2 1 3 Acc t-PA 652 10396
#> 3 1 4 SK + t-PA 723 10374
#> 4 2 1 SK 9 130
#> 5 2 2 t-PA 6 123
#> 6 3 1 SK 5 63
We begin by setting up the network. We have arm-level count data
giving the number of deaths (r
) out of the total
(n
) in each arm, so we use the function
set_agd_arm()
. By default, SK is set as the network
reference treatment.
<- set_agd_arm(thrombolytics,
thrombo_net study = studyn,
trt = trtc,
r = r,
n = n)
thrombo_net#> A network with 50 AgD studies (arm-based).
#>
#> ------------------------------------------------------- AgD studies (arm-based) ----
#> Study Treatment arms
#> 1 3: SK | Acc t-PA | SK + t-PA
#> 2 2: SK | t-PA
#> 3 2: SK | t-PA
#> 4 2: SK | t-PA
#> 5 2: SK | t-PA
#> 6 3: SK | ASPAC | t-PA
#> 7 2: SK | t-PA
#> 8 2: SK | t-PA
#> 9 2: SK | t-PA
#> 10 2: SK | SK + t-PA
#> ... plus 40 more studies
#>
#> Outcome type: count
#> ------------------------------------------------------------------------------------
#> Total number of treatments: 9
#> Total number of studies: 50
#> Reference treatment is: SK
#> Network is connected
Plot the network structure.
plot(thrombo_net, weight_edges = TRUE, weight_nodes = TRUE)
Following TSD 4 (Dias et al. 2011), we fit a fixed
effects NMA model, using the nma()
function with
trt_effects = "fixed"
. We use \(\mathrm{N}(0, 100^2)\) prior distributions
for the treatment effects \(d_k\) and
study-specific intercepts \(\mu_j\). 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.
The model is fitted using the nma()
function. By
default, this will use a Binomial likelihood and a logit link function,
auto-detected from the data.
<- nma(thrombo_net,
thrombo_fit trt_effects = "fixed",
prior_intercept = normal(scale = 100),
prior_trt = normal(scale = 100))
#> Note: Setting "SK" as the network reference treatment.
Basic parameter summaries are given by the print()
method:
thrombo_fit#> A fixed 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% 75% 97.5% n_eff Rhat
#> d[Acc t-PA] -0.18 0.00 0.04 -0.26 -0.21 -0.18 -0.15 -0.09 2684 1
#> d[ASPAC] 0.02 0.00 0.04 -0.06 -0.01 0.02 0.04 0.09 5412 1
#> d[PTCA] -0.48 0.00 0.10 -0.67 -0.54 -0.47 -0.41 -0.28 4307 1
#> d[r-PA] -0.12 0.00 0.06 -0.24 -0.16 -0.12 -0.08 -0.01 3487 1
#> d[SK + t-PA] -0.05 0.00 0.05 -0.14 -0.08 -0.05 -0.02 0.03 4989 1
#> d[t-PA] 0.00 0.00 0.03 -0.06 -0.02 0.00 0.02 0.06 4673 1
#> d[TNK] -0.17 0.00 0.08 -0.32 -0.22 -0.17 -0.12 -0.03 3396 1
#> d[UK] -0.20 0.00 0.22 -0.64 -0.35 -0.20 -0.06 0.23 4386 1
#> lp__ -43363.25 0.14 5.44 -43375.04 -43366.66 -43362.92 -43359.45 -43353.69 1518 1
#>
#> Samples were drawn using NUTS(diag_e) at Tue Jan 9 17:51:58 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\) are hidden, but could be examined
by changing the pars
argument:
# Not run
print(thrombo_fit, pars = c("d", "mu"))
The prior and posterior distributions can be compared visually using
the plot_prior_posterior()
function:
plot_prior_posterior(thrombo_fit, prior = "trt")
Model fit can be checked using the dic()
function
<- dic(thrombo_fit))
(dic_consistency #> Residual deviance: 105.9 (on 102 data points)
#> pD: 58.7
#> DIC: 164.6
and the residual deviance contributions examined with the
corresponding plot()
method.
plot(dic_consistency)
There are a number of points which are not very well fit by the model, having posterior mean residual deviance contributions greater than 1.
Note: The results of the inconsistency models here are slightly different to those of Dias et al. (2010, 2011), although the overall conclusions are the same. This is due to the presence of multi-arm trials and a different ordering of treatments, meaning that inconsistency is parameterised differently within the multi-arm trials. The same results as Dias et al. are obtained if the network is instead set up with
trtn
as the treatment variable.
Another method for assessing inconsistency is node-splitting (Dias et al. 2011, 2010). Whereas the UME model assesses inconsistency globally, node-splitting assesses inconsistency locally for each potentially inconsistent comparison (those with both direct and indirect evidence) in turn.
Node-splitting can be performed using the nma()
function
with the argument consistency = "nodesplit"
. By default,
all possible comparisons will be split (as determined by the
get_nodesplits()
function). Alternatively, a specific
comparison or comparisons to split can be provided to the
nodesplit
argument.
<- nma(thrombo_net,
thrombo_nodesplit consistency = "nodesplit",
trt_effects = "fixed",
prior_intercept = normal(scale = 100),
prior_trt = normal(scale = 100))
#> Fitting model 1 of 15, node-split: Acc t-PA vs. SK
#> Note: Setting "SK" as the network reference treatment.
#> Fitting model 2 of 15, node-split: ASPAC vs. SK
#> Note: Setting "SK" as the network reference treatment.
#> Fitting model 3 of 15, node-split: PTCA vs. SK
#> Note: Setting "SK" as the network reference treatment.
#> Fitting model 4 of 15, node-split: r-PA vs. SK
#> Note: Setting "SK" as the network reference treatment.
#> Fitting model 5 of 15, node-split: t-PA vs. SK
#> Note: Setting "SK" as the network reference treatment.
#> Fitting model 6 of 15, node-split: UK vs. SK
#> Note: Setting "SK" as the network reference treatment.
#> Fitting model 7 of 15, node-split: ASPAC vs. Acc t-PA
#> Note: Setting "SK" as the network reference treatment.
#> Fitting model 8 of 15, node-split: PTCA vs. Acc t-PA
#> Note: Setting "SK" as the network reference treatment.
#> Fitting model 9 of 15, node-split: r-PA vs. Acc t-PA
#> Note: Setting "SK" as the network reference treatment.
#> Fitting model 10 of 15, node-split: SK + t-PA vs. Acc t-PA
#> Note: Setting "SK" as the network reference treatment.
#> Fitting model 11 of 15, node-split: UK vs. Acc t-PA
#> Note: Setting "SK" as the network reference treatment.
#> Fitting model 12 of 15, node-split: t-PA vs. ASPAC
#> Note: Setting "SK" as the network reference treatment.
#> Fitting model 13 of 15, node-split: t-PA vs. PTCA
#> Note: Setting "SK" as the network reference treatment.
#> Fitting model 14 of 15, node-split: UK vs. t-PA
#> Note: Setting "SK" as the network reference treatment.
#> Fitting model 15 of 15, consistency model
#> Note: Setting "SK" as the network reference treatment.
The summary()
method summarises the node-splitting
results, displaying the direct and indirect estimates \(d_\mathrm{dir}\) and \(d_\mathrm{ind}\) from each node-split
model, the network estimate \(d_\mathrm{net}\) from the consistency
model, the inconsistency factor \(\omega =
d_\mathrm{dir} - d_\mathrm{ind}\), and a Bayesian \(p\)-value for inconsistency on each
comparison. The DIC model fit statistics are also provided. (If a random
effects model was fitted, the heterogeneity standard deviation \(\tau\) under each node-split model and
under the consistency model would also be displayed.)
summary(thrombo_nodesplit)
#> Node-splitting models fitted for 14 comparisons.
#>
#> ---------------------------------------------------- Node-split Acc t-PA vs. SK ----
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> d_net -0.18 0.04 -0.26 -0.21 -0.18 -0.15 -0.09 2662 2706 1.00
#> d_dir -0.16 0.05 -0.25 -0.19 -0.16 -0.13 -0.06 3762 3206 1.00
#> d_ind -0.25 0.09 -0.42 -0.31 -0.25 -0.19 -0.07 624 1381 1.01
#> omega 0.09 0.10 -0.11 0.02 0.09 0.16 0.28 710 1431 1.01
#>
#> Residual deviance: 106.3 (on 102 data points)
#> pD: 59.8
#> DIC: 166.2
#>
#> Bayesian p-value: 0.37
#>
#> ------------------------------------------------------- Node-split ASPAC vs. SK ----
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> d_net 0.02 0.04 -0.05 -0.01 0.01 0.04 0.09 5308 3551 1.00
#> d_dir 0.01 0.04 -0.07 -0.01 0.01 0.03 0.08 4364 3332 1.00
#> d_ind 0.42 0.25 -0.07 0.26 0.42 0.59 0.92 2211 2269 1.01
#> omega -0.41 0.25 -0.93 -0.58 -0.41 -0.25 0.08 2161 2569 1.01
#>
#> Residual deviance: 104.3 (on 102 data points)
#> pD: 59.8
#> DIC: 164.1
#>
#> Bayesian p-value: 0.099
#>
#> -------------------------------------------------------- Node-split PTCA vs. SK ----
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> d_net -0.47 0.10 -0.67 -0.54 -0.47 -0.41 -0.28 4455 3354 1
#> d_dir -0.66 0.18 -1.03 -0.79 -0.66 -0.54 -0.31 5811 3652 1
#> d_ind -0.39 0.12 -0.63 -0.47 -0.39 -0.31 -0.16 3588 3650 1
#> omega -0.27 0.22 -0.70 -0.42 -0.27 -0.12 0.15 4697 3255 1
#>
#> Residual deviance: 105.6 (on 102 data points)
#> pD: 59.9
#> DIC: 165.4
#>
#> Bayesian p-value: 0.21
#>
#> -------------------------------------------------------- Node-split r-PA vs. SK ----
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> d_net -0.12 0.06 -0.24 -0.16 -0.12 -0.08 -0.01 3503 2795 1
#> d_dir -0.06 0.09 -0.24 -0.12 -0.06 0.00 0.12 4951 3469 1
#> d_ind -0.18 0.08 -0.33 -0.23 -0.18 -0.12 -0.02 1940 2837 1
#> omega 0.12 0.12 -0.12 0.04 0.12 0.20 0.35 2423 3008 1
#>
#> Residual deviance: 105.5 (on 102 data points)
#> pD: 59.3
#> DIC: 164.8
#>
#> Bayesian p-value: 0.33
#>
#> -------------------------------------------------------- Node-split t-PA vs. SK ----
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> d_net 0.0 0.03 -0.05 -0.02 0.00 0.02 0.06 4483 3263 1
#> d_dir 0.0 0.03 -0.06 -0.02 0.00 0.02 0.06 3522 3092 1
#> d_ind 0.2 0.24 -0.25 0.03 0.19 0.36 0.67 1326 2110 1
#> omega -0.2 0.24 -0.67 -0.36 -0.19 -0.03 0.25 1343 2124 1
#>
#> Residual deviance: 106.3 (on 102 data points)
#> pD: 59.7
#> DIC: 166
#>
#> Bayesian p-value: 0.41
#>
#> ---------------------------------------------------------- Node-split UK vs. SK ----
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> d_net -0.20 0.22 -0.63 -0.35 -0.20 -0.05 0.24 4556 3686 1
#> d_dir -0.37 0.52 -1.44 -0.72 -0.38 -0.01 0.64 6175 2633 1
#> d_ind -0.17 0.25 -0.65 -0.34 -0.17 0.00 0.32 4602 3339 1
#> omega -0.21 0.58 -1.33 -0.58 -0.21 0.19 0.93 5140 3212 1
#>
#> Residual deviance: 107.1 (on 102 data points)
#> pD: 60
#> DIC: 167
#>
#> Bayesian p-value: 0.72
#>
#> ------------------------------------------------- Node-split ASPAC vs. Acc t-PA ----
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> d_net 0.19 0.06 0.08 0.16 0.19 0.23 0.31 3308 3091 1
#> d_dir 1.40 0.42 0.63 1.11 1.38 1.67 2.28 4043 2897 1
#> d_ind 0.16 0.06 0.05 0.13 0.16 0.20 0.27 3358 3192 1
#> omega 1.23 0.42 0.46 0.94 1.22 1.51 2.11 3898 2765 1
#>
#> Residual deviance: 97.3 (on 102 data points)
#> pD: 60.2
#> DIC: 157.4
#>
#> Bayesian p-value: <0.01
#>
#> -------------------------------------------------- Node-split PTCA vs. Acc t-PA ----
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> d_net -0.30 0.10 -0.49 -0.36 -0.30 -0.23 -0.11 5836 3271 1
#> d_dir -0.22 0.12 -0.45 -0.30 -0.22 -0.14 0.01 4572 3760 1
#> d_ind -0.47 0.17 -0.81 -0.59 -0.47 -0.35 -0.13 3190 3164 1
#> omega 0.26 0.21 -0.16 0.12 0.26 0.40 0.66 3208 3208 1
#>
#> Residual deviance: 105.4 (on 102 data points)
#> pD: 59.7
#> DIC: 165.2
#>
#> Bayesian p-value: 0.22
#>
#> -------------------------------------------------- Node-split r-PA vs. Acc t-PA ----
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> d_net 0.05 0.05 -0.05 0.02 0.05 0.09 0.16 5571 3446 1
#> d_dir 0.02 0.07 -0.11 -0.03 0.02 0.06 0.15 4975 3427 1
#> d_ind 0.13 0.10 -0.06 0.07 0.13 0.20 0.33 2043 2565 1
#> omega -0.11 0.12 -0.35 -0.19 -0.11 -0.03 0.12 2030 2820 1
#>
#> Residual deviance: 105.6 (on 102 data points)
#> pD: 59.3
#> DIC: 164.9
#>
#> Bayesian p-value: 0.35
#>
#> --------------------------------------------- Node-split SK + t-PA vs. Acc t-PA ----
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> d_net 0.13 0.05 0.02 0.09 0.13 0.17 0.24 5412 3327 1
#> d_dir 0.13 0.05 0.02 0.09 0.13 0.16 0.23 3674 3556 1
#> d_ind 0.62 0.68 -0.69 0.15 0.61 1.07 1.99 3064 2531 1
#> omega -0.49 0.68 -1.85 -0.94 -0.48 -0.03 0.82 3068 2590 1
#>
#> Residual deviance: 106.4 (on 102 data points)
#> pD: 59.7
#> DIC: 166.2
#>
#> Bayesian p-value: 0.47
#>
#> ---------------------------------------------------- Node-split UK vs. Acc t-PA ----
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> d_net -0.02 0.22 -0.46 -0.17 -0.02 0.13 0.42 4584 3689 1
#> d_dir 0.15 0.36 -0.55 -0.10 0.14 0.39 0.86 4966 3076 1
#> d_ind -0.13 0.29 -0.70 -0.33 -0.13 0.06 0.42 3933 3434 1
#> omega 0.28 0.46 -0.61 -0.03 0.28 0.58 1.19 3841 3455 1
#>
#> Residual deviance: 106.6 (on 102 data points)
#> pD: 59.8
#> DIC: 166.4
#>
#> Bayesian p-value: 0.54
#>
#> ----------------------------------------------------- Node-split t-PA vs. ASPAC ----
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> d_net -0.01 0.04 -0.09 -0.04 -0.01 0.01 0.06 6805 3346 1
#> d_dir -0.02 0.04 -0.10 -0.05 -0.02 0.00 0.05 4947 3028 1
#> d_ind 0.03 0.06 -0.09 -0.02 0.03 0.07 0.14 3743 3119 1
#> omega -0.05 0.06 -0.17 -0.09 -0.05 -0.01 0.07 3439 2768 1
#>
#> Residual deviance: 106.5 (on 102 data points)
#> pD: 59.9
#> DIC: 166.4
#>
#> Bayesian p-value: 0.41
#>
#> ------------------------------------------------------ Node-split t-PA vs. PTCA ----
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> d_net 0.48 0.11 0.27 0.41 0.48 0.55 0.69 4385 3501 1
#> d_dir 0.55 0.42 -0.27 0.27 0.55 0.83 1.40 4566 3333 1
#> d_ind 0.47 0.11 0.26 0.40 0.47 0.54 0.68 3645 3195 1
#> omega 0.08 0.43 -0.79 -0.21 0.08 0.38 0.94 3996 3131 1
#>
#> Residual deviance: 107.1 (on 102 data points)
#> pD: 59.9
#> DIC: 167
#>
#> Bayesian p-value: 0.87
#>
#> -------------------------------------------------------- Node-split UK vs. t-PA ----
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> d_net -0.20 0.22 -0.63 -0.35 -0.20 -0.06 0.23 4764 3777 1
#> d_dir -0.30 0.34 -0.97 -0.53 -0.30 -0.07 0.35 4873 3291 1
#> d_ind -0.14 0.29 -0.71 -0.34 -0.14 0.04 0.44 3254 3105 1
#> omega -0.15 0.44 -1.03 -0.45 -0.15 0.14 0.73 3519 3319 1
#>
#> Residual deviance: 107 (on 102 data points)
#> pD: 59.9
#> DIC: 166.9
#>
#> Bayesian p-value: 0.73
Node-splitting the ASPAC vs. Acc t-PA comparison results the lowest DIC, and this is lower than the consistency model. The posterior distribution for the inconsistency factor \(\omega\) for this comparison lies far from 0 and the Bayesian \(p\)-value for inconsistency is small (< 0.01), meaning that there is substantial disagreement between the direct and indirect evidence on this comparison.
We can visually compare the direct, indirect, and network estimates
using the plot()
method.
plot(thrombo_nodesplit)
We can also plot the posterior distributions of the inconsistency
factors \(\omega\), again using the
plot()
method. Here, we specify a “halfeye” plot of the
posterior density with median and credible intervals, and customise the
plot layout with standard ggplot2
functions.
plot(thrombo_nodesplit, pars = "omega", stat = "halfeye", ref_line = 0) +
::aes(y = comparison) +
ggplot2::facet_null() ggplot2
Notice again that the posterior distribution of the inconsistency factor for the ASPAC vs. Acc t-PA comparison lies far from 0, indicating substantial inconsistency between the direct and indirect evidence on this comparison.
Relative effects for all pairwise contrasts between treatments can be
produced using the relative_effects()
function, with
all_contrasts = TRUE
.
<- relative_effects(thrombo_fit, all_contrasts = TRUE))
(thrombo_releff #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> d[Acc t-PA vs. SK] -0.18 0.04 -0.26 -0.21 -0.18 -0.15 -0.09 2691 2739 1
#> d[ASPAC vs. SK] 0.02 0.04 -0.06 -0.01 0.02 0.04 0.09 5417 3300 1
#> d[PTCA vs. SK] -0.48 0.10 -0.67 -0.54 -0.47 -0.41 -0.28 4424 3327 1
#> d[r-PA vs. SK] -0.12 0.06 -0.24 -0.16 -0.12 -0.08 -0.01 3552 3120 1
#> d[SK + t-PA vs. SK] -0.05 0.05 -0.14 -0.08 -0.05 -0.02 0.03 5137 3276 1
#> d[t-PA vs. SK] 0.00 0.03 -0.06 -0.02 0.00 0.02 0.06 4638 3299 1
#> d[TNK vs. SK] -0.17 0.08 -0.32 -0.22 -0.17 -0.12 -0.03 3463 3261 1
#> d[UK vs. SK] -0.20 0.22 -0.64 -0.35 -0.20 -0.06 0.23 4401 3465 1
#> d[ASPAC vs. Acc t-PA] 0.19 0.06 0.08 0.16 0.19 0.23 0.30 3584 2944 1
#> d[PTCA vs. Acc t-PA] -0.30 0.10 -0.49 -0.36 -0.30 -0.23 -0.10 5764 3497 1
#> d[r-PA vs. Acc t-PA] 0.05 0.05 -0.05 0.02 0.05 0.09 0.16 5770 3515 1
#> d[SK + t-PA vs. Acc t-PA] 0.13 0.05 0.02 0.09 0.13 0.16 0.23 5522 3665 1
#> d[t-PA vs. Acc t-PA] 0.18 0.05 0.08 0.14 0.18 0.22 0.28 3504 3697 1
#> d[TNK vs. Acc t-PA] 0.01 0.06 -0.11 -0.04 0.01 0.05 0.13 5714 3437 1
#> d[UK vs. Acc t-PA] -0.03 0.22 -0.46 -0.17 -0.02 0.12 0.41 4453 3305 1
#> d[PTCA vs. ASPAC] -0.49 0.11 -0.71 -0.56 -0.49 -0.42 -0.29 4705 3678 1
#> d[r-PA vs. ASPAC] -0.14 0.07 -0.27 -0.19 -0.14 -0.09 0.00 4096 3418 1
#> d[SK + t-PA vs. ASPAC] -0.07 0.06 -0.18 -0.10 -0.07 -0.03 0.04 5366 3666 1
#> d[t-PA vs. ASPAC] -0.01 0.04 -0.08 -0.04 -0.01 0.01 0.06 7301 3418 1
#> d[TNK vs. ASPAC] -0.19 0.08 -0.35 -0.24 -0.19 -0.13 -0.02 3677 3420 1
#> d[UK vs. ASPAC] -0.22 0.22 -0.66 -0.37 -0.21 -0.07 0.22 4562 3361 1
#> d[r-PA vs. PTCA] 0.35 0.11 0.14 0.28 0.35 0.43 0.57 5661 3518 1
#> d[SK + t-PA vs. PTCA] 0.43 0.11 0.23 0.35 0.43 0.50 0.64 5763 3491 1
#> d[t-PA vs. PTCA] 0.48 0.10 0.28 0.41 0.48 0.55 0.69 4551 3692 1
#> d[TNK vs. PTCA] 0.30 0.12 0.08 0.22 0.30 0.39 0.53 6202 3478 1
#> d[UK vs. PTCA] 0.27 0.24 -0.21 0.12 0.27 0.44 0.74 4546 3377 1
#> d[SK + t-PA vs. r-PA] 0.07 0.07 -0.06 0.03 0.07 0.12 0.21 5642 3193 1
#> d[t-PA vs. r-PA] 0.13 0.07 -0.01 0.08 0.13 0.17 0.26 3989 3304 1
#> d[TNK vs. r-PA] -0.05 0.08 -0.20 -0.10 -0.05 0.01 0.11 6599 3035 1
#> d[UK vs. r-PA] -0.08 0.23 -0.53 -0.23 -0.08 0.07 0.36 4573 3439 1
#> d[t-PA vs. SK + t-PA] 0.05 0.05 -0.05 0.01 0.05 0.09 0.16 5053 3345 1
#> d[TNK vs. SK + t-PA] -0.12 0.08 -0.28 -0.18 -0.12 -0.07 0.04 5949 3340 1
#> d[UK vs. SK + t-PA] -0.15 0.22 -0.59 -0.30 -0.15 -0.01 0.29 4515 3478 1
#> d[TNK vs. t-PA] -0.17 0.08 -0.33 -0.23 -0.17 -0.12 -0.01 3614 3630 1
#> d[UK vs. t-PA] -0.21 0.22 -0.64 -0.35 -0.20 -0.06 0.23 4515 3391 1
#> d[UK vs. TNK] -0.03 0.23 -0.48 -0.18 -0.03 0.12 0.41 4540 3355 1
plot(thrombo_releff, ref_line = 0)
Treatment rankings, rank probabilities, and cumulative rank probabilities.
<- posterior_ranks(thrombo_fit))
(thrombo_ranks #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> rank[SK] 7.47 0.94 6 7 7 8 9 3931 NA 1
#> rank[Acc t-PA] 3.15 0.81 2 3 3 4 5 4111 3662 1
#> rank[ASPAC] 7.97 1.16 5 7 8 9 9 4921 NA 1
#> rank[PTCA] 1.13 0.36 1 1 1 1 2 3438 3415 1
#> rank[r-PA] 4.43 1.18 2 4 5 5 7 5037 3418 1
#> rank[SK + t-PA] 5.98 1.21 4 5 6 6 9 4940 NA 1
#> rank[t-PA] 7.50 1.11 5 7 8 8 9 4518 NA 1
#> rank[TNK] 3.49 1.24 2 3 3 4 6 5086 3109 1
#> rank[UK] 3.88 2.65 1 2 3 5 9 4328 NA 1
plot(thrombo_ranks)
<- posterior_rank_probs(thrombo_fit))
(thrombo_rankprobs #> p_rank[1] p_rank[2] p_rank[3] p_rank[4] p_rank[5] p_rank[6] p_rank[7] p_rank[8]
#> d[SK] 0.00 0.00 0.00 0.00 0.01 0.12 0.39 0.33
#> d[Acc t-PA] 0.00 0.22 0.46 0.29 0.04 0.00 0.00 0.00
#> d[ASPAC] 0.00 0.00 0.00 0.00 0.03 0.09 0.18 0.25
#> d[PTCA] 0.87 0.12 0.00 0.00 0.00 0.00 0.00 0.00
#> d[r-PA] 0.00 0.05 0.14 0.31 0.38 0.08 0.02 0.01
#> d[SK + t-PA] 0.00 0.00 0.01 0.06 0.25 0.47 0.09 0.06
#> d[t-PA] 0.00 0.00 0.00 0.00 0.04 0.14 0.29 0.32
#> d[TNK] 0.00 0.24 0.31 0.25 0.15 0.03 0.01 0.00
#> d[UK] 0.12 0.37 0.08 0.09 0.10 0.06 0.02 0.02
#> p_rank[9]
#> d[SK] 0.15
#> d[Acc t-PA] 0.00
#> d[ASPAC] 0.44
#> d[PTCA] 0.00
#> d[r-PA] 0.01
#> d[SK + t-PA] 0.06
#> d[t-PA] 0.21
#> d[TNK] 0.00
#> d[UK] 0.14
plot(thrombo_rankprobs)
<- posterior_rank_probs(thrombo_fit, cumulative = TRUE))
(thrombo_cumrankprobs #> p_rank[1] p_rank[2] p_rank[3] p_rank[4] p_rank[5] p_rank[6] p_rank[7] p_rank[8]
#> d[SK] 0.00 0.00 0.00 0.00 0.01 0.14 0.53 0.85
#> d[Acc t-PA] 0.00 0.22 0.67 0.96 1.00 1.00 1.00 1.00
#> d[ASPAC] 0.00 0.00 0.00 0.00 0.03 0.12 0.31 0.56
#> d[PTCA] 0.87 1.00 1.00 1.00 1.00 1.00 1.00 1.00
#> d[r-PA] 0.00 0.05 0.19 0.50 0.88 0.97 0.98 0.99
#> d[SK + t-PA] 0.00 0.00 0.01 0.07 0.32 0.79 0.88 0.94
#> d[t-PA] 0.00 0.00 0.00 0.00 0.04 0.18 0.47 0.79
#> d[TNK] 0.00 0.24 0.55 0.80 0.95 0.98 0.99 1.00
#> d[UK] 0.12 0.49 0.57 0.66 0.76 0.82 0.84 0.86
#> p_rank[9]
#> d[SK] 1
#> d[Acc t-PA] 1
#> d[ASPAC] 1
#> d[PTCA] 1
#> d[r-PA] 1
#> d[SK + t-PA] 1
#> d[t-PA] 1
#> d[TNK] 1
#> d[UK] 1
plot(thrombo_cumrankprobs)