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 2542 1
#> d[ASPAC] 0.02 0.00 0.04 -0.05 -0.01 0.02 0.04 0.09 5131 1
#> d[PTCA] -0.48 0.00 0.10 -0.68 -0.55 -0.48 -0.41 -0.28 4674 1
#> d[r-PA] -0.13 0.00 0.06 -0.24 -0.17 -0.13 -0.08 -0.01 3382 1
#> d[SK + t-PA] -0.05 0.00 0.05 -0.14 -0.08 -0.05 -0.02 0.04 5819 1
#> d[t-PA] 0.00 0.00 0.03 -0.06 -0.02 0.00 0.02 0.06 4583 1
#> d[TNK] -0.17 0.00 0.08 -0.33 -0.22 -0.17 -0.12 -0.02 3598 1
#> d[UK] -0.20 0.00 0.22 -0.64 -0.36 -0.20 -0.05 0.24 5560 1
#> lp__ -43042.84 0.14 5.46 -43054.57 -43046.34 -43042.39 -43038.88 -43033.42 1508 1
#>
#> Samples were drawn using NUTS(diag_e) at Thu Feb 24 08:53:12 2022.
#> 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.5
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 3027 3074 1
#> d_dir -0.16 0.05 -0.26 -0.19 -0.16 -0.12 -0.06 3674 3666 1
#> d_ind -0.25 0.09 -0.43 -0.31 -0.25 -0.19 -0.08 628 872 1
#> omega 0.09 0.10 -0.10 0.03 0.09 0.16 0.29 783 1322 1
#>
#> Residual deviance: 106.4 (on 102 data points)
#> pD: 59.9
#> DIC: 166.2
#>
#> Bayesian p-value: 0.34
#>
#> ------------------------------------------------------- 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.02 0.04 0.09 4251 2997 1
#> d_dir 0.01 0.04 -0.06 -0.02 0.01 0.03 0.08 4942 3205 1
#> d_ind 0.42 0.25 -0.05 0.25 0.42 0.58 0.90 2419 2634 1
#> omega -0.41 0.25 -0.90 -0.57 -0.41 -0.24 0.07 2477 2546 1
#>
#> Residual deviance: 104 (on 102 data points)
#> pD: 59.5
#> DIC: 163.5
#>
#> Bayesian p-value: 0.1
#>
#> -------------------------------------------------------- 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.68 -0.54 -0.47 -0.41 -0.28 4268 3553 1
#> d_dir -0.67 0.18 -1.03 -0.79 -0.66 -0.54 -0.31 5455 3188 1
#> d_ind -0.39 0.12 -0.63 -0.47 -0.39 -0.31 -0.16 3497 3622 1
#> omega -0.27 0.22 -0.70 -0.42 -0.27 -0.12 0.15 4296 2879 1
#>
#> Residual deviance: 105.8 (on 102 data points)
#> pD: 60
#> DIC: 165.8
#>
#> 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 3930 3299 1
#> d_dir -0.06 0.09 -0.24 -0.12 -0.06 0.00 0.12 5806 3041 1
#> d_ind -0.18 0.08 -0.33 -0.23 -0.18 -0.12 -0.02 2253 2821 1
#> omega 0.12 0.12 -0.12 0.03 0.11 0.20 0.36 3105 3035 1
#>
#> Residual deviance: 105.8 (on 102 data points)
#> pD: 59.6
#> DIC: 165.4
#>
#> Bayesian p-value: 0.34
#>
#> -------------------------------------------------------- Node-split t-PA vs. SK ----
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> d_net 0.00 0.03 -0.06 -0.02 0.00 0.02 0.06 4064 3292 1
#> d_dir 0.00 0.03 -0.06 -0.02 0.00 0.02 0.06 3791 3049 1
#> d_ind 0.19 0.24 -0.28 0.03 0.18 0.35 0.66 1329 2033 1
#> omega -0.19 0.24 -0.66 -0.35 -0.19 -0.03 0.28 1327 2104 1
#>
#> Residual deviance: 105.9 (on 102 data points)
#> pD: 59.3
#> DIC: 165.2
#>
#> Bayesian p-value: 0.43
#>
#> ---------------------------------------------------------- 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.64 -0.35 -0.20 -0.05 0.22 4756 3141 1
#> d_dir -0.37 0.53 -1.40 -0.72 -0.36 0.00 0.64 5392 3525 1
#> d_ind -0.17 0.25 -0.67 -0.33 -0.17 0.00 0.32 4975 3183 1
#> omega -0.20 0.59 -1.37 -0.59 -0.19 0.20 0.91 5078 3155 1
#>
#> Residual deviance: 106.7 (on 102 data points)
#> pD: 59.6
#> DIC: 166.3
#>
#> Bayesian p-value: 0.75
#>
#> ------------------------------------------------- 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.09 0.16 0.19 0.23 0.30 3684 3237 1
#> d_dir 1.40 0.41 0.65 1.12 1.39 1.67 2.22 3880 2694 1
#> d_ind 0.16 0.06 0.05 0.13 0.16 0.20 0.28 3147 3289 1
#> omega 1.24 0.41 0.48 0.95 1.23 1.50 2.07 3722 2793 1
#>
#> Residual deviance: 96.6 (on 102 data points)
#> pD: 59.5
#> DIC: 156.2
#>
#> 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.29 -0.23 -0.11 5088 3571 1
#> d_dir -0.22 0.12 -0.45 -0.30 -0.22 -0.14 0.02 4828 3575 1
#> d_ind -0.48 0.18 -0.83 -0.59 -0.47 -0.36 -0.14 3283 3303 1
#> omega 0.26 0.21 -0.14 0.12 0.26 0.40 0.68 3079 2996 1
#>
#> Residual deviance: 105.6 (on 102 data points)
#> pD: 59.9
#> DIC: 165.5
#>
#> Bayesian p-value: 0.2
#>
#> -------------------------------------------------- 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.06 -0.06 0.02 0.05 0.09 0.16 6103 3503 1
#> d_dir 0.02 0.06 -0.11 -0.02 0.02 0.06 0.15 4904 3584 1
#> d_ind 0.13 0.10 -0.06 0.07 0.13 0.20 0.33 1815 2288 1
#> omega -0.11 0.12 -0.34 -0.19 -0.11 -0.03 0.12 1997 2520 1
#>
#> Residual deviance: 106.1 (on 102 data points)
#> pD: 59.8
#> DIC: 165.9
#>
#> Bayesian p-value: 0.33
#>
#> --------------------------------------------- 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.16 0.24 5767 3285 1
#> d_dir 0.13 0.05 0.02 0.09 0.13 0.16 0.23 3644 3302 1
#> d_ind 0.65 0.69 -0.67 0.17 0.62 1.09 2.05 3220 2165 1
#> omega -0.52 0.69 -1.90 -0.97 -0.50 -0.05 0.80 3230 2275 1
#>
#> Residual deviance: 106.6 (on 102 data points)
#> pD: 59.9
#> DIC: 166.5
#>
#> Bayesian p-value: 0.46
#>
#> ---------------------------------------------------- Node-split UK vs. Acc t-PA ----
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> d_net -0.03 0.22 -0.45 -0.17 -0.03 0.13 0.40 4986 3319 1
#> d_dir 0.15 0.36 -0.53 -0.10 0.14 0.38 0.88 5251 3610 1
#> d_ind -0.13 0.29 -0.72 -0.33 -0.13 0.07 0.41 3801 3153 1
#> omega 0.28 0.46 -0.63 -0.02 0.28 0.57 1.21 4017 3268 1
#>
#> Residual deviance: 107.3 (on 102 data points)
#> pD: 60.4
#> DIC: 167.7
#>
#> 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 5769 3144 1
#> d_dir -0.02 0.04 -0.10 -0.05 -0.02 0.00 0.05 4796 3179 1
#> d_ind 0.03 0.06 -0.10 -0.02 0.03 0.07 0.15 3245 3277 1
#> omega -0.05 0.06 -0.18 -0.09 -0.05 -0.01 0.07 3024 2956 1
#>
#> Residual deviance: 106.6 (on 102 data points)
#> pD: 60.1
#> DIC: 166.7
#>
#> Bayesian p-value: 0.44
#>
#> ------------------------------------------------------ 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.10 0.27 0.41 0.47 0.55 0.68 4551 3284 1
#> d_dir 0.55 0.41 -0.24 0.27 0.53 0.83 1.38 3974 2943 1
#> d_ind 0.48 0.11 0.27 0.40 0.48 0.55 0.69 3665 3519 1
#> omega 0.07 0.43 -0.74 -0.23 0.05 0.36 0.94 3671 2889 1
#>
#> Residual deviance: 107 (on 102 data points)
#> pD: 59.8
#> DIC: 166.9
#>
#> Bayesian p-value: 0.9
#>
#> -------------------------------------------------------- Node-split UK vs. t-PA ----
#>
#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
#> d_net -0.21 0.22 -0.65 -0.35 -0.20 -0.06 0.21 4817 2922 1
#> d_dir -0.29 0.35 -0.97 -0.52 -0.29 -0.06 0.38 5166 3579 1
#> d_ind -0.15 0.29 -0.70 -0.35 -0.14 0.06 0.42 3980 3164 1
#> omega -0.15 0.45 -1.05 -0.45 -0.14 0.17 0.73 4118 3285 1
#>
#> Residual deviance: 106.8 (on 102 data points)
#> pD: 59.8
#> DIC: 166.6
#>
#> Bayesian p-value: 0.74
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 2585 3063 1
#> d[ASPAC vs. SK] 0.02 0.04 -0.05 -0.01 0.02 0.04 0.09 5217 3016 1
#> d[PTCA vs. SK] -0.48 0.10 -0.68 -0.55 -0.48 -0.41 -0.28 4500 3420 1
#> d[r-PA vs. SK] -0.13 0.06 -0.24 -0.17 -0.13 -0.08 -0.01 3408 3245 1
#> d[SK + t-PA vs. SK] -0.05 0.05 -0.14 -0.08 -0.05 -0.02 0.04 5919 3153 1
#> d[t-PA vs. SK] 0.00 0.03 -0.06 -0.02 0.00 0.02 0.06 4689 3245 1
#> d[TNK vs. SK] -0.17 0.08 -0.33 -0.22 -0.17 -0.12 -0.02 3681 3302 1
#> d[UK vs. SK] -0.20 0.22 -0.64 -0.36 -0.20 -0.05 0.24 5604 3198 1
#> d[ASPAC vs. Acc t-PA] 0.19 0.06 0.08 0.15 0.19 0.23 0.31 3132 2915 1
#> d[PTCA vs. Acc t-PA] -0.30 0.10 -0.50 -0.37 -0.30 -0.23 -0.10 5913 3133 1
#> d[r-PA vs. Acc t-PA] 0.05 0.05 -0.06 0.02 0.05 0.09 0.16 5305 3189 1
#> d[SK + t-PA vs. Acc t-PA] 0.13 0.05 0.02 0.09 0.13 0.16 0.23 5049 3566 1
#> d[t-PA vs. Acc t-PA] 0.18 0.05 0.08 0.14 0.18 0.21 0.29 3029 3191 1
#> d[TNK vs. Acc t-PA] 0.01 0.06 -0.12 -0.04 0.01 0.05 0.13 5126 3001 1
#> d[UK vs. Acc t-PA] -0.02 0.22 -0.47 -0.18 -0.02 0.13 0.42 5877 3164 1
#> d[PTCA vs. ASPAC] -0.49 0.11 -0.71 -0.57 -0.49 -0.42 -0.29 4477 3337 1
#> d[r-PA vs. ASPAC] -0.14 0.07 -0.28 -0.19 -0.14 -0.09 0.00 3856 3076 1
#> d[SK + t-PA vs. ASPAC] -0.07 0.06 -0.19 -0.11 -0.07 -0.02 0.05 5588 2774 1
#> d[t-PA vs. ASPAC] -0.01 0.04 -0.09 -0.04 -0.01 0.01 0.06 6596 3708 1
#> d[TNK vs. ASPAC] -0.19 0.09 -0.36 -0.24 -0.19 -0.13 -0.02 3825 3160 1
#> d[UK vs. ASPAC] -0.22 0.23 -0.66 -0.37 -0.22 -0.06 0.22 5603 2924 1
#> d[r-PA vs. PTCA] 0.35 0.11 0.14 0.28 0.35 0.43 0.57 5963 3205 1
#> d[SK + t-PA vs. PTCA] 0.43 0.11 0.20 0.35 0.43 0.50 0.65 5784 3314 1
#> d[t-PA vs. PTCA] 0.48 0.11 0.27 0.41 0.48 0.55 0.69 4495 3546 1
#> d[TNK vs. PTCA] 0.31 0.12 0.07 0.23 0.31 0.39 0.54 6189 3110 1
#> d[UK vs. PTCA] 0.28 0.24 -0.20 0.11 0.27 0.44 0.76 5851 2984 1
#> d[SK + t-PA vs. r-PA] 0.08 0.07 -0.06 0.03 0.07 0.12 0.21 5389 3131 1
#> d[t-PA vs. r-PA] 0.13 0.07 0.00 0.08 0.13 0.17 0.26 3747 3296 1
#> d[TNK vs. r-PA] -0.05 0.09 -0.22 -0.10 -0.05 0.01 0.13 6801 3085 1
#> d[UK vs. r-PA] -0.08 0.23 -0.52 -0.23 -0.07 0.08 0.37 5526 3238 1
#> d[t-PA vs. SK + t-PA] 0.05 0.06 -0.06 0.01 0.05 0.09 0.16 5568 3179 1
#> d[TNK vs. SK + t-PA] -0.12 0.09 -0.29 -0.18 -0.12 -0.06 0.05 5677 2970 1
#> d[UK vs. SK + t-PA] -0.15 0.23 -0.59 -0.31 -0.15 0.00 0.30 5833 3339 1
#> d[TNK vs. t-PA] -0.17 0.08 -0.34 -0.23 -0.17 -0.12 -0.01 4000 3586 1
#> d[UK vs. t-PA] -0.20 0.22 -0.64 -0.36 -0.20 -0.05 0.23 5653 3014 1
#> d[UK vs. TNK] -0.03 0.24 -0.49 -0.19 -0.03 0.14 0.42 5717 3401 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.44 0.97 6 7 7 8 9 3798 NA 1
#> rank[Acc t-PA] 3.18 0.79 2 3 3 4 5 4218 3854 1
#> rank[ASPAC] 7.96 1.14 5 7 8 9 9 4643 NA 1
#> rank[PTCA] 1.14 0.35 1 1 1 1 2 3984 4030 1
#> rank[r-PA] 4.36 1.15 2 4 4 5 7 4654 3204 1
#> rank[SK + t-PA] 6.00 1.26 4 5 6 6 9 5114 NA 1
#> rank[t-PA] 7.46 1.10 5 7 8 8 9 4771 NA 1
#> rank[TNK] 3.51 1.30 2 2 3 4 6 5383 3245 1
#> rank[UK] 3.95 2.72 1 2 3 6 9 5546 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.02 0.14 0.38 0.31
#> d[Acc t-PA] 0.00 0.20 0.47 0.29 0.04 0.00 0.00 0.00
#> d[ASPAC] 0.00 0.00 0.00 0.01 0.02 0.10 0.18 0.26
#> d[PTCA] 0.86 0.13 0.00 0.00 0.00 0.00 0.00 0.00
#> d[r-PA] 0.00 0.06 0.15 0.32 0.37 0.07 0.01 0.01
#> d[SK + t-PA] 0.00 0.00 0.01 0.06 0.25 0.45 0.10 0.06
#> d[t-PA] 0.00 0.00 0.00 0.00 0.04 0.16 0.29 0.32
#> d[TNK] 0.00 0.25 0.30 0.23 0.16 0.03 0.01 0.00
#> d[UK] 0.13 0.36 0.07 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.43
#> d[PTCA] 0.00
#> d[r-PA] 0.00
#> d[SK + t-PA] 0.06
#> d[t-PA] 0.19
#> d[TNK] 0.01
#> d[UK] 0.15
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.02 0.16 0.54 0.85
#> d[Acc t-PA] 0.00 0.20 0.67 0.96 1.00 1.00 1.00 1.00
#> d[ASPAC] 0.00 0.00 0.00 0.01 0.03 0.12 0.31 0.57
#> d[PTCA] 0.86 1.00 1.00 1.00 1.00 1.00 1.00 1.00
#> d[r-PA] 0.00 0.06 0.20 0.52 0.90 0.97 0.98 1.00
#> d[SK + t-PA] 0.00 0.00 0.01 0.08 0.32 0.77 0.87 0.94
#> d[t-PA] 0.00 0.00 0.00 0.00 0.04 0.20 0.49 0.81
#> d[TNK] 0.00 0.25 0.55 0.78 0.95 0.98 0.99 0.99
#> d[UK] 0.13 0.49 0.56 0.65 0.74 0.80 0.82 0.85
#> 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)