From be98768e1fdda7ea2edf060caed1b248cde3c650 Mon Sep 17 00:00:00 2001 From: David Phillippo Date: Mon, 8 Jan 2024 13:58:13 +0000 Subject: [PATCH 1/8] Fix saving integration points when not all categories observed --- inst/stan/ordered_multinomial.stan | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inst/stan/ordered_multinomial.stan b/inst/stan/ordered_multinomial.stan index 8a34f7dc1..a8c9e3778 100644 --- a/inst/stan/ordered_multinomial.stan +++ b/inst/stan/ordered_multinomial.stan @@ -301,7 +301,7 @@ generated quantities { // Cumulative integration - note this is for the intermediate q for (i in 1:ni_agd_arm) { - for (k in 1:(ncat - 1)) { + for (k in 1:(agd_arm_ncat[i] - 1)) { for (j in 1:n_int_thin) { theta_bar_cum_agd_arm[(i - 1)*n_int_thin + j, agd_arm_cat[i, k]] = mean(theta_agd_arm_ii[(1 + (i - 1)*nint):((i - 1)*nint + j*int_thin), agd_arm_cat[i, k]]); } From ed800f1133628bed9286e1fa6eba6e9ac89b2903 Mon Sep 17 00:00:00 2001 From: David Phillippo Date: Mon, 8 Jan 2024 17:51:08 +0000 Subject: [PATCH 2/8] Fix cumulative integration labelling and plots --- R/nma.R | 7 ++++++- R/stan_nma-class.R | 19 +++++++++++++------ 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/R/nma.R b/R/nma.R index 3edd4f0ed..4d0000b98 100644 --- a/R/nma.R +++ b/R/nma.R @@ -1170,7 +1170,12 @@ nma <- function(network, agd_arm_cumint_labels <- rep(agd_arm_data_labels, each = n_int_thin) agd_arm_cumint_labels <- paste0(agd_arm_cumint_labels, ", ", rep_len(1:n_int_thin * int_thin, length.out = length(agd_arm_cumint_labels))) - fnames_oi[grepl("^theta_bar_cum_agd_arm\\[[0-9]+\\]$", fnames_oi)] <- paste0("theta_bar_cum_agd_arm[", agd_arm_cumint_labels, "]") + if (likelihood == "ordered") { + l_cat <- colnames(y_agd_arm$.r) + agd_arm_cumint_labels <- paste0(rep(agd_arm_cumint_labels, times = length(l_cat)), ", ", rep(l_cat, each = length(agd_arm_cumint_labels))) + } + + fnames_oi[grepl("^theta_bar_cum_agd_arm\\[", fnames_oi)] <- paste0("theta_bar_cum_agd_arm[", agd_arm_cumint_labels, "]") if (likelihood %in% c("bernoulli2", "binomial2")) fnames_oi[grepl("^theta2_bar_cum\\[[0-9]+\\]$", fnames_oi)] <- paste0("theta2_bar_cum[", agd_arm_cumint_labels, "]") } diff --git a/R/stan_nma-class.R b/R/stan_nma-class.R index 5bdb3a052..630d366d3 100644 --- a/R/stan_nma-class.R +++ b/R/stan_nma-class.R @@ -566,6 +566,8 @@ plot_integration_error <- function(x, ..., # Get cumulative integration points twoparbin <- x$likelihood %in% c("binomial2", "bernoulli2") + multi <- x$likelihood == "ordered" + ipars <- c() if (has_agd_arm(x$network)) { ipars <- c(ipars, "theta_bar_cum_agd_arm") @@ -588,23 +590,24 @@ plot_integration_error <- function(x, ..., n_int <- x$network$n_int - rx <- "^(theta2?)\\[(.+): (.+), ([0-9]+)\\]$" + rx <- if (multi) "^(theta2?)\\[(.+): (.+), ([0-9]+), (.+)\\]$" else "^(theta2?)\\[(.+): (.+), ([0-9]+)\\]$" int_dat <- tidyr::pivot_longer(int_dat, cols = -dplyr::one_of(".draw"), names_pattern = rx, - names_to = c("parameter", "study", "treatment", "n_int"), + names_to = if (multi) c("parameter", "study", "treatment", "n_int", "category") else c("parameter", "study", "treatment", "n_int"), names_transform = list(n_int = as.integer), values_to = "value") int_dat$study <- factor(int_dat$study, levels = levels(x$network$studies)) int_dat$treatment <- factor(int_dat$treatment, levels = levels(x$network$treatments)) + if (multi) int_dat$category <- forcats::fct_inorder(factor(int_dat$category)) # Estimate integration error by subtracting final value int_dat <- dplyr::left_join(dplyr::filter(int_dat, .data$n_int != max(.data$n_int)), dplyr::filter(int_dat, .data$n_int == max(.data$n_int)) %>% dplyr::rename(final_value = "value") %>% dplyr::select(-"n_int"), - by = c("parameter", "study", "treatment", ".draw")) %>% + by = if (multi) c("parameter", "study", "treatment", "category", ".draw") else c("parameter", "study", "treatment", ".draw")) %>% dplyr::mutate(diff = .data$value - .data$final_value) int_thin <- min(int_dat$n_int) @@ -675,9 +678,13 @@ plot_integration_error <- function(x, ..., args = rlang::dots_list(orientation = orientation, ..., !!! v_args, .homonyms = "first")) } - p <- p + - ggplot2::facet_wrap(~ study + treatment) + - theme_multinma() + if (multi) { + p <- p + ggplot2::facet_grid(study + treatment ~ category) + } else { + p <- p + ggplot2::facet_wrap(~ study + treatment) + } + + p <- p + theme_multinma() return(p) } From 90197fa1f8b3e5697bb5b0a1960ec0a42e9904ee Mon Sep 17 00:00:00 2001 From: David Phillippo Date: Tue, 9 Jan 2024 11:13:05 +0000 Subject: [PATCH 3/8] Fix bug with multinomial missing categories (#28) Data points could be assigned the wrong category in a couple of scenarios: * Where a study does not observe the first category; absolute estimates in this study would be wrong * Where a study does not observe a middle category; relative and absolute estimates in this study would be wrong --- inst/stan/ordered_multinomial.stan | 52 +++++++++++++----------------- 1 file changed, 23 insertions(+), 29 deletions(-) diff --git a/inst/stan/ordered_multinomial.stan b/inst/stan/ordered_multinomial.stan index a8c9e3778..16142ded1 100644 --- a/inst/stan/ordered_multinomial.stan +++ b/inst/stan/ordered_multinomial.stan @@ -59,26 +59,20 @@ transformed parameters { // Is this only necessary if link > 2? Since ordered_(logistic|probit) are available for (i in 1:ni_ipd) { vector[ipd_ncat[i] - 1] q_temp; + for (k in 1:(ipd_ncat[i] - 1)) { + if (link == 1) // logit link + q_temp[k] = inv_logit(eta_ipd[i] - cc[ipd_cat[i, k+1]-1]); + else if (link == 2) // probit link + q_temp[k] = Phi(eta_ipd[i] - cc[ipd_cat[i, k+1]-1]); + else if (link == 3) // cloglog link + q_temp[k] = inv_cloglog(eta_ipd[i] - cc[ipd_cat[i, k+1]-1]); + } // Category 1 - if (link == 1) // logit link - q_temp[1] = inv_logit(eta_ipd[i] - cc[1]); - else if (link == 2) // probit link - q_temp[1] = Phi(eta_ipd[i] - cc[1]); - else if (link == 3) // cloglog link - q_temp[1] = inv_cloglog(eta_ipd[i] - cc[1]); - theta_ipd[i, 1] = 1 - q_temp[1]; // Categories 2:(ipd_ncat - 1) for (k in 2:(ipd_ncat[i] - 1)) { - if (link == 1) // logit link - q_temp[k] = inv_logit(eta_ipd[i] - cc[ipd_cat[i, k]]); - else if (link == 2) // probit link - q_temp[k] = Phi(eta_ipd[i] - cc[ipd_cat[i, k]]); - else if (link == 3) // cloglog link - q_temp[k] = inv_cloglog(eta_ipd[i] - cc[ipd_cat[i, k]]); - // Store predictor in actual category column, rather than left-aligned theta_ipd[i, ipd_cat[i, k]] = q_temp[k - 1] - q_temp[k]; } @@ -107,7 +101,7 @@ transformed parameters { eta_agd_arm_RE = eta_agd_arm_noRE[(1 + (i-1)*nint_max):((i-1)*nint_max + nint)]; for (k in 1:(agd_arm_ncat[i] - 1)) { - theta_agd_arm_ii[(1 + (i-1)*nint):(i*nint), agd_arm_cat[i, k]] = inv_logit(eta_agd_arm_RE - cc[agd_arm_cat[i, k]]); + theta_agd_arm_ii[(1 + (i-1)*nint):(i*nint), k] = inv_logit(eta_agd_arm_RE - cc[agd_arm_cat[i, k+1]-1]); } } } else if (link == 2) { // probit link @@ -118,7 +112,7 @@ transformed parameters { eta_agd_arm_RE = eta_agd_arm_noRE[(1 + (i-1)*nint_max):((i-1)*nint_max + nint)]; for (k in 1:(agd_arm_ncat[i] - 1)) { - theta_agd_arm_ii[(1 + (i-1)*nint):(i*nint), agd_arm_cat[i, k]] = Phi(eta_agd_arm_RE - cc[agd_arm_cat[i, k]]); + theta_agd_arm_ii[(1 + (i-1)*nint):(i*nint), k] = Phi(eta_agd_arm_RE - cc[agd_arm_cat[i, k+1]-1]); } } } else if (link == 3) { // cloglog link @@ -129,7 +123,7 @@ transformed parameters { eta_agd_arm_RE = eta_agd_arm_noRE[(1 + (i-1)*nint_max):((i-1)*nint_max + nint)]; for (k in 1:(agd_arm_ncat[i] - 1)) { - theta_agd_arm_ii[(1 + (i-1)*nint):(i*nint), agd_arm_cat[i, k]] = inv_cloglog(eta_agd_arm_RE - cc[agd_arm_cat[i, k]]); + theta_agd_arm_ii[(1 + (i-1)*nint):(i*nint), k] = inv_cloglog(eta_agd_arm_RE - cc[agd_arm_cat[i, k+1]-1]); } } } @@ -139,19 +133,19 @@ transformed parameters { if (link == 1) { // logit link for (i in 1:ni_agd_arm) { for (k in 1:(agd_arm_ncat[i] - 1)) { - theta_agd_arm_ii[(1 + (i-1)*nint):(i*nint), agd_arm_cat[i, k]] = inv_logit(eta_agd_arm_noRE[(1 + (i-1)*nint_max):((i-1)*nint_max + nint)] - cc[agd_arm_cat[i, k]]); + theta_agd_arm_ii[(1 + (i-1)*nint):(i*nint), k] = inv_logit(eta_agd_arm_noRE[(1 + (i-1)*nint_max):((i-1)*nint_max + nint)] - cc[agd_arm_cat[i, k+1]-1]); } } } else if (link == 2) { // probit link for (i in 1:ni_agd_arm) { for (k in 1:(agd_arm_ncat[i] - 1)) { - theta_agd_arm_ii[(1 + (i-1)*nint):(i*nint), agd_arm_cat[i, k]] = Phi(eta_agd_arm_noRE[(1 + (i-1)*nint_max):((i-1)*nint_max + nint)] - cc[agd_arm_cat[i, k]]); + theta_agd_arm_ii[(1 + (i-1)*nint):(i*nint), k] = Phi(eta_agd_arm_noRE[(1 + (i-1)*nint_max):((i-1)*nint_max + nint)] - cc[agd_arm_cat[i, k+1]-1]); } } } else if (link == 3) { // cloglog link for (i in 1:ni_agd_arm) { for (k in 1:(agd_arm_ncat[i] - 1)) { - theta_agd_arm_ii[(1 + (i-1)*nint):(i*nint), agd_arm_cat[i, k]] = inv_cloglog(eta_agd_arm_noRE[(1 + (i-1)*nint_max):((i-1)*nint_max + nint)] - cc[agd_arm_cat[i, k]]); + theta_agd_arm_ii[(1 + (i-1)*nint):(i*nint), k] = inv_cloglog(eta_agd_arm_noRE[(1 + (i-1)*nint_max):((i-1)*nint_max + nint)] - cc[agd_arm_cat[i, k+1]-1]); } } } @@ -160,7 +154,7 @@ transformed parameters { for (i in 1:ni_agd_arm) { for (k in 1:(agd_arm_ncat[i] - 1)) { - q_agd_arm_bar[i, agd_arm_cat[i, k]] = mean(theta_agd_arm_ii[(1 + (i-1)*nint):(i*nint), agd_arm_cat[i, k]]); + q_agd_arm_bar[i, k] = mean(theta_agd_arm_ii[(1 + (i-1)*nint):(i*nint), k]); } } @@ -178,7 +172,7 @@ transformed parameters { eta_agd_arm_RE = eta_agd_arm_noRE[i]; for (k in 1:(agd_arm_ncat[i] - 1)) { - q_agd_arm_bar[i, agd_arm_cat[i, k]] = inv_logit(eta_agd_arm_RE - cc[agd_arm_cat[i, k]]); + q_agd_arm_bar[i, k] = inv_logit(eta_agd_arm_RE - cc[agd_arm_cat[i, k+1]-1]); } } } else if (link == 2) { // probit link @@ -189,7 +183,7 @@ transformed parameters { eta_agd_arm_RE = eta_agd_arm_noRE[i]; for (k in 1:(agd_arm_ncat[i] - 1)) { - q_agd_arm_bar[i, agd_arm_cat[i, k]] = Phi(eta_agd_arm_RE - cc[agd_arm_cat[i, k]]); + q_agd_arm_bar[i, k] = Phi(eta_agd_arm_RE - cc[agd_arm_cat[i, k+1]-1]); } } } else if (link == 3) { // cloglog link @@ -200,7 +194,7 @@ transformed parameters { eta_agd_arm_RE = eta_agd_arm_noRE[i]; for (k in 1:(agd_arm_ncat[i] - 1)) { - q_agd_arm_bar[i, agd_arm_cat[i, k]] = inv_cloglog(eta_agd_arm_RE - cc[agd_arm_cat[i, k]]); + q_agd_arm_bar[i, k] = inv_cloglog(eta_agd_arm_RE - cc[agd_arm_cat[i, k+1]-1]); } } } @@ -210,19 +204,19 @@ transformed parameters { if (link == 1) { // logit link for (i in 1:ni_agd_arm) { for (k in 1:(agd_arm_ncat[i] - 1)) { - q_agd_arm_bar[i, agd_arm_cat[i, k]] = inv_logit(eta_agd_arm_noRE[i] - cc[agd_arm_cat[i, k]]); + q_agd_arm_bar[i, k] = inv_logit(eta_agd_arm_noRE[i] - cc[agd_arm_cat[i, k+1]-1]); } } } else if (link == 2) { // probit link for (i in 1:ni_agd_arm) { for (k in 1:(agd_arm_ncat[i] - 1)) { - q_agd_arm_bar[i, agd_arm_cat[i, k]] = Phi(eta_agd_arm_noRE[i] - cc[agd_arm_cat[i, k]]); + q_agd_arm_bar[i, k] = Phi(eta_agd_arm_noRE[i] - cc[agd_arm_cat[i, k+1]-1]); } } } else if (link == 3) { // cloglog link for (i in 1:ni_agd_arm) { for (k in 1:(agd_arm_ncat[i] - 1)) { - q_agd_arm_bar[i, agd_arm_cat[i, k]] = inv_cloglog(eta_agd_arm_noRE[i] - cc[agd_arm_cat[i, k]]); + q_agd_arm_bar[i, k] = inv_cloglog(eta_agd_arm_noRE[i] - cc[agd_arm_cat[i, k+1]-1]); } } } @@ -237,10 +231,10 @@ transformed parameters { // Categories 2:(agd_arm_ncat - 1) for (k in 2:(agd_arm_ncat[i] - 1)) - theta_agd_arm_bar[i, agd_arm_cat[i, k]] = q_agd_arm_bar[i, agd_arm_cat[i, k - 1]] - q_agd_arm_bar[i, agd_arm_cat[i, k]]; + theta_agd_arm_bar[i, agd_arm_cat[i, k]] = q_agd_arm_bar[i, k - 1] - q_agd_arm_bar[i, k]; // Category agd_arm_ncat - theta_agd_arm_bar[i, agd_arm_cat[i, agd_arm_ncat[i]]] = q_agd_arm_bar[i, agd_arm_cat[i, agd_arm_ncat[i] - 1]]; + theta_agd_arm_bar[i, agd_arm_cat[i, agd_arm_ncat[i]]] = q_agd_arm_bar[i, agd_arm_ncat[i] - 1]; } } From 3fb72cf1154b6be460c055b79872ed2b7bf0ad3e Mon Sep 17 00:00:00 2001 From: David Phillippo Date: Tue, 9 Jan 2024 11:13:39 +0000 Subject: [PATCH 4/8] Use theta not q for cumulative integration points --- inst/stan/ordered_multinomial.stan | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/inst/stan/ordered_multinomial.stan b/inst/stan/ordered_multinomial.stan index 16142ded1..7bf77d2b8 100644 --- a/inst/stan/ordered_multinomial.stan +++ b/inst/stan/ordered_multinomial.stan @@ -293,13 +293,21 @@ generated quantities { } } - // Cumulative integration - note this is for the intermediate q + // Cumulative integration for (i in 1:ni_agd_arm) { - for (k in 1:(agd_arm_ncat[i] - 1)) { - for (j in 1:n_int_thin) { - theta_bar_cum_agd_arm[(i - 1)*n_int_thin + j, agd_arm_cat[i, k]] = mean(theta_agd_arm_ii[(1 + (i - 1)*nint):((i - 1)*nint + j*int_thin), agd_arm_cat[i, k]]); - } + for (j in 1:n_int_thin) { + vector[ncat - 1] q_agd_arm_bar_cum; + for (k in 1:(agd_arm_ncat[i] - 1)) q_agd_arm_bar_cum[k] = mean(theta_agd_arm_ii[(1 + (i - 1)*nint):((i - 1)*nint + j*int_thin), k]); + + // Category 1 + theta_bar_cum_agd_arm[(i - 1)*n_int_thin + j, 1] = 1 - q_agd_arm_bar_cum[1]; + + // Categories 2:(agd_arm_ncat - 1) + for (k in 2:(agd_arm_ncat[i] - 1)) + theta_bar_cum_agd_arm[(i - 1)*n_int_thin + j, agd_arm_cat[i, k]] = q_agd_arm_bar_cum[k - 1] - q_agd_arm_bar_cum[k]; + + // Category agd_arm_ncat + theta_bar_cum_agd_arm[(i - 1)*n_int_thin + j, agd_arm_cat[i, agd_arm_ncat[i]]] = q_agd_arm_bar_cum[agd_arm_ncat[i] - 1]; } } - } From f3e85453dcd75ecf41d82a132c80352875f7bfc0 Mon Sep 17 00:00:00 2001 From: David Phillippo Date: Tue, 9 Jan 2024 14:47:50 +0000 Subject: [PATCH 5/8] Recompile vignettes [ci build-vignettes] --- vignettes/example_plaque_psoriasis.Rmd | 858 +++++++++++++++++-------- vignettes/pso-full-dev-dev-1.png | Bin 8951 -> 8926 bytes vignettes/pso-full-network-1.png | Bin 23697 -> 0 bytes vignettes/pso-full-pred-1.png | Bin 43736 -> 43718 bytes vignettes/pso-full-pred-new-1.png | Bin 11351 -> 12944 bytes vignettes/pso-full-relaxing-SEM-1.png | Bin 21867 -> 21404 bytes vignettes/pso-full-releff-1.png | Bin 25103 -> 25075 bytes vignettes/pso-full-releff-new-1.png | Bin 8568 -> 8552 bytes 8 files changed, 605 insertions(+), 253 deletions(-) delete mode 100644 vignettes/pso-full-network-1.png diff --git a/vignettes/example_plaque_psoriasis.Rmd b/vignettes/example_plaque_psoriasis.Rmd index a271a9c99..498931365 100644 --- a/vignettes/example_plaque_psoriasis.Rmd +++ b/vignettes/example_plaque_psoriasis.Rmd @@ -571,75 +571,75 @@ pso_fit_FE #> Regression model: ~(durnpso + prevsys + bsa + weight + psa) * .trt. #> Centred covariates at the following overall mean values: #> durnpso prevsys bsa weight psa -#> 1.8159830 0.6576489 0.2987820 8.9097263 0.2104826 +#> 1.7947485 0.6504375 0.2973544 8.9165934 0.2074278 #> Inference for Stan model: ordered_multinomial. #> 4 chains, each with iter=2000; warmup=1000; thin=1; #> post-warmup draws per chain=1000, total post-warmup draws=4000. #> #> mean se_mean sd 2.5% 25% 50% 75% -#> beta[durnpso] 0.03 0.00 0.06 -0.08 -0.01 0.03 0.08 -#> beta[prevsys] -0.17 0.00 0.16 -0.49 -0.28 -0.17 -0.06 -#> beta[bsa] -0.10 0.01 0.45 -1.01 -0.40 -0.08 0.21 -#> beta[weight] 0.04 0.00 0.03 -0.01 0.02 0.04 0.06 -#> beta[psa] -0.08 0.00 0.17 -0.42 -0.20 -0.08 0.03 +#> beta[durnpso] 0.03 0.00 0.06 -0.09 -0.01 0.03 0.08 +#> beta[prevsys] -0.17 0.00 0.15 -0.46 -0.28 -0.18 -0.07 +#> beta[bsa] -0.12 0.01 0.44 -1.02 -0.40 -0.11 0.18 +#> beta[weight] 0.04 0.00 0.03 -0.01 0.03 0.04 0.06 +#> beta[psa] -0.07 0.00 0.17 -0.43 -0.20 -0.07 0.04 #> beta[durnpso:.trtclassTNFa blocker] -0.02 0.00 0.07 -0.16 -0.07 -0.02 0.03 -#> beta[durnpso:.trtclassIL-12/23 blocker] -0.06 0.00 0.10 -0.26 -0.13 -0.07 0.00 -#> beta[durnpso:.trtclassIL-17 blocker] -0.02 0.00 0.06 -0.14 -0.07 -0.02 0.02 -#> beta[prevsys:.trtclassTNFa blocker] 0.19 0.00 0.19 -0.18 0.07 0.19 0.32 -#> beta[prevsys:.trtclassIL-12/23 blocker] 0.45 0.01 0.34 -0.24 0.24 0.47 0.68 -#> beta[prevsys:.trtclassIL-17 blocker] 0.16 0.00 0.17 -0.17 0.05 0.16 0.28 -#> beta[bsa:.trtclassTNFa blocker] 0.24 0.01 0.51 -0.73 -0.11 0.22 0.57 -#> beta[bsa:.trtclassIL-12/23 blocker] 0.61 0.01 0.68 -0.71 0.14 0.61 1.07 -#> beta[bsa:.trtclassIL-17 blocker] 0.27 0.01 0.47 -0.63 -0.06 0.26 0.58 +#> beta[durnpso:.trtclassIL-12/23 blocker] -0.06 0.00 0.10 -0.26 -0.13 -0.07 0.01 +#> beta[durnpso:.trtclassIL-17 blocker] -0.02 0.00 0.06 -0.15 -0.07 -0.02 0.02 +#> beta[prevsys:.trtclassTNFa blocker] 0.20 0.00 0.18 -0.16 0.08 0.20 0.32 +#> beta[prevsys:.trtclassIL-12/23 blocker] 0.45 0.00 0.32 -0.20 0.24 0.46 0.68 +#> beta[prevsys:.trtclassIL-17 blocker] 0.17 0.00 0.16 -0.15 0.06 0.17 0.28 +#> beta[bsa:.trtclassTNFa blocker] 0.26 0.01 0.51 -0.71 -0.08 0.25 0.59 +#> beta[bsa:.trtclassIL-12/23 blocker] 0.61 0.01 0.66 -0.65 0.17 0.61 1.06 +#> beta[bsa:.trtclassIL-17 blocker] 0.29 0.01 0.46 -0.60 -0.02 0.28 0.58 #> beta[weight:.trtclassTNFa blocker] -0.16 0.00 0.03 -0.23 -0.18 -0.16 -0.14 #> beta[weight:.trtclassIL-12/23 blocker] -0.09 0.00 0.05 -0.18 -0.12 -0.09 -0.06 #> beta[weight:.trtclassIL-17 blocker] -0.13 0.00 0.03 -0.19 -0.15 -0.13 -0.11 -#> beta[psa:.trtclassTNFa blocker] -0.05 0.00 0.20 -0.43 -0.18 -0.04 0.08 -#> beta[psa:.trtclassIL-12/23 blocker] 0.12 0.01 0.33 -0.51 -0.11 0.12 0.36 -#> beta[psa:.trtclassIL-17 blocker] 0.10 0.00 0.18 -0.24 -0.02 0.10 0.21 +#> beta[psa:.trtclassTNFa blocker] -0.06 0.00 0.20 -0.46 -0.19 -0.05 0.08 +#> beta[psa:.trtclassIL-12/23 blocker] 0.13 0.01 0.34 -0.53 -0.10 0.12 0.35 +#> beta[psa:.trtclassIL-17 blocker] 0.09 0.00 0.18 -0.26 -0.03 0.09 0.22 #> d[ETN] 1.58 0.00 0.07 1.44 1.53 1.58 1.63 -#> d[IXE_Q2W] 2.91 0.00 0.07 2.76 2.86 2.91 2.96 -#> d[IXE_Q4W] 2.69 0.00 0.08 2.54 2.64 2.69 2.74 -#> d[SEC_150] 2.19 0.00 0.08 2.03 2.13 2.19 2.24 -#> d[SEC_300] 2.60 0.00 0.08 2.45 2.54 2.60 2.65 -#> d[UST] 2.13 0.00 0.11 1.91 2.06 2.13 2.20 -#> lp__ -7640.27 0.11 4.31 -7649.63 -7642.96 -7639.97 -7637.16 +#> d[IXE_Q2W] 2.91 0.00 0.07 2.77 2.86 2.91 2.96 +#> d[IXE_Q4W] 2.69 0.00 0.08 2.55 2.64 2.69 2.74 +#> d[SEC_150] 2.19 0.00 0.08 2.03 2.13 2.19 2.25 +#> d[SEC_300] 2.60 0.00 0.08 2.44 2.54 2.60 2.65 +#> d[UST] 2.13 0.00 0.11 1.91 2.06 2.13 2.21 +#> lp__ -7752.94 0.10 4.30 -7762.02 -7755.80 -7752.63 -7749.89 #> cc[PASI75] 0.00 NaN 0.00 0.00 0.00 0.00 0.00 #> cc[PASI90] 0.69 0.00 0.02 0.65 0.68 0.69 0.70 #> cc[PASI100] 1.53 0.00 0.02 1.49 1.52 1.53 1.55 #> 97.5% n_eff Rhat -#> beta[durnpso] 0.15 2512 1 -#> beta[prevsys] 0.14 2701 1 -#> beta[bsa] 0.77 2254 1 -#> beta[weight] 0.10 2331 1 -#> beta[psa] 0.24 3019 1 -#> beta[durnpso:.trtclassTNFa blocker] 0.12 2678 1 -#> beta[durnpso:.trtclassIL-12/23 blocker] 0.14 3490 1 -#> beta[durnpso:.trtclassIL-17 blocker] 0.10 2899 1 -#> beta[prevsys:.trtclassTNFa blocker] 0.55 2824 1 -#> beta[prevsys:.trtclassIL-12/23 blocker] 1.11 4293 1 -#> beta[prevsys:.trtclassIL-17 blocker] 0.48 3128 1 -#> beta[bsa:.trtclassTNFa blocker] 1.27 2433 1 -#> beta[bsa:.trtclassIL-12/23 blocker] 1.93 2921 1 -#> beta[bsa:.trtclassIL-17 blocker] 1.25 2728 1 -#> beta[weight:.trtclassTNFa blocker] -0.10 2590 1 -#> beta[weight:.trtclassIL-12/23 blocker] 0.01 3473 1 -#> beta[weight:.trtclassIL-17 blocker] -0.07 2731 1 -#> beta[psa:.trtclassTNFa blocker] 0.33 2990 1 -#> beta[psa:.trtclassIL-12/23 blocker] 0.77 3967 1 -#> beta[psa:.trtclassIL-17 blocker] 0.46 3516 1 -#> d[ETN] 1.72 1969 1 -#> d[IXE_Q2W] 3.06 2104 1 -#> d[IXE_Q4W] 2.84 2327 1 -#> d[SEC_150] 2.36 2267 1 -#> d[SEC_300] 2.76 2396 1 -#> d[UST] 2.34 3215 1 -#> lp__ -7632.94 1664 1 +#> beta[durnpso] 0.15 3278 1 +#> beta[prevsys] 0.13 3239 1 +#> beta[bsa] 0.73 2993 1 +#> beta[weight] 0.10 2717 1 +#> beta[psa] 0.25 3200 1 +#> beta[durnpso:.trtclassTNFa blocker] 0.12 3645 1 +#> beta[durnpso:.trtclassIL-12/23 blocker] 0.14 3762 1 +#> beta[durnpso:.trtclassIL-17 blocker] 0.11 3711 1 +#> beta[prevsys:.trtclassTNFa blocker] 0.55 3330 1 +#> beta[prevsys:.trtclassIL-12/23 blocker] 1.05 4366 1 +#> beta[prevsys:.trtclassIL-17 blocker] 0.47 3593 1 +#> beta[bsa:.trtclassTNFa blocker] 1.30 3147 1 +#> beta[bsa:.trtclassIL-12/23 blocker] 1.89 3386 1 +#> beta[bsa:.trtclassIL-17 blocker] 1.22 3490 1 +#> beta[weight:.trtclassTNFa blocker] -0.10 3342 1 +#> beta[weight:.trtclassIL-12/23 blocker] 0.00 4100 1 +#> beta[weight:.trtclassIL-17 blocker] -0.07 3080 1 +#> beta[psa:.trtclassTNFa blocker] 0.34 3511 1 +#> beta[psa:.trtclassIL-12/23 blocker] 0.80 3769 1 +#> beta[psa:.trtclassIL-17 blocker] 0.46 3732 1 +#> d[ETN] 1.72 2114 1 +#> d[IXE_Q2W] 3.06 2708 1 +#> d[IXE_Q4W] 2.84 2949 1 +#> d[SEC_150] 2.36 2357 1 +#> d[SEC_300] 2.76 2456 1 +#> d[UST] 2.36 3349 1 +#> lp__ -7745.56 1701 1 #> cc[PASI75] 0.00 NaN NaN -#> cc[PASI90] 0.72 3323 1 -#> cc[PASI100] 1.58 2862 1 +#> cc[PASI90] 0.72 4016 1 +#> cc[PASI100] 1.58 3777 1 #> -#> Samples were drawn using NUTS(diag_e) at Sun Aug 28 12:56:36 2022. +#> Samples were drawn using NUTS(diag_e) at Tue Jan 9 11:53:40 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). @@ -687,77 +687,77 @@ pso_fit_RE #> Regression model: ~(durnpso + prevsys + bsa + weight + psa) * .trt. #> Centred covariates at the following overall mean values: #> durnpso prevsys bsa weight psa -#> 1.8159830 0.6576489 0.2987820 8.9097263 0.2104826 +#> 1.7947485 0.6504375 0.2973544 8.9165934 0.2074278 #> Inference for Stan model: ordered_multinomial. #> 4 chains, each with iter=2000; warmup=1000; thin=1; #> post-warmup draws per chain=1000, total post-warmup draws=4000. #> #> mean se_mean sd 2.5% 25% 50% 75% -#> beta[durnpso] 0.04 0.00 0.06 -0.08 -0.01 0.04 0.08 -#> beta[prevsys] -0.16 0.00 0.16 -0.46 -0.26 -0.15 -0.06 -#> beta[bsa] -0.14 0.01 0.46 -1.09 -0.45 -0.13 0.17 +#> beta[durnpso] 0.04 0.00 0.06 -0.09 0.00 0.04 0.08 +#> beta[prevsys] -0.16 0.00 0.16 -0.47 -0.27 -0.16 -0.05 +#> beta[bsa] -0.13 0.01 0.47 -1.09 -0.43 -0.11 0.20 #> beta[weight] 0.05 0.00 0.03 -0.01 0.03 0.05 0.07 -#> beta[psa] -0.07 0.00 0.17 -0.40 -0.18 -0.06 0.04 -#> beta[durnpso:.trtclassTNFa blocker] -0.02 0.00 0.07 -0.17 -0.07 -0.02 0.03 -#> beta[durnpso:.trtclassIL-12/23 blocker] -0.07 0.00 0.10 -0.27 -0.14 -0.07 0.01 -#> beta[durnpso:.trtclassIL-17 blocker] -0.03 0.00 0.06 -0.15 -0.07 -0.02 0.02 -#> beta[prevsys:.trtclassTNFa blocker] 0.19 0.00 0.18 -0.17 0.07 0.19 0.31 -#> beta[prevsys:.trtclassIL-12/23 blocker] 0.43 0.00 0.35 -0.27 0.20 0.44 0.67 -#> beta[prevsys:.trtclassIL-17 blocker] 0.15 0.00 0.16 -0.18 0.04 0.15 0.26 -#> beta[bsa:.trtclassTNFa blocker] 0.27 0.01 0.53 -0.73 -0.08 0.25 0.61 -#> beta[bsa:.trtclassIL-12/23 blocker] 0.66 0.01 0.66 -0.65 0.21 0.67 1.09 -#> beta[bsa:.trtclassIL-17 blocker] 0.32 0.01 0.48 -0.58 -0.01 0.31 0.63 +#> beta[psa] -0.07 0.00 0.18 -0.41 -0.19 -0.07 0.05 +#> beta[durnpso:.trtclassTNFa blocker] -0.02 0.00 0.07 -0.17 -0.07 -0.03 0.03 +#> beta[durnpso:.trtclassIL-12/23 blocker] -0.07 0.00 0.10 -0.26 -0.14 -0.07 0.00 +#> beta[durnpso:.trtclassIL-17 blocker] -0.03 0.00 0.07 -0.16 -0.07 -0.03 0.02 +#> beta[prevsys:.trtclassTNFa blocker] 0.19 0.00 0.18 -0.16 0.07 0.19 0.31 +#> beta[prevsys:.trtclassIL-12/23 blocker] 0.44 0.00 0.33 -0.22 0.22 0.44 0.67 +#> beta[prevsys:.trtclassIL-17 blocker] 0.16 0.00 0.17 -0.17 0.05 0.16 0.27 +#> beta[bsa:.trtclassTNFa blocker] 0.25 0.01 0.53 -0.75 -0.12 0.24 0.59 +#> beta[bsa:.trtclassIL-12/23 blocker] 0.63 0.01 0.66 -0.65 0.18 0.62 1.07 +#> beta[bsa:.trtclassIL-17 blocker] 0.30 0.01 0.48 -0.60 -0.04 0.30 0.62 #> beta[weight:.trtclassTNFa blocker] -0.16 0.00 0.03 -0.23 -0.19 -0.16 -0.14 -#> beta[weight:.trtclassIL-12/23 blocker] -0.09 0.00 0.05 -0.18 -0.12 -0.09 -0.06 +#> beta[weight:.trtclassIL-12/23 blocker] -0.09 0.00 0.05 -0.19 -0.12 -0.09 -0.06 #> beta[weight:.trtclassIL-17 blocker] -0.13 0.00 0.03 -0.19 -0.15 -0.13 -0.11 -#> beta[psa:.trtclassTNFa blocker] -0.06 0.00 0.20 -0.46 -0.20 -0.06 0.07 -#> beta[psa:.trtclassIL-12/23 blocker] 0.11 0.00 0.33 -0.53 -0.10 0.11 0.34 -#> beta[psa:.trtclassIL-17 blocker] 0.08 0.00 0.18 -0.27 -0.04 0.08 0.20 -#> d[ETN] 1.59 0.00 0.11 1.38 1.52 1.59 1.66 -#> d[IXE_Q2W] 2.93 0.00 0.11 2.73 2.86 2.93 3.00 -#> d[IXE_Q4W] 2.71 0.00 0.12 2.49 2.64 2.71 2.78 -#> d[SEC_150] 2.21 0.00 0.12 1.99 2.13 2.21 2.28 +#> beta[psa:.trtclassTNFa blocker] -0.06 0.00 0.21 -0.47 -0.20 -0.06 0.08 +#> beta[psa:.trtclassIL-12/23 blocker] 0.11 0.00 0.34 -0.55 -0.12 0.11 0.34 +#> beta[psa:.trtclassIL-17 blocker] 0.08 0.00 0.19 -0.29 -0.04 0.08 0.21 +#> d[ETN] 1.59 0.00 0.11 1.38 1.52 1.59 1.65 +#> d[IXE_Q2W] 2.93 0.00 0.11 2.72 2.86 2.93 3.00 +#> d[IXE_Q4W] 2.71 0.00 0.11 2.48 2.64 2.71 2.78 +#> d[SEC_150] 2.22 0.00 0.12 2.00 2.14 2.21 2.29 #> d[SEC_300] 2.64 0.00 0.12 2.42 2.56 2.63 2.71 #> d[UST] 2.17 0.00 0.17 1.85 2.06 2.16 2.27 -#> lp__ -7646.77 0.21 6.32 -7660.09 -7650.88 -7646.44 -7642.40 -#> tau 0.13 0.00 0.07 0.02 0.09 0.13 0.17 +#> lp__ -7761.18 0.20 6.16 -7774.24 -7765.11 -7760.94 -7756.88 +#> tau 0.14 0.00 0.07 0.03 0.09 0.13 0.17 #> cc[PASI75] 0.00 NaN 0.00 0.00 0.00 0.00 0.00 -#> cc[PASI90] 0.69 0.00 0.02 0.66 0.68 0.69 0.70 +#> cc[PASI90] 0.69 0.00 0.02 0.65 0.68 0.69 0.70 #> cc[PASI100] 1.53 0.00 0.02 1.49 1.52 1.53 1.55 #> 97.5% n_eff Rhat -#> beta[durnpso] 0.16 3817 1 -#> beta[prevsys] 0.16 4212 1 -#> beta[bsa] 0.73 3325 1 -#> beta[weight] 0.10 3585 1 -#> beta[psa] 0.27 4167 1 -#> beta[durnpso:.trtclassTNFa blocker] 0.12 3797 1 -#> beta[durnpso:.trtclassIL-12/23 blocker] 0.13 5280 1 -#> beta[durnpso:.trtclassIL-17 blocker] 0.10 4181 1 -#> beta[prevsys:.trtclassTNFa blocker] 0.54 4064 1 -#> beta[prevsys:.trtclassIL-12/23 blocker] 1.06 5604 1 -#> beta[prevsys:.trtclassIL-17 blocker] 0.46 4509 1 -#> beta[bsa:.trtclassTNFa blocker] 1.31 3573 1 -#> beta[bsa:.trtclassIL-12/23 blocker] 1.98 4347 1 -#> beta[bsa:.trtclassIL-17 blocker] 1.29 3634 1 -#> beta[weight:.trtclassTNFa blocker] -0.10 3833 1 -#> beta[weight:.trtclassIL-12/23 blocker] 0.00 5021 1 -#> beta[weight:.trtclassIL-17 blocker] -0.07 4493 1 -#> beta[psa:.trtclassTNFa blocker] 0.35 4225 1 -#> beta[psa:.trtclassIL-12/23 blocker] 0.75 6190 1 -#> beta[psa:.trtclassIL-17 blocker] 0.43 4403 1 -#> d[ETN] 1.81 2805 1 -#> d[IXE_Q2W] 3.15 3031 1 -#> d[IXE_Q4W] 2.95 2966 1 -#> d[SEC_150] 2.47 2726 1 -#> d[SEC_300] 2.88 2575 1 -#> d[UST] 2.52 2667 1 -#> lp__ -7635.39 899 1 -#> tau 0.29 620 1 +#> beta[durnpso] 0.16 4028 1 +#> beta[prevsys] 0.15 3931 1 +#> beta[bsa] 0.75 3963 1 +#> beta[weight] 0.10 4005 1 +#> beta[psa] 0.28 3835 1 +#> beta[durnpso:.trtclassTNFa blocker] 0.12 4080 1 +#> beta[durnpso:.trtclassIL-12/23 blocker] 0.13 4244 1 +#> beta[durnpso:.trtclassIL-17 blocker] 0.10 4440 1 +#> beta[prevsys:.trtclassTNFa blocker] 0.54 4143 1 +#> beta[prevsys:.trtclassIL-12/23 blocker] 1.07 4555 1 +#> beta[prevsys:.trtclassIL-17 blocker] 0.48 4517 1 +#> beta[bsa:.trtclassTNFa blocker] 1.33 4333 1 +#> beta[bsa:.trtclassIL-12/23 blocker] 1.96 4933 1 +#> beta[bsa:.trtclassIL-17 blocker] 1.30 4329 1 +#> beta[weight:.trtclassTNFa blocker] -0.10 4309 1 +#> beta[weight:.trtclassIL-12/23 blocker] 0.00 4940 1 +#> beta[weight:.trtclassIL-17 blocker] -0.07 4681 1 +#> beta[psa:.trtclassTNFa blocker] 0.35 3883 1 +#> beta[psa:.trtclassIL-12/23 blocker] 0.78 4810 1 +#> beta[psa:.trtclassIL-17 blocker] 0.44 4230 1 +#> d[ETN] 1.81 2539 1 +#> d[IXE_Q2W] 3.16 2657 1 +#> d[IXE_Q4W] 2.93 2394 1 +#> d[SEC_150] 2.47 2433 1 +#> d[SEC_300] 2.90 2193 1 +#> d[UST] 2.50 3305 1 +#> lp__ -7750.02 985 1 +#> tau 0.30 622 1 #> cc[PASI75] 0.00 NaN NaN -#> cc[PASI90] 0.72 5665 1 -#> cc[PASI100] 1.58 6212 1 +#> cc[PASI90] 0.72 5611 1 +#> cc[PASI100] 1.58 5856 1 #> -#> Samples were drawn using NUTS(diag_e) at Sun Aug 28 14:09:25 2022. +#> Samples were drawn using NUTS(diag_e) at Tue Jan 9 12:36:43 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). @@ -769,18 +769,18 @@ We compare the model fit using the DIC: (pso_dic_FE <- dic(pso_fit_FE)) ``` ```r -#> Residual deviance: 8811.4 (on 12387 data points) +#> Residual deviance: 8811.2 (on 12387 data points) #> pD: 36 -#> DIC: 8847.4 +#> DIC: 8847.3 ``` ```{r, eval=!params$run_tests && params$eval_multinomial} (pso_dic_RE <- dic(pso_fit_RE)) ``` ```r -#> Residual deviance: 8800.1 (on 12387 data points) +#> Residual deviance: 8799.8 (on 12387 data points) #> pD: 42.3 -#> DIC: 8842.4 +#> DIC: 8842.1 ``` The DIC is lower for the RE model, indicating that there may be residual heterogeneity in the network and that the conditional constancy of relative effects assumption may be invalid---there may be additional effect modifiers that we have not accounted for. @@ -819,77 +819,77 @@ pso_fit_UME #> Regression model: ~(durnpso + prevsys + bsa + weight + psa) * .trt. #> Centred covariates at the following overall mean values: #> durnpso prevsys bsa weight psa -#> 1.8159830 0.6576489 0.2987820 8.9097263 0.2104826 +#> 1.7947485 0.6504375 0.2973544 8.9165934 0.2074278 #> Inference for Stan model: ordered_multinomial. #> 4 chains, each with iter=2000; warmup=1000; thin=1; #> post-warmup draws per chain=1000, total post-warmup draws=4000. #> #> mean se_mean sd 2.5% 25% 50% 75% -#> beta[durnpso] 0.03 0.00 0.06 -0.09 -0.01 0.03 0.07 -#> beta[prevsys] -0.17 0.00 0.16 -0.47 -0.27 -0.17 -0.06 -#> beta[bsa] -0.09 0.01 0.44 -0.98 -0.38 -0.08 0.21 -#> beta[weight] 0.04 0.00 0.03 -0.01 0.02 0.04 0.06 -#> beta[psa] -0.08 0.00 0.17 -0.42 -0.20 -0.08 0.03 -#> beta[durnpso:.trtclassTNFa blocker] -0.02 0.00 0.07 -0.16 -0.07 -0.02 0.03 -#> beta[durnpso:.trtclassIL-12/23 blocker] -0.06 0.00 0.10 -0.26 -0.13 -0.06 0.01 -#> beta[durnpso:.trtclassIL-17 blocker] -0.02 0.00 0.06 -0.14 -0.06 -0.02 0.02 -#> beta[prevsys:.trtclassTNFa blocker] 0.19 0.00 0.18 -0.16 0.07 0.19 0.31 -#> beta[prevsys:.trtclassIL-12/23 blocker] 0.45 0.01 0.35 -0.24 0.21 0.46 0.70 -#> beta[prevsys:.trtclassIL-17 blocker] 0.16 0.00 0.16 -0.16 0.05 0.16 0.27 -#> beta[bsa:.trtclassTNFa blocker] 0.22 0.01 0.50 -0.76 -0.12 0.20 0.56 -#> beta[bsa:.trtclassIL-12/23 blocker] 0.59 0.01 0.67 -0.72 0.13 0.60 1.05 -#> beta[bsa:.trtclassIL-17 blocker] 0.26 0.01 0.46 -0.64 -0.05 0.25 0.56 -#> beta[weight:.trtclassTNFa blocker] -0.16 0.00 0.03 -0.23 -0.18 -0.16 -0.14 +#> beta[durnpso] 0.04 0.00 0.06 -0.08 0.00 0.04 0.08 +#> beta[prevsys] -0.18 0.00 0.16 -0.48 -0.28 -0.18 -0.07 +#> beta[bsa] -0.10 0.01 0.44 -0.99 -0.38 -0.09 0.20 +#> beta[weight] 0.04 0.00 0.03 -0.01 0.03 0.04 0.06 +#> beta[psa] -0.08 0.00 0.16 -0.40 -0.19 -0.08 0.03 +#> beta[durnpso:.trtclassTNFa blocker] -0.02 0.00 0.07 -0.16 -0.07 -0.02 0.02 +#> beta[durnpso:.trtclassIL-12/23 blocker] -0.06 0.00 0.10 -0.26 -0.13 -0.07 0.00 +#> beta[durnpso:.trtclassIL-17 blocker] -0.02 0.00 0.06 -0.14 -0.07 -0.02 0.02 +#> beta[prevsys:.trtclassTNFa blocker] 0.20 0.00 0.18 -0.15 0.09 0.20 0.33 +#> beta[prevsys:.trtclassIL-12/23 blocker] 0.45 0.01 0.35 -0.28 0.23 0.47 0.70 +#> beta[prevsys:.trtclassIL-17 blocker] 0.17 0.00 0.16 -0.15 0.06 0.18 0.29 +#> beta[bsa:.trtclassTNFa blocker] 0.24 0.01 0.50 -0.74 -0.10 0.23 0.58 +#> beta[bsa:.trtclassIL-12/23 blocker] 0.60 0.01 0.66 -0.71 0.17 0.60 1.04 +#> beta[bsa:.trtclassIL-17 blocker] 0.27 0.01 0.46 -0.61 -0.05 0.26 0.57 +#> beta[weight:.trtclassTNFa blocker] -0.16 0.00 0.03 -0.23 -0.19 -0.16 -0.14 #> beta[weight:.trtclassIL-12/23 blocker] -0.09 0.00 0.05 -0.18 -0.12 -0.09 -0.06 #> beta[weight:.trtclassIL-17 blocker] -0.13 0.00 0.03 -0.19 -0.15 -0.13 -0.11 -#> beta[psa:.trtclassTNFa blocker] -0.05 0.00 0.20 -0.44 -0.18 -0.05 0.09 -#> beta[psa:.trtclassIL-12/23 blocker] 0.12 0.01 0.35 -0.54 -0.12 0.12 0.36 -#> beta[psa:.trtclassIL-17 blocker] 0.10 0.00 0.18 -0.26 -0.03 0.09 0.22 +#> beta[psa:.trtclassTNFa blocker] -0.05 0.00 0.19 -0.44 -0.18 -0.05 0.08 +#> beta[psa:.trtclassIL-12/23 blocker] 0.12 0.00 0.34 -0.53 -0.11 0.13 0.36 +#> beta[psa:.trtclassIL-17 blocker] 0.10 0.00 0.17 -0.24 -0.02 0.10 0.21 #> d[ETN vs. PBO] 1.58 0.00 0.07 1.44 1.53 1.58 1.63 #> d[IXE_Q2W vs. PBO] 2.91 0.00 0.07 2.77 2.86 2.91 2.96 -#> d[IXE_Q4W vs. PBO] 2.69 0.00 0.07 2.54 2.64 2.69 2.74 -#> d[SEC_150 vs. PBO] 2.19 0.00 0.08 2.02 2.13 2.19 2.25 -#> d[SEC_300 vs. PBO] 2.60 0.00 0.08 2.44 2.54 2.60 2.65 -#> d[UST vs. IXE_Q2W] -0.78 0.00 0.16 -1.09 -0.89 -0.78 -0.68 -#> d[UST vs. SEC_300] -0.47 0.00 0.09 -0.65 -0.53 -0.47 -0.41 -#> lp__ -7640.40 0.10 4.39 -7650.22 -7643.16 -7639.97 -7637.34 +#> d[IXE_Q4W vs. PBO] 2.69 0.00 0.07 2.55 2.64 2.69 2.74 +#> d[SEC_150 vs. PBO] 2.19 0.00 0.08 2.03 2.14 2.19 2.25 +#> d[SEC_300 vs. PBO] 2.60 0.00 0.08 2.43 2.54 2.60 2.66 +#> d[UST vs. IXE_Q2W] -0.79 0.00 0.16 -1.10 -0.90 -0.79 -0.68 +#> d[UST vs. SEC_300] -0.47 0.00 0.09 -0.65 -0.53 -0.47 -0.40 +#> lp__ -7756.43 0.11 4.32 -7765.88 -7759.08 -7756.13 -7753.33 #> cc[PASI75] 0.00 NaN 0.00 0.00 0.00 0.00 0.00 -#> cc[PASI90] 0.69 0.00 0.02 0.65 0.68 0.69 0.70 -#> cc[PASI100] 1.53 0.00 0.02 1.49 1.52 1.53 1.55 +#> cc[PASI90] 0.69 0.00 0.02 0.65 0.67 0.69 0.70 +#> cc[PASI100] 1.53 0.00 0.02 1.48 1.52 1.53 1.55 #> 97.5% n_eff Rhat -#> beta[durnpso] 0.15 2591 1 -#> beta[prevsys] 0.14 2698 1 -#> beta[bsa] 0.74 2778 1 -#> beta[weight] 0.10 2854 1 -#> beta[psa] 0.25 2997 1 -#> beta[durnpso:.trtclassTNFa blocker] 0.12 2850 1 -#> beta[durnpso:.trtclassIL-12/23 blocker] 0.13 3732 1 -#> beta[durnpso:.trtclassIL-17 blocker] 0.11 3146 1 -#> beta[prevsys:.trtclassTNFa blocker] 0.54 2803 1 -#> beta[prevsys:.trtclassIL-12/23 blocker] 1.09 4034 1 -#> beta[prevsys:.trtclassIL-17 blocker] 0.48 3191 1 -#> beta[bsa:.trtclassTNFa blocker] 1.20 2846 1 -#> beta[bsa:.trtclassIL-12/23 blocker] 1.91 3889 1 -#> beta[bsa:.trtclassIL-17 blocker] 1.19 3282 1 -#> beta[weight:.trtclassTNFa blocker] -0.09 3169 1 -#> beta[weight:.trtclassIL-12/23 blocker] 0.00 4218 1 -#> beta[weight:.trtclassIL-17 blocker] -0.07 3421 1 -#> beta[psa:.trtclassTNFa blocker] 0.35 3036 1 -#> beta[psa:.trtclassIL-12/23 blocker] 0.81 4680 1 -#> beta[psa:.trtclassIL-17 blocker] 0.45 3454 1 -#> d[ETN vs. PBO] 1.73 2815 1 -#> d[IXE_Q2W vs. PBO] 3.05 2892 1 -#> d[IXE_Q4W vs. PBO] 2.84 3286 1 -#> d[SEC_150 vs. PBO] 2.36 2992 1 -#> d[SEC_300 vs. PBO] 2.76 3203 1 -#> d[UST vs. IXE_Q2W] -0.47 4990 1 -#> d[UST vs. SEC_300] -0.29 6387 1 -#> lp__ -7633.00 1771 1 +#> beta[durnpso] 0.15 3284 1 +#> beta[prevsys] 0.12 3119 1 +#> beta[bsa] 0.74 3357 1 +#> beta[weight] 0.10 3195 1 +#> beta[psa] 0.25 3296 1 +#> beta[durnpso:.trtclassTNFa blocker] 0.11 3451 1 +#> beta[durnpso:.trtclassIL-12/23 blocker] 0.14 4341 1 +#> beta[durnpso:.trtclassIL-17 blocker] 0.10 3853 1 +#> beta[prevsys:.trtclassTNFa blocker] 0.55 3201 1 +#> beta[prevsys:.trtclassIL-12/23 blocker] 1.08 4743 1 +#> beta[prevsys:.trtclassIL-17 blocker] 0.48 3578 1 +#> beta[bsa:.trtclassTNFa blocker] 1.23 3593 1 +#> beta[bsa:.trtclassIL-12/23 blocker] 1.85 4364 1 +#> beta[bsa:.trtclassIL-17 blocker] 1.20 3941 1 +#> beta[weight:.trtclassTNFa blocker] -0.09 3555 1 +#> beta[weight:.trtclassIL-12/23 blocker] 0.00 4746 1 +#> beta[weight:.trtclassIL-17 blocker] -0.07 3758 1 +#> beta[psa:.trtclassTNFa blocker] 0.32 3727 1 +#> beta[psa:.trtclassIL-12/23 blocker] 0.77 4746 1 +#> beta[psa:.trtclassIL-17 blocker] 0.45 3793 1 +#> d[ETN vs. PBO] 1.73 2605 1 +#> d[IXE_Q2W vs. PBO] 3.05 2642 1 +#> d[IXE_Q4W vs. PBO] 2.84 2998 1 +#> d[SEC_150 vs. PBO] 2.36 2650 1 +#> d[SEC_300 vs. PBO] 2.77 2861 1 +#> d[UST vs. IXE_Q2W] -0.47 5596 1 +#> d[UST vs. SEC_300] -0.29 6888 1 +#> lp__ -7749.04 1498 1 #> cc[PASI75] 0.00 NaN NaN -#> cc[PASI90] 0.72 3712 1 -#> cc[PASI100] 1.58 3257 1 +#> cc[PASI90] 0.72 3023 1 +#> cc[PASI100] 1.58 3164 1 #> -#> Samples were drawn using NUTS(diag_e) at Sun Aug 28 14:26:48 2022. +#> Samples were drawn using NUTS(diag_e) at Tue Jan 9 12:47:42 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). @@ -900,17 +900,17 @@ We compare model fit to the FE ML-NMR model using the DIC. pso_dic_FE ``` ```r -#> Residual deviance: 8811.4 (on 12387 data points) +#> Residual deviance: 8811.2 (on 12387 data points) #> pD: 36 -#> DIC: 8847.4 +#> DIC: 8847.3 ``` ```{r, eval=!params$run_tests && params$eval_multinomial} (pso_dic_UME <- dic(pso_fit_UME)) ``` ```r -#> Residual deviance: 8811.7 (on 12387 data points) -#> pD: 36.3 -#> DIC: 8848 +#> Residual deviance: 8811.8 (on 12387 data points) +#> pD: 36.5 +#> DIC: 8848.4 ``` The DIC values are similar between the FE model (assuming consistency) and the UME (inconsistency) model, which suggests no evidence for inconsistency overall. @@ -1008,38 +1008,38 @@ Comparing model fit using the DIC pso_dic_FE ``` ```r -#> Residual deviance: 8811.4 (on 12387 data points) +#> Residual deviance: 8811.2 (on 12387 data points) #> pD: 36 -#> DIC: 8847.4 +#> DIC: 8847.3 ``` ```{r, eval=!params$run_tests && params$eval_multinomial} lapply(noSEM_fits, dic) ``` ```r #> $durnpso -#> Residual deviance: 8812.5 (on 12387 data points) +#> Residual deviance: 8812.4 (on 12387 data points) #> pD: 37.7 -#> DIC: 8850.3 +#> DIC: 8850.1 #> #> $prevsys -#> Residual deviance: 8813.4 (on 12387 data points) -#> pD: 37.8 -#> DIC: 8851.2 +#> Residual deviance: 8813 (on 12387 data points) +#> pD: 37.6 +#> DIC: 8850.6 #> #> $bsa -#> Residual deviance: 8813 (on 12387 data points) -#> pD: 37.8 -#> DIC: 8850.8 +#> Residual deviance: 8812.8 (on 12387 data points) +#> pD: 37.7 +#> DIC: 8850.6 #> #> $weight -#> Residual deviance: 8807.5 (on 12387 data points) -#> pD: 37.9 -#> DIC: 8845.4 +#> Residual deviance: 8807.3 (on 12387 data points) +#> pD: 38 +#> DIC: 8845.3 #> #> $psa -#> Residual deviance: 8812.2 (on 12387 data points) -#> pD: 37.8 -#> DIC: 8850 +#> Residual deviance: 8812 (on 12387 data points) +#> pD: 38.5 +#> DIC: 8850.5 ``` All of the models have similar or higher DIC to the original model making the shared effect modifier assumption for all covariates, with the only exception being the model with independent interactions for `weight` which has slightly lower DIC. @@ -1114,6 +1114,133 @@ Population-average treatment effects can be produced for all the study populatio ```{r, eval=!params$run_tests && params$eval_multinomial} (pso_releff_FE <- relative_effects(pso_fit_FE)) ``` +```r +#> ------------------------------------------------------------------ Study: CLEAR ---- +#> +#> Covariate values: +#> durnpso prevsys bsa weight psa +#> 1.73 0.66 0.32 8.74 0.16 +#> +#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat +#> d[CLEAR: ETN] 1.62 0.08 1.47 1.57 1.62 1.67 1.77 2191 2895 1 +#> d[CLEAR: IXE_Q2W] 2.94 0.08 2.78 2.89 2.94 2.99 3.10 2745 2706 1 +#> d[CLEAR: IXE_Q4W] 2.72 0.08 2.57 2.67 2.72 2.78 2.88 2975 2682 1 +#> d[CLEAR: SEC_150] 2.22 0.09 2.05 2.16 2.22 2.28 2.39 2365 2528 1 +#> d[CLEAR: SEC_300] 2.63 0.08 2.46 2.57 2.63 2.68 2.80 2411 2959 1 +#> d[CLEAR: UST] 2.17 0.11 1.95 2.09 2.16 2.24 2.38 3207 2921 1 +#> +#> ---------------------------------------------------------------- Study: ERASURE ---- +#> +#> Covariate values: +#> durnpso prevsys bsa weight psa +#> 1.69 0.61 0.32 8.86 0.23 +#> +#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat +#> d[ERASURE: ETN] 1.59 0.07 1.44 1.54 1.59 1.64 1.73 2244 2968 1 +#> d[ERASURE: IXE_Q2W] 2.92 0.08 2.77 2.87 2.92 2.97 3.08 2777 2821 1 +#> d[ERASURE: IXE_Q4W] 2.70 0.08 2.56 2.65 2.70 2.75 2.86 3019 2884 1 +#> d[ERASURE: SEC_150] 2.20 0.08 2.04 2.14 2.20 2.26 2.37 2411 2749 1 +#> d[ERASURE: SEC_300] 2.61 0.08 2.45 2.55 2.61 2.66 2.77 2508 2891 1 +#> d[ERASURE: UST] 2.14 0.12 1.91 2.06 2.14 2.22 2.37 3493 3081 1 +#> +#> ---------------------------------------------------------------- Study: FEATURE ---- +#> +#> Covariate values: +#> durnpso prevsys bsa weight psa +#> 1.9 0.67 0.32 9.17 0.15 +#> +#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat +#> d[FEATURE: ETN] 1.55 0.07 1.41 1.50 1.55 1.60 1.70 2253 3017 1 +#> d[FEATURE: IXE_Q2W] 2.88 0.08 2.73 2.83 2.88 2.93 3.04 2881 2641 1 +#> d[FEATURE: IXE_Q4W] 2.66 0.08 2.51 2.61 2.66 2.71 2.82 3121 3016 1 +#> d[FEATURE: SEC_150] 2.16 0.08 2.00 2.10 2.16 2.22 2.33 2421 2566 1 +#> d[FEATURE: SEC_300] 2.57 0.08 2.41 2.51 2.57 2.62 2.73 2530 2830 1 +#> d[FEATURE: UST] 2.12 0.11 1.90 2.05 2.12 2.19 2.34 3432 3215 1 +#> +#> ---------------------------------------------------------------- Study: FIXTURE ---- +#> +#> Covariate values: +#> durnpso prevsys bsa weight psa +#> 1.6 0.62 0.34 8.34 0.14 +#> +#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat +#> d[FIXTURE: ETN] 1.69 0.08 1.53 1.63 1.68 1.74 1.85 2382 2730 1 +#> d[FIXTURE: IXE_Q2W] 2.99 0.09 2.82 2.93 2.99 3.05 3.17 2834 2794 1 +#> d[FIXTURE: IXE_Q4W] 2.77 0.09 2.61 2.72 2.77 2.83 2.95 3045 2875 1 +#> d[FIXTURE: SEC_150] 2.27 0.09 2.10 2.21 2.27 2.33 2.45 2406 2615 1 +#> d[FIXTURE: SEC_300] 2.68 0.09 2.51 2.62 2.68 2.74 2.86 2408 2992 1 +#> d[FIXTURE: UST] 2.20 0.12 1.97 2.12 2.20 2.28 2.43 3246 3097 1 +#> +#> ---------------------------------------------------------------- Study: IXORA-S ---- +#> +#> Covariate values: +#> durnpso prevsys bsa weight psa +#> 1.67 0.92 0.32 8.78 0.13 +#> +#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat +#> d[IXORA-S: ETN] 1.67 0.10 1.48 1.60 1.67 1.73 1.86 2140 2711 1 +#> d[IXORA-S: IXE_Q2W] 2.98 0.10 2.79 2.91 2.97 3.04 3.17 2546 2835 1 +#> d[IXORA-S: IXE_Q4W] 2.76 0.10 2.57 2.69 2.76 2.82 2.96 2763 2864 1 +#> d[IXORA-S: SEC_150] 2.25 0.10 2.05 2.18 2.25 2.33 2.46 2373 3009 1 +#> d[IXORA-S: SEC_300] 2.66 0.10 2.47 2.59 2.66 2.73 2.87 2418 3124 1 +#> d[IXORA-S: UST] 2.28 0.13 2.04 2.19 2.27 2.36 2.53 2946 2530 1 +#> +#> --------------------------------------------------------------- Study: JUNCTURE ---- +#> +#> Covariate values: +#> durnpso prevsys bsa weight psa +#> 1.99 0.55 0.27 9.17 0.23 +#> +#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat +#> d[JUNCTURE: ETN] 1.51 0.07 1.37 1.46 1.51 1.56 1.65 2419 3021 1 +#> d[JUNCTURE: IXE_Q2W] 2.85 0.07 2.71 2.80 2.85 2.90 3.00 3004 2766 1 +#> d[JUNCTURE: IXE_Q4W] 2.63 0.07 2.49 2.59 2.63 2.68 2.78 3295 3225 1 +#> d[JUNCTURE: SEC_150] 2.13 0.08 1.97 2.07 2.13 2.18 2.30 2559 2584 1 +#> d[JUNCTURE: SEC_300] 2.54 0.08 2.38 2.48 2.54 2.59 2.70 2737 2431 1 +#> d[JUNCTURE: UST] 2.04 0.13 1.78 1.94 2.03 2.12 2.31 3874 3205 1 +#> +#> -------------------------------------------------------------- Study: UNCOVER-1 ---- +#> +#> Covariate values: +#> durnpso prevsys bsa weight psa +#> 2 0.73 0.28 9.24 0.28 +#> +#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat +#> d[UNCOVER-1: ETN] 1.53 0.08 1.38 1.48 1.53 1.58 1.68 2019 2694 1 +#> d[UNCOVER-1: IXE_Q2W] 2.88 0.08 2.74 2.83 2.88 2.93 3.03 2590 2963 1 +#> d[UNCOVER-1: IXE_Q4W] 2.66 0.08 2.51 2.61 2.66 2.71 2.81 2771 2664 1 +#> d[UNCOVER-1: SEC_150] 2.16 0.09 1.99 2.10 2.16 2.22 2.33 2325 2735 1 +#> d[UNCOVER-1: SEC_300] 2.57 0.09 2.40 2.51 2.57 2.63 2.74 2452 2753 1 +#> d[UNCOVER-1: UST] 2.12 0.12 1.88 2.04 2.12 2.20 2.36 3351 3318 1 +#> +#> -------------------------------------------------------------- Study: UNCOVER-2 ---- +#> +#> Covariate values: +#> durnpso prevsys bsa weight psa +#> 1.87 0.64 0.27 9.17 0.24 +#> +#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat +#> d[UNCOVER-2: ETN] 1.53 0.07 1.39 1.48 1.53 1.58 1.67 2151 2749 1 +#> d[UNCOVER-2: IXE_Q2W] 2.87 0.07 2.73 2.82 2.87 2.92 3.01 2708 2688 1 +#> d[UNCOVER-2: IXE_Q4W] 2.65 0.07 2.51 2.60 2.65 2.70 2.79 2977 2739 1 +#> d[UNCOVER-2: SEC_150] 2.15 0.08 1.99 2.09 2.15 2.20 2.31 2451 2480 1 +#> d[UNCOVER-2: SEC_300] 2.56 0.08 2.40 2.50 2.56 2.61 2.72 2566 2563 1 +#> d[UNCOVER-2: UST] 2.08 0.12 1.85 2.00 2.08 2.17 2.33 3490 3316 1 +#> +#> -------------------------------------------------------------- Study: UNCOVER-3 ---- +#> +#> Covariate values: +#> durnpso prevsys bsa weight psa +#> 1.78 0.59 0.28 9.01 0.2 +#> +#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat +#> d[UNCOVER-3: ETN] 1.55 0.07 1.41 1.50 1.55 1.60 1.69 2315 2954 1 +#> d[UNCOVER-3: IXE_Q2W] 2.88 0.07 2.74 2.83 2.88 2.93 3.03 2846 2790 1 +#> d[UNCOVER-3: IXE_Q4W] 2.67 0.07 2.52 2.62 2.67 2.72 2.81 3132 2866 1 +#> d[UNCOVER-3: SEC_150] 2.16 0.08 2.01 2.11 2.16 2.22 2.32 2481 2445 1 +#> d[UNCOVER-3: SEC_300] 2.57 0.08 2.41 2.52 2.57 2.62 2.73 2603 2581 1 +#> d[UNCOVER-3: UST] 2.08 0.12 1.85 2.00 2.08 2.16 2.33 3588 3148 1 +``` These relative effects can then be plotted using the `plot()` function. ```{r pso-full-releff, eval=!params$run_tests && params$eval_multinomial, fig.height=8, fig.width=6} @@ -1128,6 +1255,232 @@ We specify `type = "response"` to produce predicted probabilities (rather than p ```{r, eval=!params$run_tests && params$eval_multinomial} (pso_pred_FE <- predict(pso_fit_FE, type = "response")) ``` +```r +#> ------------------------------------------------------------------ Study: CLEAR ---- +#> +#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat +#> pred[CLEAR: PBO, PASI75] 0.09 0.02 0.07 0.08 0.09 0.10 0.13 3226 2898 1 +#> pred[CLEAR: PBO, PASI90] 0.02 0.01 0.01 0.02 0.02 0.03 0.04 3516 3005 1 +#> pred[CLEAR: PBO, PASI100] 0.00 0.00 0.00 0.00 0.00 0.00 0.00 3935 2940 1 +#> pred[CLEAR: ETN, PASI75] 0.61 0.03 0.54 0.58 0.61 0.63 0.67 6487 2944 1 +#> pred[CLEAR: ETN, PASI90] 0.35 0.03 0.29 0.32 0.35 0.37 0.41 6826 2581 1 +#> pred[CLEAR: ETN, PASI100] 0.11 0.02 0.08 0.10 0.11 0.12 0.15 7281 2823 1 +#> pred[CLEAR: IXE_Q2W, PASI75] 0.94 0.01 0.92 0.93 0.94 0.95 0.96 5425 3102 1 +#> pred[CLEAR: IXE_Q2W, PASI90] 0.81 0.02 0.76 0.80 0.81 0.83 0.86 5686 3102 1 +#> pred[CLEAR: IXE_Q2W, PASI100] 0.52 0.04 0.45 0.50 0.52 0.55 0.60 6050 3334 1 +#> pred[CLEAR: IXE_Q4W, PASI75] 0.91 0.02 0.88 0.90 0.91 0.92 0.94 5650 3038 1 +#> pred[CLEAR: IXE_Q4W, PASI90] 0.75 0.03 0.69 0.73 0.75 0.77 0.81 5883 2991 1 +#> pred[CLEAR: IXE_Q4W, PASI100] 0.44 0.04 0.37 0.41 0.44 0.46 0.51 6236 2898 1 +#> pred[CLEAR: SEC_150, PASI75] 0.80 0.02 0.76 0.79 0.80 0.82 0.85 6974 3030 1 +#> pred[CLEAR: SEC_150, PASI90] 0.57 0.03 0.51 0.55 0.57 0.59 0.63 7522 2931 1 +#> pred[CLEAR: SEC_150, PASI100] 0.26 0.03 0.21 0.24 0.26 0.28 0.31 7795 3102 1 +#> pred[CLEAR: SEC_300, PASI75] 0.90 0.01 0.87 0.89 0.90 0.90 0.92 7070 3340 1 +#> pred[CLEAR: SEC_300, PASI90] 0.72 0.02 0.68 0.71 0.72 0.73 0.76 8084 3407 1 +#> pred[CLEAR: SEC_300, PASI100] 0.40 0.02 0.36 0.39 0.40 0.42 0.45 9002 3557 1 +#> pred[CLEAR: UST, PASI75] 0.78 0.02 0.75 0.77 0.78 0.80 0.82 6525 3460 1 +#> pred[CLEAR: UST, PASI90] 0.55 0.02 0.51 0.54 0.55 0.57 0.59 7217 2959 1 +#> pred[CLEAR: UST, PASI100] 0.25 0.02 0.21 0.23 0.25 0.26 0.28 6991 3323 1 +#> +#> ---------------------------------------------------------------- Study: ERASURE ---- +#> +#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat +#> pred[ERASURE: PBO, PASI75] 0.05 0.01 0.03 0.04 0.05 0.05 0.06 2649 2638 1 +#> pred[ERASURE: PBO, PASI90] 0.01 0.00 0.01 0.01 0.01 0.01 0.01 2816 2731 1 +#> pred[ERASURE: PBO, PASI100] 0.00 0.00 0.00 0.00 0.00 0.00 0.00 3172 2552 1 +#> pred[ERASURE: ETN, PASI75] 0.45 0.03 0.40 0.43 0.45 0.47 0.51 5025 2755 1 +#> pred[ERASURE: ETN, PASI90] 0.22 0.02 0.18 0.20 0.22 0.23 0.27 4758 3003 1 +#> pred[ERASURE: ETN, PASI100] 0.06 0.01 0.04 0.05 0.06 0.06 0.08 5151 3063 1 +#> pred[ERASURE: IXE_Q2W, PASI75] 0.88 0.02 0.85 0.87 0.88 0.89 0.91 4393 3184 1 +#> pred[ERASURE: IXE_Q2W, PASI90] 0.70 0.03 0.64 0.68 0.70 0.72 0.75 4403 3212 1 +#> pred[ERASURE: IXE_Q2W, PASI100] 0.38 0.03 0.32 0.36 0.38 0.40 0.44 4520 3034 1 +#> pred[ERASURE: IXE_Q4W, PASI75] 0.83 0.02 0.79 0.82 0.84 0.85 0.87 4583 3113 1 +#> pred[ERASURE: IXE_Q4W, PASI90] 0.62 0.03 0.55 0.60 0.62 0.64 0.68 4622 3175 1 +#> pred[ERASURE: IXE_Q4W, PASI100] 0.30 0.03 0.24 0.28 0.30 0.32 0.36 4734 3180 1 +#> pred[ERASURE: SEC_150, PASI75] 0.68 0.02 0.65 0.67 0.69 0.70 0.72 6563 2962 1 +#> pred[ERASURE: SEC_150, PASI90] 0.42 0.02 0.38 0.41 0.42 0.44 0.47 7123 3203 1 +#> pred[ERASURE: SEC_150, PASI100] 0.15 0.01 0.13 0.14 0.15 0.16 0.18 6746 3046 1 +#> pred[ERASURE: SEC_300, PASI75] 0.81 0.02 0.78 0.80 0.81 0.82 0.84 5243 2986 1 +#> pred[ERASURE: SEC_300, PASI90] 0.58 0.02 0.54 0.57 0.58 0.60 0.62 5377 2999 1 +#> pred[ERASURE: SEC_300, PASI100] 0.27 0.02 0.23 0.25 0.27 0.28 0.31 5602 2968 1 +#> pred[ERASURE: UST, PASI75] 0.66 0.04 0.58 0.63 0.66 0.68 0.73 7153 2959 1 +#> pred[ERASURE: UST, PASI90] 0.40 0.04 0.33 0.38 0.40 0.43 0.48 6931 3035 1 +#> pred[ERASURE: UST, PASI100] 0.15 0.02 0.11 0.13 0.15 0.16 0.20 6275 3460 1 +#> +#> ---------------------------------------------------------------- Study: FEATURE ---- +#> +#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat +#> pred[FEATURE: PBO, PASI75] 0.05 0.01 0.03 0.04 0.05 0.06 0.08 3528 3111 1 +#> pred[FEATURE: PBO, PASI90] 0.01 0.00 0.01 0.01 0.01 0.01 0.02 3573 2996 1 +#> pred[FEATURE: PBO, PASI100] 0.00 0.00 0.00 0.00 0.00 0.00 0.00 3744 3288 1 +#> pred[FEATURE: ETN, PASI75] 0.45 0.04 0.37 0.42 0.45 0.48 0.54 4758 2641 1 +#> pred[FEATURE: ETN, PASI90] 0.22 0.03 0.16 0.20 0.22 0.24 0.29 4716 2394 1 +#> pred[FEATURE: ETN, PASI100] 0.06 0.01 0.04 0.05 0.06 0.06 0.08 4908 2778 1 +#> pred[FEATURE: IXE_Q2W, PASI75] 0.88 0.02 0.83 0.86 0.88 0.90 0.92 4349 2947 1 +#> pred[FEATURE: IXE_Q2W, PASI90] 0.69 0.04 0.61 0.67 0.69 0.72 0.77 4378 2871 1 +#> pred[FEATURE: IXE_Q2W, PASI100] 0.38 0.04 0.29 0.34 0.37 0.41 0.47 4556 2931 1 +#> pred[FEATURE: IXE_Q4W, PASI75] 0.83 0.03 0.77 0.81 0.83 0.85 0.89 4688 3086 1 +#> pred[FEATURE: IXE_Q4W, PASI90] 0.62 0.05 0.53 0.59 0.62 0.65 0.70 4720 3044 1 +#> pred[FEATURE: IXE_Q4W, PASI100] 0.30 0.04 0.22 0.27 0.30 0.33 0.38 4944 3268 1 +#> pred[FEATURE: SEC_150, PASI75] 0.68 0.03 0.61 0.66 0.68 0.71 0.75 5407 3219 1 +#> pred[FEATURE: SEC_150, PASI90] 0.42 0.04 0.35 0.40 0.42 0.45 0.50 5530 3094 1 +#> pred[FEATURE: SEC_150, PASI100] 0.15 0.02 0.11 0.14 0.15 0.17 0.20 5714 3379 1 +#> pred[FEATURE: SEC_300, PASI75] 0.81 0.03 0.75 0.79 0.81 0.83 0.86 5144 2976 1 +#> pred[FEATURE: SEC_300, PASI90] 0.58 0.04 0.51 0.55 0.58 0.61 0.65 5230 2987 1 +#> pred[FEATURE: SEC_300, PASI100] 0.27 0.03 0.21 0.24 0.27 0.29 0.33 5420 3102 1 +#> pred[FEATURE: UST, PASI75] 0.66 0.04 0.58 0.63 0.66 0.70 0.75 6147 3316 1 +#> pred[FEATURE: UST, PASI90] 0.41 0.05 0.32 0.38 0.41 0.44 0.50 5953 3395 1 +#> pred[FEATURE: UST, PASI100] 0.15 0.03 0.10 0.13 0.15 0.17 0.21 5912 3341 1 +#> +#> ---------------------------------------------------------------- Study: FIXTURE ---- +#> +#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat +#> pred[FIXTURE: PBO, PASI75] 0.04 0.01 0.03 0.03 0.04 0.04 0.05 2405 2526 1 +#> pred[FIXTURE: PBO, PASI90] 0.01 0.00 0.00 0.01 0.01 0.01 0.01 2573 2779 1 +#> pred[FIXTURE: PBO, PASI100] 0.00 0.00 0.00 0.00 0.00 0.00 0.00 2939 2784 1 +#> pred[FIXTURE: ETN, PASI75] 0.44 0.02 0.40 0.43 0.44 0.46 0.49 5779 2950 1 +#> pred[FIXTURE: ETN, PASI90] 0.21 0.02 0.18 0.20 0.21 0.22 0.24 5838 3063 1 +#> pred[FIXTURE: ETN, PASI100] 0.05 0.01 0.04 0.05 0.05 0.06 0.07 6526 3466 1 +#> pred[FIXTURE: IXE_Q2W, PASI75] 0.87 0.02 0.84 0.86 0.87 0.88 0.90 4706 3270 1 +#> pred[FIXTURE: IXE_Q2W, PASI90] 0.68 0.03 0.63 0.66 0.68 0.70 0.73 4756 3306 1 +#> pred[FIXTURE: IXE_Q2W, PASI100] 0.36 0.03 0.31 0.34 0.36 0.37 0.41 5019 3429 1 +#> pred[FIXTURE: IXE_Q4W, PASI75] 0.82 0.02 0.78 0.81 0.82 0.84 0.86 4960 3445 1 +#> pred[FIXTURE: IXE_Q4W, PASI90] 0.60 0.03 0.54 0.58 0.60 0.62 0.65 5125 3367 1 +#> pred[FIXTURE: IXE_Q4W, PASI100] 0.28 0.03 0.23 0.26 0.28 0.30 0.33 5495 3586 1 +#> pred[FIXTURE: SEC_150, PASI75] 0.67 0.02 0.63 0.65 0.67 0.68 0.70 6709 2896 1 +#> pred[FIXTURE: SEC_150, PASI90] 0.40 0.02 0.36 0.39 0.40 0.42 0.44 7792 2801 1 +#> pred[FIXTURE: SEC_150, PASI100] 0.14 0.01 0.12 0.13 0.14 0.15 0.16 7645 2984 1 +#> pred[FIXTURE: SEC_300, PASI75] 0.80 0.01 0.77 0.79 0.80 0.81 0.82 7048 3072 1 +#> pred[FIXTURE: SEC_300, PASI90] 0.56 0.02 0.52 0.55 0.56 0.58 0.60 8080 2971 1 +#> pred[FIXTURE: SEC_300, PASI100] 0.25 0.02 0.22 0.24 0.25 0.26 0.28 8438 2901 1 +#> pred[FIXTURE: UST, PASI75] 0.64 0.03 0.57 0.61 0.64 0.66 0.70 8702 3157 1 +#> pred[FIXTURE: UST, PASI90] 0.38 0.03 0.31 0.36 0.38 0.40 0.45 8574 3069 1 +#> pred[FIXTURE: UST, PASI100] 0.13 0.02 0.10 0.12 0.13 0.14 0.17 7713 3267 1 +#> +#> ---------------------------------------------------------------- Study: IXORA-S ---- +#> +#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat +#> pred[IXORA-S: PBO, PASI75] 0.05 0.01 0.03 0.04 0.05 0.05 0.07 3061 3007 1 +#> pred[IXORA-S: PBO, PASI90] 0.01 0.00 0.00 0.01 0.01 0.01 0.02 3191 2842 1 +#> pred[IXORA-S: PBO, PASI100] 0.00 0.00 0.00 0.00 0.00 0.00 0.00 3332 3061 1 +#> pred[IXORA-S: ETN, PASI75] 0.48 0.04 0.41 0.46 0.48 0.51 0.56 5617 3325 1 +#> pred[IXORA-S: ETN, PASI90] 0.24 0.03 0.19 0.22 0.24 0.26 0.30 5603 3080 1 +#> pred[IXORA-S: ETN, PASI100] 0.06 0.01 0.04 0.06 0.06 0.07 0.09 5527 3041 1 +#> pred[IXORA-S: IXE_Q2W, PASI75] 0.89 0.02 0.86 0.88 0.89 0.90 0.92 5451 3254 1 +#> pred[IXORA-S: IXE_Q2W, PASI90] 0.71 0.03 0.65 0.69 0.71 0.73 0.77 5597 3197 1 +#> pred[IXORA-S: IXE_Q2W, PASI100] 0.40 0.03 0.33 0.37 0.40 0.42 0.46 5615 3013 1 +#> pred[IXORA-S: IXE_Q4W, PASI75] 0.85 0.02 0.80 0.83 0.85 0.86 0.89 5613 2964 1 +#> pred[IXORA-S: IXE_Q4W, PASI90] 0.64 0.04 0.57 0.61 0.64 0.66 0.70 5772 2967 1 +#> pred[IXORA-S: IXE_Q4W, PASI100] 0.32 0.03 0.25 0.29 0.32 0.34 0.39 5831 2973 1 +#> pred[IXORA-S: SEC_150, PASI75] 0.70 0.04 0.63 0.68 0.70 0.73 0.77 4994 3394 1 +#> pred[IXORA-S: SEC_150, PASI90] 0.44 0.04 0.36 0.42 0.44 0.47 0.53 5162 3501 1 +#> pred[IXORA-S: SEC_150, PASI100] 0.17 0.03 0.12 0.15 0.16 0.18 0.22 5044 3639 1 +#> pred[IXORA-S: SEC_300, PASI75] 0.82 0.03 0.77 0.81 0.82 0.84 0.87 5587 3690 1 +#> pred[IXORA-S: SEC_300, PASI90] 0.60 0.04 0.53 0.58 0.60 0.63 0.67 5773 3365 1 +#> pred[IXORA-S: SEC_300, PASI100] 0.28 0.03 0.22 0.26 0.28 0.31 0.35 5646 3690 1 +#> pred[IXORA-S: UST, PASI75] 0.71 0.03 0.65 0.69 0.71 0.73 0.76 5639 2992 1 +#> pred[IXORA-S: UST, PASI90] 0.45 0.03 0.39 0.43 0.45 0.47 0.51 5732 2939 1 +#> pred[IXORA-S: UST, PASI100] 0.17 0.02 0.13 0.16 0.17 0.19 0.22 5739 3114 1 +#> +#> --------------------------------------------------------------- Study: JUNCTURE ---- +#> +#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat +#> pred[JUNCTURE: PBO, PASI75] 0.06 0.01 0.03 0.05 0.05 0.06 0.08 4273 3268 1 +#> pred[JUNCTURE: PBO, PASI90] 0.01 0.00 0.01 0.01 0.01 0.01 0.02 4356 3124 1 +#> pred[JUNCTURE: PBO, PASI100] 0.00 0.00 0.00 0.00 0.00 0.00 0.00 4530 3119 1 +#> pred[JUNCTURE: ETN, PASI75] 0.45 0.04 0.37 0.42 0.45 0.48 0.54 5721 3097 1 +#> pred[JUNCTURE: ETN, PASI90] 0.22 0.03 0.16 0.20 0.22 0.24 0.29 5719 3291 1 +#> pred[JUNCTURE: ETN, PASI100] 0.06 0.01 0.03 0.05 0.06 0.06 0.09 5795 3200 1 +#> pred[JUNCTURE: IXE_Q2W, PASI75] 0.88 0.02 0.83 0.87 0.88 0.90 0.92 5095 3287 1 +#> pred[JUNCTURE: IXE_Q2W, PASI90] 0.70 0.04 0.61 0.67 0.70 0.72 0.77 5150 3371 1 +#> pred[JUNCTURE: IXE_Q2W, PASI100] 0.38 0.04 0.29 0.35 0.38 0.41 0.47 5350 3448 1 +#> pred[JUNCTURE: IXE_Q4W, PASI75] 0.83 0.03 0.77 0.81 0.84 0.85 0.88 5341 3326 1 +#> pred[JUNCTURE: IXE_Q4W, PASI90] 0.62 0.04 0.53 0.59 0.62 0.65 0.70 5399 3365 1 +#> pred[JUNCTURE: IXE_Q4W, PASI100] 0.30 0.04 0.22 0.27 0.30 0.33 0.39 5618 3134 1 +#> pred[JUNCTURE: SEC_150, PASI75] 0.68 0.03 0.61 0.66 0.68 0.71 0.75 5890 3193 1 +#> pred[JUNCTURE: SEC_150, PASI90] 0.42 0.04 0.35 0.40 0.42 0.45 0.50 6104 3324 1 +#> pred[JUNCTURE: SEC_150, PASI100] 0.16 0.02 0.11 0.14 0.15 0.17 0.20 6257 3386 1 +#> pred[JUNCTURE: SEC_300, PASI75] 0.81 0.03 0.75 0.79 0.81 0.83 0.86 6201 3114 1 +#> pred[JUNCTURE: SEC_300, PASI90] 0.58 0.04 0.51 0.56 0.58 0.61 0.65 6395 3145 1 +#> pred[JUNCTURE: SEC_300, PASI100] 0.27 0.03 0.21 0.25 0.27 0.29 0.33 6578 2844 1 +#> pred[JUNCTURE: UST, PASI75] 0.65 0.05 0.54 0.61 0.65 0.68 0.75 6638 3078 1 +#> pred[JUNCTURE: UST, PASI90] 0.39 0.05 0.29 0.36 0.39 0.43 0.50 6572 3031 1 +#> pred[JUNCTURE: UST, PASI100] 0.14 0.03 0.09 0.12 0.14 0.16 0.21 6285 3384 1 +#> +#> -------------------------------------------------------------- Study: UNCOVER-1 ---- +#> +#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat +#> pred[UNCOVER-1: PBO, PASI75] 0.06 0.01 0.04 0.05 0.06 0.06 0.07 2932 2882 1 +#> pred[UNCOVER-1: PBO, PASI90] 0.01 0.00 0.01 0.01 0.01 0.01 0.02 3181 2654 1 +#> pred[UNCOVER-1: PBO, PASI100] 0.00 0.00 0.00 0.00 0.00 0.00 0.00 3470 2886 1 +#> pred[UNCOVER-1: ETN, PASI75] 0.47 0.02 0.42 0.45 0.47 0.48 0.51 4589 2900 1 +#> pred[UNCOVER-1: ETN, PASI90] 0.23 0.02 0.20 0.22 0.23 0.24 0.26 4645 3166 1 +#> pred[UNCOVER-1: ETN, PASI100] 0.06 0.01 0.05 0.06 0.06 0.06 0.08 4571 2859 1 +#> pred[UNCOVER-1: IXE_Q2W, PASI75] 0.89 0.01 0.87 0.88 0.89 0.90 0.91 6322 3068 1 +#> pred[UNCOVER-1: IXE_Q2W, PASI90] 0.71 0.01 0.68 0.70 0.71 0.72 0.74 7204 3180 1 +#> pred[UNCOVER-1: IXE_Q2W, PASI100] 0.39 0.02 0.36 0.38 0.39 0.40 0.43 7586 3358 1 +#> pred[UNCOVER-1: IXE_Q4W, PASI75] 0.84 0.01 0.82 0.84 0.84 0.85 0.86 6326 3169 1 +#> pred[UNCOVER-1: IXE_Q4W, PASI90] 0.63 0.02 0.60 0.62 0.63 0.65 0.66 7231 3067 1 +#> pred[UNCOVER-1: IXE_Q4W, PASI100] 0.31 0.02 0.28 0.30 0.31 0.33 0.35 7674 3322 1 +#> pred[UNCOVER-1: SEC_150, PASI75] 0.70 0.03 0.64 0.68 0.70 0.72 0.75 4573 2962 1 +#> pred[UNCOVER-1: SEC_150, PASI90] 0.44 0.03 0.37 0.42 0.44 0.46 0.51 4631 3137 1 +#> pred[UNCOVER-1: SEC_150, PASI100] 0.17 0.02 0.13 0.15 0.16 0.18 0.21 4574 2811 1 +#> pred[UNCOVER-1: SEC_300, PASI75] 0.82 0.02 0.78 0.81 0.82 0.84 0.86 4833 3200 1 +#> pred[UNCOVER-1: SEC_300, PASI90] 0.60 0.03 0.54 0.58 0.60 0.62 0.66 4991 3389 1 +#> pred[UNCOVER-1: SEC_300, PASI100] 0.28 0.03 0.23 0.26 0.28 0.30 0.34 4873 3424 1 +#> pred[UNCOVER-1: UST, PASI75] 0.68 0.04 0.60 0.66 0.68 0.71 0.76 5260 3088 1 +#> pred[UNCOVER-1: UST, PASI90] 0.43 0.04 0.35 0.40 0.43 0.46 0.51 5378 3504 1 +#> pred[UNCOVER-1: UST, PASI100] 0.16 0.03 0.12 0.14 0.16 0.18 0.22 5219 3385 1 +#> +#> -------------------------------------------------------------- Study: UNCOVER-2 ---- +#> +#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat +#> pred[UNCOVER-2: PBO, PASI75] 0.05 0.01 0.04 0.05 0.05 0.06 0.06 3122 2522 1 +#> pred[UNCOVER-2: PBO, PASI90] 0.01 0.00 0.01 0.01 0.01 0.01 0.01 3356 2912 1 +#> pred[UNCOVER-2: PBO, PASI100] 0.00 0.00 0.00 0.00 0.00 0.00 0.00 3626 3266 1 +#> pred[UNCOVER-2: ETN, PASI75] 0.44 0.02 0.40 0.43 0.44 0.45 0.48 4685 3191 1 +#> pred[UNCOVER-2: ETN, PASI90] 0.21 0.01 0.18 0.20 0.21 0.22 0.24 5049 3053 1 +#> pred[UNCOVER-2: ETN, PASI100] 0.05 0.01 0.04 0.05 0.05 0.06 0.06 5048 3316 1 +#> pred[UNCOVER-2: IXE_Q2W, PASI75] 0.88 0.01 0.86 0.87 0.88 0.88 0.90 5035 2716 1 +#> pred[UNCOVER-2: IXE_Q2W, PASI90] 0.69 0.02 0.66 0.68 0.69 0.70 0.72 5739 2934 1 +#> pred[UNCOVER-2: IXE_Q2W, PASI100] 0.37 0.02 0.34 0.36 0.37 0.38 0.40 6147 3060 1 +#> pred[UNCOVER-2: IXE_Q4W, PASI75] 0.83 0.01 0.81 0.82 0.83 0.84 0.85 5474 2962 1 +#> pred[UNCOVER-2: IXE_Q4W, PASI90] 0.61 0.02 0.58 0.60 0.61 0.62 0.64 6371 3437 1 +#> pred[UNCOVER-2: IXE_Q4W, PASI100] 0.29 0.02 0.26 0.28 0.29 0.30 0.32 6973 3554 1 +#> pred[UNCOVER-2: SEC_150, PASI75] 0.68 0.03 0.61 0.66 0.68 0.70 0.73 5016 3385 1 +#> pred[UNCOVER-2: SEC_150, PASI90] 0.41 0.03 0.35 0.39 0.41 0.44 0.48 5125 3421 1 +#> pred[UNCOVER-2: SEC_150, PASI100] 0.15 0.02 0.11 0.13 0.15 0.16 0.19 5019 3539 1 +#> pred[UNCOVER-2: SEC_300, PASI75] 0.80 0.02 0.76 0.79 0.81 0.82 0.84 5077 3048 1 +#> pred[UNCOVER-2: SEC_300, PASI90] 0.57 0.03 0.51 0.55 0.57 0.60 0.63 5322 2906 1 +#> pred[UNCOVER-2: SEC_300, PASI100] 0.26 0.03 0.21 0.24 0.26 0.28 0.31 5359 3285 1 +#> pred[UNCOVER-2: UST, PASI75] 0.65 0.04 0.56 0.62 0.65 0.68 0.73 5584 3209 1 +#> pred[UNCOVER-2: UST, PASI90] 0.39 0.04 0.31 0.36 0.39 0.42 0.48 5564 3136 1 +#> pred[UNCOVER-2: UST, PASI100] 0.14 0.02 0.10 0.12 0.14 0.16 0.19 5238 3227 1 +#> +#> -------------------------------------------------------------- Study: UNCOVER-3 ---- +#> +#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat +#> pred[UNCOVER-3: PBO, PASI75] 0.07 0.01 0.05 0.06 0.07 0.07 0.09 3408 2896 1 +#> pred[UNCOVER-3: PBO, PASI90] 0.02 0.00 0.01 0.01 0.01 0.02 0.02 3699 2795 1 +#> pred[UNCOVER-3: PBO, PASI100] 0.00 0.00 0.00 0.00 0.00 0.00 0.00 4199 3282 1 +#> pred[UNCOVER-3: ETN, PASI75] 0.51 0.02 0.47 0.49 0.51 0.52 0.54 5141 3015 1 +#> pred[UNCOVER-3: ETN, PASI90] 0.26 0.01 0.23 0.25 0.26 0.27 0.29 5478 3035 1 +#> pred[UNCOVER-3: ETN, PASI100] 0.07 0.01 0.06 0.07 0.07 0.08 0.09 5733 3307 1 +#> pred[UNCOVER-3: IXE_Q2W, PASI75] 0.91 0.01 0.89 0.90 0.91 0.91 0.92 4495 3217 1 +#> pred[UNCOVER-3: IXE_Q2W, PASI90] 0.74 0.01 0.71 0.73 0.74 0.75 0.77 5272 2943 1 +#> pred[UNCOVER-3: IXE_Q2W, PASI100] 0.43 0.02 0.40 0.42 0.43 0.44 0.46 5853 2938 1 +#> pred[UNCOVER-3: IXE_Q4W, PASI75] 0.87 0.01 0.85 0.86 0.87 0.87 0.88 5666 3558 1 +#> pred[UNCOVER-3: IXE_Q4W, PASI90] 0.67 0.02 0.64 0.66 0.67 0.68 0.70 6671 3608 1 +#> pred[UNCOVER-3: IXE_Q4W, PASI100] 0.35 0.02 0.32 0.34 0.35 0.36 0.38 8120 3670 1 +#> pred[UNCOVER-3: SEC_150, PASI75] 0.73 0.03 0.67 0.71 0.73 0.75 0.78 5136 3029 1 +#> pred[UNCOVER-3: SEC_150, PASI90] 0.48 0.03 0.41 0.46 0.48 0.50 0.54 5367 2968 1 +#> pred[UNCOVER-3: SEC_150, PASI100] 0.19 0.02 0.15 0.17 0.19 0.20 0.23 5276 2947 1 +#> pred[UNCOVER-3: SEC_300, PASI75] 0.84 0.02 0.80 0.83 0.84 0.86 0.88 5481 3182 1 +#> pred[UNCOVER-3: SEC_300, PASI90] 0.63 0.03 0.57 0.61 0.63 0.65 0.69 5782 2938 1 +#> pred[UNCOVER-3: SEC_300, PASI100] 0.31 0.03 0.26 0.29 0.31 0.33 0.37 5694 3154 1 +#> pred[UNCOVER-3: UST, PASI75] 0.70 0.04 0.62 0.67 0.70 0.73 0.77 5694 3534 1 +#> pred[UNCOVER-3: UST, PASI90] 0.45 0.04 0.37 0.42 0.45 0.48 0.53 5692 3345 1 +#> pred[UNCOVER-3: UST, PASI100] 0.17 0.03 0.13 0.16 0.17 0.19 0.23 5399 3632 1 +``` Again, these can be plotted using the `plot()` function. ```{r pso-full-pred, eval=!params$run_tests && params$eval_multinomial, fig.width=6, fig.height=8} @@ -1201,12 +1554,12 @@ We only need the covariate means, with variable names matching those in the regr #> 1.69 0.91 0.23 7.83 0.22 #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> d[Chiricozzi 2019: ETN] 1.79 0.11 1.58 1.71 1.79 1.86 2.01 1618 2360 1 -#> d[Chiricozzi 2019: IXE_Q2W] 3.07 0.10 2.87 3.00 3.07 3.14 3.28 1623 2630 1 -#> d[Chiricozzi 2019: IXE_Q4W] 2.85 0.10 2.65 2.78 2.85 2.92 3.06 1782 2447 1 -#> d[Chiricozzi 2019: SEC_150] 2.35 0.11 2.13 2.28 2.35 2.43 2.58 2248 2749 1 -#> d[Chiricozzi 2019: SEC_300] 2.76 0.11 2.55 2.69 2.76 2.84 2.98 1883 2739 1 -#> d[Chiricozzi 2019: UST] 2.30 0.15 2.02 2.20 2.30 2.40 2.58 2569 2878 1 +#> d[Chiricozzi 2019: ETN] 1.79 0.11 1.59 1.72 1.79 1.86 2.01 2269 2766 1 +#> d[Chiricozzi 2019: IXE_Q2W] 3.08 0.10 2.88 3.01 3.08 3.15 3.28 2520 2614 1 +#> d[Chiricozzi 2019: IXE_Q4W] 2.86 0.10 2.65 2.79 2.86 2.93 3.07 2693 2604 1 +#> d[Chiricozzi 2019: SEC_150] 2.36 0.11 2.14 2.28 2.36 2.43 2.58 2435 2679 1 +#> d[Chiricozzi 2019: SEC_300] 2.77 0.11 2.55 2.69 2.77 2.84 2.99 2479 2858 1 +#> d[Chiricozzi 2019: UST] 2.31 0.15 2.02 2.21 2.31 2.41 2.60 3003 2920 1 #> #> --------------------------------------------------------------- Study: PROSPECT ---- #> @@ -1215,12 +1568,12 @@ We only need the covariate means, with variable names matching those in the regr #> 1.96 0.91 0.19 8.75 0.2 #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> d[PROSPECT: ETN] 1.62 0.11 1.42 1.55 1.62 1.70 1.84 2215 2573 1 -#> d[PROSPECT: IXE_Q2W] 2.94 0.10 2.74 2.87 2.93 3.00 3.13 2128 2844 1 -#> d[PROSPECT: IXE_Q4W] 2.72 0.10 2.52 2.65 2.72 2.78 2.92 2329 2929 1 -#> d[PROSPECT: SEC_150] 2.22 0.11 2.00 2.14 2.22 2.29 2.44 2719 3321 1 -#> d[PROSPECT: SEC_300] 2.63 0.11 2.41 2.55 2.63 2.70 2.85 2295 3224 1 -#> d[PROSPECT: UST] 2.18 0.15 1.89 2.08 2.18 2.28 2.47 3205 3089 1 +#> d[PROSPECT: ETN] 1.63 0.11 1.42 1.56 1.63 1.70 1.84 2256 2690 1 +#> d[PROSPECT: IXE_Q2W] 2.94 0.10 2.74 2.87 2.94 3.01 3.14 2650 2950 1 +#> d[PROSPECT: IXE_Q4W] 2.72 0.10 2.53 2.66 2.72 2.79 2.92 2829 2750 1 +#> d[PROSPECT: SEC_150] 2.22 0.11 2.00 2.14 2.22 2.29 2.44 2590 3014 1 +#> d[PROSPECT: SEC_300] 2.63 0.11 2.41 2.55 2.63 2.70 2.85 2679 2654 1 +#> d[PROSPECT: UST] 2.18 0.15 1.90 2.08 2.18 2.29 2.48 3181 3182 1 #> #> ---------------------------------------------------------------- Study: PsoBest ---- #> @@ -1229,13 +1582,12 @@ We only need the covariate means, with variable names matching those in the regr #> 1.82 0.54 0.24 8.5 0.21 #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> d[PsoBest: ETN] 1.61 0.08 1.46 1.56 1.61 1.66 1.77 2021 2876 1 -#> d[PsoBest: IXE_Q2W] 2.93 0.08 2.78 2.87 2.93 2.98 3.08 1857 2249 1 -#> d[PsoBest: IXE_Q4W] 2.71 0.08 2.56 2.66 2.71 2.76 2.86 2164 2259 1 -#> d[PsoBest: SEC_150] 2.21 0.09 2.04 2.15 2.21 2.27 2.39 2451 2706 1 -#> d[PsoBest: SEC_300] 2.62 0.09 2.45 2.56 2.62 2.67 2.79 2016 2919 1 -#> d[PsoBest: UST] 2.08 0.13 1.82 1.99 2.08 2.17 2.34 2852 3123 1 -#> +#> d[PsoBest: ETN] 1.61 0.08 1.46 1.56 1.61 1.66 1.77 2455 2879 1 +#> d[PsoBest: IXE_Q2W] 2.93 0.08 2.78 2.88 2.93 2.98 3.09 2824 2943 1 +#> d[PsoBest: IXE_Q4W] 2.71 0.08 2.56 2.66 2.71 2.77 2.87 3100 2982 1 +#> d[PsoBest: SEC_150] 2.21 0.09 2.04 2.15 2.21 2.27 2.38 2533 2357 1 +#> d[PsoBest: SEC_300] 2.62 0.09 2.45 2.56 2.62 2.67 2.79 2647 2672 1 +#> d[PsoBest: UST] 2.08 0.14 1.82 1.99 2.08 2.17 2.35 3616 3150 1 ``` These estimates are plotted using the `plot()` function. @@ -1281,52 +1633,52 @@ No information on baseline response was available from PsoBest, so no prediction #> -------------------------------------------------------- Study: Chiricozzi 2019 ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[Chiricozzi 2019: PBO, PASI75] 0.02 0.01 0.01 0.01 0.02 0.02 0.03 2564 3595 1 -#> pred[Chiricozzi 2019: PBO, PASI90] 0.00 0.00 0.00 0.00 0.00 0.00 0.01 2643 3414 1 -#> pred[Chiricozzi 2019: PBO, PASI100] 0.00 0.00 0.00 0.00 0.00 0.00 0.00 2763 3690 1 -#> pred[Chiricozzi 2019: ETN, PASI75] 0.37 0.04 0.30 0.34 0.37 0.40 0.46 4758 3892 1 -#> pred[Chiricozzi 2019: ETN, PASI90] 0.16 0.03 0.11 0.14 0.16 0.18 0.22 4762 3997 1 -#> pred[Chiricozzi 2019: ETN, PASI100] 0.03 0.01 0.02 0.03 0.03 0.04 0.05 4701 3931 1 -#> pred[Chiricozzi 2019: IXE_Q2W, PASI75] 0.83 0.03 0.77 0.81 0.83 0.84 0.88 4481 3929 1 -#> pred[Chiricozzi 2019: IXE_Q2W, PASI90] 0.60 0.04 0.52 0.57 0.60 0.63 0.68 4458 4057 1 -#> pred[Chiricozzi 2019: IXE_Q2W, PASI100] 0.28 0.04 0.21 0.26 0.28 0.31 0.36 4418 4016 1 -#> pred[Chiricozzi 2019: IXE_Q4W, PASI75] 0.76 0.03 0.70 0.74 0.77 0.79 0.83 4476 3773 1 -#> pred[Chiricozzi 2019: IXE_Q4W, PASI90] 0.52 0.04 0.43 0.49 0.52 0.55 0.60 4444 3737 1 -#> pred[Chiricozzi 2019: IXE_Q4W, PASI100] 0.22 0.03 0.16 0.19 0.21 0.24 0.28 4393 3701 1 -#> pred[Chiricozzi 2019: SEC_150, PASI75] 0.59 0.04 0.52 0.57 0.59 0.62 0.66 4949 3965 1 -#> pred[Chiricozzi 2019: SEC_150, PASI90] 0.33 0.03 0.26 0.30 0.33 0.35 0.40 4810 3887 1 -#> pred[Chiricozzi 2019: SEC_150, PASI100] 0.10 0.02 0.07 0.09 0.10 0.11 0.14 4741 3846 1 -#> pred[Chiricozzi 2019: SEC_300, PASI75] 0.74 0.02 0.69 0.72 0.74 0.75 0.78 3923 3931 1 -#> pred[Chiricozzi 2019: SEC_300, PASI90] 0.48 0.03 0.42 0.46 0.48 0.50 0.54 3912 3974 1 -#> pred[Chiricozzi 2019: SEC_300, PASI100] 0.19 0.02 0.15 0.17 0.19 0.20 0.23 3885 3933 1 -#> pred[Chiricozzi 2019: UST, PASI75] 0.57 0.05 0.47 0.53 0.57 0.60 0.67 5538 3835 1 -#> pred[Chiricozzi 2019: UST, PASI90] 0.31 0.05 0.22 0.28 0.31 0.34 0.41 5591 3798 1 -#> pred[Chiricozzi 2019: UST, PASI100] 0.10 0.02 0.06 0.08 0.09 0.11 0.15 5462 3920 1 +#> pred[Chiricozzi 2019: PBO, PASI75] 0.02 0.01 0.01 0.01 0.02 0.02 0.03 2774 2898 1 +#> pred[Chiricozzi 2019: PBO, PASI90] 0.00 0.00 0.00 0.00 0.00 0.00 0.01 2838 3324 1 +#> pred[Chiricozzi 2019: PBO, PASI100] 0.00 0.00 0.00 0.00 0.00 0.00 0.00 2893 3086 1 +#> pred[Chiricozzi 2019: ETN, PASI75] 0.37 0.04 0.29 0.35 0.37 0.40 0.46 4735 3515 1 +#> pred[Chiricozzi 2019: ETN, PASI90] 0.16 0.03 0.11 0.14 0.16 0.18 0.22 4671 3820 1 +#> pred[Chiricozzi 2019: ETN, PASI100] 0.03 0.01 0.02 0.03 0.03 0.04 0.05 4874 3910 1 +#> pred[Chiricozzi 2019: IXE_Q2W, PASI75] 0.83 0.03 0.77 0.81 0.83 0.85 0.88 3937 4088 1 +#> pred[Chiricozzi 2019: IXE_Q2W, PASI90] 0.60 0.04 0.52 0.57 0.60 0.63 0.69 3975 3974 1 +#> pred[Chiricozzi 2019: IXE_Q2W, PASI100] 0.28 0.04 0.21 0.26 0.28 0.31 0.36 4029 3977 1 +#> pred[Chiricozzi 2019: IXE_Q4W, PASI75] 0.77 0.03 0.69 0.74 0.77 0.79 0.83 4139 3729 1 +#> pred[Chiricozzi 2019: IXE_Q4W, PASI90] 0.52 0.05 0.43 0.49 0.52 0.55 0.61 4171 4113 1 +#> pred[Chiricozzi 2019: IXE_Q4W, PASI100] 0.22 0.03 0.16 0.19 0.22 0.24 0.29 4273 4046 1 +#> pred[Chiricozzi 2019: SEC_150, PASI75] 0.59 0.04 0.51 0.57 0.59 0.62 0.66 4475 4038 1 +#> pred[Chiricozzi 2019: SEC_150, PASI90] 0.33 0.04 0.26 0.30 0.33 0.35 0.40 4604 4025 1 +#> pred[Chiricozzi 2019: SEC_150, PASI100] 0.10 0.02 0.07 0.09 0.10 0.11 0.14 4509 3701 1 +#> pred[Chiricozzi 2019: SEC_300, PASI75] 0.74 0.02 0.68 0.72 0.74 0.75 0.78 3565 3798 1 +#> pred[Chiricozzi 2019: SEC_300, PASI90] 0.48 0.03 0.42 0.46 0.48 0.50 0.54 3838 3636 1 +#> pred[Chiricozzi 2019: SEC_300, PASI100] 0.19 0.02 0.15 0.17 0.19 0.20 0.23 3745 3395 1 +#> pred[Chiricozzi 2019: UST, PASI75] 0.57 0.05 0.47 0.54 0.57 0.61 0.68 4619 3313 1 +#> pred[Chiricozzi 2019: UST, PASI90] 0.32 0.05 0.23 0.28 0.32 0.35 0.42 4616 3415 1 +#> pred[Chiricozzi 2019: UST, PASI100] 0.10 0.02 0.06 0.08 0.10 0.11 0.15 4635 3362 1 #> #> --------------------------------------------------------------- Study: PROSPECT ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[PROSPECT: PBO, PASI75] 0.03 0.01 0.02 0.03 0.03 0.04 0.05 2902 3561 1 -#> pred[PROSPECT: PBO, PASI90] 0.01 0.00 0.00 0.00 0.01 0.01 0.01 3098 3528 1 -#> pred[PROSPECT: PBO, PASI100] 0.00 0.00 0.00 0.00 0.00 0.00 0.00 3269 3415 1 -#> pred[PROSPECT: ETN, PASI75] 0.40 0.03 0.33 0.38 0.40 0.42 0.47 5199 3240 1 -#> pred[PROSPECT: ETN, PASI90] 0.18 0.02 0.14 0.16 0.18 0.20 0.23 5147 3365 1 -#> pred[PROSPECT: ETN, PASI100] 0.04 0.01 0.03 0.04 0.04 0.05 0.06 4967 3490 1 -#> pred[PROSPECT: IXE_Q2W, PASI75] 0.85 0.02 0.81 0.84 0.85 0.86 0.88 5001 3224 1 -#> pred[PROSPECT: IXE_Q2W, PASI90] 0.64 0.03 0.57 0.62 0.64 0.66 0.70 4949 3615 1 -#> pred[PROSPECT: IXE_Q2W, PASI100] 0.32 0.03 0.26 0.30 0.32 0.34 0.38 4883 3727 1 -#> pred[PROSPECT: IXE_Q4W, PASI75] 0.79 0.02 0.74 0.78 0.79 0.81 0.84 5310 3627 1 -#> pred[PROSPECT: IXE_Q4W, PASI90] 0.56 0.03 0.49 0.53 0.56 0.58 0.62 5152 3587 1 -#> pred[PROSPECT: IXE_Q4W, PASI100] 0.25 0.03 0.19 0.23 0.24 0.26 0.30 4930 3584 1 -#> pred[PROSPECT: SEC_150, PASI75] 0.63 0.03 0.58 0.61 0.63 0.65 0.68 5720 3577 1 -#> pred[PROSPECT: SEC_150, PASI90] 0.36 0.03 0.31 0.35 0.36 0.38 0.42 5332 3598 1 -#> pred[PROSPECT: SEC_150, PASI100] 0.12 0.01 0.09 0.11 0.12 0.13 0.15 5036 3554 1 -#> pred[PROSPECT: SEC_300, PASI75] 0.77 0.01 0.74 0.76 0.77 0.77 0.79 3785 4056 1 -#> pred[PROSPECT: SEC_300, PASI90] 0.52 0.02 0.49 0.51 0.52 0.53 0.55 3560 3888 1 -#> pred[PROSPECT: SEC_300, PASI100] 0.22 0.01 0.19 0.21 0.22 0.23 0.24 3510 3811 1 -#> pred[PROSPECT: UST, PASI75] 0.61 0.05 0.52 0.58 0.61 0.64 0.70 5992 3337 1 -#> pred[PROSPECT: UST, PASI90] 0.35 0.04 0.27 0.32 0.35 0.38 0.44 6096 3471 1 -#> pred[PROSPECT: UST, PASI100] 0.12 0.02 0.08 0.10 0.11 0.13 0.17 5841 3581 1 +#> pred[PROSPECT: PBO, PASI75] 0.03 0.01 0.02 0.03 0.03 0.04 0.05 2934 2914 1 +#> pred[PROSPECT: PBO, PASI90] 0.01 0.00 0.00 0.00 0.01 0.01 0.01 2952 2943 1 +#> pred[PROSPECT: PBO, PASI100] 0.00 0.00 0.00 0.00 0.00 0.00 0.00 3041 3053 1 +#> pred[PROSPECT: ETN, PASI75] 0.40 0.04 0.33 0.38 0.40 0.43 0.47 5801 3330 1 +#> pred[PROSPECT: ETN, PASI90] 0.18 0.02 0.14 0.16 0.18 0.20 0.23 5572 3383 1 +#> pred[PROSPECT: ETN, PASI100] 0.04 0.01 0.03 0.04 0.04 0.05 0.06 5504 3323 1 +#> pred[PROSPECT: IXE_Q2W, PASI75] 0.85 0.02 0.81 0.84 0.85 0.86 0.89 5040 3313 1 +#> pred[PROSPECT: IXE_Q2W, PASI90] 0.64 0.03 0.57 0.62 0.64 0.66 0.70 5008 3529 1 +#> pred[PROSPECT: IXE_Q2W, PASI100] 0.32 0.03 0.26 0.30 0.32 0.34 0.38 5095 3461 1 +#> pred[PROSPECT: IXE_Q4W, PASI75] 0.79 0.03 0.74 0.78 0.79 0.81 0.84 5273 3203 1 +#> pred[PROSPECT: IXE_Q4W, PASI90] 0.56 0.04 0.49 0.53 0.56 0.58 0.63 5255 3293 1 +#> pred[PROSPECT: IXE_Q4W, PASI100] 0.25 0.03 0.19 0.23 0.24 0.27 0.31 5121 3195 1 +#> pred[PROSPECT: SEC_150, PASI75] 0.63 0.03 0.57 0.61 0.63 0.64 0.68 6002 3692 1 +#> pred[PROSPECT: SEC_150, PASI90] 0.36 0.03 0.31 0.34 0.36 0.38 0.42 5902 3841 1 +#> pred[PROSPECT: SEC_150, PASI100] 0.12 0.01 0.09 0.11 0.12 0.13 0.15 5461 3642 1 +#> pred[PROSPECT: SEC_300, PASI75] 0.77 0.01 0.74 0.76 0.77 0.77 0.79 3985 3918 1 +#> pred[PROSPECT: SEC_300, PASI90] 0.52 0.02 0.49 0.51 0.52 0.53 0.55 4033 3889 1 +#> pred[PROSPECT: SEC_300, PASI100] 0.22 0.01 0.19 0.21 0.22 0.22 0.24 3920 3878 1 +#> pred[PROSPECT: UST, PASI75] 0.61 0.05 0.52 0.58 0.62 0.65 0.70 5757 3516 1 +#> pred[PROSPECT: UST, PASI90] 0.36 0.05 0.27 0.32 0.35 0.39 0.45 5644 3496 1 +#> pred[PROSPECT: UST, PASI100] 0.12 0.02 0.07 0.10 0.12 0.13 0.17 5586 3549 1 ``` Again, we then plot these estimates using the `plot()` function, here with some customisation using ggplot syntax. diff --git a/vignettes/pso-full-dev-dev-1.png b/vignettes/pso-full-dev-dev-1.png index f0419a9b74e5e951627a771d217291d0b68c7bca..4a1d8d03f11008214e9272843da918a5f684e81c 100644 GIT binary patch literal 8926 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 aUf+_MWq-mWiTeJJA{9kVg(^9#kpBbP?`9tW diff --git a/vignettes/pso-full-pred-1.png b/vignettes/pso-full-pred-1.png index 727dfe0939223824c56b500e05b243c5bf86646a..92ea83ffd985f5e9710b01837157ef5c6bd605ad 100644 GIT binary patch literal 43718 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 literal 43736 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%0AO}^) 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 literal 21867 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 Pv#xi}P&-G<_WpkW$=&S@ diff --git a/vignettes/pso-full-releff-1.png b/vignettes/pso-full-releff-1.png index ca2ab67fb983d1cd590489d559ce2e4b502e3522..f1eed1dc46bf5c9a49efefde868c064d1dd2ceba 100644 GIT binary patch literal 25075 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 G$o~Z)Yg;Y= literal 25103 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 diff --git a/vignettes/pso-full-releff-new-1.png b/vignettes/pso-full-releff-new-1.png index d0bf6ce7f7d35cd28dcdc9829b8d44d8ed6d8cdd..b150b1df760d38880aef7120dd2b272c44d498bc 100644 GIT binary patch literal 8552 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 F{tIeg7mxq| literal 8568 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 Date: Tue, 9 Jan 2024 17:23:37 +0000 Subject: [PATCH 6/8] Don't rebuild NDMM vignette [ci build-vignettes] --- vignettes/precompile.R | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/vignettes/precompile.R b/vignettes/precompile.R index 49f0b6617..174b583ed 100644 --- a/vignettes/precompile.R +++ b/vignettes/precompile.R @@ -65,5 +65,6 @@ precompile("example_plaque_psoriasis.Rmd") precompile("example_hta_psoriasis.Rmd") # NDMM example is fully static (for pkgdown as well as cran) -precompile("example_ndmm.Rmd.orig") +# precompile("example_ndmm.Rmd.orig", write_tests = FALSE) +precompile("example_ndmm.Rmd", write_tests = FALSE) From 2ceea51bf165284447a5eb32607c9c89587d819e Mon Sep 17 00:00:00 2001 From: unknown <@users.noreply.github.com> Date: Tue, 9 Jan 2024 18:09:08 +0000 Subject: [PATCH 7/8] Build pre-compiled vignettes --- .../test-example_atrial_fibrillation.R | 150 +- tests/testthat/test-example_bcg_vaccine.R | 60 +- tests/testthat/test-example_blocker.R | 48 +- tests/testthat/test-example_diabetes.R | 60 +- tests/testthat/test-example_dietary_fat.R | 48 +- tests/testthat/test-example_hta_psoriasis.R | 64 +- tests/testthat/test-example_parkinsons.R | 174 +- .../testthat/test-example_plaque_psoriasis.R | 130 +- tests/testthat/test-example_smoking.R | 56 +- tests/testthat/test-example_statins.R | 48 +- tests/testthat/test-example_thrombolytics.R | 56 +- tests/testthat/test-example_transfusion.R | 46 +- vignettes/example_atrial_fibrillation.html | 1209 +++++++------- vignettes/example_bcg_vaccine.html | 102 +- vignettes/example_blocker.html | 58 +- vignettes/example_diabetes.html | 416 ++--- vignettes/example_dietary_fat.html | 86 +- vignettes/example_hta_psoriasis.html | 312 ++-- vignettes/example_ndmm.html | 1306 +++++++-------- vignettes/example_parkinsons.html | 482 +++--- vignettes/example_plaque_psoriasis.html | 1429 ++++++++++------- vignettes/example_smoking.html | 242 +-- vignettes/example_statins.html | 60 +- vignettes/example_thrombolytics.html | 456 +++--- vignettes/example_transfusion.html | 124 +- 25 files changed, 3782 insertions(+), 3440 deletions(-) diff --git a/tests/testthat/test-example_atrial_fibrillation.R b/tests/testthat/test-example_atrial_fibrillation.R index 24e9b0e80..9b8da36bb 100644 --- a/tests/testthat/test-example_atrial_fibrillation.R +++ b/tests/testthat/test-example_atrial_fibrillation.R @@ -8,49 +8,49 @@ skip_on_cran() params <- list(run_tests = FALSE) -## ---- code=readLines("children/knitr_setup.R"), include=FALSE----------------- +## ----code=readLines("children/knitr_setup.R"), include=FALSE-------------------------------------- -## ---- include=FALSE----------------------------------------------------------- +## ----include=FALSE-------------------------------------------------------------------------------- set.seed(4783982) -## ---- eval = FALSE------------------------------------------------------------ +## ----eval = FALSE--------------------------------------------------------------------------------- ## library(multinma) ## options(mc.cores = parallel::detectCores()) -## ----setup, echo = FALSE------------------------------------------------------ +## ----setup, echo = FALSE-------------------------------------------------------------------------- library(multinma) -nc <- switch(tolower(Sys.getenv("_R_CHECK_LIMIT_CORES_")), - "true" =, "warn" = 2, +nc <- switch(tolower(Sys.getenv("_R_CHECK_LIMIT_CORES_")), + "true" =, "warn" = 2, parallel::detectCores()) options(mc.cores = nc) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- head(atrial_fibrillation) -## ----------------------------------------------------------------------------- -af_net <- set_agd_arm(atrial_fibrillation[atrial_fibrillation$studyc != "WASPO", ], +## ------------------------------------------------------------------------------------------------- +af_net <- set_agd_arm(atrial_fibrillation[atrial_fibrillation$studyc != "WASPO", ], study = studyc, trt = trtc, - r = r, + r = r, n = n, trt_class = trt_class) af_net -## ----af_network_plot, fig.width=8, fig.height=6, out.width="100%"------------- -plot(af_net, weight_nodes = TRUE, weight_edges = TRUE, show_trt_class = TRUE) + +## ----af_network_plot, fig.width=8, fig.height=6, out.width="100%"--------------------------------- +plot(af_net, weight_nodes = TRUE, weight_edges = TRUE, show_trt_class = TRUE) + ggplot2::theme(legend.position = "bottom", legend.box = "vertical") -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- summary(normal(scale = 100)) summary(half_normal(scale = 5)) -## ---- eval=FALSE-------------------------------------------------------------- +## ----eval=FALSE----------------------------------------------------------------------------------- ## af_fit_1 <- nma(af_net, ## trt_effects = "random", ## prior_intercept = normal(scale = 100), @@ -58,8 +58,8 @@ summary(half_normal(scale = 5)) ## prior_het = half_normal(scale = 5), ## adapt_delta = 0.99) -## ---- echo=FALSE-------------------------------------------------------------- -af_fit_1 <- nma(af_net, +## ----echo=FALSE----------------------------------------------------------------------------------- +af_fit_1 <- nma(af_net, seed = 103533305, trt_effects = "random", prior_intercept = normal(scale = 100), @@ -68,41 +68,41 @@ af_fit_1 <- nma(af_net, adapt_delta = 0.99) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- af_fit_1 -## ---- eval=FALSE-------------------------------------------------------------- +## ----eval=FALSE----------------------------------------------------------------------------------- ## # Not run ## print(af_fit_1, pars = c("d", "mu", "delta")) -## ----af_1_pp_plot, fig.width=8, fig.height=6, out.width="100%"---------------- +## ----af_1_pp_plot, fig.width=8, fig.height=6, out.width="100%"------------------------------------ plot_prior_posterior(af_fit_1, prior = c("trt", "het")) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- (af_1_releff <- relative_effects(af_fit_1, trt_ref = "Placebo/Standard care")) -## ----af_1_releff_plot--------------------------------------------------------- +## ----af_1_releff_plot----------------------------------------------------------------------------- plot(af_1_releff, ref_line = 0) -## ----af_1_ranks--------------------------------------------------------------- +## ----af_1_ranks----------------------------------------------------------------------------------- (af_1_ranks <- posterior_ranks(af_fit_1)) plot(af_1_ranks) -## ----af_1_rankprobs----------------------------------------------------------- +## ----af_1_rankprobs------------------------------------------------------------------------------- (af_1_rankprobs <- posterior_rank_probs(af_fit_1)) plot(af_1_rankprobs) -## ----af_1_cumrankprobs-------------------------------------------------------- +## ----af_1_cumrankprobs---------------------------------------------------------------------------- (af_1_cumrankprobs <- posterior_rank_probs(af_fit_1, cumulative = TRUE)) plot(af_1_cumrankprobs) -## ---- eval=FALSE-------------------------------------------------------------- +## ----eval=FALSE----------------------------------------------------------------------------------- ## af_fit_4b <- nma(af_net, ## trt_effects = "random", ## regression = ~ .trt:stroke, @@ -114,7 +114,7 @@ plot(af_1_cumrankprobs) ## prior_het = half_normal(scale = 5), ## adapt_delta = 0.99) -## ---- echo=FALSE, eval=!params$run_tests-------------------------------------- +## ----echo=FALSE, eval=!params$run_tests----------------------------------------------------------- ## af_fit_4b <- nma(af_net, ## seed = 579212814, ## trt_effects = "random", @@ -127,8 +127,8 @@ plot(af_1_cumrankprobs) ## prior_het = half_normal(scale = 5), ## adapt_delta = 0.99) -## ---- echo=FALSE, eval=params$run_tests--------------------------------------- -af_fit_4b <- nowarn_on_ci(nma(af_net, +## ----echo=FALSE, eval=params$run_tests------------------------------------------------------------ +af_fit_4b <- nowarn_on_ci(nma(af_net, seed = 579212814, trt_effects = "random", regression = ~ .trt:stroke, @@ -142,43 +142,43 @@ af_fit_4b <- nowarn_on_ci(nma(af_net, iter = 5000)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- af_fit_4b -## ---- eval=FALSE-------------------------------------------------------------- +## ----eval=FALSE----------------------------------------------------------------------------------- ## # Not run ## print(af_fit_4b, pars = c("d", "mu", "delta")) -## ----af_4b_pp_plot------------------------------------------------------------ +## ----af_4b_pp_plot-------------------------------------------------------------------------------- plot_prior_posterior(af_fit_4b, prior = c("reg", "het")) -## ----af_4b_releff_plot, fig.height = 16, eval=FALSE--------------------------- +## ----af_4b_releff_plot, fig.height = 16, eval=FALSE----------------------------------------------- ## # Not run ## (af_4b_releff <- relative_effects(af_fit_4b, trt_ref = "Placebo/Standard care")) ## plot(af_4b_releff, ref_line = 0) -## ----af_4b_releff_01_plot----------------------------------------------------- -(af_4b_releff_01 <- relative_effects(af_fit_4b, +## ----af_4b_releff_01_plot------------------------------------------------------------------------- +(af_4b_releff_01 <- relative_effects(af_fit_4b, trt_ref = "Placebo/Standard care", - newdata = data.frame(stroke = c(0, 1), + newdata = data.frame(stroke = c(0, 1), label = c("stroke = 0", "stroke = 1")), study = label)) plot(af_4b_releff_01, ref_line = 0) -## ----af_4b_betas-------------------------------------------------------------- +## ----af_4b_betas---------------------------------------------------------------------------------- plot(af_fit_4b, pars = "beta", stat = "halfeye", ref_line = 0) -## ----af_4b_betas_transformed-------------------------------------------------- +## ----af_4b_betas_transformed---------------------------------------------------------------------- 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[ , , 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] @@ -190,52 +190,52 @@ summary(af_4b_beta) plot(summary(af_4b_beta), stat = "halfeye", ref_line = 0) -## ----af_4b_ranks-------------------------------------------------------------- +## ----af_4b_ranks---------------------------------------------------------------------------------- (af_4b_ranks <- posterior_ranks(af_fit_4b, - newdata = data.frame(stroke = c(0, 1), - label = c("stroke = 0", "stroke = 1")), + newdata = data.frame(stroke = c(0, 1), + label = c("stroke = 0", "stroke = 1")), study = label)) plot(af_4b_ranks) -## ----af_4b_rankprobs, fig.height=12------------------------------------------- +## ----af_4b_rankprobs, fig.height=12--------------------------------------------------------------- (af_4b_rankprobs <- posterior_rank_probs(af_fit_4b, - newdata = data.frame(stroke = c(0, 1), - label = c("stroke = 0", "stroke = 1")), + newdata = data.frame(stroke = c(0, 1), + label = c("stroke = 0", "stroke = 1")), study = label)) # Modify the default output with ggplot2 functionality library(ggplot2) -plot(af_4b_rankprobs) + - facet_grid(Treatment~Study, labeller = label_wrap_gen(20)) + +plot(af_4b_rankprobs) + + facet_grid(Treatment~Study, labeller = label_wrap_gen(20)) + theme(strip.text.y = element_text(angle = 0)) -## ----af_4b_cumrankprobs, fig.height=12---------------------------------------- +## ----af_4b_cumrankprobs, fig.height=12------------------------------------------------------------ (af_4b_cumrankprobs <- posterior_rank_probs(af_fit_4b, cumulative = TRUE, - newdata = data.frame(stroke = c(0, 1), - label = c("stroke = 0", "stroke = 1")), + newdata = data.frame(stroke = c(0, 1), + label = c("stroke = 0", "stroke = 1")), study = label)) -plot(af_4b_cumrankprobs) + - facet_grid(Treatment~Study, labeller = label_wrap_gen(20)) + +plot(af_4b_cumrankprobs) + + facet_grid(Treatment~Study, labeller = label_wrap_gen(20)) + theme(strip.text.y = element_text(angle = 0)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- (af_dic_1 <- dic(af_fit_1)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- (af_dic_4b <- dic(af_fit_4b)) -## ----af_1_resdev_plot--------------------------------------------------------- +## ----af_1_resdev_plot----------------------------------------------------------------------------- plot(af_dic_1) -## ----af_4b_resdev_plot-------------------------------------------------------- +## ----af_4b_resdev_plot---------------------------------------------------------------------------- plot(af_dic_4b) -## ----atrial_fibrillation_tests, include=FALSE, eval=params$run_tests---------- +## ----atrial_fibrillation_tests, include=FALSE, eval=params$run_tests------------------------------ #--- Test against TSD 2 results --- library(testthat) library(dplyr) @@ -263,7 +263,7 @@ Cooper_1_releff <- tribble( "Acenocoumarol" , -1.56,-3.31 , 0.06 , "Low dose aspirin + copidogrel" , -0.24,-1.06 , 0.57 , "Low dose aspirin + dipyridamole" , -0.49,-1.38 , 0.38 , -) %>% +) %>% mutate(trt = ordered(trt, levels = levels(af_net$treatments))) %>% arrange(trt) @@ -293,7 +293,7 @@ test_that("SUCRAs", { af_ranks_1 <- posterior_ranks(af_fit_1, sucra = TRUE) af_rankprobs_1 <- posterior_rank_probs(af_fit_1, sucra = TRUE) af_cumrankprobs_1 <- posterior_rank_probs(af_fit_1, cumulative = TRUE, sucra = TRUE) - + expect_equal(af_ranks_1$summary$sucra, af_rankprobs_1$summary$sucra) expect_equal(af_ranks_1$summary$sucra, af_cumrankprobs_1$summary$sucra) }) @@ -332,7 +332,7 @@ test_that("Construction of all contrasts is correct (no covariates)", { # With stroke covariate, shared interactions Cooper_4b_releff <- tribble( -~trt , ~est , ~lower, ~upper, +~trt , ~est , ~lower, ~upper, "Low adjusted dose anti-coagulant" , -1.20 ,-1.89 , -0.54 , "Standard adjusted dose anti-coagulant" , -0.77 ,-1.14 , -0.38 , "Fixed dose warfarin" , -0.11 ,-0.90 , 0.72 , @@ -349,11 +349,11 @@ Cooper_4b_releff <- tribble( "Acenocoumarol" , -0.534,-2.67 , 1.38 , "Low dose aspirin + copidogrel" , -0.14 ,-0.82 , 0.53 , "Low dose aspirin + dipyridamole" , -0.53 ,-1.38 , 0.30 , -) %>% +) %>% mutate(trt = ordered(trt, levels = levels(af_net$treatments))) %>% arrange(trt) -af_4b_releff_Cooper <- as.data.frame(relative_effects(af_fit_4b, +af_4b_releff_Cooper <- as.data.frame(relative_effects(af_fit_4b, newdata = tibble(stroke = 0.27), trt_ref = "Placebo/Standard care")) @@ -396,13 +396,13 @@ test_that("DIC (common interaction)", { test_that("SUCRAs", { stroke_01 <- data.frame(stroke = c(0, 1), label = c("stroke = 0", "stroke = 1")) - af_ranks_4b <- posterior_ranks(af_fit_4b, newdata = stroke_01, + af_ranks_4b <- posterior_ranks(af_fit_4b, newdata = stroke_01, study = label, sucra = TRUE) - af_rankprobs_4b <- posterior_rank_probs(af_fit_4b, newdata = stroke_01, + af_rankprobs_4b <- posterior_rank_probs(af_fit_4b, newdata = stroke_01, study = label, sucra = TRUE) af_cumrankprobs_4b <- posterior_rank_probs(af_fit_4b, cumulative = TRUE, newdata = stroke_01, study = label, sucra = TRUE) - + expect_equal(af_ranks_4b$summary$sucra, af_rankprobs_4b$summary$sucra) expect_equal(af_ranks_4b$summary$sucra, af_cumrankprobs_4b$summary$sucra) }) @@ -416,17 +416,17 @@ test_af_4b_all_contr <- tibble( .study = factor(stringr::str_extract(contr, "(?<=\\[)(.+)(?=:)")), .trtb = factor(stringr::str_extract(contr, "(?<=\\: )(.+)(?= vs\\.)"), levels = levels(af_net$treatments)), .trta = factor(stringr::str_extract(contr, "(?<=vs\\. )(.+)(?=\\])"), levels = levels(af_net$treatments)) -) %>% - rowwise() %>% - mutate(as_tibble(multinma:::summary.mcmc_array(dk(.study, .trtb, af_4b_releff$sims) - dk(.study, .trta, af_4b_releff$sims)))) %>% +) %>% + rowwise() %>% + mutate(as_tibble(multinma:::summary.mcmc_array(dk(.study, .trtb, af_4b_releff$sims) - dk(.study, .trta, af_4b_releff$sims)))) %>% select(.study, .trtb, .trta, parameter = contr, mean:Rhat) test_that("Construction of all contrasts is correct (common interaction)", { ntrt <- nlevels(af_net$treatments) nstudy <- nlevels(test_af_4b_all_contr$.study) expect_equal(nrow(af_4b_releff_all_contr$summary), nstudy * ntrt * (ntrt - 1) / 2) - expect_equal(select(af_4b_releff_all_contr$summary, -Rhat), - select(test_af_4b_all_contr, -Rhat), + expect_equal(select(af_4b_releff_all_contr$summary, -Rhat), + select(test_af_4b_all_contr, -Rhat), check.attributes = FALSE) }) @@ -439,24 +439,24 @@ test_af_4b_all_contr_new <- tibble( .study = factor(stringr::str_extract(contr, "(?<=\\[)(.+)(?=:)")), .trtb = factor(stringr::str_extract(contr, "(?<=\\: )(.+)(?= vs\\.)"), levels = levels(af_net$treatments)), .trta = factor(stringr::str_extract(contr, "(?<=vs\\. )(.+)(?=\\])"), levels = levels(af_net$treatments)) -) %>% - rowwise() %>% - mutate(as_tibble(multinma:::summary.mcmc_array(dk(.study, .trtb, af_4b_releff_new$sims) - dk(.study, .trta, af_4b_releff_new$sims)))) %>% +) %>% + rowwise() %>% + mutate(as_tibble(multinma:::summary.mcmc_array(dk(.study, .trtb, af_4b_releff_new$sims) - dk(.study, .trta, af_4b_releff_new$sims)))) %>% select(.study, .trtb, .trta, parameter = contr, mean:Rhat) test_that("Construction of all contrasts in target population is correct (common interaction)", { ntrt <- nlevels(af_net$treatments) nstudy <- nlevels(test_af_4b_all_contr_new$.study) expect_equal(nrow(af_4b_releff_all_contr_new$summary), nstudy * ntrt * (ntrt - 1) / 2) - expect_equal(select(af_4b_releff_all_contr_new$summary, -Rhat), - select(test_af_4b_all_contr_new, -Rhat), + expect_equal(select(af_4b_releff_all_contr_new$summary, -Rhat), + select(test_af_4b_all_contr_new, -Rhat), check.attributes = FALSE) }) test_that("Robust to custom options(contrasts) settings", { af_fit_4b_SAS <- withr::with_options(list(contrasts = c(ordered = "contr.SAS", unordered = "contr.SAS")), - nowarn_on_ci(nma(af_net, + nowarn_on_ci(nma(af_net, seed = 579212814, trt_effects = "random", regression = ~ .trt:stroke, diff --git a/tests/testthat/test-example_bcg_vaccine.R b/tests/testthat/test-example_bcg_vaccine.R index dde180d42..3038a13b0 100644 --- a/tests/testthat/test-example_bcg_vaccine.R +++ b/tests/testthat/test-example_bcg_vaccine.R @@ -8,17 +8,17 @@ skip_on_cran() params <- list(run_tests = FALSE) -## ---- code=readLines("children/knitr_setup.R"), include=FALSE----------------- +## ----code=readLines("children/knitr_setup.R"), include=FALSE-------------------------------------- -## ---- include=FALSE----------------------------------------------------------- +## ----include=FALSE-------------------------------------------------------------------------------- set.seed(18284729) -## ---- eval = FALSE------------------------------------------------------------ +## ----eval = FALSE--------------------------------------------------------------------------------- ## library(multinma) ## options(mc.cores = parallel::detectCores()) -## ----setup, echo = FALSE------------------------------------------------------ +## ----setup, echo = FALSE-------------------------------------------------------------------------- library(multinma) nc <- switch(tolower(Sys.getenv("_R_CHECK_LIMIT_CORES_")), "true" =, "warn" = 2, @@ -26,11 +26,11 @@ nc <- switch(tolower(Sys.getenv("_R_CHECK_LIMIT_CORES_")), options(mc.cores = nc) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- head(bcg_vaccine) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- bcg_net <- set_agd_arm(bcg_vaccine, study = studyn, trt = trtc, @@ -40,19 +40,19 @@ bcg_net <- set_agd_arm(bcg_vaccine, bcg_net -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- summary(normal(scale = 100)) summary(half_normal(scale = 5)) -## ---- eval = FALSE------------------------------------------------------------ +## ----eval = FALSE--------------------------------------------------------------------------------- ## bcg_fit_unadj <- nma(bcg_net, ## trt_effects = "random", ## prior_intercept = normal(scale = 100), ## prior_trt = normal(scale = 100), ## prior_het = half_normal(scale = 5)) -## ---- echo = FALSE------------------------------------------------------------ +## ----echo = FALSE--------------------------------------------------------------------------------- bcg_fit_unadj <- nma(bcg_net, seed = 14308133, iter = 5000, @@ -62,25 +62,25 @@ bcg_fit_unadj <- nma(bcg_net, prior_het = half_normal(scale = 5)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- bcg_fit_unadj -## ---- eval=FALSE-------------------------------------------------------------- +## ----eval=FALSE----------------------------------------------------------------------------------- ## # Not run ## print(bcg_fit_unadj, pars = c("d", "mu", "delta", "tau")) -## ----bcg_unadj_pp_plot-------------------------------------------------------- +## ----bcg_unadj_pp_plot---------------------------------------------------------------------------- plot_prior_posterior(bcg_fit_unadj, prior = c("trt", "het")) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- summary(normal(scale = 100)) summary(half_normal(scale = 5)) -## ---- eval = FALSE------------------------------------------------------------ +## ----eval = FALSE--------------------------------------------------------------------------------- ## bcg_fit_lat <- nma(bcg_net, ## trt_effects = "random", ## regression = ~.trt:latitude, @@ -90,7 +90,7 @@ summary(half_normal(scale = 5)) ## prior_het = half_normal(scale = 5), ## adapt_delta = 0.99) -## ---- echo = FALSE------------------------------------------------------------ +## ----echo = FALSE--------------------------------------------------------------------------------- bcg_fit_lat <- nowarn_on_ci( nma(bcg_net, seed = 1932599147, @@ -105,32 +105,32 @@ bcg_fit_lat <- nowarn_on_ci( ) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- bcg_fit_lat -## ---- eval=FALSE-------------------------------------------------------------- +## ----eval=FALSE----------------------------------------------------------------------------------- ## # Not run ## print(bcg_fit_lat, pars = c("d", "beta", "mu", "delta", "tau")) -## ----bcg_lat_pp_plot---------------------------------------------------------- +## ----bcg_lat_pp_plot------------------------------------------------------------------------------ plot_prior_posterior(bcg_fit_lat, prior = c("trt", "reg", "het")) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- (bcg_dic_unadj <- dic(bcg_fit_unadj)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- (bcg_dic_lat <- dic(bcg_fit_lat)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- summary(bcg_fit_unadj, pars = "tau") summary(bcg_fit_lat, pars = "tau") -## ----bcg_vaccine_beta_lat, fig.height = 4------------------------------------- +## ----bcg_vaccine_beta_lat, fig.height = 4--------------------------------------------------------- summary(bcg_fit_lat, pars = "beta") plot(bcg_fit_lat, @@ -139,7 +139,7 @@ plot(bcg_fit_lat, stat = "halfeye") -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- bcg_releff_lat <- relative_effects(bcg_fit_lat, newdata = tibble::tibble(latitude = seq(10, 50, by = 10), label = paste0(latitude, "\u00B0 latitude")), @@ -148,12 +148,12 @@ bcg_releff_lat <- relative_effects(bcg_fit_lat, bcg_releff_lat -## ----bcg_vaccine_releff_lat, fig.height = 5----------------------------------- +## ----bcg_vaccine_releff_lat, fig.height = 5------------------------------------------------------- plot(bcg_releff_lat, ref_line = 0) -## ----bcg_vaccine_reg_plot----------------------------------------------------- +## ----bcg_vaccine_reg_plot------------------------------------------------------------------------- library(dplyr) library(ggplot2) @@ -187,15 +187,15 @@ ggplot(aes(x = latitude), data = bcg_lor) + theme_multinma() -## ----bcg_vaccine_predictive_unadj--------------------------------------------- +## ----bcg_vaccine_predictive_unadj----------------------------------------------------------------- (bcg_predeff_unadj <- relative_effects(bcg_fit_unadj, predictive_distribution = TRUE)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- mean(as.matrix(bcg_predeff_unadj) > 0) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- bcg_predeff_lat <- relative_effects(bcg_fit_lat, newdata = tibble::tibble(latitude = seq(0, 50, by = 10), label = paste0(latitude, "\u00B0 latitude")), @@ -205,11 +205,11 @@ bcg_predeff_lat <- relative_effects(bcg_fit_lat, bcg_predeff_lat -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- colMeans(as.matrix(bcg_predeff_lat) > 0) -## ----bcg_vaccine_tests, include=FALSE, eval=params$run_tests------------------ +## ----bcg_vaccine_tests, include=FALSE, eval=params$run_tests-------------------------------------- #--- Test against TSD 3 results --- library(testthat) library(dplyr) diff --git a/tests/testthat/test-example_blocker.R b/tests/testthat/test-example_blocker.R index cb7aff78c..09425d454 100644 --- a/tests/testthat/test-example_blocker.R +++ b/tests/testthat/test-example_blocker.R @@ -8,14 +8,14 @@ skip_on_cran() params <- list(run_tests = FALSE) -## ---- code=readLines("children/knitr_setup.R"), include=FALSE----------------- +## ----code=readLines("children/knitr_setup.R"), include=FALSE-------------------------------------- -## ---- eval = FALSE------------------------------------------------------------ +## ----eval = FALSE--------------------------------------------------------------------------------- ## library(multinma) ## options(mc.cores = parallel::detectCores()) -## ----setup, echo = FALSE------------------------------------------------------ +## ----setup, echo = FALSE-------------------------------------------------------------------------- library(multinma) nc <- switch(tolower(Sys.getenv("_R_CHECK_LIMIT_CORES_")), "true" =, "warn" = 2, @@ -23,11 +23,11 @@ nc <- switch(tolower(Sys.getenv("_R_CHECK_LIMIT_CORES_")), options(mc.cores = nc) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- head(blocker) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- blocker_net <- set_agd_arm(blocker, study = studyn, trt = trtc, @@ -37,36 +37,36 @@ blocker_net <- set_agd_arm(blocker, blocker_net -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- summary(normal(scale = 100)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- blocker_fit_FE <- nma(blocker_net, trt_effects = "fixed", prior_intercept = normal(scale = 100), prior_trt = normal(scale = 100)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- blocker_fit_FE -## ---- eval=FALSE-------------------------------------------------------------- +## ----eval=FALSE----------------------------------------------------------------------------------- ## # Not run ## print(blocker_fit_FE, pars = c("d", "mu")) -## ----blocker_FE_pp_plot------------------------------------------------------- +## ----blocker_FE_pp_plot--------------------------------------------------------------------------- plot_prior_posterior(blocker_fit_FE, prior = "trt") -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- summary(normal(scale = 100)) summary(half_normal(scale = 5)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- blocker_fit_RE <- nma(blocker_net, trt_effects = "random", prior_intercept = normal(scale = 100), @@ -74,42 +74,42 @@ blocker_fit_RE <- nma(blocker_net, prior_het = half_normal(scale = 5)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- blocker_fit_RE -## ---- eval=FALSE-------------------------------------------------------------- +## ----eval=FALSE----------------------------------------------------------------------------------- ## # Not run ## print(blocker_fit_RE, pars = c("d", "mu", "delta")) -## ----blocker_RE_pp_plot------------------------------------------------------- +## ----blocker_RE_pp_plot--------------------------------------------------------------------------- plot_prior_posterior(blocker_fit_RE, prior = c("trt", "het")) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- (dic_FE <- dic(blocker_fit_FE)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- (dic_RE <- dic(blocker_fit_RE)) -## ----blocker_FE_resdev_plot--------------------------------------------------- +## ----blocker_FE_resdev_plot----------------------------------------------------------------------- plot(dic_FE) -## ----blocker_RE_resdev_plot--------------------------------------------------- +## ----blocker_RE_resdev_plot----------------------------------------------------------------------- plot(dic_RE) -## ----blocker_pred_FE, fig.height = 2------------------------------------------ +## ----blocker_pred_FE, fig.height = 2-------------------------------------------------------------- pred_FE <- predict(blocker_fit_FE, baseline = distr(qnorm, mean = -2.2, sd = 3.3^-0.5), type = "response") pred_FE plot(pred_FE) -## ----blocker_pred_RE, fig.height = 2------------------------------------------ +## ----blocker_pred_RE, fig.height = 2-------------------------------------------------------------- pred_RE <- predict(blocker_fit_RE, baseline = distr(qnorm, mean = -2.2, sd = 3.3^-0.5), type = "response") @@ -117,7 +117,7 @@ pred_RE plot(pred_RE) -## ----blocker_pred_FE_beta, fig.height = 2------------------------------------- +## ----blocker_pred_FE_beta, fig.height = 2--------------------------------------------------------- pred_FE_beta <- predict(blocker_fit_FE, baseline = distr(qbeta, 4, 36-4), baseline_type = "response", @@ -126,7 +126,7 @@ pred_FE_beta plot(pred_FE_beta) -## ----blocker_pred_RE_beta, fig.height = 2------------------------------------- +## ----blocker_pred_RE_beta, fig.height = 2--------------------------------------------------------- pred_RE_beta <- predict(blocker_fit_RE, baseline = distr(qbeta, 4, 36-4), baseline_type = "response", @@ -135,7 +135,7 @@ pred_RE_beta plot(pred_RE_beta) -## ----blocker_tests, include=FALSE, eval=params$run_tests---------------------- +## ----blocker_tests, include=FALSE, eval=params$run_tests------------------------------------------ #--- Test against TSD 2 results --- library(testthat) library(dplyr) diff --git a/tests/testthat/test-example_diabetes.R b/tests/testthat/test-example_diabetes.R index 82b6fd448..916a69ea7 100644 --- a/tests/testthat/test-example_diabetes.R +++ b/tests/testthat/test-example_diabetes.R @@ -8,14 +8,14 @@ skip_on_cran() params <- list(run_tests = FALSE) -## ---- code=readLines("children/knitr_setup.R"), include=FALSE----------------- +## ----code=readLines("children/knitr_setup.R"), include=FALSE-------------------------------------- -## ---- eval = FALSE------------------------------------------------------------ +## ----eval = FALSE--------------------------------------------------------------------------------- ## library(multinma) ## options(mc.cores = parallel::detectCores()) -## ----setup, echo = FALSE------------------------------------------------------ +## ----setup, echo = FALSE-------------------------------------------------------------------------- library(multinma) nc <- switch(tolower(Sys.getenv("_R_CHECK_LIMIT_CORES_")), "true" =, "warn" = 2, @@ -23,11 +23,11 @@ nc <- switch(tolower(Sys.getenv("_R_CHECK_LIMIT_CORES_")), options(mc.cores = nc) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- head(diabetes) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- db_net <- set_agd_arm(diabetes, study = studyc, trt = trtc, @@ -36,18 +36,18 @@ db_net <- set_agd_arm(diabetes, db_net -## ---- eval=FALSE-------------------------------------------------------------- +## ----eval=FALSE----------------------------------------------------------------------------------- ## plot(db_net, weight_edges = TRUE, weight_nodes = TRUE) -## ----diabetes_network_plot, echo=FALSE---------------------------------------- +## ----diabetes_network_plot, echo=FALSE------------------------------------------------------------ plot(db_net, weight_edges = TRUE, weight_nodes = TRUE) + ggplot2::theme(legend.box.margin = ggplot2::unit(c(0, 0, 0, 4), "lines")) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- summary(normal(scale = 100)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- db_fit_FE <- nma(db_net, trt_effects = "fixed", link = "cloglog", @@ -56,25 +56,25 @@ db_fit_FE <- nma(db_net, prior_trt = normal(scale = 100)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- db_fit_FE -## ---- eval=FALSE-------------------------------------------------------------- +## ----eval=FALSE----------------------------------------------------------------------------------- ## # Not run ## print(db_fit_FE, pars = c("d", "mu")) -## ----db_FE_pp_plot, fig.width=8, fig.height=6, out.width="100%"--------------- +## ----db_FE_pp_plot, fig.width=8, fig.height=6, out.width="100%"----------------------------------- plot_prior_posterior(db_fit_FE) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- summary(normal(scale = 100)) summary(half_normal(scale = 5)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- db_fit_RE <- nma(db_net, trt_effects = "random", link = "cloglog", @@ -85,44 +85,44 @@ db_fit_RE <- nma(db_net, init_r = 0.5) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- db_fit_RE -## ---- eval=FALSE-------------------------------------------------------------- +## ----eval=FALSE----------------------------------------------------------------------------------- ## # Not run ## print(db_fit_RE, pars = c("d", "mu", "delta")) -## ----db_RE_pp_plot------------------------------------------------------------ +## ----db_RE_pp_plot-------------------------------------------------------------------------------- plot_prior_posterior(db_fit_RE, prior = c("trt", "het")) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- (dic_FE <- dic(db_fit_FE)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- (dic_RE <- dic(db_fit_RE)) -## ----db_FE_resdev_plot-------------------------------------------------------- +## ----db_FE_resdev_plot---------------------------------------------------------------------------- plot(dic_FE) -## ----db_RE_resdev_plot-------------------------------------------------------- +## ----db_RE_resdev_plot---------------------------------------------------------------------------- plot(dic_RE) -## ----diabetes_releff_FE, fig.height=3----------------------------------------- +## ----diabetes_releff_FE, fig.height=3------------------------------------------------------------- (db_releff_FE <- relative_effects(db_fit_FE, trt_ref = "Diuretic")) plot(db_releff_FE, ref_line = 0) -## ----diabetes_releff_RE, fig.height=3----------------------------------------- +## ----diabetes_releff_RE, fig.height=3------------------------------------------------------------- (db_releff_RE <- relative_effects(db_fit_RE, trt_ref = "Diuretic")) plot(db_releff_RE, ref_line = 0) -## ----db_pred_FE, fig.height = 2----------------------------------------------- +## ----db_pred_FE, fig.height = 2------------------------------------------------------------------- db_pred_FE <- predict(db_fit_FE, newdata = data.frame(time = 3), baseline = distr(qnorm, mean = -4.2, sd = 1.11^-0.5), @@ -131,7 +131,7 @@ db_pred_FE <- predict(db_fit_FE, db_pred_FE plot(db_pred_FE) -## ----db_pred_RE, fig.height = 2----------------------------------------------- +## ----db_pred_RE, fig.height = 2------------------------------------------------------------------- db_pred_RE <- predict(db_fit_RE, newdata = data.frame(time = 3), baseline = distr(qnorm, mean = -4.2, sd = 1.11^-0.5), @@ -141,26 +141,26 @@ db_pred_RE plot(db_pred_RE) -## ----db_pred_RE_all, fig.height=16-------------------------------------------- +## ----db_pred_RE_all, fig.height=16---------------------------------------------------------------- db_pred_RE_studies <- predict(db_fit_RE, type = "response") db_pred_RE_studies plot(db_pred_RE_studies) -## ----diabetes_ranks----------------------------------------------------------- +## ----diabetes_ranks------------------------------------------------------------------------------- (db_ranks <- posterior_ranks(db_fit_RE)) plot(db_ranks) -## ----diabetes_rankprobs------------------------------------------------------- +## ----diabetes_rankprobs--------------------------------------------------------------------------- (db_rankprobs <- posterior_rank_probs(db_fit_RE)) plot(db_rankprobs) -## ----diabetes_cumrankprobs---------------------------------------------------- +## ----diabetes_cumrankprobs------------------------------------------------------------------------ (db_cumrankprobs <- posterior_rank_probs(db_fit_RE, cumulative = TRUE)) plot(db_cumrankprobs) -## ----diabetes_tests, include=FALSE, eval=params$run_tests--------------------- +## ----diabetes_tests, include=FALSE, eval=params$run_tests----------------------------------------- #--- Test against TSD 2 results --- library(testthat) library(dplyr) diff --git a/tests/testthat/test-example_dietary_fat.R b/tests/testthat/test-example_dietary_fat.R index 69ae4dd5b..809f4aab2 100644 --- a/tests/testthat/test-example_dietary_fat.R +++ b/tests/testthat/test-example_dietary_fat.R @@ -8,14 +8,14 @@ skip_on_cran() params <- list(run_tests = FALSE) -## ---- code=readLines("children/knitr_setup.R"), include=FALSE----------------- +## ----code=readLines("children/knitr_setup.R"), include=FALSE-------------------------------------- -## ---- eval = FALSE------------------------------------------------------------ +## ----eval = FALSE--------------------------------------------------------------------------------- ## library(multinma) ## options(mc.cores = parallel::detectCores()) -## ----setup, echo = FALSE------------------------------------------------------ +## ----setup, echo = FALSE-------------------------------------------------------------------------- library(multinma) nc <- switch(tolower(Sys.getenv("_R_CHECK_LIMIT_CORES_")), "true" =, "warn" = 2, @@ -23,11 +23,11 @@ nc <- switch(tolower(Sys.getenv("_R_CHECK_LIMIT_CORES_")), options(mc.cores = nc) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- head(dietary_fat) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- diet_net <- set_agd_arm(dietary_fat, study = studyc, trt = trtc, @@ -38,43 +38,43 @@ diet_net <- set_agd_arm(dietary_fat, diet_net -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- summary(normal(scale = 100)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- diet_fit_FE <- nma(diet_net, trt_effects = "fixed", prior_intercept = normal(scale = 100), prior_trt = normal(scale = 100)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- diet_fit_FE -## ---- eval=FALSE-------------------------------------------------------------- +## ----eval=FALSE----------------------------------------------------------------------------------- ## # Not run ## print(diet_fit_FE, pars = c("d", "mu")) -## ----diet_FE_pp_plot---------------------------------------------------------- +## ----diet_FE_pp_plot------------------------------------------------------------------------------ plot_prior_posterior(diet_fit_FE) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- summary(normal(scale = 100)) summary(half_normal(scale = 5)) -## ---- eval=FALSE-------------------------------------------------------------- +## ----eval=FALSE----------------------------------------------------------------------------------- ## diet_fit_RE <- nma(diet_net, ## trt_effects = "random", ## prior_intercept = normal(scale = 10), ## prior_trt = normal(scale = 10), ## prior_het = half_normal(scale = 5)) -## ---- echo=FALSE, warning=FALSE----------------------------------------------- +## ----echo=FALSE, warning=FALSE-------------------------------------------------------------------- diet_fit_RE <- nowarn_on_ci( nma(diet_net, trt_effects = "random", @@ -84,42 +84,42 @@ diet_fit_RE <- nowarn_on_ci( ) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- diet_fit_RE -## ---- eval=FALSE-------------------------------------------------------------- +## ----eval=FALSE----------------------------------------------------------------------------------- ## # Not run ## print(diet_fit_RE, pars = c("d", "mu", "delta")) -## ----diet_RE_pp_plot---------------------------------------------------------- +## ----diet_RE_pp_plot------------------------------------------------------------------------------ plot_prior_posterior(diet_fit_RE, prior = c("trt", "het")) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- (dic_FE <- dic(diet_fit_FE)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- (dic_RE <- dic(diet_fit_RE)) -## ----diet_FE_resdev_plot------------------------------------------------------ +## ----diet_FE_resdev_plot-------------------------------------------------------------------------- plot(dic_FE) -## ----diet_RE_resdev_plot------------------------------------------------------ +## ----diet_RE_resdev_plot-------------------------------------------------------------------------- plot(dic_RE) -## ----diet_pred_FE, fig.height = 2--------------------------------------------- +## ----diet_pred_FE, fig.height = 2----------------------------------------------------------------- pred_FE <- predict(diet_fit_FE, baseline = distr(qnorm, mean = -3, sd = 1.77^-0.5), type = "response") pred_FE plot(pred_FE) -## ----diet_pred_RE, fig.height = 2--------------------------------------------- +## ----diet_pred_RE, fig.height = 2----------------------------------------------------------------- pred_RE <- predict(diet_fit_RE, baseline = distr(qnorm, mean = -3, sd = 1.77^-0.5), type = "response") @@ -127,13 +127,13 @@ pred_RE plot(pred_RE) -## ----diet_pred_FE_all, fig.height=10------------------------------------------ +## ----diet_pred_FE_all, fig.height=10-------------------------------------------------------------- pred_FE_studies <- predict(diet_fit_FE, type = "response") pred_FE_studies plot(pred_FE_studies) + ggplot2::facet_grid(Study~., labeller = ggplot2::label_wrap_gen(width = 10)) -## ----diet_tests_tests, include=FALSE, eval=params$run_tests------------------- +## ----diet_tests_tests, include=FALSE, eval=params$run_tests--------------------------------------- #--- Test against TSD 2 results --- library(testthat) library(dplyr) diff --git a/tests/testthat/test-example_hta_psoriasis.R b/tests/testthat/test-example_hta_psoriasis.R index 8aee85cb6..8d2106ced 100644 --- a/tests/testthat/test-example_hta_psoriasis.R +++ b/tests/testthat/test-example_hta_psoriasis.R @@ -8,14 +8,14 @@ skip_on_cran() params <- list(run_tests = FALSE) -## ---- code=readLines("children/knitr_setup.R"), include=FALSE----------------- +## ----code=readLines("children/knitr_setup.R"), include=FALSE-------------------------------------- -## ---- eval = FALSE------------------------------------------------------------ +## ----eval = FALSE--------------------------------------------------------------------------------- ## library(multinma) ## options(mc.cores = parallel::detectCores()) -## ----setup, echo = FALSE------------------------------------------------------ +## ----setup, echo = FALSE-------------------------------------------------------------------------- library(multinma) nc <- switch(tolower(Sys.getenv("_R_CHECK_LIMIT_CORES_")), "true" =, "warn" = 2, @@ -24,15 +24,15 @@ options(mc.cores = nc) set.seed(65498431) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- head(hta_psoriasis) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- dplyr::filter(hta_psoriasis, studyc %in% c("Elewski", "Gordon", "ACD2058g", "Altmeyer")) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- pso_net <- set_agd_arm(hta_psoriasis, study = paste(studyc, year), trt = trtc, @@ -43,19 +43,19 @@ pso_net <- set_agd_arm(hta_psoriasis, pso_net -## ----hta_psoriasis_network_plot----------------------------------------------- +## ----hta_psoriasis_network_plot------------------------------------------------------------------- plot(pso_net, weight_edges = TRUE, weight_nodes = TRUE) + # Nudge the legend over ggplot2::theme(legend.box.spacing = ggplot2::unit(0.75, "in"), plot.margin = ggplot2::margin(0.1, 0, 0.1, 0.75, "in")) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- summary(normal(scale = 10)) summary(normal(scale = 100)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- pso_fit_FE <- nma(pso_net, trt_effects = "fixed", link = "probit", @@ -64,30 +64,30 @@ pso_fit_FE <- nma(pso_net, prior_aux = flat()) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- pso_fit_FE -## ---- eval=FALSE-------------------------------------------------------------- +## ----eval=FALSE----------------------------------------------------------------------------------- ## # Not run ## print(pso_fit_FE, pars = c("d", "mu", "cc")) -## ----pso_FE_pp_plot----------------------------------------------------------- +## ----pso_FE_pp_plot------------------------------------------------------------------------------- plot_prior_posterior(pso_fit_FE) -## ----pso_FE_pp_cutpoint_plot-------------------------------------------------- +## ----pso_FE_pp_cutpoint_plot---------------------------------------------------------------------- plot_prior_posterior(pso_fit_FE, prior = "aux") -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- summary(normal(scale = 10)) summary(normal(scale = 100)) summary(half_normal(scale = 2.5)) -## ---- eval = FALSE------------------------------------------------------------ +## ----eval = FALSE--------------------------------------------------------------------------------- ## pso_fit_RE <- nma(pso_net, ## trt_effects = "random", ## link = "probit", @@ -97,7 +97,7 @@ summary(half_normal(scale = 2.5)) ## prior_het = half_normal(scale = 2.5), ## adapt_delta = 0.99) -## ---- echo = FALSE, warning = FALSE------------------------------------------- +## ----echo = FALSE, warning = FALSE---------------------------------------------------------------- pso_fit_RE <- nowarn_on_ci(nma(pso_net, trt_effects = "random", link = "probit", @@ -110,42 +110,42 @@ pso_fit_RE <- nowarn_on_ci(nma(pso_net, seed = 1713435794)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- pso_fit_RE -## ---- eval=FALSE-------------------------------------------------------------- +## ----eval=FALSE----------------------------------------------------------------------------------- ## # Not run ## print(pso_fit_RE, pars = c("d", "cc", "mu", "delta")) -## ----pso_RE_pp_plot----------------------------------------------------------- +## ----pso_RE_pp_plot------------------------------------------------------------------------------- plot_prior_posterior(pso_fit_RE, prior = c("trt", "aux", "het")) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- (dic_FE <- dic(pso_fit_FE)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- (dic_RE <- dic(pso_fit_RE)) -## ----pso_FE_resdev_plot------------------------------------------------------- +## ----pso_FE_resdev_plot--------------------------------------------------------------------------- plot(dic_FE) -## ----pso_RE_resdev_plot------------------------------------------------------- +## ----pso_RE_resdev_plot--------------------------------------------------------------------------- plot(dic_RE) -## ----pso_pred_FE, fig.height = 2---------------------------------------------- +## ----pso_pred_FE, fig.height = 2------------------------------------------------------------------ pred_FE <- predict(pso_fit_FE, baseline = distr(qnorm, mean = -1.097, sd = 123^-0.5), type = "response") pred_FE plot(pred_FE) -## ----pso_pred_RE, fig.height = 2---------------------------------------------- +## ----pso_pred_RE, fig.height = 2------------------------------------------------------------------ pred_RE <- predict(pso_fit_RE, baseline = distr(qnorm, mean = -1.097, sd = 123^-0.5), type = "response") @@ -153,7 +153,7 @@ pred_RE plot(pred_RE) -## ----pso_pred_FE_beta, fig.height = 2----------------------------------------- +## ----pso_pred_FE_beta, fig.height = 2------------------------------------------------------------- pred_FE_beta <- predict(pso_fit_FE, baseline = distr(qbeta, 56, 408-56), baseline_type = "response", @@ -162,7 +162,7 @@ pred_FE_beta plot(pred_FE_beta) -## ----pso_pred_RE_beta, fig.height = 2----------------------------------------- +## ----pso_pred_RE_beta, fig.height = 2------------------------------------------------------------- pred_RE_beta <- predict(pso_fit_RE, baseline = distr(qbeta, 56, 408-56), baseline_type = "response", @@ -171,7 +171,7 @@ pred_RE_beta plot(pred_RE_beta) -## ----pso_pred_RE_colour, fig.height = 3--------------------------------------- +## ----pso_pred_RE_colour, fig.height = 3----------------------------------------------------------- library(ggplot2) plot(pred_RE, position = position_dodge(width = 0.75)) + facet_null() + @@ -179,20 +179,20 @@ plot(pred_RE, position = position_dodge(width = 0.75)) + scale_colour_brewer(palette = "Blues") -## ----hta_psoriasis_ranks, fig.height=3---------------------------------------- +## ----hta_psoriasis_ranks, fig.height=3------------------------------------------------------------ (pso_ranks <- posterior_ranks(pso_fit_RE, lower_better = FALSE)) plot(pso_ranks) -## ----hta_psoriasis_rankprobs-------------------------------------------------- +## ----hta_psoriasis_rankprobs---------------------------------------------------------------------- (pso_rankprobs <- posterior_rank_probs(pso_fit_RE, lower_better = FALSE)) plot(pso_rankprobs) -## ----hta_psoriasis_cumrankprobs----------------------------------------------- +## ----hta_psoriasis_cumrankprobs------------------------------------------------------------------- (pso_cumrankprobs <- posterior_rank_probs(pso_fit_RE, lower_better = FALSE, cumulative = TRUE)) plot(pso_cumrankprobs) -## ----hta_psoriasis_tests, include=FALSE, eval=params$run_tests---------------- +## ----hta_psoriasis_tests, include=FALSE, eval=params$run_tests------------------------------------ #--- Test against TSD 2 results --- library(testthat) library(dplyr) diff --git a/tests/testthat/test-example_parkinsons.R b/tests/testthat/test-example_parkinsons.R index 1b7192dd9..1799945c0 100644 --- a/tests/testthat/test-example_parkinsons.R +++ b/tests/testthat/test-example_parkinsons.R @@ -8,17 +8,17 @@ skip_on_cran() params <- list(run_tests = FALSE) -## ---- code=readLines("children/knitr_setup.R"), include=FALSE----------------- +## ----code=readLines("children/knitr_setup.R"), include=FALSE-------------------------------------- -## ---- include=FALSE----------------------------------------------------------- +## ----include=FALSE-------------------------------------------------------------------------------- set.seed(1042020) -## ---- eval = FALSE------------------------------------------------------------ +## ----eval = FALSE--------------------------------------------------------------------------------- ## library(multinma) ## options(mc.cores = parallel::detectCores()) -## ----setup, echo = FALSE------------------------------------------------------ +## ----setup, echo = FALSE-------------------------------------------------------------------------- library(multinma) nc <- switch(tolower(Sys.getenv("_R_CHECK_LIMIT_CORES_")), "true" =, "warn" = 2, @@ -26,11 +26,11 @@ nc <- switch(tolower(Sys.getenv("_R_CHECK_LIMIT_CORES_")), options(mc.cores = nc) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- head(parkinsons) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- arm_net <- set_agd_arm(parkinsons, study = studyn, trt = trtn, @@ -40,21 +40,21 @@ arm_net <- set_agd_arm(parkinsons, arm_net -## ----parkinsons_arm_network_plot---------------------------------------------- +## ----parkinsons_arm_network_plot------------------------------------------------------------------ plot(arm_net, weight_edges = TRUE, weight_nodes = TRUE) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- summary(normal(scale = 100)) -## ---- eval=!params$run_tests-------------------------------------------------- +## ----eval=!params$run_tests----------------------------------------------------------------------- ## arm_fit_FE <- nma(arm_net, ## trt_effects = "fixed", ## prior_intercept = normal(scale = 100), ## prior_trt = normal(scale = 10)) -## ---- eval=params$run_tests, echo=FALSE--------------------------------------- +## ----eval=params$run_tests, echo=FALSE------------------------------------------------------------ arm_fit_FE <- nma(arm_net, trt_effects = "fixed", prior_intercept = normal(scale = 100), @@ -62,25 +62,25 @@ arm_fit_FE <- nma(arm_net, iter = 10000) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- arm_fit_FE -## ---- eval=FALSE-------------------------------------------------------------- +## ----eval=FALSE----------------------------------------------------------------------------------- ## # Not run ## print(arm_fit_FE, pars = c("d", "mu")) -## ----arm_FE_pp_plot----------------------------------------------------------- +## ----arm_FE_pp_plot------------------------------------------------------------------------------- plot_prior_posterior(arm_fit_FE) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- summary(normal(scale = 100)) summary(half_normal(scale = 5)) -## ---- eval=!params$run_tests-------------------------------------------------- +## ----eval=!params$run_tests----------------------------------------------------------------------- ## arm_fit_RE <- nma(arm_net, ## seed = 379394727, ## trt_effects = "random", @@ -89,7 +89,7 @@ summary(half_normal(scale = 5)) ## prior_het = half_normal(scale = 5), ## adapt_delta = 0.99) -## ---- eval=params$run_tests, echo=FALSE--------------------------------------- +## ----eval=params$run_tests, echo=FALSE------------------------------------------------------------ arm_fit_RE <- nowarn_on_ci(nma(arm_net, seed = 379394727, trt_effects = "random", @@ -100,48 +100,48 @@ arm_fit_RE <- nowarn_on_ci(nma(arm_net, iter = 10000)) -## ----plot_arm_RE_pairs, fig.width = 6----------------------------------------- +## ----plot_arm_RE_pairs, fig.width = 6------------------------------------------------------------- pairs(arm_fit_RE, pars = c("mu[4]", "d[3]", "delta[4: 3]", "tau")) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- arm_fit_RE -## ---- eval=FALSE-------------------------------------------------------------- +## ----eval=FALSE----------------------------------------------------------------------------------- ## # Not run ## print(arm_fit_RE, pars = c("d", "mu", "delta")) -## ----arm_RE_pp_plot----------------------------------------------------------- +## ----arm_RE_pp_plot------------------------------------------------------------------------------- plot_prior_posterior(arm_fit_RE) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- (arm_dic_FE <- dic(arm_fit_FE)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- (arm_dic_RE <- dic(arm_fit_RE)) -## ----arm_FE_resdev_plot------------------------------------------------------- +## ----arm_FE_resdev_plot--------------------------------------------------------------------------- plot(arm_dic_FE) -## ----arm_RE_resdev_plot------------------------------------------------------- +## ----arm_RE_resdev_plot--------------------------------------------------------------------------- plot(arm_dic_RE) -## ----arm_releff_FE, fig.height=3---------------------------------------------- +## ----arm_releff_FE, fig.height=3------------------------------------------------------------------ (arm_releff_FE <- relative_effects(arm_fit_FE, trt_ref = 1)) plot(arm_releff_FE, ref_line = 0) -## ----arm_releff_RE, fig.height=3---------------------------------------------- +## ----arm_releff_RE, fig.height=3------------------------------------------------------------------ (arm_releff_RE <- relative_effects(arm_fit_RE, trt_ref = 1)) plot(arm_releff_RE, ref_line = 0) -## ----arm_pred_FE, fig.height = 2---------------------------------------------- +## ----arm_pred_FE, fig.height = 2------------------------------------------------------------------ arm_pred_FE <- predict(arm_fit_FE, baseline = distr(qnorm, mean = -0.73, sd = 21^-0.5), type = "response", @@ -149,7 +149,7 @@ arm_pred_FE <- predict(arm_fit_FE, arm_pred_FE plot(arm_pred_FE) -## ----arm_pred_RE, fig.height = 2---------------------------------------------- +## ----arm_pred_RE, fig.height = 2------------------------------------------------------------------ arm_pred_RE <- predict(arm_fit_RE, baseline = distr(qnorm, mean = -0.73, sd = 21^-0.5), type = "response", @@ -158,26 +158,26 @@ arm_pred_RE plot(arm_pred_RE) -## ----arm_pred_RE_all, fig.height=8-------------------------------------------- +## ----arm_pred_RE_all, fig.height=8---------------------------------------------------------------- arm_pred_FE_studies <- predict(arm_fit_FE, type = "response") arm_pred_FE_studies plot(arm_pred_FE_studies) -## ----parkinsons_arm_ranks, fig.height=2--------------------------------------- +## ----parkinsons_arm_ranks, fig.height=2----------------------------------------------------------- (arm_ranks <- posterior_ranks(arm_fit_FE)) plot(arm_ranks) -## ----parkinson_arm_rankprobs-------------------------------------------------- +## ----parkinson_arm_rankprobs---------------------------------------------------------------------- (arm_rankprobs <- posterior_rank_probs(arm_fit_FE)) plot(arm_rankprobs) -## ----parkinsons_cumrankprobs-------------------------------------------------- +## ----parkinsons_cumrankprobs---------------------------------------------------------------------- (arm_cumrankprobs <- posterior_rank_probs(arm_fit_FE, cumulative = TRUE)) plot(arm_cumrankprobs) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- contr_net <- set_agd_contrast(parkinsons, study = studyn, trt = trtn, @@ -187,40 +187,40 @@ contr_net <- set_agd_contrast(parkinsons, contr_net -## ----parkinsons_contr_network_plot-------------------------------------------- +## ----parkinsons_contr_network_plot---------------------------------------------------------------- plot(contr_net, weight_edges = TRUE, weight_nodes = TRUE) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- summary(normal(scale = 100)) -## ---- eval=!params$run_tests-------------------------------------------------- +## ----eval=!params$run_tests----------------------------------------------------------------------- ## contr_fit_FE <- nma(contr_net, ## trt_effects = "fixed", ## prior_trt = normal(scale = 100)) -## ---- eval=params$run_tests, echo=FALSE--------------------------------------- +## ----eval=params$run_tests, echo=FALSE------------------------------------------------------------ contr_fit_FE <- nma(contr_net, trt_effects = "fixed", prior_trt = normal(scale = 100), iter = 10000) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- contr_fit_FE -## ----contr_FE_pp_plot--------------------------------------------------------- +## ----contr_FE_pp_plot----------------------------------------------------------------------------- plot_prior_posterior(contr_fit_FE) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- summary(normal(scale = 100)) summary(half_normal(scale = 5)) -## ---- eval=!params$run_tests-------------------------------------------------- +## ----eval=!params$run_tests----------------------------------------------------------------------- ## contr_fit_RE <- nma(contr_net, ## seed = 1150676438, ## trt_effects = "random", @@ -228,7 +228,7 @@ summary(half_normal(scale = 5)) ## prior_het = half_normal(scale = 5), ## adapt_delta = 0.99) -## ---- eval=params$run_tests, echo=FALSE--------------------------------------- +## ----eval=params$run_tests, echo=FALSE------------------------------------------------------------ contr_fit_RE <- nowarn_on_ci(nma(contr_net, seed = 1150676438, trt_effects = "random", @@ -238,48 +238,48 @@ contr_fit_RE <- nowarn_on_ci(nma(contr_net, iter = 10000)) -## ----plot_contr_RE_pairs, fig.width = 6--------------------------------------- +## ----plot_contr_RE_pairs, fig.width = 6----------------------------------------------------------- pairs(contr_fit_RE, pars = c("d[3]", "delta[4: 4 vs. 3]", "tau")) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- contr_fit_RE -## ---- eval=FALSE-------------------------------------------------------------- +## ----eval=FALSE----------------------------------------------------------------------------------- ## # Not run ## print(contr_fit_RE, pars = c("d", "delta")) -## ----contr_RE_pp_plot--------------------------------------------------------- +## ----contr_RE_pp_plot----------------------------------------------------------------------------- plot_prior_posterior(contr_fit_RE) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- (contr_dic_FE <- dic(contr_fit_FE)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- (contr_dic_RE <- dic(contr_fit_RE)) -## ----contr_FE_resdev_plot----------------------------------------------------- +## ----contr_FE_resdev_plot------------------------------------------------------------------------- plot(contr_dic_FE) -## ----contr_RE_resdev_plot----------------------------------------------------- +## ----contr_RE_resdev_plot------------------------------------------------------------------------- plot(contr_dic_RE) -## ----contr_releff_FE, fig.height=3-------------------------------------------- +## ----contr_releff_FE, fig.height=3---------------------------------------------------------------- (contr_releff_FE <- relative_effects(contr_fit_FE, trt_ref = 1)) plot(contr_releff_FE, ref_line = 0) -## ----contr_releff_RE, fig.height=3-------------------------------------------- +## ----contr_releff_RE, fig.height=3---------------------------------------------------------------- (contr_releff_RE <- relative_effects(contr_fit_RE, trt_ref = 1)) plot(contr_releff_RE, ref_line = 0) -## ----contr_pred_FE, fig.height = 2-------------------------------------------- +## ----contr_pred_FE, fig.height = 2---------------------------------------------------------------- contr_pred_FE <- predict(contr_fit_FE, baseline = distr(qnorm, mean = -0.73, sd = 21^-0.5), type = "response", @@ -287,7 +287,7 @@ contr_pred_FE <- predict(contr_fit_FE, contr_pred_FE plot(contr_pred_FE) -## ----contr_pred_RE, fig.height = 2-------------------------------------------- +## ----contr_pred_RE, fig.height = 2---------------------------------------------------------------- contr_pred_RE <- predict(contr_fit_RE, baseline = distr(qnorm, mean = -0.73, sd = 21^-0.5), type = "response", @@ -296,31 +296,31 @@ contr_pred_RE plot(contr_pred_RE) -## ---- eval=FALSE-------------------------------------------------------------- +## ----eval=FALSE----------------------------------------------------------------------------------- ## # Not run ## predict(contr_fit_FE, type = "response") -## ----parkinsons_contr_ranks, fig.height=2------------------------------------- +## ----parkinsons_contr_ranks, fig.height=2--------------------------------------------------------- (contr_ranks <- posterior_ranks(contr_fit_FE)) plot(contr_ranks) -## ----parkinsons_contr_rankprobs----------------------------------------------- +## ----parkinsons_contr_rankprobs------------------------------------------------------------------- (contr_rankprobs <- posterior_rank_probs(contr_fit_FE)) plot(contr_rankprobs) -## ----parkinsons_contr_cumrankprobs-------------------------------------------- +## ----parkinsons_contr_cumrankprobs---------------------------------------------------------------- (contr_cumrankprobs <- posterior_rank_probs(contr_fit_FE, cumulative = TRUE)) plot(contr_cumrankprobs) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- studies <- parkinsons$studyn (parkinsons_arm <- parkinsons[studies %in% 1:3, ]) (parkinsons_contr <- parkinsons[studies %in% 4:7, ]) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- mix_arm_net <- set_agd_arm(parkinsons_arm, study = studyn, trt = trtn, @@ -339,21 +339,21 @@ mix_net <- combine_network(mix_arm_net, mix_contr_net) mix_net -## ----parkinsons_mix_network_plot---------------------------------------------- +## ----parkinsons_mix_network_plot------------------------------------------------------------------ plot(mix_net, weight_edges = TRUE, weight_nodes = TRUE) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- summary(normal(scale = 100)) -## ---- eval=!params$run_tests-------------------------------------------------- +## ----eval=!params$run_tests----------------------------------------------------------------------- ## mix_fit_FE <- nma(mix_net, ## trt_effects = "fixed", ## prior_intercept = normal(scale = 100), ## prior_trt = normal(scale = 100)) -## ---- eval=params$run_tests, echo=FALSE--------------------------------------- +## ----eval=params$run_tests, echo=FALSE------------------------------------------------------------ mix_fit_FE <- nma(mix_net, trt_effects = "fixed", prior_intercept = normal(scale = 100), @@ -361,25 +361,25 @@ mix_fit_FE <- nma(mix_net, iter = 10000) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- mix_fit_FE -## ---- eval=FALSE-------------------------------------------------------------- +## ----eval=FALSE----------------------------------------------------------------------------------- ## # Not run ## print(mix_fit_FE, pars = c("d", "mu")) -## ----mix_FE_pp_plot----------------------------------------------------------- +## ----mix_FE_pp_plot------------------------------------------------------------------------------- plot_prior_posterior(mix_fit_FE) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- summary(normal(scale = 100)) summary(half_normal(scale = 5)) -## ---- eval=!params$run_tests-------------------------------------------------- +## ----eval=!params$run_tests----------------------------------------------------------------------- ## mix_fit_RE <- nma(mix_net, ## seed = 437219664, ## trt_effects = "random", @@ -388,7 +388,7 @@ summary(half_normal(scale = 5)) ## prior_het = half_normal(scale = 5), ## adapt_delta = 0.99) -## ---- eval=params$run_tests, echo=FALSE--------------------------------------- +## ----eval=params$run_tests, echo=FALSE------------------------------------------------------------ mix_fit_RE <- nowarn_on_ci(nma(mix_net, seed = 437219664, trt_effects = "random", @@ -399,48 +399,48 @@ mix_fit_RE <- nowarn_on_ci(nma(mix_net, iter=10000)) -## ----plot_mix_RE_pairs, fig.width = 6----------------------------------------- +## ----plot_mix_RE_pairs, fig.width = 6------------------------------------------------------------- pairs(mix_fit_RE, pars = c("d[3]", "delta[4: 4 vs. 3]", "tau")) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- mix_fit_RE -## ---- eval=FALSE-------------------------------------------------------------- +## ----eval=FALSE----------------------------------------------------------------------------------- ## # Not run ## print(mix_fit_RE, pars = c("d", "mu", "delta")) -## ----mix_RE_pp_plot----------------------------------------------------------- +## ----mix_RE_pp_plot------------------------------------------------------------------------------- plot_prior_posterior(mix_fit_RE) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- (mix_dic_FE <- dic(mix_fit_FE)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- (mix_dic_RE <- dic(mix_fit_RE)) -## ----mix_FE_resdev_plot------------------------------------------------------- +## ----mix_FE_resdev_plot--------------------------------------------------------------------------- plot(mix_dic_FE) -## ----mix_RE_resdev_plot------------------------------------------------------- +## ----mix_RE_resdev_plot--------------------------------------------------------------------------- plot(mix_dic_RE) -## ----mix_releff_FE, fig.height=3---------------------------------------------- +## ----mix_releff_FE, fig.height=3------------------------------------------------------------------ (mix_releff_FE <- relative_effects(mix_fit_FE, trt_ref = 1)) plot(mix_releff_FE, ref_line = 0) -## ----mix_releff_RE, fig.height=3---------------------------------------------- +## ----mix_releff_RE, fig.height=3------------------------------------------------------------------ (mix_releff_RE <- relative_effects(mix_fit_RE, trt_ref = 1)) plot(mix_releff_RE, ref_line = 0) -## ----mix_pred_FE, fig.height = 2---------------------------------------------- +## ----mix_pred_FE, fig.height = 2------------------------------------------------------------------ mix_pred_FE <- predict(mix_fit_FE, baseline = distr(qnorm, mean = -0.73, sd = 21^-0.5), type = "response", @@ -448,7 +448,7 @@ mix_pred_FE <- predict(mix_fit_FE, mix_pred_FE plot(mix_pred_FE) -## ----mix_pred_RE, fig.height = 2---------------------------------------------- +## ----mix_pred_RE, fig.height = 2------------------------------------------------------------------ mix_pred_RE <- predict(mix_fit_RE, baseline = distr(qnorm, mean = -0.73, sd = 21^-0.5), type = "response", @@ -457,26 +457,26 @@ mix_pred_RE plot(mix_pred_RE) -## ----mix_pred_FE_all, fig.height=8-------------------------------------------- +## ----mix_pred_FE_all, fig.height=8---------------------------------------------------------------- mix_pred_FE_studies <- predict(mix_fit_FE, type = "response") mix_pred_FE_studies plot(mix_pred_FE_studies) -## ----parkinsons_mix_ranks, fig.height=2--------------------------------------- +## ----parkinsons_mix_ranks, fig.height=2----------------------------------------------------------- (mix_ranks <- posterior_ranks(mix_fit_FE)) plot(mix_ranks) -## ----parkinsons_mix_rankprobs------------------------------------------------- +## ----parkinsons_mix_rankprobs--------------------------------------------------------------------- (mix_rankprobs <- posterior_rank_probs(mix_fit_FE)) plot(mix_rankprobs) -## ----parkinsons_mix_cumrankprobs---------------------------------------------- +## ----parkinsons_mix_cumrankprobs------------------------------------------------------------------ (mix_cumrankprobs <- posterior_rank_probs(mix_fit_FE, cumulative = TRUE)) plot(mix_cumrankprobs) -## ----parkinsons_tests, include=FALSE, eval=params$run_tests------------------- +## ----parkinsons_tests, include=FALSE, eval=params$run_tests--------------------------------------- #--- Test against TSD 2 results --- library(testthat) library(dplyr) diff --git a/tests/testthat/test-example_plaque_psoriasis.R b/tests/testthat/test-example_plaque_psoriasis.R index d37a8c9f5..eb9b81eb3 100644 --- a/tests/testthat/test-example_plaque_psoriasis.R +++ b/tests/testthat/test-example_plaque_psoriasis.R @@ -8,26 +8,26 @@ skip_on_cran() params <- list(run_tests = FALSE, eval_multinomial = FALSE) -## ---- code=readLines("children/knitr_setup.R"), include=FALSE----------------- +## ----code=readLines("children/knitr_setup.R"), include=FALSE-------------------------------------- -## ----setup-------------------------------------------------------------------- +## ----setup---------------------------------------------------------------------------------------- library(multinma) library(dplyr) # dplyr and tidyr for data manipulation library(tidyr) library(ggplot2) # ggplot2 for plotting covariate distributions -## ---- eval = FALSE------------------------------------------------------------ +## ----eval = FALSE--------------------------------------------------------------------------------- ## options(mc.cores = parallel::detectCores()) -## ---- echo = FALSE------------------------------------------------------------ +## ----echo = FALSE--------------------------------------------------------------------------------- nc <- switch(tolower(Sys.getenv("_R_CHECK_LIMIT_CORES_")), "true" =, "warn" = 2, parallel::detectCores()) options(mc.cores = nc) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- pso_ipd <- filter(plaque_psoriasis_ipd, studyc %in% c("UNCOVER-1", "UNCOVER-2", "UNCOVER-3")) @@ -38,7 +38,7 @@ head(pso_ipd) head(pso_agd) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- pso_ipd <- pso_ipd %>% mutate(# Variable transformations bsa = bsa / 100, @@ -72,16 +72,16 @@ pso_agd <- pso_agd %>% ) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- sum(!pso_ipd$complete) mean(!pso_ipd$complete) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- pso_ipd <- filter(pso_ipd, complete) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- pso_net <- combine_network( set_ipd(pso_ipd, study = studyc, @@ -99,12 +99,12 @@ pso_net <- combine_network( pso_net -## ----pso_network_plot, fig.width=8, fig.height=6------------------------------ +## ----pso_network_plot, fig.width=8, fig.height=6-------------------------------------------------- plot(pso_net, weight_nodes = TRUE, weight_edges = TRUE, show_trt_class = TRUE) + ggplot2::theme(legend.position = "bottom", legend.box = "vertical") -## ----pso_covariate_plot------------------------------------------------------- +## ----pso_covariate_plot--------------------------------------------------------------------------- # Get mean and sd of covariates in each study ipd_summary <- pso_ipd %>% group_by(studyc) %>% @@ -137,7 +137,7 @@ ggplot(aes(x = value)) + theme_multinma() -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- pso_net <- add_integration(pso_net, durnpso = distr(qgamma, mean = durnpso_mean, sd = durnpso_sd), prevsys = distr(qbern, prob = prevsys), @@ -148,11 +148,11 @@ pso_net <- add_integration(pso_net, ) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- summary(normal(scale = 10)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- pso_fit_FE <- nma(pso_net, trt_effects = "fixed", link = "probit", @@ -166,25 +166,25 @@ pso_fit_FE <- nma(pso_net, QR = TRUE) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- print(pso_fit_FE) -## ---- eval=FALSE-------------------------------------------------------------- +## ----eval=FALSE----------------------------------------------------------------------------------- ## # Not run ## print(pso_fit_FE, pars = c("d", "beta", "mu")) -## ----pso_FE_pp_plot, fig.width=8, fig.height=6-------------------------------- +## ----pso_FE_pp_plot, fig.width=8, fig.height=6---------------------------------------------------- plot_prior_posterior(pso_fit_FE, prior = c("intercept", "trt", "reg")) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- summary(normal(scale = 10)) summary(half_normal(scale = 2.5)) -## ---- eval=!params$run_tests-------------------------------------------------- +## ----eval=!params$run_tests----------------------------------------------------------------------- ## pso_fit_RE <- nma(pso_net, ## trt_effects = "random", ## link = "probit", @@ -199,64 +199,64 @@ summary(half_normal(scale = 2.5)) ## QR = TRUE) -## ---- eval=!params$run_tests-------------------------------------------------- +## ----eval=!params$run_tests----------------------------------------------------------------------- ## print(pso_fit_RE) -## ---- eval=FALSE-------------------------------------------------------------- +## ----eval=FALSE----------------------------------------------------------------------------------- ## # Not run ## print(pso_fit_RE, pars = c("d", "beta", "tau", "mu", "delta")) -## ----pso_RE_pairs, eval=!params$run_tests------------------------------------- +## ----pso_RE_pairs, eval=!params$run_tests--------------------------------------------------------- ## pairs(pso_fit_RE, pars = c("delta[UNCOVER-2: ETN]", "d[ETN]", "tau", "lp__")) -## ----pso_RE_pp_plot, eval=!params$run_tests, fig.width=8, fig.height=6-------- +## ----pso_RE_pp_plot, eval=!params$run_tests, fig.width=8, fig.height=6---------------------------- ## plot_prior_posterior(pso_fit_RE, prior = c("intercept", "trt", "reg", "het")) -## ---- eval=!params$run_tests-------------------------------------------------- +## ----eval=!params$run_tests----------------------------------------------------------------------- ## (pso_dic_FE <- dic(pso_fit_FE)) ## (pso_dic_RE <- dic(pso_fit_RE)) -## ---- eval=params$run_tests, echo=FALSE--------------------------------------- +## ----eval=params$run_tests, echo=FALSE------------------------------------------------------------ (pso_dic_FE <- dic(pso_fit_FE)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- plot(pso_fit_FE, pars = "beta", stat = "halfeye", ref_line = 0) -## ----pso_releff_FE------------------------------------------------------------ +## ----pso_releff_FE-------------------------------------------------------------------------------- (pso_releff_FE <- relative_effects(pso_fit_FE)) plot(pso_releff_FE, ref_line = 0) -## ----pso_pred_FE-------------------------------------------------------------- +## ----pso_pred_FE---------------------------------------------------------------------------------- (pso_pred_FE <- predict(pso_fit_FE, type = "response")) plot(pso_pred_FE, ref_line = c(0, 1)) -## ----pso_ranks_FE------------------------------------------------------------- +## ----pso_ranks_FE--------------------------------------------------------------------------------- (pso_ranks_FE <- posterior_ranks(pso_fit_FE, lower_better = FALSE)) plot(pso_ranks_FE) -## ----pso_rankprobs_FE--------------------------------------------------------- +## ----pso_rankprobs_FE----------------------------------------------------------------------------- (pso_rankprobs_FE <- posterior_rank_probs(pso_fit_FE, lower_better = FALSE)) plot(pso_rankprobs_FE) -## ----pso_cumrankprobs_FE------------------------------------------------------ +## ----pso_cumrankprobs_FE-------------------------------------------------------------------------- (pso_cumrankprobs_FE <- posterior_rank_probs(pso_fit_FE, lower_better = FALSE, cumulative = TRUE)) plot(pso_cumrankprobs_FE) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- new_agd_means <- tibble( bsa = 0.6, prevsys = 0.1, @@ -265,12 +265,12 @@ new_agd_means <- tibble( durnpso = 3) -## ----pso_releff_FE_new-------------------------------------------------------- +## ----pso_releff_FE_new---------------------------------------------------------------------------- (pso_releff_FE_new <- relative_effects(pso_fit_FE, newdata = new_agd_means)) plot(pso_releff_FE_new, ref_line = 0) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- new_agd_int <- tibble( bsa_mean = 0.6, bsa_sd = 0.3, @@ -283,7 +283,7 @@ new_agd_int <- tibble( ) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- new_agd_int <- add_integration(new_agd_int, durnpso = distr(qgamma, mean = durnpso_mean, sd = durnpso_sd), prevsys = distr(qbern, prob = prevsys), @@ -294,7 +294,7 @@ new_agd_int <- add_integration(new_agd_int, n_int = 64) -## ----pso_pred_FE_new---------------------------------------------------------- +## ----pso_pred_FE_new------------------------------------------------------------------------------ (pso_pred_FE_new <- predict(pso_fit_FE, type = "response", newdata = new_agd_int, @@ -302,7 +302,7 @@ new_agd_int <- add_integration(new_agd_int, plot(pso_pred_FE_new, ref_line = c(0, 1)) -## ---- eval=!params$run_tests-------------------------------------------------- +## ----eval=!params$run_tests----------------------------------------------------------------------- ## # IPD studies ## pso_ipd <- plaque_psoriasis_ipd %>% ## mutate( @@ -343,7 +343,7 @@ plot(pso_pred_FE_new, ref_line = c(0, 1)) ## arrange(studyc, trtn) -## ---- eval=!params$run_tests-------------------------------------------------- +## ----eval=!params$run_tests----------------------------------------------------------------------- ## pso_ipd %>% ## group_by(studyc) %>% ## summarise(n_total = n(), @@ -353,7 +353,7 @@ plot(pso_pred_FE_new, ref_line = c(0, 1)) ## pso_ipd <- filter(pso_ipd, is_complete) -## ---- eval=!params$run_tests-------------------------------------------------- +## ----eval=!params$run_tests----------------------------------------------------------------------- ## pso_net <- combine_network( ## set_ipd(pso_ipd, ## study = studyc, @@ -378,7 +378,7 @@ plot(pso_pred_FE_new, ref_line = c(0, 1)) ## pso_net -## ----pso-full-network, eval=!params$run_tests, fig.width=8, fig.height=6------ +## ----pso-full-network, eval=!params$run_tests, fig.width=8, fig.height=6-------------------------- ## class_pal <- c("#D95F02", "#7570B3", "#E7298A", "#E6AB02") ## ## plot(pso_net, weight_nodes = TRUE, weight_edges = TRUE, show_trt_class = TRUE, nudge = 0.1) + @@ -391,7 +391,7 @@ plot(pso_pred_FE_new, ref_line = c(0, 1)) ## guide = guide_legend(override.aes = list(size = 2))) -## ---- eval=!params$run_tests-------------------------------------------------- +## ----eval=!params$run_tests----------------------------------------------------------------------- ## pso_net <- add_integration(pso_net, ## durnpso = distr(qgamma, mean = durnpso_mean, sd = durnpso_sd), ## prevsys = distr(qbern, prob = prevsys), @@ -401,7 +401,7 @@ plot(pso_pred_FE_new, ref_line = c(0, 1)) ## n_int = 64) -## ---- eval=!params$run_tests && params$eval_multinomial----------------------- +## ----eval=!params$run_tests && params$eval_multinomial-------------------------------------------- ## pso_fit_FE <- nma(pso_net, ## trt_effects = "fixed", ## link = "probit", @@ -415,11 +415,11 @@ plot(pso_pred_FE_new, ref_line = c(0, 1)) ## init_r = 0.5) -## ---- eval=!params$run_tests && params$eval_multinomial----------------------- +## ----eval=!params$run_tests && params$eval_multinomial-------------------------------------------- ## pso_fit_FE -## ---- eval=!params$run_tests && params$eval_multinomial----------------------- +## ----eval=!params$run_tests && params$eval_multinomial-------------------------------------------- ## pso_fit_RE <- nma(pso_net, ## trt_effects = "random", ## link = "probit", @@ -434,19 +434,19 @@ plot(pso_pred_FE_new, ref_line = c(0, 1)) ## init_r = 0.5) -## ---- eval=!params$run_tests && params$eval_multinomial----------------------- +## ----eval=!params$run_tests && params$eval_multinomial-------------------------------------------- ## pso_fit_RE -## ---- eval=!params$run_tests && params$eval_multinomial----------------------- +## ----eval=!params$run_tests && params$eval_multinomial-------------------------------------------- ## (pso_dic_FE <- dic(pso_fit_FE)) -## ---- eval=!params$run_tests && params$eval_multinomial----------------------- +## ----eval=!params$run_tests && params$eval_multinomial-------------------------------------------- ## (pso_dic_RE <- dic(pso_fit_RE)) -## ---- eval=!params$run_tests && params$eval_multinomial----------------------- +## ----eval=!params$run_tests && params$eval_multinomial-------------------------------------------- ## pso_fit_UME <- nma(pso_net, ## trt_effects = "fixed", ## consistency = "ume", @@ -461,29 +461,29 @@ plot(pso_pred_FE_new, ref_line = c(0, 1)) ## init_r = 0.5) -## ---- eval=!params$run_tests && params$eval_multinomial----------------------- +## ----eval=!params$run_tests && params$eval_multinomial-------------------------------------------- ## pso_fit_UME -## ---- eval=!params$run_tests && params$eval_multinomial----------------------- +## ----eval=!params$run_tests && params$eval_multinomial-------------------------------------------- ## pso_dic_FE -## ---- eval=!params$run_tests && params$eval_multinomial----------------------- +## ----eval=!params$run_tests && params$eval_multinomial-------------------------------------------- ## (pso_dic_UME <- dic(pso_fit_UME)) -## ----pso-full-dev-dev, eval=!params$run_tests && params$eval_multinomial------ +## ----pso-full-dev-dev, eval=!params$run_tests && params$eval_multinomial-------------------------- ## plot(pso_dic_FE, pso_dic_UME, show_uncertainty = FALSE) + ## xlab("Residual deviance - consistency model") + ## ylab("Residual deviance - inconsistency (UME) model") -## ---- eval=!params$run_tests-------------------------------------------------- +## ----eval=!params$run_tests----------------------------------------------------------------------- ## data.frame(classes = pso_net$classes, treatments = pso_net$treatments) -## ---- eval=!params$run_tests && params$eval_multinomial----------------------- +## ----eval=!params$run_tests && params$eval_multinomial-------------------------------------------- ## noSEM_mods <- list( ## durnpso = ~(prevsys + bsa + weight + psa)*.trtclass + durnpso*.trt, ## prevsys = ~(durnpso + bsa + weight + psa)*.trtclass + prevsys*.trt, @@ -515,11 +515,11 @@ plot(pso_pred_FE_new, ref_line = c(0, 1)) ## } -## ---- eval=!params$run_tests && params$eval_multinomial----------------------- +## ----eval=!params$run_tests && params$eval_multinomial-------------------------------------------- ## pso_dic_FE -## ---- eval=!params$run_tests && params$eval_multinomial----------------------- +## ----eval=!params$run_tests && params$eval_multinomial-------------------------------------------- ## lapply(noSEM_fits, dic) @@ -573,7 +573,7 @@ plot(pso_pred_FE_new, ref_line = c(0, 1)) ## theme(legend.position = c(0.85, 0.2)) -## ---- eval=!params$run_tests && params$eval_multinomial----------------------- +## ----eval=!params$run_tests && params$eval_multinomial-------------------------------------------- ## (pso_releff_FE <- relative_effects(pso_fit_FE)) @@ -581,7 +581,7 @@ plot(pso_pred_FE_new, ref_line = c(0, 1)) ## plot(pso_releff_FE, ref_line = 0) -## ---- eval=!params$run_tests && params$eval_multinomial----------------------- +## ----eval=!params$run_tests && params$eval_multinomial-------------------------------------------- ## (pso_pred_FE <- predict(pso_fit_FE, type = "response")) @@ -589,7 +589,7 @@ plot(pso_pred_FE_new, ref_line = c(0, 1)) ## plot(pso_pred_FE, ref_line = c(0, 1)) -## ---- eval=!params$run_tests-------------------------------------------------- +## ----eval=!params$run_tests----------------------------------------------------------------------- ## new_agd_means <- tibble::tribble( ## ~study, ~covariate, ~mean, ~sd, ## "PsoBest", "bsa", 24, 20.5, @@ -625,7 +625,7 @@ plot(pso_pred_FE_new, ref_line = c(0, 1)) ## psa = psa_mean) -## ---- eval=!params$run_tests && params$eval_multinomial----------------------- +## ----eval=!params$run_tests && params$eval_multinomial-------------------------------------------- ## (pso_releff_FE_new <- relative_effects(pso_fit_FE, ## newdata = transmute(new_agd_means, ## study, @@ -637,11 +637,11 @@ plot(pso_pred_FE_new, ref_line = c(0, 1)) ## study = study)) -## ----pso-full-releff-new, eval=!params$run_tests && params$eval_multinomial---- +## ----pso-full-releff-new, eval=!params$run_tests && params$eval_multinomial----------------------- ## plot(pso_releff_FE_new, ref_line = 0) + facet_wrap("Study") -## ---- eval=!params$run_tests && params$eval_multinomial----------------------- +## ----eval=!params$run_tests && params$eval_multinomial-------------------------------------------- ## new_agd_int <- add_integration(filter(new_agd_means, study != "PsoBest"), ## durnpso = distr(qgamma, mean = durnpso_mean, sd = durnpso_sd), ## prevsys = distr(qbern, prob = prevsys), @@ -652,7 +652,7 @@ plot(pso_pred_FE_new, ref_line = c(0, 1)) ## cor = pso_net$int_cor) -## ---- eval=!params$run_tests && params$eval_multinomial----------------------- +## ----eval=!params$run_tests && params$eval_multinomial-------------------------------------------- ## (pso_pred_FE_new <- predict(pso_fit_FE, ## type = "response", ## newdata = new_agd_int, @@ -664,14 +664,14 @@ plot(pso_pred_FE_new, ref_line = c(0, 1)) ## trt_ref = "SEC_300")) -## ----pso-full-pred-new, eval=!params$run_tests && params$eval_multinomial----- +## ----pso-full-pred-new, eval=!params$run_tests && params$eval_multinomial------------------------- ## plot(pso_pred_FE_new, ref_line = c(0, 1)) + ## facet_grid(rows = "Study") + ## aes(colour = Category) + ## scale_colour_brewer(palette = "Blues") -## ----pso_tests, include=FALSE, eval=params$run_tests-------------------------- +## ----pso_tests, include=FALSE, eval=params$run_tests---------------------------------------------- library(testthat) library(dplyr) diff --git a/tests/testthat/test-example_smoking.R b/tests/testthat/test-example_smoking.R index 6aca7d056..36e954724 100644 --- a/tests/testthat/test-example_smoking.R +++ b/tests/testthat/test-example_smoking.R @@ -8,14 +8,14 @@ skip_on_cran() params <- list(run_tests = FALSE) -## ---- code=readLines("children/knitr_setup.R"), include=FALSE----------------- +## ----code=readLines("children/knitr_setup.R"), include=FALSE-------------------------------------- -## ---- eval = FALSE------------------------------------------------------------ +## ----eval = FALSE--------------------------------------------------------------------------------- ## library(multinma) ## options(mc.cores = parallel::detectCores()) -## ----setup, echo = FALSE------------------------------------------------------ +## ----setup, echo = FALSE-------------------------------------------------------------------------- library(multinma) nc <- switch(tolower(Sys.getenv("_R_CHECK_LIMIT_CORES_")), "true" =, "warn" = 2, @@ -23,11 +23,11 @@ nc <- switch(tolower(Sys.getenv("_R_CHECK_LIMIT_CORES_")), options(mc.cores = nc) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- head(smoking) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- smknet <- set_agd_arm(smoking, study = studyn, trt = trtc, @@ -37,21 +37,21 @@ smknet <- set_agd_arm(smoking, smknet -## ---- eval=FALSE-------------------------------------------------------------- +## ----eval=FALSE----------------------------------------------------------------------------------- ## plot(smknet, weight_edges = TRUE, weight_nodes = TRUE) -## ----smoking_network_plot, echo=FALSE, fig.width=8, fig.height=6, out.width="100%"---- +## ----smoking_network_plot, echo=FALSE, fig.width=8, fig.height=6, out.width="100%"---------------- plot(smknet, weight_edges = TRUE, weight_nodes = TRUE) + ggplot2::theme(plot.margin = ggplot2::unit(c(1, 1, 1, 6), "lines")) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- summary(normal(scale = 100)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- summary(half_normal(scale = 5)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- smkfit <- nma(smknet, trt_effects = "random", prior_intercept = normal(scale = 100), @@ -59,36 +59,36 @@ smkfit <- nma(smknet, prior_het = normal(scale = 5)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- smkfit -## ---- eval=FALSE-------------------------------------------------------------- +## ----eval=FALSE----------------------------------------------------------------------------------- ## # Not run ## print(smkfit, pars = c("d", "tau", "mu", "delta")) -## ----smoking_pp_plot, fig.width=8, fig.height=6, out.width="100%"------------- +## ----smoking_pp_plot, fig.width=8, fig.height=6, out.width="100%"--------------------------------- plot_prior_posterior(smkfit) -## ----smoking_pp_plot_tau------------------------------------------------------ +## ----smoking_pp_plot_tau-------------------------------------------------------------------------- plot_prior_posterior(smkfit, prior = "het") -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- (dic_consistency <- dic(smkfit)) -## ----smoking_resdev_plot, fig.width=8----------------------------------------- +## ----smoking_resdev_plot, fig.width=8------------------------------------------------------------- plot(dic_consistency) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- smoking[smoking$r == 0, ] -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- smkfit_ume <- nma(smknet, consistency = "ume", trt_effects = "random", @@ -98,16 +98,16 @@ smkfit_ume <- nma(smknet, smkfit_ume -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- dic_consistency (dic_ume <- dic(smkfit_ume)) -## ----smoking_devdev_plot------------------------------------------------------ +## ----smoking_devdev_plot-------------------------------------------------------------------------- plot(dic_consistency, dic_ume, point_alpha = 0.5, interval_alpha = 0.2) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- smk_nodesplit <- nma(smknet, consistency = "nodesplit", trt_effects = "random", @@ -116,34 +116,34 @@ smk_nodesplit <- nma(smknet, prior_het = normal(scale = 5)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- summary(smk_nodesplit) -## ----smk_nodesplit, fig.width = 7--------------------------------------------- +## ----smk_nodesplit, fig.width = 7----------------------------------------------------------------- plot(smk_nodesplit) + ggplot2::theme(legend.position = "bottom", legend.direct = "horizontal") -## ----smoking_releff, fig.height=4.5------------------------------------------- +## ----smoking_releff, fig.height=4.5--------------------------------------------------------------- (smk_releff <- relative_effects(smkfit, all_contrasts = TRUE)) plot(smk_releff, ref_line = 0) -## ----smoking_ranks, fig.height=3---------------------------------------------- +## ----smoking_ranks, fig.height=3------------------------------------------------------------------ (smk_ranks <- posterior_ranks(smkfit, lower_better = FALSE)) plot(smk_ranks) -## ----smoking_rankprobs-------------------------------------------------------- +## ----smoking_rankprobs---------------------------------------------------------------------------- (smk_rankprobs <- posterior_rank_probs(smkfit, lower_better = FALSE)) plot(smk_rankprobs) -## ----smoking_cumrankprobs----------------------------------------------------- +## ----smoking_cumrankprobs------------------------------------------------------------------------- (smk_cumrankprobs <- posterior_rank_probs(smkfit, lower_better = FALSE, cumulative = TRUE)) plot(smk_cumrankprobs) -## ----smoking_tests, include=FALSE, eval=params$run_tests---------------------- +## ----smoking_tests, include=FALSE, eval=params$run_tests------------------------------------------ #--- Test against TSD 4 results --- library(testthat) library(dplyr) diff --git a/tests/testthat/test-example_statins.R b/tests/testthat/test-example_statins.R index 886ff03c1..586829773 100644 --- a/tests/testthat/test-example_statins.R +++ b/tests/testthat/test-example_statins.R @@ -8,14 +8,14 @@ skip_on_cran() params <- list(run_tests = FALSE) -## ---- code=readLines("children/knitr_setup.R"), include=FALSE----------------- +## ----code=readLines("children/knitr_setup.R"), include=FALSE-------------------------------------- -## ---- eval = FALSE------------------------------------------------------------ +## ----eval = FALSE--------------------------------------------------------------------------------- ## library(multinma) ## options(mc.cores = parallel::detectCores()) -## ----setup, echo = FALSE------------------------------------------------------ +## ----setup, echo = FALSE-------------------------------------------------------------------------- library(multinma) nc <- switch(tolower(Sys.getenv("_R_CHECK_LIMIT_CORES_")), "true" =, "warn" = 2, @@ -23,11 +23,11 @@ nc <- switch(tolower(Sys.getenv("_R_CHECK_LIMIT_CORES_")), options(mc.cores = nc) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- head(statins) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- statin_net <- set_agd_arm(statins, study = studyc, trt = trtc, @@ -37,11 +37,11 @@ statin_net <- set_agd_arm(statins, statin_net -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- summary(normal(scale = 100)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- statin_fit_FE <- nma(statin_net, trt_effects = "fixed", regression = ~.trt:prevention, @@ -50,25 +50,25 @@ statin_fit_FE <- nma(statin_net, prior_reg = normal(scale = 100)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- statin_fit_FE -## ---- eval=FALSE-------------------------------------------------------------- +## ----eval=FALSE----------------------------------------------------------------------------------- ## # Not run ## print(statin_fit_FE, pars = c("d", "beta", "mu")) -## ----statin_FE_pp_plot-------------------------------------------------------- +## ----statin_FE_pp_plot---------------------------------------------------------------------------- plot_prior_posterior(statin_fit_FE, prior = c("trt", "reg")) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- summary(normal(scale = 100)) summary(half_normal(scale = 5)) -## ---- eval=!params$run_tests-------------------------------------------------- +## ----eval=!params$run_tests----------------------------------------------------------------------- ## statin_fit_RE <- nma(statin_net, ## trt_effects = "random", ## regression = ~.trt:prevention, @@ -78,7 +78,7 @@ summary(half_normal(scale = 5)) ## prior_het = half_normal(scale = 5), ## adapt_delta = 0.99) -## ---- eval=params$run_tests, echo=FALSE--------------------------------------- +## ----eval=params$run_tests, echo=FALSE------------------------------------------------------------ statin_fit_RE <- nowarn_on_ci(nma(statin_net, trt_effects = "random", regression = ~.trt:prevention, @@ -89,35 +89,35 @@ statin_fit_RE <- nowarn_on_ci(nma(statin_net, adapt_delta = 0.99)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- statin_fit_RE -## ---- eval=FALSE-------------------------------------------------------------- +## ----eval=FALSE----------------------------------------------------------------------------------- ## # Not run ## print(statin_fit_RE, pars = c("d", "beta", "mu", "delta")) -## ----statin_RE_pp_plot-------------------------------------------------------- +## ----statin_RE_pp_plot---------------------------------------------------------------------------- plot_prior_posterior(statin_fit_RE, prior = c("trt", "reg", "het")) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- (statin_dic_FE <- dic(statin_fit_FE)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- (statin_dic_RE <- dic(statin_fit_RE)) -## ----statin_FE_resdev_plot---------------------------------------------------- +## ----statin_FE_resdev_plot------------------------------------------------------------------------ plot(statin_dic_FE) -## ----statin_RE_resdev_plot---------------------------------------------------- +## ----statin_RE_resdev_plot------------------------------------------------------------------------ plot(statin_dic_RE) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- statin_releff_FE <- relative_effects(statin_fit_FE, newdata = data.frame(prevention = c("Primary", "Secondary")), study = prevention) @@ -125,19 +125,19 @@ statin_releff_FE <- relative_effects(statin_fit_FE, statin_releff_FE -## ----statins_releff_FE, fig.height = 2---------------------------------------- +## ----statins_releff_FE, fig.height = 2------------------------------------------------------------ plot(statin_releff_FE, ref_line = 0) -## ----statins_beta_FE, fig.height = 4------------------------------------------ +## ----statins_beta_FE, fig.height = 4-------------------------------------------------------------- plot(statin_fit_FE, pars = "beta", ref_line = 0, stat = "halfeye") -## ----statins_tests, include=FALSE, eval=params$run_tests---------------------- +## ----statins_tests, include=FALSE, eval=params$run_tests------------------------------------------ #--- Test against TSD 3 results --- library(testthat) library(dplyr) diff --git a/tests/testthat/test-example_thrombolytics.R b/tests/testthat/test-example_thrombolytics.R index 64d23304c..a669b4895 100644 --- a/tests/testthat/test-example_thrombolytics.R +++ b/tests/testthat/test-example_thrombolytics.R @@ -8,14 +8,14 @@ skip_on_cran() params <- list(run_tests = FALSE) -## ---- code=readLines("children/knitr_setup.R"), include=FALSE----------------- +## ----code=readLines("children/knitr_setup.R"), include=FALSE-------------------------------------- -## ---- eval = FALSE------------------------------------------------------------ +## ----eval = FALSE--------------------------------------------------------------------------------- ## library(multinma) ## options(mc.cores = parallel::detectCores()) -## ----setup, echo = FALSE------------------------------------------------------ +## ----setup, echo = FALSE-------------------------------------------------------------------------- library(multinma) nc <- switch(tolower(Sys.getenv("_R_CHECK_LIMIT_CORES_")), "true" =, "warn" = 2, @@ -23,11 +23,11 @@ nc <- switch(tolower(Sys.getenv("_R_CHECK_LIMIT_CORES_")), options(mc.cores = nc) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- head(thrombolytics) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- thrombo_net <- set_agd_arm(thrombolytics, study = studyn, trt = trtc, @@ -35,7 +35,7 @@ thrombo_net <- set_agd_arm(thrombolytics, n = n) thrombo_net -## ---- include=FALSE, eval=params$run_tests------------------------------------ +## ----include=FALSE, eval=params$run_tests--------------------------------------------------------- # Make trtf factor to order treatments in same way as Dias analysis - needed to # recreate inconsistency analyses trts <- dplyr::distinct(thrombolytics, trtn, trtc) @@ -48,46 +48,46 @@ thrombo_net2 <- set_agd_arm(thrombolytics, n = n) -## ---- eval=FALSE-------------------------------------------------------------- +## ----eval=FALSE----------------------------------------------------------------------------------- ## plot(thrombo_net, weight_edges = TRUE, weight_nodes = TRUE) -## ----thrombo_net_plot, echo=FALSE--------------------------------------------- +## ----thrombo_net_plot, echo=FALSE----------------------------------------------------------------- plot(thrombo_net, weight_edges = TRUE, weight_nodes = TRUE) + ggplot2::theme(legend.margin = ggplot2::margin(l = 4, unit = "lines")) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- summary(normal(scale = 100)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- thrombo_fit <- nma(thrombo_net, trt_effects = "fixed", prior_intercept = normal(scale = 100), prior_trt = normal(scale = 100)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- thrombo_fit -## ---- eval=FALSE-------------------------------------------------------------- +## ----eval=FALSE----------------------------------------------------------------------------------- ## # Not run ## print(thrombo_fit, pars = c("d", "mu")) -## ----thrombo_pp_plot---------------------------------------------------------- +## ----thrombo_pp_plot------------------------------------------------------------------------------ plot_prior_posterior(thrombo_fit, prior = "trt") -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- (dic_consistency <- dic(thrombo_fit)) -## ----thrombo_resdev_plot, fig.width=12---------------------------------------- +## ----thrombo_resdev_plot, fig.width=12------------------------------------------------------------ plot(dic_consistency) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- thrombo_fit_ume <- nma(thrombo_net, consistency = "ume", trt_effects = "fixed", @@ -96,23 +96,23 @@ thrombo_fit_ume <- nma(thrombo_net, thrombo_fit_ume -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- dic_consistency (dic_ume <- dic(thrombo_fit_ume)) -## ----thrombo_devdev_plot------------------------------------------------------ +## ----thrombo_devdev_plot-------------------------------------------------------------------------- plot(dic_consistency, dic_ume, show_uncertainty = FALSE) -## ---- eval=!params$run_tests-------------------------------------------------- +## ----eval=!params$run_tests----------------------------------------------------------------------- ## thrombo_nodesplit <- nma(thrombo_net, ## consistency = "nodesplit", ## trt_effects = "fixed", ## prior_intercept = normal(scale = 100), ## prior_trt = normal(scale = 100)) -## ---- include=FALSE, eval=params$run_tests------------------------------------ +## ----include=FALSE, eval=params$run_tests--------------------------------------------------------- # Run node-splits with treatments ordered as per Dias thrombo_nodesplit <- nma(thrombo_net2, consistency = "nodesplit", @@ -121,39 +121,39 @@ thrombo_nodesplit <- nma(thrombo_net2, prior_trt = normal(scale = 100)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- summary(thrombo_nodesplit) -## ----thrombo_nodesplit, fig.width = 7----------------------------------------- +## ----thrombo_nodesplit, fig.width = 7------------------------------------------------------------- plot(thrombo_nodesplit) -## ----thrombo_nodesplit_omega, fig.height = 6---------------------------------- +## ----thrombo_nodesplit_omega, fig.height = 6------------------------------------------------------ plot(thrombo_nodesplit, pars = "omega", stat = "halfeye", ref_line = 0) + ggplot2::aes(y = comparison) + ggplot2::facet_null() -## ----thrombo_releff----------------------------------------------------------- +## ----thrombo_releff------------------------------------------------------------------------------- (thrombo_releff <- relative_effects(thrombo_fit, all_contrasts = TRUE)) plot(thrombo_releff, ref_line = 0) -## ----thrombo_ranks------------------------------------------------------------ +## ----thrombo_ranks-------------------------------------------------------------------------------- (thrombo_ranks <- posterior_ranks(thrombo_fit)) plot(thrombo_ranks) -## ----thrombo_rankprobs-------------------------------------------------------- +## ----thrombo_rankprobs---------------------------------------------------------------------------- (thrombo_rankprobs <- posterior_rank_probs(thrombo_fit)) plot(thrombo_rankprobs) -## ----thrombo_cumrankprobs----------------------------------------------------- +## ----thrombo_cumrankprobs------------------------------------------------------------------------- (thrombo_cumrankprobs <- posterior_rank_probs(thrombo_fit, cumulative = TRUE)) plot(thrombo_cumrankprobs) -## ----thrombo_tests, include=FALSE, eval=params$run_tests---------------------- +## ----thrombo_tests, include=FALSE, eval=params$run_tests------------------------------------------ #--- Test against TSD 4 results --- library(testthat) library(dplyr) diff --git a/tests/testthat/test-example_transfusion.R b/tests/testthat/test-example_transfusion.R index 39b9b9bd8..3a3fed52d 100644 --- a/tests/testthat/test-example_transfusion.R +++ b/tests/testthat/test-example_transfusion.R @@ -8,17 +8,17 @@ skip_on_cran() params <- list(run_tests = FALSE) -## ---- code=readLines("children/knitr_setup.R"), include=FALSE----------------- +## ----code=readLines("children/knitr_setup.R"), include=FALSE-------------------------------------- -## ---- include=FALSE----------------------------------------------------------- +## ----include=FALSE-------------------------------------------------------------------------------- set.seed(2684319) -## ---- eval = FALSE------------------------------------------------------------ +## ----eval = FALSE--------------------------------------------------------------------------------- ## library(multinma) ## options(mc.cores = parallel::detectCores()) -## ----setup, echo = FALSE------------------------------------------------------ +## ----setup, echo = FALSE-------------------------------------------------------------------------- library(multinma) nc <- switch(tolower(Sys.getenv("_R_CHECK_LIMIT_CORES_")), "true" =, "warn" = 2, @@ -26,11 +26,11 @@ nc <- switch(tolower(Sys.getenv("_R_CHECK_LIMIT_CORES_")), options(mc.cores = nc) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- head(transfusion) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- tr_net <- set_agd_arm(transfusion, study = studyc, trt = trtc, @@ -40,19 +40,19 @@ tr_net <- set_agd_arm(transfusion, tr_net -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- summary(normal(scale = 100)) summary(half_normal(scale = 5)) -## ---- eval=FALSE, echo=TRUE--------------------------------------------------- +## ----eval=FALSE, echo=TRUE------------------------------------------------------------------------ ## tr_fit_RE_noninf <- nma(tr_net, ## trt_effects = "random", ## prior_intercept = normal(scale = 100), ## prior_trt = normal(scale = 100), ## prior_het = half_normal(scale = 5)) -## ---- echo=FALSE, eval=!params$run_tests-------------------------------------- +## ----echo=FALSE, eval=!params$run_tests----------------------------------------------------------- ## tr_fit_RE_noninf <- nma(tr_net, ## seed = 857369814, ## trt_effects = "random", @@ -60,7 +60,7 @@ summary(half_normal(scale = 5)) ## prior_trt = normal(scale = 100), ## prior_het = half_normal(scale = 5)) -## ---- echo=FALSE, eval=params$run_tests--------------------------------------- +## ----echo=FALSE, eval=params$run_tests------------------------------------------------------------ tr_fit_RE_noninf <- suppressWarnings(nma(tr_net, seed = 857369814, trt_effects = "random", @@ -71,31 +71,31 @@ tr_fit_RE_noninf <- suppressWarnings(nma(tr_net, save_warmup = FALSE)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- tr_fit_RE_noninf -## ---- eval=FALSE-------------------------------------------------------------- +## ----eval=FALSE----------------------------------------------------------------------------------- ## # Not run ## print(tr_fit_RE_noninf, pars = c("d", "mu", "delta")) -## ----tr_RE_noninf_pp_plot----------------------------------------------------- +## ----tr_RE_noninf_pp_plot------------------------------------------------------------------------- plot_prior_posterior(tr_fit_RE_noninf, prior = "het") -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- noninf_tau <- as.array(tr_fit_RE_noninf, pars = "tau") noninf_tausq <- noninf_tau^2 names(noninf_tausq) <- "tausq" summary(noninf_tausq) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- summary(log_normal(-3.93, 1.51)) -## ---- echo=TRUE, eval=FALSE--------------------------------------------------- +## ----echo=TRUE, eval=FALSE------------------------------------------------------------------------ ## tr_fit_RE_inf <- nma(tr_net, ## trt_effects = "random", ## prior_intercept = normal(scale = 100), @@ -103,7 +103,7 @@ summary(log_normal(-3.93, 1.51)) ## prior_het = log_normal(-3.93, 1.51), ## prior_het_type = "var") -## ---- echo=FALSE, eval=!params$run_tests-------------------------------------- +## ----echo=FALSE, eval=!params$run_tests----------------------------------------------------------- ## tr_fit_RE_inf <- nma(tr_net, ## seed = 1803772660, ## trt_effects = "random", @@ -112,7 +112,7 @@ summary(log_normal(-3.93, 1.51)) ## prior_het = log_normal(-3.93, 1.51), ## prior_het_type = "var") -## ---- echo=FALSE, eval=params$run_tests--------------------------------------- +## ----echo=FALSE, eval=params$run_tests------------------------------------------------------------ tr_fit_RE_inf <- suppressWarnings(nma(tr_net, seed = 1803772660, trt_effects = "random", @@ -123,27 +123,27 @@ tr_fit_RE_inf <- suppressWarnings(nma(tr_net, iter = 10000, save_warmup = FALSE)) -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- tr_fit_RE_inf -## ---- eval=FALSE-------------------------------------------------------------- +## ----eval=FALSE----------------------------------------------------------------------------------- ## # Not run ## print(tr_fit_RE_inf, pars = c("d", "mu", "delta")) -## ----tr_RE_inf_pp_plot-------------------------------------------------------- +## ----tr_RE_inf_pp_plot---------------------------------------------------------------------------- plot_prior_posterior(tr_fit_RE_inf, prior = "het") -## ----------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- inf_tau <- as.array(tr_fit_RE_inf, pars = "tau") inf_tausq <- inf_tau^2 names(inf_tausq) <- "tausq" summary(inf_tausq) -## ----transfusion_tests, include=FALSE, eval=params$run_tests------------------ +## ----transfusion_tests, include=FALSE, eval=params$run_tests-------------------------------------- #--- Test against TSD 2 results --- library(testthat) diff --git a/vignettes/example_atrial_fibrillation.html b/vignettes/example_atrial_fibrillation.html index ae5654c21..4f5fbb0ce 100644 --- a/vignettes/example_atrial_fibrillation.html +++ b/vignettes/example_atrial_fibrillation.html @@ -479,45 +479,45 @@

NMA with no covariates

#> post-warmup draws per chain=1000, total post-warmup draws=4000. #> #> mean se_mean sd 2.5% 25% 50% -#> d[Acenocoumarol] -0.81 0.01 0.82 -2.56 -1.32 -0.76 -#> d[Alternate day aspirin] -1.02 0.02 1.37 -4.20 -1.78 -0.86 -#> d[Dipyridamole] 0.58 0.01 0.47 -0.35 0.28 0.58 -#> d[Fixed dose warfarin] 0.94 0.01 0.41 0.12 0.68 0.93 -#> d[Fixed dose warfarin + low dose aspirin] 0.47 0.01 0.47 -0.51 0.18 0.48 -#> d[Fixed dose warfarin + medium dose aspirin] 0.88 0.01 0.33 0.20 0.68 0.89 -#> d[High dose aspirin] 0.52 0.01 0.76 -1.05 0.03 0.53 +#> 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.39 -1.04 -0.55 -0.29 -#> d[Low dose aspirin] 0.61 0.00 0.22 0.17 0.47 0.62 -#> d[Low dose aspirin + copidogrel] 0.51 0.01 0.35 -0.22 0.31 0.51 -#> d[Low dose aspirin + dipyridamole] 0.27 0.01 0.48 -0.68 -0.04 0.26 -#> d[Medium dose aspirin] 0.38 0.00 0.20 -0.02 0.25 0.39 -#> d[Placebo/Standard care] 0.75 0.00 0.21 0.33 0.62 0.76 -#> d[Triflusal] 0.63 0.01 0.63 -0.55 0.22 0.62 -#> d[Ximelagatran] -0.08 0.01 0.27 -0.61 -0.25 -0.08 -#> lp__ -4771.09 0.20 6.96 -4786.15 -4775.35 -4770.77 -#> tau 0.29 0.01 0.14 0.04 0.20 0.28 +#> 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.74 3363 1.00 -#> d[Alternate day aspirin] -0.07 1.22 3134 1.00 -#> d[Dipyridamole] 0.89 1.49 2738 1.00 -#> d[Fixed dose warfarin] 1.20 1.73 3193 1.00 -#> d[Fixed dose warfarin + low dose aspirin] 0.78 1.40 2318 1.00 -#> d[Fixed dose warfarin + medium dose aspirin] 1.10 1.54 2980 1.00 -#> d[High dose aspirin] 1.03 1.98 3793 1.00 -#> d[Indobufen] 0.55 1.16 3427 1.00 -#> d[Low adjusted dose anti-coagulant] -0.03 0.47 3012 1.00 -#> d[Low dose aspirin] 0.76 1.03 1986 1.00 -#> d[Low dose aspirin + copidogrel] 0.73 1.20 2913 1.00 -#> d[Low dose aspirin + dipyridamole] 0.57 1.21 2490 1.00 -#> d[Medium dose aspirin] 0.51 0.77 2157 1.00 -#> d[Placebo/Standard care] 0.89 1.15 1722 1.00 -#> d[Triflusal] 1.04 1.89 3028 1.00 -#> d[Ximelagatran] 0.09 0.47 2873 1.00 -#> lp__ -4766.46 -4758.00 1198 1.00 -#> tau 0.37 0.59 680 1.01 +#> 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 Fri Jun 16 15:55:15 2023. +#> 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). @@ -529,70 +529,70 @@

NMA with no covariates

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.75 0.21 -1.15 -0.89 -0.76 -0.62 -0.33     1733
-#> d[Acenocoumarol]                             -1.56 0.83 -3.30 -2.08 -1.52 -1.01  0.02     3092
-#> d[Alternate day aspirin]                     -1.78 1.37 -4.92 -2.52 -1.61 -0.84  0.49     3902
-#> d[Dipyridamole]                              -0.17 0.43 -1.02 -0.46 -0.17  0.10  0.66     4138
-#> d[Fixed dose warfarin]                        0.18 0.45 -0.72 -0.10  0.18  0.48  1.05     2955
-#> d[Fixed dose warfarin + low dose aspirin]    -0.28 0.42 -1.17 -0.54 -0.27 -0.01  0.53     3448
-#> d[Fixed dose warfarin + medium dose aspirin]  0.13 0.37 -0.63 -0.10  0.14  0.37  0.87     2823
-#> d[High dose aspirin]                         -0.23 0.75 -1.74 -0.71 -0.22  0.25  1.22     4264
-#> d[Indobufen]                                 -0.51 0.51 -1.47 -0.84 -0.52 -0.19  0.50     2851
-#> d[Low adjusted dose anti-coagulant]          -1.04 0.36 -1.76 -1.29 -1.04 -0.81 -0.33     4947
-#> d[Low dose aspirin]                          -0.14 0.21 -0.55 -0.28 -0.14  0.00  0.29     3725
-#> d[Low dose aspirin + copidogrel]             -0.24 0.41 -1.06 -0.48 -0.25  0.01  0.58     2316
-#> d[Low dose aspirin + dipyridamole]           -0.49 0.45 -1.39 -0.77 -0.49 -0.20  0.42     3516
-#> d[Medium dose aspirin]                       -0.37 0.22 -0.83 -0.52 -0.36 -0.22  0.06     2838
-#> d[Triflusal]                                 -0.12 0.66 -1.38 -0.56 -0.15  0.31  1.21     2868
-#> d[Ximelagatran]                              -0.83 0.34 -1.51 -1.04 -0.83 -0.62 -0.14     2410
+#> 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]         2105    1
-#> d[Acenocoumarol]                                 3144    1
-#> d[Alternate day aspirin]                         2419    1
-#> d[Dipyridamole]                                  3142    1
-#> d[Fixed dose warfarin]                           2981    1
-#> d[Fixed dose warfarin + low dose aspirin]        2625    1
-#> d[Fixed dose warfarin + medium dose aspirin]     2764    1
-#> d[High dose aspirin]                             3251    1
-#> d[Indobufen]                                     2807    1
-#> d[Low adjusted dose anti-coagulant]              3374    1
-#> d[Low dose aspirin]                              2734    1
-#> d[Low dose aspirin + copidogrel]                 2481    1
-#> d[Low dose aspirin + dipyridamole]               2921    1
-#> d[Medium dose aspirin]                           2916    1
-#> d[Triflusal]                                     3055    1
-#> d[Ximelagatran]                                  2730    1
+#> 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.35 1.47    3   4   5   6  8.00     2492     3186
-#> rank[Acenocoumarol]                              2.93 2.94    1   1   2   3 13.00     3404     3420
-#> rank[Alternate day aspirin]                      3.67 4.21    1   1   2   4 16.03     4766     3862
-#> rank[Dipyridamole]                              11.17 3.87    3   8  11  14 17.00     3444       NA
-#> rank[Fixed dose warfarin]                       14.14 3.02    7  13  15  17 17.00     3274       NA
-#> rank[Fixed dose warfarin + low dose aspirin]    10.14 3.95    3   7  10  13 17.00     2836       NA
-#> rank[Fixed dose warfarin + medium dose aspirin] 14.04 2.72    7  13  15  16 17.00     2424       NA
-#> rank[High dose aspirin]                         10.41 5.19    2   6  11  16 17.00     4126       NA
-#> rank[Indobufen]                                  8.12 4.09    2   5   8  11 16.00     3181     3133
-#> rank[Low adjusted dose anti-coagulant]           3.80 2.21    1   2   3   5  9.00     3501     3417
-#> rank[Low dose aspirin]                          11.71 2.21    7  10  12  13 16.00     3286     3188
-#> rank[Low dose aspirin + copidogrel]             10.58 3.42    4   8  11  13 17.00     2560     2685
-#> rank[Low dose aspirin + dipyridamole]            8.19 3.88    2   5   8  11 16.00     3202     2995
-#> rank[Medium dose aspirin]                        9.13 2.11    5   8   9  11 13.00     3678     3654
-#> rank[Placebo/Standard care]                     13.35 1.88    9  12  13  15 17.00     2723     3297
-#> rank[Triflusal]                                 11.28 4.64    3   7  12  16 17.00     2735       NA
-#> rank[Ximelagatran]                               4.97 2.40    2   3   5   6 11.00     2707     2346
+#> 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
@@ -612,157 +612,157 @@ 

NMA with no covariates

#> 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.02      0.07      0.19      0.28
-#> d[Acenocoumarol]                                  0.37      0.30      0.10      0.05      0.03
-#> d[Alternate day aspirin]                          0.47      0.17      0.07      0.04      0.03
-#> d[Dipyridamole]                                   0.00      0.01      0.02      0.03      0.03
-#> d[Fixed dose warfarin]                            0.00      0.00      0.00      0.00      0.00
-#> d[Fixed dose warfarin + low dose aspirin]         0.00      0.01      0.03      0.04      0.05
+#> 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.05      0.06      0.05      0.05
-#> d[Indobufen]                                      0.01      0.05      0.09      0.08      0.08
-#> d[Low adjusted dose anti-coagulant]               0.08      0.23      0.25      0.16      0.09
+#> 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.06      0.08      0.09
+#> 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.17      0.21      0.17
+#> 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.02
-#> d[Dipyridamole]                                   0.04      0.05      0.08      0.08       0.08
-#> d[Fixed dose warfarin]                            0.01      0.02      0.03      0.03       0.04
-#> d[Fixed dose warfarin + low dose aspirin]         0.06      0.09      0.09      0.08       0.09
-#> d[Fixed dose warfarin + medium dose aspirin]      0.01      0.01      0.02      0.04       0.04
+#> 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.10      0.09      0.09      0.08       0.06
+#> 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.04      0.09       0.12
-#> d[Low dose aspirin + copidogrel]                  0.05      0.06      0.09      0.10       0.11
-#> d[Low dose aspirin + dipyridamole]                0.09      0.10      0.10      0.08       0.08
-#> d[Medium dose aspirin]                            0.05      0.13      0.17      0.19       0.16
+#> 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.05
-#> d[Ximelagatran]                                   0.11      0.08      0.06      0.03       0.02
+#> 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.00       0.00
-#> d[Alternate day aspirin]                           0.02       0.01       0.01       0.01       0.01
-#> d[Dipyridamole]                                    0.08       0.08       0.08       0.08       0.09
-#> d[Fixed dose warfarin]                             0.06       0.05       0.07       0.10       0.14
-#> d[Fixed dose warfarin + low dose aspirin]          0.09       0.08       0.07       0.07       0.06
-#> d[Fixed dose warfarin + medium dose aspirin]       0.05       0.07       0.08       0.12       0.18
-#> d[High dose aspirin]                               0.04       0.05       0.05       0.06       0.06
-#> d[Indobufen]                                       0.05       0.05       0.05       0.04       0.04
+#> 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.17       0.17       0.17       0.11       0.06
-#> d[Low dose aspirin + copidogrel]                   0.10       0.10       0.09       0.07       0.07
-#> d[Low dose aspirin + dipyridamole]                 0.06       0.05       0.04       0.04       0.04
-#> d[Medium dose aspirin]                             0.12       0.07       0.04       0.01       0.00
-#> d[Placebo/Standard care]                           0.09       0.15       0.20       0.21       0.17
-#> d[Triflusal]                                       0.06       0.05       0.06       0.06       0.07
+#> 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.01       0.00
-#> d[Alternate day aspirin]                           0.01       0.03
-#> d[Dipyridamole]                                    0.09       0.07
-#> d[Fixed dose warfarin]                             0.19       0.25
+#> 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.16
-#> d[High dose aspirin]                               0.08       0.17
+#> 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.03
+#> 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.02      0.09      0.28      0.56
-#> d[Acenocoumarol]                                  0.37      0.67      0.78      0.83      0.86
-#> d[Alternate day aspirin]                          0.47      0.64      0.71      0.75      0.78
-#> d[Dipyridamole]                                   0.00      0.01      0.03      0.06      0.09
+#> 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.05      0.09      0.13
+#> 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.07      0.13      0.19      0.23
-#> d[Indobufen]                                      0.01      0.06      0.14      0.22      0.30
-#> d[Low adjusted dose anti-coagulant]               0.08      0.31      0.56      0.72      0.82
+#> 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.05      0.07
-#> d[Low dose aspirin + dipyridamole]                0.01      0.05      0.11      0.19      0.28
+#> 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.29      0.50      0.66
+#> 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      0.99       1.00
-#> d[Acenocoumarol]                                  0.89      0.92      0.93      0.95       0.96
-#> d[Alternate day aspirin]                          0.82      0.84      0.86      0.89       0.90
-#> d[Dipyridamole]                                   0.13      0.18      0.26      0.34       0.43
+#> 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.28      0.36      0.44       0.53
-#> d[Fixed dose warfarin + medium dose aspirin]      0.02      0.03      0.05      0.08       0.12
-#> d[High dose aspirin]                              0.28      0.34      0.39      0.44       0.49
-#> d[Indobufen]                                      0.40      0.49      0.58      0.66       0.72
-#> d[Low adjusted dose anti-coagulant]               0.88      0.93      0.96      0.98       0.99
-#> d[Low dose aspirin]                               0.01      0.04      0.07      0.16       0.29
-#> d[Low dose aspirin + copidogrel]                  0.13      0.19      0.28      0.38       0.49
-#> d[Low dose aspirin + dipyridamole]                0.37      0.47      0.57      0.65       0.73
-#> d[Medium dose aspirin]                            0.09      0.22      0.39      0.58       0.75
-#> d[Placebo/Standard care]                          0.00      0.00      0.01      0.03       0.07
-#> d[Triflusal]                                      0.19      0.25      0.32      0.37       0.43
-#> d[Ximelagatran]                                   0.78      0.86      0.92      0.95       0.97
+#> 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.92       0.93       0.94       0.95       0.96
-#> d[Dipyridamole]                                    0.51       0.59       0.67       0.75       0.84
-#> d[Fixed dose warfarin]                             0.20       0.25       0.31       0.41       0.56
-#> d[Fixed dose warfarin + low dose aspirin]          0.62       0.70       0.76       0.83       0.90
-#> d[Fixed dose warfarin + medium dose aspirin]       0.17       0.24       0.32       0.44       0.62
-#> d[High dose aspirin]                               0.53       0.58       0.63       0.69       0.75
-#> d[Indobufen]                                       0.77       0.82       0.87       0.91       0.94
-#> d[Low adjusted dose anti-coagulant]                0.99       1.00       1.00       1.00       1.00
-#> d[Low dose aspirin]                                0.45       0.62       0.79       0.90       0.96
-#> d[Low dose aspirin + copidogrel]                   0.59       0.69       0.78       0.85       0.92
-#> d[Low dose aspirin + dipyridamole]                 0.79       0.84       0.88       0.92       0.95
-#> d[Medium dose aspirin]                             0.87       0.94       0.98       0.99       1.00
-#> d[Placebo/Standard care]                           0.16       0.31       0.50       0.71       0.88
-#> d[Triflusal]                                       0.48       0.53       0.59       0.65       0.73
-#> d[Ximelagatran]                                    0.98       0.99       0.99       1.00       1.00
+#> 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.75          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.84          1
-#> d[High dose aspirin]                               0.83          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.97          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.97          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 @@ -800,9 +800,10 @@

Network meta-regression adjusting for proportion of prior prior_het = half_normal(scale = 5), adapt_delta = 0.99)

#> Note: Setting "Standard adjusted dose anti-coagulant" as the network reference treatment.
-#> Warning: Bulk Effective Samples Size (ESS) is too low, indicating posterior means and medians may be unreliable.
-#> Running the chains for more iterations may help. See
-#> https://mc-stan.org/misc/warnings.html#bulk-ess
+#> 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
@@ -816,51 +817,51 @@ 

Network meta-regression adjusting for proportion of prior #> post-warmup draws per chain=1000, total post-warmup draws=4000. #> #> mean se_mean sd 2.5% 25% 50% -#> beta[.trtclassControl:stroke] 0.71 0.01 0.43 -0.12 0.42 0.71 -#> beta[.trtclassAnti-platelet:stroke] 0.94 0.01 0.42 0.09 0.68 0.94 -#> beta[.trtclassMixed:stroke] 3.90 0.03 2.14 -0.29 2.50 3.96 -#> d[Acenocoumarol] 0.36 0.01 1.02 -1.70 -0.30 0.39 -#> d[Alternate day aspirin] -0.89 0.02 1.34 -3.98 -1.64 -0.73 -#> d[Dipyridamole] 0.58 0.01 0.43 -0.29 0.31 0.58 -#> d[Fixed dose warfarin] 0.63 0.01 0.38 -0.12 0.37 0.64 -#> d[Fixed dose warfarin + low dose aspirin] 1.46 0.01 0.74 0.01 0.98 1.47 -#> d[Fixed dose warfarin + medium dose aspirin] 1.00 0.00 0.30 0.42 0.79 0.99 -#> d[High dose aspirin] 0.43 0.01 0.75 -1.10 -0.07 0.44 -#> d[Indobufen] -0.42 0.01 0.48 -1.39 -0.73 -0.41 -#> d[Low adjusted dose anti-coagulant] -0.42 0.01 0.38 -1.18 -0.67 -0.41 -#> d[Low dose aspirin] 0.71 0.00 0.20 0.31 0.58 0.72 -#> d[Low dose aspirin + copidogrel] 0.65 0.01 0.30 0.00 0.48 0.64 -#> d[Low dose aspirin + dipyridamole] 0.25 0.01 0.43 -0.66 -0.03 0.25 -#> d[Medium dose aspirin] 0.35 0.00 0.18 -0.02 0.23 0.35 +#> 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.91 0.01 0.60 -0.24 0.50 0.90 -#> d[Ximelagatran] -0.08 0.00 0.22 -0.51 -0.21 -0.08 -#> lp__ -4771.15 0.25 7.28 -4786.07 -4775.87 -4770.84 -#> tau 0.19 0.01 0.14 0.01 0.08 0.17 +#> 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.99 1.59 4721 1 -#> beta[.trtclassAnti-platelet:stroke] 1.21 1.76 4919 1 -#> beta[.trtclassMixed:stroke] 5.23 8.16 4863 1 -#> d[Acenocoumarol] 1.05 2.29 5070 1 -#> d[Alternate day aspirin] 0.05 1.28 3150 1 -#> d[Dipyridamole] 0.85 1.43 5351 1 -#> d[Fixed dose warfarin] 0.89 1.38 5449 1 -#> d[Fixed dose warfarin + low dose aspirin] 1.94 2.89 4650 1 -#> d[Fixed dose warfarin + medium dose aspirin] 1.19 1.61 5126 1 -#> d[High dose aspirin] 0.94 1.91 5914 1 -#> d[Indobufen] -0.11 0.50 5038 1 -#> d[Low adjusted dose anti-coagulant] -0.17 0.29 5108 1 -#> d[Low dose aspirin] 0.85 1.10 4553 1 -#> d[Low dose aspirin + copidogrel] 0.82 1.25 2518 1 -#> d[Low dose aspirin + dipyridamole] 0.54 1.07 5431 1 -#> d[Medium dose aspirin] 0.46 0.68 4532 1 -#> d[Placebo/Standard care] 0.92 1.17 4705 1 -#> d[Triflusal] 1.31 2.12 5863 1 -#> d[Ximelagatran] 0.05 0.37 2871 1 -#> lp__ -4766.14 -4757.74 879 1 -#> tau 0.27 0.52 265 1 +#> 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 Fri Jun 16 15:56:08 2023. +#> 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).

@@ -876,7 +877,7 @@

Network meta-regression adjusting for proportion of prior

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 @@ -900,39 +901,39 @@

Network meta-regression adjusting for proportion of prior #> 0 #> #> mean sd 2.5% 25% 50% 75% 97.5% -#> d[stroke = 0: Standard adjusted dose anti-coagulant] -0.58 0.23 -1.04 -0.74 -0.58 -0.43 -0.12 -#> d[stroke = 0: Acenocoumarol] -1.37 0.83 -3.11 -1.89 -1.33 -0.81 0.17 -#> d[stroke = 0: Alternate day aspirin] -1.75 1.32 -4.79 -2.49 -1.61 -0.81 0.42 -#> d[stroke = 0: Dipyridamole] -0.29 0.46 -1.20 -0.58 -0.29 0.02 0.63 -#> d[stroke = 0: Fixed dose warfarin] 0.05 0.44 -0.82 -0.24 0.06 0.33 0.92 -#> d[stroke = 0: Fixed dose warfarin + low dose aspirin] -0.27 0.34 -0.96 -0.49 -0.27 -0.05 0.41 -#> d[stroke = 0: Fixed dose warfarin + medium dose aspirin] -0.74 0.66 -2.04 -1.16 -0.74 -0.30 0.55 -#> d[stroke = 0: High dose aspirin] -0.43 0.79 -2.02 -0.96 -0.42 0.10 1.11 -#> d[stroke = 0: Indobufen] -1.28 0.57 -2.43 -1.65 -1.29 -0.92 -0.16 -#> d[stroke = 0: Low adjusted dose anti-coagulant] -1.00 0.34 -1.66 -1.23 -1.00 -0.77 -0.35 -#> d[stroke = 0: Low dose aspirin] -0.15 0.23 -0.59 -0.29 -0.15 0.00 0.30 -#> d[stroke = 0: Low dose aspirin + copidogrel] -0.21 0.38 -0.97 -0.44 -0.22 0.01 0.56 -#> d[stroke = 0: Low dose aspirin + dipyridamole] -0.61 0.46 -1.56 -0.90 -0.60 -0.31 0.28 -#> d[stroke = 0: Medium dose aspirin] -0.52 0.27 -1.03 -0.70 -0.51 -0.34 -0.01 -#> d[stroke = 0: Triflusal] 0.05 0.63 -1.18 -0.37 0.05 0.46 1.34 -#> d[stroke = 0: Ximelagatran] -0.66 0.32 -1.29 -0.87 -0.67 -0.46 -0.02 +#> 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] 4664 3286 1 -#> d[stroke = 0: Acenocoumarol] 5057 2989 1 -#> d[stroke = 0: Alternate day aspirin] 3681 2154 1 -#> d[stroke = 0: Dipyridamole] 5600 2656 1 -#> d[stroke = 0: Fixed dose warfarin] 5151 3084 1 -#> d[stroke = 0: Fixed dose warfarin + low dose aspirin] 4269 2686 1 -#> d[stroke = 0: Fixed dose warfarin + medium dose aspirin] 4598 2779 1 -#> d[stroke = 0: High dose aspirin] 5825 3157 1 -#> d[stroke = 0: Indobufen] 5023 2717 1 -#> d[stroke = 0: Low adjusted dose anti-coagulant] 5407 3009 1 -#> d[stroke = 0: Low dose aspirin] 5162 2912 1 -#> d[stroke = 0: Low dose aspirin + copidogrel] 3098 2302 1 -#> d[stroke = 0: Low dose aspirin + dipyridamole] 5168 2560 1 -#> d[stroke = 0: Medium dose aspirin] 5065 3036 1 -#> d[stroke = 0: Triflusal] 5910 2923 1 -#> d[stroke = 0: Ximelagatran] 3646 2600 1 +#> 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 ---- #> @@ -941,45 +942,45 @@

Network meta-regression adjusting for proportion of prior #> 1 #> #> mean sd 2.5% 25% 50% 75% 97.5% -#> d[stroke = 1: Standard adjusted dose anti-coagulant] -1.30 0.34 -2.00 -1.52 -1.30 -1.08 -0.62 -#> d[stroke = 1: Acenocoumarol] 1.81 2.30 -2.81 0.30 1.84 3.26 6.36 -#> d[stroke = 1: Alternate day aspirin] -1.53 1.35 -4.56 -2.29 -1.37 -0.59 0.71 -#> d[stroke = 1: Dipyridamole] -0.06 0.42 -0.92 -0.33 -0.06 0.21 0.75 -#> d[stroke = 1: Fixed dose warfarin] -0.66 0.51 -1.65 -1.01 -0.66 -0.33 0.33 -#> d[stroke = 1: Fixed dose warfarin + low dose aspirin] 2.91 2.18 -1.41 1.50 2.94 4.29 7.20 -#> d[stroke = 1: Fixed dose warfarin + medium dose aspirin] 2.44 1.64 -0.83 1.42 2.49 3.48 5.67 -#> d[stroke = 1: High dose aspirin] -0.21 0.73 -1.66 -0.71 -0.20 0.29 1.21 -#> d[stroke = 1: Indobufen] -1.06 0.52 -2.12 -1.39 -1.05 -0.72 -0.04 -#> d[stroke = 1: Low adjusted dose anti-coagulant] -1.72 0.50 -2.76 -2.03 -1.71 -1.40 -0.74 -#> d[stroke = 1: Low dose aspirin] 0.08 0.29 -0.53 -0.11 0.08 0.27 0.62 -#> d[stroke = 1: Low dose aspirin + copidogrel] 0.01 0.40 -0.81 -0.22 0.02 0.25 0.76 -#> d[stroke = 1: Low dose aspirin + dipyridamole] -0.39 0.42 -1.25 -0.65 -0.38 -0.12 0.41 -#> d[stroke = 1: Medium dose aspirin] -0.29 0.25 -0.82 -0.44 -0.28 -0.13 0.18 -#> d[stroke = 1: Triflusal] 0.28 0.66 -0.97 -0.18 0.28 0.71 1.59 -#> d[stroke = 1: Ximelagatran] -1.38 0.40 -2.19 -1.63 -1.38 -1.12 -0.58 +#> 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] 4691 2965 1 -#> d[stroke = 1: Acenocoumarol] 5022 3039 1 -#> d[stroke = 1: Alternate day aspirin] 3751 2228 1 -#> d[stroke = 1: Dipyridamole] 6141 2423 1 -#> d[stroke = 1: Fixed dose warfarin] 4991 2914 1 -#> d[stroke = 1: Fixed dose warfarin + low dose aspirin] 4878 2907 1 -#> d[stroke = 1: Fixed dose warfarin + medium dose aspirin] 5010 3056 1 -#> d[stroke = 1: High dose aspirin] 6233 2945 1 -#> d[stroke = 1: Indobufen] 4837 2852 1 -#> d[stroke = 1: Low adjusted dose anti-coagulant] 4951 3083 1 -#> d[stroke = 1: Low dose aspirin] 5210 2582 1 -#> d[stroke = 1: Low dose aspirin + copidogrel] 3302 2077 1 -#> d[stroke = 1: Low dose aspirin + dipyridamole] 5832 2182 1 -#> d[stroke = 1: Medium dose aspirin] 4291 2122 1 -#> d[stroke = 1: Triflusal] 5573 3258 1 -#> d[stroke = 1: Ximelagatran] 4301 2444 1 +#> 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:

@@ -996,15 +997,15 @@

Network meta-regression adjusting for proportion of prior # Summarise summary(af_4b_beta) #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS -#> beta[.trtclassAnti-coagulant:stroke] -0.71 0.43 -1.59 -0.99 -0.71 -0.42 0.12 4797 3187 -#> beta[.trtclassAnti-platelet:stroke] 0.22 0.34 -0.46 0.01 0.23 0.44 0.86 4967 2630 -#> beta[.trtclassMixed:stroke] 3.18 2.16 -1.02 1.77 3.24 4.56 7.49 4916 2932 +#> 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 @@ -1030,41 +1031,41 @@

Network meta-regression adjusting for proportion of prior #> 0 #> #> mean sd 2.5% 25% 50% 75% 97.5% -#> rank[stroke = 0: Standard adjusted dose anti-coagulant] 7.75 1.86 4 6 8 9 11.03 -#> rank[stroke = 0: Acenocoumarol] 3.97 3.64 1 1 3 5 15.00 -#> rank[stroke = 0: Alternate day aspirin] 4.01 4.45 1 1 2 5 16.00 -#> rank[stroke = 0: Dipyridamole] 11.11 3.80 4 8 11 14 17.00 -#> rank[stroke = 0: Fixed dose warfarin] 14.06 2.93 7 12 15 16 17.00 -#> rank[stroke = 0: Fixed dose warfarin + low dose aspirin] 11.15 3.65 4 9 11 14 17.00 -#> rank[stroke = 0: Fixed dose warfarin + medium dose aspirin] 7.25 4.59 1 3 6 11 16.00 -#> rank[stroke = 0: High dose aspirin] 9.64 5.35 1 5 10 15 17.00 -#> rank[stroke = 0: Indobufen] 3.56 2.68 1 2 3 4 11.00 -#> rank[stroke = 0: Low adjusted dose anti-coagulant] 4.63 2.51 1 3 4 6 11.00 -#> rank[stroke = 0: Low dose aspirin] 12.82 2.00 9 12 13 14 16.00 -#> rank[stroke = 0: Low dose aspirin + copidogrel] 11.98 3.03 5 10 12 14 17.00 -#> rank[stroke = 0: Low dose aspirin + dipyridamole] 7.85 3.63 2 5 7 10 16.00 -#> rank[stroke = 0: Medium dose aspirin] 8.62 2.22 4 7 9 10 13.00 -#> rank[stroke = 0: Placebo/Standard care] 14.26 1.86 10 13 15 16 17.00 -#> rank[stroke = 0: Triflusal] 13.33 4.05 4 11 15 17 17.00 -#> rank[stroke = 0: Ximelagatran] 7.00 2.62 3 5 7 9 13.00 +#> 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] 4102 3958 1 -#> rank[stroke = 0: Acenocoumarol] 4980 3358 1 -#> rank[stroke = 0: Alternate day aspirin] 4613 3602 1 -#> rank[stroke = 0: Dipyridamole] 5586 NA 1 -#> rank[stroke = 0: Fixed dose warfarin] 4891 NA 1 -#> rank[stroke = 0: Fixed dose warfarin + low dose aspirin] 4527 NA 1 -#> rank[stroke = 0: Fixed dose warfarin + medium dose aspirin] 4049 3024 1 -#> rank[stroke = 0: High dose aspirin] 5683 NA 1 -#> rank[stroke = 0: Indobufen] 4456 2970 1 -#> rank[stroke = 0: Low adjusted dose anti-coagulant] 4540 2999 1 -#> rank[stroke = 0: Low dose aspirin] 3529 2878 1 -#> rank[stroke = 0: Low dose aspirin + copidogrel] 3018 2124 1 -#> rank[stroke = 0: Low dose aspirin + dipyridamole] 5728 3205 1 -#> rank[stroke = 0: Medium dose aspirin] 4255 3256 1 -#> rank[stroke = 0: Placebo/Standard care] 2901 NA 1 -#> rank[stroke = 0: Triflusal] 5518 NA 1 -#> rank[stroke = 0: Ximelagatran] 2928 2437 1 +#> 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 ---- #> @@ -1072,44 +1073,44 @@

Network meta-regression adjusting for proportion of prior #> stroke #> 1 #> -#> mean sd 2.5% 25% 50% 75% 97.5% -#> rank[stroke = 1: Standard adjusted dose anti-coagulant] 3.67 1.16 2 3 4 4 6 -#> rank[stroke = 1: Acenocoumarol] 13.18 4.44 1 14 15 16 17 -#> rank[stroke = 1: Alternate day aspirin] 4.51 4.00 1 1 3 7 14 -#> rank[stroke = 1: Dipyridamole] 10.58 2.75 5 9 11 13 16 -#> rank[stroke = 1: Fixed dose warfarin] 7.05 2.74 3 5 6 8 14 -#> rank[stroke = 1: Fixed dose warfarin + low dose aspirin] 15.76 3.00 5 16 17 17 17 -#> rank[stroke = 1: Fixed dose warfarin + medium dose aspirin] 15.36 2.13 8 15 16 16 17 -#> rank[stroke = 1: High dose aspirin] 9.51 4.02 2 6 9 13 17 -#> rank[stroke = 1: Indobufen] 4.93 2.14 1 4 5 6 10 -#> rank[stroke = 1: Low adjusted dose anti-coagulant] 2.05 1.34 1 1 2 2 6 -#> rank[stroke = 1: Low dose aspirin] 11.84 1.85 8 11 12 13 15 -#> rank[stroke = 1: Low dose aspirin + copidogrel] 11.13 2.44 6 9 11 13 15 -#> rank[stroke = 1: Low dose aspirin + dipyridamole] 8.23 2.62 3 7 8 10 14 -#> rank[stroke = 1: Medium dose aspirin] 8.67 1.72 6 8 8 10 12 -#> rank[stroke = 1: Placebo/Standard care] 11.23 1.91 8 10 11 13 15 -#> rank[stroke = 1: Triflusal] 12.09 3.10 5 10 13 14 17 -#> rank[stroke = 1: Ximelagatran] 3.20 1.51 1 2 3 4 7 +#> 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] 3244 3408 1 -#> rank[stroke = 1: Acenocoumarol] 4513 NA 1 -#> rank[stroke = 1: Alternate day aspirin] 4310 3449 1 -#> rank[stroke = 1: Dipyridamole] 4998 2978 1 -#> rank[stroke = 1: Fixed dose warfarin] 4273 3021 1 -#> rank[stroke = 1: Fixed dose warfarin + low dose aspirin] 3177 NA 1 -#> rank[stroke = 1: Fixed dose warfarin + medium dose aspirin] 3111 NA 1 -#> rank[stroke = 1: High dose aspirin] 5044 2910 1 -#> rank[stroke = 1: Indobufen] 4228 1900 1 -#> rank[stroke = 1: Low adjusted dose anti-coagulant] 2886 2961 1 -#> rank[stroke = 1: Low dose aspirin] 4084 3159 1 -#> rank[stroke = 1: Low dose aspirin + copidogrel] 3307 2576 1 -#> rank[stroke = 1: Low dose aspirin + dipyridamole] 5377 2837 1 -#> rank[stroke = 1: Medium dose aspirin] 3981 3223 1 -#> rank[stroke = 1: Placebo/Standard care] 4159 2961 1 -#> rank[stroke = 1: Triflusal] 4616 NA 1 -#> rank[stroke = 1: Ximelagatran] 3098 2950 1 +#> 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")), 
@@ -1121,94 +1122,94 @@ 

Network meta-regression adjusting for proportion of prior #> 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.24 0.14 0.09 -#> d[stroke = 0: Alternate day aspirin] 0.44 0.14 0.09 0.06 -#> d[stroke = 0: Dipyridamole] 0.00 0.01 0.02 0.03 +#> 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.05 0.09 0.12 0.11 -#> d[stroke = 0: High dose aspirin] 0.04 0.06 0.07 0.07 -#> d[stroke = 0: Indobufen] 0.16 0.28 0.20 0.12 -#> d[stroke = 0: Low adjusted dose anti-coagulant] 0.04 0.13 0.21 0.21 +#> 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.01 0.01 +#> 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.01 0.02 +#> 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.01 0.01 0.02 -#> d[stroke = 0: Ximelagatran] 0.00 0.01 0.04 0.11 +#> 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.07 0.16 0.20 0.20 -#> d[stroke = 0: Acenocoumarol] 0.05 0.05 0.03 0.02 +#> 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.04 0.05 0.05 0.06 -#> d[stroke = 0: Fixed dose warfarin] 0.01 0.01 0.01 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.09 0.07 0.06 0.05 -#> d[stroke = 0: High dose aspirin] 0.07 0.05 0.04 0.04 -#> d[stroke = 0: Indobufen] 0.07 0.04 0.03 0.02 -#> d[stroke = 0: Low adjusted dose anti-coagulant] 0.14 0.09 0.05 0.04 -#> d[stroke = 0: Low dose aspirin] 0.00 0.00 0.01 0.01 +#> 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.10 0.09 0.09 -#> d[stroke = 0: Medium dose aspirin] 0.05 0.10 0.14 0.17 +#> 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.03 0.03 -#> d[stroke = 0: Ximelagatran] 0.15 0.16 0.15 0.12 +#> 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.11 0.04 0.02 -#> d[stroke = 0: Acenocoumarol] 0.02 0.03 0.02 0.02 +#> 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.07 0.09 0.10 0.10 -#> d[stroke = 0: Fixed dose warfarin] 0.03 0.04 0.06 0.08 -#> d[stroke = 0: Fixed dose warfarin + low dose aspirin] 0.07 0.09 0.10 0.09 -#> d[stroke = 0: Fixed dose warfarin + medium dose aspirin] 0.05 0.05 0.05 0.04 -#> d[stroke = 0: High dose aspirin] 0.04 0.04 0.05 0.04 +#> 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.02 0.01 -#> d[stroke = 0: Low dose aspirin] 0.04 0.06 0.11 0.17 -#> d[stroke = 0: Low dose aspirin + copidogrel] 0.06 0.09 0.12 0.14 -#> d[stroke = 0: Low dose aspirin + dipyridamole] 0.08 0.08 0.06 0.06 -#> d[stroke = 0: Medium dose aspirin] 0.19 0.13 0.10 0.06 -#> d[stroke = 0: Placebo/Standard care] 0.01 0.02 0.04 0.08 -#> d[stroke = 0: Triflusal] 0.03 0.05 0.05 0.06 +#> 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.01 0.00 0.00 -#> d[stroke = 0: Acenocoumarol] 0.01 0.01 0.01 -#> d[stroke = 0: Alternate day aspirin] 0.02 0.02 0.01 -#> d[stroke = 0: Dipyridamole] 0.08 0.08 0.08 -#> d[stroke = 0: Fixed dose warfarin] 0.08 0.10 0.13 -#> d[stroke = 0: Fixed dose warfarin + low dose aspirin] 0.10 0.10 0.08 +#> 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.05 0.04 0.06 -#> d[stroke = 0: Indobufen] 0.00 0.00 0.00 +#> 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.21 0.19 0.12 -#> d[stroke = 0: Low dose aspirin + copidogrel] 0.12 0.12 0.10 -#> d[stroke = 0: Low dose aspirin + dipyridamole] 0.04 0.03 0.02 -#> d[stroke = 0: Medium dose aspirin] 0.03 0.01 0.00 -#> d[stroke = 0: Placebo/Standard care] 0.14 0.19 0.24 -#> d[stroke = 0: Triflusal] 0.05 0.06 0.08 +#> 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.01 0.00 -#> d[stroke = 0: Alternate day aspirin] 0.02 0.02 -#> d[stroke = 0: Dipyridamole] 0.09 0.06 +#> 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.02 -#> d[stroke = 0: High dose aspirin] 0.08 0.14 +#> 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.19 0.08 -#> d[stroke = 0: Triflusal] 0.13 0.32 +#> 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 ---- @@ -1218,94 +1219,94 @@

Network meta-regression adjusting for proportion of prior #> 1 #> #> p_rank[1] p_rank[2] p_rank[3] p_rank[4] -#> d[stroke = 1: Standard adjusted dose anti-coagulant] 0.01 0.12 0.32 0.34 -#> d[stroke = 1: Acenocoumarol] 0.04 0.02 0.01 0.01 -#> d[stroke = 1: Alternate day aspirin] 0.36 0.10 0.04 0.07 -#> d[stroke = 1: Dipyridamole] 0.00 0.00 0.00 0.00 -#> d[stroke = 1: Fixed dose warfarin] 0.00 0.02 0.02 0.06 +#> 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.01 0.00 -#> d[stroke = 1: High dose aspirin] 0.02 0.03 0.03 0.03 -#> d[stroke = 1: Indobufen] 0.04 0.08 0.11 0.19 -#> d[stroke = 1: Low adjusted dose anti-coagulant] 0.42 0.34 0.12 0.06 +#> 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.00 0.01 -#> d[stroke = 1: Ximelagatran] 0.08 0.26 0.31 0.18 +#> 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.04 0.01 0.00 +#> 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.05 0.04 -#> d[stroke = 1: Dipyridamole] 0.02 0.04 0.08 0.10 -#> d[stroke = 1: Fixed dose warfarin] 0.19 0.25 0.14 0.08 -#> d[stroke = 1: Fixed dose warfarin + low dose aspirin] 0.00 0.01 0.01 0.01 +#> 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.06 0.10 0.10 0.08 -#> d[stroke = 1: Indobufen] 0.25 0.16 0.08 0.03 -#> d[stroke = 1: Low adjusted dose anti-coagulant] 0.03 0.01 0.01 0.00 +#> 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.07 -#> d[stroke = 1: Low dose aspirin + dipyridamole] 0.06 0.13 0.19 0.16 -#> d[stroke = 1: Medium dose aspirin] 0.01 0.06 0.17 0.26 -#> d[stroke = 1: Placebo/Standard care] 0.00 0.00 0.02 0.05 -#> d[stroke = 1: Triflusal] 0.02 0.03 0.05 0.05 -#> d[stroke = 1: Ximelagatran] 0.09 0.04 0.02 0.01 +#> 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.03 0.02 0.02 -#> d[stroke = 1: Dipyridamole] 0.11 0.12 0.12 0.11 -#> d[stroke = 1: Fixed dose warfarin] 0.06 0.05 0.04 0.03 -#> d[stroke = 1: Fixed dose warfarin + low dose aspirin] 0.01 0.01 0.00 0.01 -#> d[stroke = 1: Fixed dose warfarin + medium dose aspirin] 0.01 0.01 0.01 0.01 -#> d[stroke = 1: High dose aspirin] 0.07 0.06 0.06 0.06 +#> 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.12 0.18 0.22 -#> d[stroke = 1: Low dose aspirin + copidogrel] 0.10 0.12 0.14 0.16 -#> d[stroke = 1: Low dose aspirin + dipyridamole] 0.12 0.09 0.07 0.05 -#> d[stroke = 1: Medium dose aspirin] 0.22 0.14 0.08 0.04 -#> d[stroke = 1: Placebo/Standard care] 0.11 0.17 0.21 0.18 -#> d[stroke = 1: Triflusal] 0.06 0.06 0.06 0.08 +#> 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.03 0.03 0.01 -#> d[stroke = 1: Dipyridamole] 0.13 0.10 0.03 -#> d[stroke = 1: Fixed dose warfarin] 0.03 0.02 0.01 -#> d[stroke = 1: Fixed dose warfarin + low dose aspirin] 0.01 0.01 0.05 -#> d[stroke = 1: Fixed dose warfarin + medium dose aspirin] 0.01 0.01 0.27 -#> d[stroke = 1: High dose aspirin] 0.09 0.13 0.04 +#> 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.04 -#> d[stroke = 1: Low dose aspirin + copidogrel] 0.17 0.10 0.03 -#> d[stroke = 1: Low dose aspirin + dipyridamole] 0.03 0.02 0.01 +#> 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.02 -#> d[stroke = 1: Triflusal] 0.11 0.33 0.06 +#> 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.20 0.07 +#> 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.00 0.00 -#> d[stroke = 1: Fixed dose warfarin + low dose aspirin] 0.20 0.65 -#> d[stroke = 1: Fixed dose warfarin + medium dose aspirin] 0.49 0.16 -#> d[stroke = 1: High dose aspirin] 0.02 0.03 +#> 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.01 0.00 -#> d[stroke = 1: Low dose aspirin + copidogrel] 0.01 0.01 +#> 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.05 +#> d[stroke = 1: Triflusal] 0.03 0.06 #> d[stroke = 1: Ximelagatran] 0.00 0.00 # Modify the default output with ggplot2 functionality @@ -1313,7 +1314,7 @@

Network meta-regression adjusting for proportion of prior 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")), 
@@ -1326,84 +1327,84 @@ 

Network meta-regression adjusting for proportion of prior #> #> 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.49 0.63 0.72 -#> d[stroke = 0: Alternate day aspirin] 0.44 0.58 0.67 0.73 -#> d[stroke = 0: Dipyridamole] 0.00 0.01 0.02 0.05 -#> d[stroke = 0: Fixed dose warfarin] 0.00 0.00 0.00 0.01 -#> d[stroke = 0: Fixed dose warfarin + low dose aspirin] 0.00 0.00 0.02 0.05 -#> d[stroke = 0: Fixed dose warfarin + medium dose aspirin] 0.05 0.14 0.26 0.37 -#> d[stroke = 0: High dose aspirin] 0.04 0.10 0.17 0.24 -#> d[stroke = 0: Indobufen] 0.16 0.44 0.64 0.77 -#> d[stroke = 0: Low adjusted dose anti-coagulant] 0.04 0.17 0.38 0.59 +#> 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.02 -#> d[stroke = 0: Low dose aspirin + dipyridamole] 0.01 0.04 0.10 0.20 -#> d[stroke = 0: Medium dose aspirin] 0.00 0.00 0.01 0.03 +#> 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.01 0.02 0.04 -#> d[stroke = 0: Ximelagatran] 0.00 0.01 0.06 0.16 +#> 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.10 0.26 0.46 0.66 -#> d[stroke = 0: Acenocoumarol] 0.77 0.82 0.85 0.87 -#> d[stroke = 0: Alternate day aspirin] 0.77 0.80 0.82 0.84 -#> d[stroke = 0: Dipyridamole] 0.10 0.15 0.20 0.25 -#> d[stroke = 0: Fixed dose warfarin] 0.02 0.02 0.04 0.06 -#> d[stroke = 0: Fixed dose warfarin + low dose aspirin] 0.09 0.13 0.18 0.24 -#> d[stroke = 0: Fixed dose warfarin + medium dose aspirin] 0.46 0.53 0.59 0.64 -#> d[stroke = 0: High dose aspirin] 0.31 0.37 0.40 0.45 -#> d[stroke = 0: Indobufen] 0.84 0.88 0.91 0.94 -#> d[stroke = 0: Low adjusted dose anti-coagulant] 0.73 0.82 0.87 0.91 +#> 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.03 0.05 0.08 0.13 -#> d[stroke = 0: Low dose aspirin + dipyridamole] 0.31 0.42 0.51 0.60 -#> d[stroke = 0: Medium dose aspirin] 0.08 0.18 0.31 0.48 +#> 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.07 0.09 0.13 0.16 -#> d[stroke = 0: Ximelagatran] 0.32 0.48 0.63 0.75 +#> 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.82 0.93 0.98 0.99 -#> d[stroke = 0: Acenocoumarol] 0.89 0.92 0.93 0.95 +#> 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.51 0.61 -#> d[stroke = 0: Fixed dose warfarin] 0.08 0.12 0.19 0.27 -#> d[stroke = 0: Fixed dose warfarin + low dose aspirin] 0.31 0.40 0.50 0.59 -#> d[stroke = 0: Fixed dose warfarin + medium dose aspirin] 0.69 0.73 0.78 0.82 -#> d[stroke = 0: High dose aspirin] 0.49 0.54 0.59 0.63 -#> d[stroke = 0: Indobufen] 0.95 0.97 0.98 0.98 -#> d[stroke = 0: Low adjusted dose anti-coagulant] 0.94 0.96 0.98 0.99 -#> d[stroke = 0: Low dose aspirin] 0.06 0.12 0.24 0.40 -#> d[stroke = 0: Low dose aspirin + copidogrel] 0.19 0.28 0.40 0.54 -#> d[stroke = 0: Low dose aspirin + dipyridamole] 0.68 0.76 0.82 0.88 -#> d[stroke = 0: Medium dose aspirin] 0.66 0.80 0.90 0.96 -#> d[stroke = 0: Placebo/Standard care] 0.02 0.04 0.08 0.16 -#> d[stroke = 0: Triflusal] 0.19 0.24 0.29 0.35 +#> 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.77 0.85 -#> d[stroke = 0: Fixed dose warfarin] 0.34 0.44 0.58 -#> d[stroke = 0: Fixed dose warfarin + low dose aspirin] 0.69 0.79 0.88 +#> 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.68 0.72 0.78 +#> 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] 0.99 1.00 1.00 -#> d[stroke = 0: Low dose aspirin] 0.61 0.80 0.92 -#> d[stroke = 0: Low dose aspirin + copidogrel] 0.66 0.78 0.88 -#> d[stroke = 0: Low dose aspirin + dipyridamole] 0.92 0.95 0.97 +#> 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.30 0.49 0.72 -#> d[stroke = 0: Triflusal] 0.40 0.47 0.55 +#> 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.98 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.98 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 @@ -1411,8 +1412,8 @@

Network meta-regression adjusting for proportion of prior #> 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.92 1 -#> d[stroke = 0: Triflusal] 0.68 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 ---- @@ -1422,76 +1423,76 @@

Network meta-regression adjusting for proportion of prior #> 1 #> #> p_rank[1] p_rank[2] p_rank[3] p_rank[4] -#> d[stroke = 1: Standard adjusted dose anti-coagulant] 0.01 0.14 0.46 0.80 -#> d[stroke = 1: Acenocoumarol] 0.04 0.07 0.08 0.09 -#> d[stroke = 1: Alternate day aspirin] 0.36 0.47 0.51 0.58 -#> d[stroke = 1: Dipyridamole] 0.00 0.00 0.01 0.01 -#> d[stroke = 1: Fixed dose warfarin] 0.00 0.02 0.04 0.10 +#> 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.01 0.01 -#> d[stroke = 1: High dose aspirin] 0.02 0.05 0.08 0.10 -#> d[stroke = 1: Indobufen] 0.04 0.12 0.23 0.41 -#> d[stroke = 1: Low adjusted dose anti-coagulant] 0.42 0.76 0.88 0.94 +#> 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.01 -#> d[stroke = 1: Ximelagatran] 0.08 0.35 0.66 0.84 +#> 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.98 0.99 1.00 -#> d[stroke = 1: Acenocoumarol] 0.11 0.13 0.15 0.16 -#> d[stroke = 1: Alternate day aspirin] 0.66 0.75 0.79 0.84 -#> d[stroke = 1: Dipyridamole] 0.03 0.07 0.15 0.25 -#> d[stroke = 1: Fixed dose warfarin] 0.29 0.54 0.68 0.77 +#> 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.02 0.02 0.03 -#> d[stroke = 1: High dose aspirin] 0.16 0.26 0.36 0.44 -#> d[stroke = 1: Indobufen] 0.67 0.83 0.91 0.95 -#> d[stroke = 1: Low adjusted dose anti-coagulant] 0.97 0.99 0.99 1.00 -#> d[stroke = 1: Low dose aspirin] 0.00 0.00 0.02 0.04 -#> d[stroke = 1: Low dose aspirin + copidogrel] 0.02 0.03 0.08 0.15 -#> d[stroke = 1: Low dose aspirin + dipyridamole] 0.11 0.24 0.44 0.60 -#> d[stroke = 1: Medium dose aspirin] 0.02 0.08 0.24 0.50 -#> d[stroke = 1: Placebo/Standard care] 0.00 0.01 0.02 0.07 +#> 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.93 0.97 0.99 0.99 +#> 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.19 0.20 0.22 -#> d[stroke = 1: Alternate day aspirin] 0.86 0.89 0.91 0.93 -#> d[stroke = 1: Dipyridamole] 0.36 0.48 0.60 0.72 -#> d[stroke = 1: Fixed dose warfarin] 0.82 0.87 0.91 0.94 +#> 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.05 0.05 0.06 -#> d[stroke = 1: High dose aspirin] 0.51 0.57 0.63 0.69 -#> d[stroke = 1: Indobufen] 0.97 0.98 0.99 0.99 +#> 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.22 0.40 0.62 -#> d[stroke = 1: Low dose aspirin + copidogrel] 0.25 0.38 0.52 0.67 +#> 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.72 0.86 0.94 0.98 -#> d[stroke = 1: Placebo/Standard care] 0.18 0.35 0.56 0.74 -#> d[stroke = 1: Triflusal] 0.22 0.28 0.34 0.42 +#> 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.24 0.29 0.73 -#> d[stroke = 1: Alternate day aspirin] 0.96 0.98 0.99 -#> d[stroke = 1: Dipyridamole] 0.84 0.94 0.97 -#> d[stroke = 1: Fixed dose warfarin] 0.97 0.99 0.99 -#> d[stroke = 1: Fixed dose warfarin + low dose aspirin] 0.09 0.11 0.15 -#> d[stroke = 1: Fixed dose warfarin + medium dose aspirin] 0.07 0.08 0.35 -#> d[stroke = 1: High dose aspirin] 0.78 0.91 0.96 +#> 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.83 0.94 0.98 -#> d[stroke = 1: Low dose aspirin + copidogrel] 0.85 0.95 0.98 -#> d[stroke = 1: Low dose aspirin + dipyridamole] 0.96 0.98 0.99 +#> 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.89 0.96 0.98 -#> d[stroke = 1: Triflusal] 0.53 0.86 0.92 +#> 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 @@ -1501,34 +1502,34 @@

Network meta-regression adjusting for proportion of prior #> 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.97 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] 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.95 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: 59.6 (on 61 data points)
-#>                pD: 48.3
-#>               DIC: 107.8
+#> Residual deviance: 60.4 (on 61 data points) +#> pD: 48.6 +#> DIC: 109.1
(af_dic_4b <- dic(af_fit_4b))
-#> Residual deviance: 58.1 (on 61 data points)
-#>                pD: 48.2
-#>               DIC: 106.4
+#> 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 @@ -1540,9 +1541,9 @@

Model fit and comparison

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

plot(af_dic_1)
-

+

plot(af_dic_4b)
-

+

References

diff --git a/vignettes/example_bcg_vaccine.html b/vignettes/example_bcg_vaccine.html index a81bbc0b4..5ade9f6f3 100644 --- a/vignettes/example_bcg_vaccine.html +++ b/vignettes/example_bcg_vaccine.html @@ -455,15 +455,15 @@

RE meta-analysis (no covariate)

bcg_fit_unadj
 #> 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.
+#> 4 chains, each with iter=5000; warmup=2500; thin=1; 
+#> post-warmup draws per chain=2500, total post-warmup draws=10000.
 #> 
 #>                    mean se_mean   sd      2.5%       25%       50%       75%     97.5% n_eff Rhat
-#> d[Vaccinated]     -0.75    0.01 0.22     -1.19     -0.89     -0.75     -0.62     -0.32  1351    1
-#> lp__          -13453.93    0.13 4.43 -13463.15 -13456.86 -13453.65 -13450.88 -13446.15  1216    1
-#> tau                0.69    0.01 0.21      0.40      0.54      0.65      0.79      1.19  1568    1
+#> d[Vaccinated]     -0.77    0.00 0.22     -1.21     -0.91     -0.77     -0.63     -0.33  2893    1
+#> lp__          -13533.72    0.08 4.42 -13543.14 -13536.55 -13533.35 -13530.64 -13525.94  2872    1
+#> tau                0.68    0.00 0.20      0.39      0.54      0.65      0.79      1.16  3157    1
 #> 
-#> Samples were drawn using NUTS(diag_e) at Fri Jun 16 15:57:36 2023.
+#> Samples were drawn using NUTS(diag_e) at Tue Jan  9 18:00:33 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).
@@ -474,7 +474,7 @@

RE meta-analysis (no covariate)

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

plot_prior_posterior(bcg_fit_unadj, prior = c("trt", "het"))
-

+

RE meta-regression with covariate latitude

@@ -520,21 +520,21 @@

RE meta-regression with covariate latitude

#> latitude #> 33.46154 #> 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. +#> 4 chains, each with iter=5000; warmup=2500; thin=1; +#> post-warmup draws per chain=2500, total post-warmup draws=10000. #> #> mean se_mean sd 2.5% 25% 50% 75% #> beta[.trtVaccinated:latitude] -0.03 0.00 0.01 -0.05 -0.04 -0.03 -0.03 -#> d[Vaccinated] -0.77 0.00 0.13 -1.05 -0.83 -0.76 -0.69 -#> lp__ -13457.46 0.20 5.13 -13468.10 -13460.81 -13457.13 -13453.80 -#> tau 0.29 0.01 0.18 0.02 0.16 0.26 0.39 +#> d[Vaccinated] -0.76 0.00 0.12 -1.04 -0.83 -0.75 -0.69 +#> lp__ -13542.77 0.12 5.11 -13553.47 -13546.06 -13542.51 -13539.08 +#> tau 0.29 0.00 0.18 0.02 0.16 0.26 0.39 #> 97.5% n_eff Rhat -#> beta[.trtVaccinated:latitude] -0.01 1498 1 -#> d[Vaccinated] -0.53 1333 1 -#> lp__ -13448.23 672 1 -#> tau 0.74 722 1 +#> beta[.trtVaccinated:latitude] -0.01 4690 1 +#> d[Vaccinated] -0.53 4014 1 +#> lp__ -13533.67 1742 1 +#> tau 0.71 1830 1 #> -#> Samples were drawn using NUTS(diag_e) at Fri Jun 16 15:57:59 2023. +#> Samples were drawn using NUTS(diag_e) at Tue Jan 9 18:00:53 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).
@@ -548,20 +548,20 @@

RE meta-regression with covariate latitude

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

plot_prior_posterior(bcg_fit_lat, prior = c("trt", "reg", "het"))
-

+

Model fit and comparison

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

(bcg_dic_unadj <- dic(bcg_fit_unadj))
-#> Residual deviance: 26.2 (on 26 data points)
-#>                pD: 23.7
-#>               DIC: 50
+#> Residual deviance: 25.9 (on 26 data points) +#> pD: 23.5 +#> DIC: 49.4
(bcg_dic_lat <- dic(bcg_fit_lat))
-#> Residual deviance: 31 (on 26 data points)
-#>                pD: 21.6
-#>               DIC: 52.6
+#> Residual deviance: 30.8 (on 26 data points) +#> pD: 21.5 +#> DIC: 52.3

The DIC is very similar between the two models, so we might at first choose the unadjusted model. The posterior mean residual deviance is larger for the model with the covariate, but this model also has a lower @@ -570,23 +570,23 @@

Model fit and comparison

Moreover, the model with the covariate has a much lower estimated heterogeneity standard deviation:

summary(bcg_fit_unadj, pars = "tau")
-#>     mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> tau 0.69 0.21  0.4 0.54 0.65 0.79  1.19     1607     1997    1
+#>     mean  sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> tau 0.68 0.2 0.39 0.54 0.65 0.79  1.16     3109     5536    1
 summary(bcg_fit_lat, pars = "tau")
 #>     mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> tau 0.29 0.18 0.02 0.16 0.26 0.39  0.74      635      784    1
+#> tau 0.29 0.18 0.02 0.16 0.26 0.39 0.71 1607 2068 1

Adjusting for latitude is explaining a substantial amount of heterogeneity in the data. The 95% Credible Interval for the regression coefficient also excludes zero:

summary(bcg_fit_lat, pars = "beta")
 #>                                mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> beta[.trtVaccinated:latitude] -0.03 0.01 -0.05 -0.04 -0.03 -0.03 -0.01     1754     1644    1
+#> beta[.trtVaccinated:latitude] -0.03 0.01 -0.05 -0.04 -0.03 -0.03 -0.01     4994     4371    1
 
 plot(bcg_fit_lat, 
      pars = "beta", 
      ref_line = 0,
      stat = "halfeye")
-

+

Altogether, we might prefer the model with the adjustment for latitude. When considering covariates in random effects models it is important not to just look at the DIC (Dias et al. 2011). We @@ -616,8 +616,8 @@

Further results

#> latitude #> 10 #> -#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> d[10° latitude: Vaccinated] -0.02 0.22 -0.51 -0.13 0 0.11 0.38 1762 1794 1 +#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat +#> d[10° latitude: Vaccinated] -0.02 0.22 -0.51 -0.13 0 0.1 0.41 4615 4465 1 #> #> ----------------------------------------------------------- Study: 20° latitude ---- #> @@ -625,8 +625,8 @@

Further results

#> latitude #> 20 #> -#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> d[20° latitude: Vaccinated] -0.34 0.16 -0.7 -0.42 -0.32 -0.24 -0.06 1716 1687 1 +#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat +#> d[20° latitude: Vaccinated] -0.34 0.16 -0.69 -0.42 -0.32 -0.25 -0.03 4375 4524 1 #> #> ----------------------------------------------------------- Study: 30° latitude ---- #> @@ -635,7 +635,7 @@

Further results

#> 30 #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> d[30° latitude: Vaccinated] -0.66 0.13 -0.93 -0.72 -0.65 -0.58 -0.42 1570 1675 1 +#> d[30° latitude: Vaccinated] -0.65 0.12 -0.92 -0.72 -0.64 -0.58 -0.42 4087 4875 1 #> #> ----------------------------------------------------------- Study: 40° latitude ---- #> @@ -644,7 +644,7 @@

Further results

#> 40 #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> d[40° latitude: Vaccinated] -0.97 0.14 -1.28 -1.05 -0.97 -0.89 -0.7 1514 1607 1 +#> d[40° latitude: Vaccinated] -0.97 0.14 -1.27 -1.05 -0.96 -0.89 -0.7 4712 5210 1 #> #> ----------------------------------------------------------- Study: 50° latitude ---- #> @@ -652,13 +652,13 @@

Further results

#> latitude #> 50 #> -#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> d[50° latitude: Vaccinated] -1.29 0.2 -1.71 -1.4 -1.29 -1.18 -0.9 1540 1787 1 +#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat +#> d[50° latitude: Vaccinated] -1.29 0.19 -1.7 -1.39 -1.28 -1.18 -0.9 5091 4808 1

The plot() method may be used to visually compare these estimates:

plot(bcg_releff_lat, 
      ref_line = 0)
-

+

A more sophisticated plot shows the regression line and confidence band for the effect of latitude, overlaid on the observed log odds ratios in each study:

@@ -701,7 +701,7 @@

Further results

xlab("Degrees Latitude") + ylab("log Odds Ratio") + scale_size("Sample Size") + theme_multinma() -

+

In the presence of heterogeneity, it has been argued that decision makers should consider the predictive distribution of relative effects in a new study, instead of the posterior distribution of the mean @@ -719,11 +719,11 @@

Further results

effects:

(bcg_predeff_unadj <- relative_effects(bcg_fit_unadj, predictive_distribution = TRUE))
 #>                        mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> delta_new[Vaccinated] -0.76 0.74 -2.25 -1.21 -0.75 -0.31   0.7     3565     3433    1
+#> delta_new[Vaccinated] -0.78 0.74 -2.28 -1.22 -0.77 -0.32 0.7 8410 8831 1

The predictive probability of a new trial showing a harmful effect is:

mean(as.matrix(bcg_predeff_unadj) > 0)
-#> [1] 0.1315
+#> [1] 0.132

For the analysis adjusting for latitude, the predictive distribution of relative effects now depends on latitude; here we calculate these in increments of 10 degrees from the equator:

@@ -741,7 +741,7 @@

Further results

#> 0 #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> delta_new[0° latitude: Vaccinated] 0.3 0.45 -0.69 0.09 0.32 0.53 1.21 2704 2376 1 +#> delta_new[0° latitude: Vaccinated] 0.3 0.45 -0.67 0.08 0.33 0.52 1.23 6703 6291 1 #> #> ----------------------------------------------------------- Study: 10° latitude ---- #> @@ -750,7 +750,7 @@

Further results

#> 10 #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> delta_new[10° latitude: Vaccinated] -0.02 0.41 -0.9 -0.21 0 0.18 0.81 3058 2699 1 +#> delta_new[10° latitude: Vaccinated] -0.02 0.41 -0.9 -0.21 0 0.17 0.84 7320 6729 1 #> #> ----------------------------------------------------------- Study: 20° latitude ---- #> @@ -759,7 +759,7 @@

Further results

#> 20 #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> delta_new[20° latitude: Vaccinated] -0.34 0.38 -1.13 -0.51 -0.31 -0.16 0.43 3454 3031 1 +#> delta_new[20° latitude: Vaccinated] -0.33 0.38 -1.15 -0.51 -0.32 -0.16 0.47 7983 7278 1 #> #> ----------------------------------------------------------- Study: 30° latitude ---- #> @@ -768,7 +768,7 @@

Further results

#> 30 #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> delta_new[30° latitude: Vaccinated] -0.65 0.37 -1.45 -0.82 -0.63 -0.48 0.08 3720 3108 1 +#> delta_new[30° latitude: Vaccinated] -0.65 0.37 -1.44 -0.82 -0.64 -0.48 0.13 8596 8057 1 #> #> ----------------------------------------------------------- Study: 40° latitude ---- #> @@ -776,8 +776,8 @@

Further results

#> latitude #> 40 #> -#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> delta_new[40° latitude: Vaccinated] -0.97 0.37 -1.77 -1.15 -0.95 -0.79 -0.21 3631 2924 1 +#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat +#> delta_new[40° latitude: Vaccinated] -0.97 0.38 -1.78 -1.14 -0.96 -0.8 -0.21 8524 8033 1 #> #> ----------------------------------------------------------- Study: 50° latitude ---- #> @@ -786,16 +786,16 @@

Further results

#> 50 #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> delta_new[50° latitude: Vaccinated] -1.29 0.4 -2.14 -1.47 -1.28 -1.09 -0.5 3269 2685 1 +#> delta_new[50° latitude: Vaccinated] -1.29 0.4 -2.14 -1.48 -1.28 -1.09 -0.46 7998 7735 1

The predictive probabilities of a new trial carried out at a given latitude showing a harmful effect can be calculated as:

colMeans(as.matrix(bcg_predeff_lat) > 0)
 #>  delta_new[0° latitude: Vaccinated] delta_new[10° latitude: Vaccinated] 
-#>                             0.80850                             0.50550 
+#>                              0.8060                              0.5064 
 #> delta_new[20° latitude: Vaccinated] delta_new[30° latitude: Vaccinated] 
-#>                             0.13000                             0.03425 
+#>                              0.1316                              0.0386 
 #> delta_new[40° latitude: Vaccinated] delta_new[50° latitude: Vaccinated] 
-#>                             0.01100                             0.00500
+#> 0.0124 0.0053

So the predictive probability that a new trial carried out at the equator shows a harmful effect is around 80%, whereas at 50 degrees latitude the predictive probability is only 0.7%.

diff --git a/vignettes/example_blocker.html b/vignettes/example_blocker.html index 0c826ed29..23dbfddf6 100644 --- a/vignettes/example_blocker.html +++ b/vignettes/example_blocker.html @@ -444,10 +444,10 @@

Fixed effect meta-analysis

#> 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[Beta Blocker] -0.26 0.00 0.05 -0.36 -0.30 -0.26 -0.23 -0.16 3520 1 -#> lp__ -5960.37 0.09 3.39 -5968.05 -5962.37 -5960.09 -5957.93 -5954.78 1537 1 +#> d[Beta Blocker] -0.26 0.00 0.05 -0.36 -0.30 -0.26 -0.23 -0.16 3309 1 +#> lp__ -6087.71 0.09 3.55 -6095.39 -6089.78 -6087.27 -6085.21 -6081.71 1531 1 #> -#> Samples were drawn using NUTS(diag_e) at Fri Jun 16 15:49:03 2023. +#> Samples were drawn using NUTS(diag_e) at Tue Jan 9 17:55:39 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). @@ -458,7 +458,7 @@

Fixed effect meta-analysis

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

plot_prior_posterior(blocker_fit_FE, prior = "trt")
-

+

Random effects meta-analysis

@@ -493,11 +493,11 @@

Random effects meta-analysis

#> 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[Beta Blocker] -0.25 0.00 0.07 -0.37 -0.29 -0.25 -0.20 -0.11 2550 1 -#> lp__ -5970.68 0.17 5.49 -5982.30 -5974.13 -5970.41 -5966.84 -5960.68 1088 1 -#> tau 0.13 0.00 0.08 0.01 0.07 0.13 0.19 0.31 903 1 +#> d[Beta Blocker] -0.25 0.00 0.06 -0.37 -0.29 -0.25 -0.21 -0.12 3506 1 +#> lp__ -6100.48 0.17 5.56 -6112.03 -6104.09 -6100.14 -6096.65 -6090.33 1082 1 +#> tau 0.13 0.00 0.08 0.01 0.07 0.12 0.18 0.30 1140 1 #> -#> Samples were drawn using NUTS(diag_e) at Fri Jun 16 15:49:20 2023. +#> Samples were drawn using NUTS(diag_e) at Tue Jan 9 17:55:50 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).
@@ -509,19 +509,19 @@

Random effects meta-analysis

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

plot_prior_posterior(blocker_fit_RE, prior = c("trt", "het"))
-

+

Model comparison

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

(dic_FE <- dic(blocker_fit_FE))
-#> Residual deviance: 46.7 (on 44 data points)
-#>                pD: 23.1
-#>               DIC: 69.9
+#> Residual deviance: 47.3 (on 44 data points) +#> pD: 23.7 +#> DIC: 71
(dic_RE <- dic(blocker_fit_RE))
-#> Residual deviance: 41.7 (on 44 data points)
-#>                pD: 28
-#>               DIC: 69.7
+#> Residual deviance: 42 (on 44 data points) +#> pD: 28.1 +#> DIC: 70.1

The residual deviance is lower under the RE model, which is to be expected as this model is more flexible. However, this comes with an increased effective number of parameters (note the increase in \(p_D\)). As a result, the DIC of both models @@ -529,9 +529,9 @@

Model comparison

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

plot(dic_FE)
-

+

plot(dic_RE)
-

+

There are a number of points which are not very well fit by the FE model, having posterior mean residual deviance contributions greater than 1. Study 14 is a particularly poor fit under the FE model, but its @@ -557,19 +557,19 @@

Further results

type = "response") pred_FE #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[Control] 0.11 0.05 0.04 0.07 0.10 0.14 0.25 4181 3974 1 -#> pred[Beta Blocker] 0.09 0.05 0.03 0.06 0.08 0.11 0.20 4141 4103 1 +#> pred[Control] 0.11 0.05 0.04 0.07 0.10 0.14 0.25 3973 3978 1 +#> pred[Beta Blocker] 0.09 0.05 0.03 0.05 0.08 0.11 0.20 3984 4008 1 plot(pred_FE) -

+

pred_RE <- predict(blocker_fit_RE, 
                    baseline = distr(qnorm, mean = -2.2, sd = 3.3^-0.5), 
                    type = "response")
 pred_RE
 #>                    mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> pred[Control]      0.11 0.05 0.04 0.07 0.10 0.14  0.24     4076     3958    1
-#> pred[Beta Blocker] 0.09 0.05 0.03 0.06 0.08 0.11  0.20     4011     3849    1
+#> pred[Control]      0.11 0.05 0.04 0.07 0.10 0.14  0.24     4028     3849    1
+#> pred[Beta Blocker] 0.09 0.04 0.03 0.06 0.08 0.11  0.20     4049     3930    1
 plot(pred_RE)
-

+

If instead of information on the baseline logit-probability of mortality we have event counts, we can use these to construct a Beta distribution for the baseline probability of mortality. For example, if @@ -586,20 +586,20 @@

Further results

type = "response") pred_FE_beta #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[Control] 0.11 0.05 0.03 0.07 0.10 0.14 0.23 3902 3928 1 -#> pred[Beta Blocker] 0.09 0.04 0.02 0.06 0.08 0.11 0.19 3911 3968 1 +#> pred[Control] 0.11 0.05 0.03 0.07 0.10 0.14 0.23 4066 3919 1 +#> pred[Beta Blocker] 0.09 0.04 0.02 0.06 0.08 0.11 0.19 4063 3860 1 plot(pred_FE_beta) -

+

pred_RE_beta <- predict(blocker_fit_RE, 
                         baseline = distr(qbeta, 4, 36-4),
                         baseline_type = "response",
                         type = "response")
 pred_RE_beta
 #>                    mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> pred[Control]      0.11 0.05 0.03 0.07 0.10 0.14  0.24     4082     4012    1
-#> pred[Beta Blocker] 0.09 0.04 0.03 0.06 0.08 0.12  0.20     4063     3888    1
+#> pred[Control]      0.11 0.05 0.03 0.07 0.10 0.14  0.24     3815     3841    1
+#> pred[Beta Blocker] 0.09 0.04 0.03 0.06 0.08 0.11  0.19     3808     3774    1
 plot(pred_RE_beta)
-

+

Notice that these results are nearly equivalent to those calculated above using the Normal distribution for the baseline logit-probability, since these event counts correspond to approximately the same diff --git a/vignettes/example_diabetes.html b/vignettes/example_diabetes.html index b89e510f3..b79dcec6b 100644 --- a/vignettes/example_diabetes.html +++ b/vignettes/example_diabetes.html @@ -462,12 +462,12 @@

Fixed effect meta-analysis

#> post-warmup draws per chain=1000, total post-warmup draws=4000. #> #> mean se_mean sd 2.5% 25% 50% 75% 97.5% n_eff -#> d[ACE Inhibitor] -0.30 0.00 0.05 -0.39 -0.33 -0.30 -0.27 -0.21 1463 -#> d[ARB] -0.40 0.00 0.05 -0.49 -0.43 -0.40 -0.37 -0.31 2014 -#> d[CCB] -0.20 0.00 0.03 -0.26 -0.22 -0.20 -0.18 -0.13 1805 -#> d[Diuretic] 0.06 0.00 0.06 -0.05 0.02 0.06 0.10 0.17 1412 -#> d[Placebo] -0.19 0.00 0.05 -0.28 -0.22 -0.19 -0.16 -0.09 1305 -#> lp__ -37970.41 0.09 3.76 -37978.75 -37972.66 -37970.08 -37967.69 -37964.02 1840 +#> d[ACE Inhibitor] -0.30 0.00 0.05 -0.39 -0.33 -0.30 -0.27 -0.21 1227 +#> d[ARB] -0.39 0.00 0.05 -0.49 -0.43 -0.39 -0.36 -0.30 2010 +#> d[CCB] -0.20 0.00 0.03 -0.26 -0.22 -0.20 -0.17 -0.13 1671 +#> d[Diuretic] 0.06 0.00 0.06 -0.05 0.02 0.06 0.09 0.17 1523 +#> d[Placebo] -0.19 0.00 0.05 -0.29 -0.22 -0.19 -0.16 -0.09 1179 +#> lp__ -38119.60 0.09 3.70 -38127.60 -38121.85 -38119.25 -38117.00 -38113.27 1748 #> Rhat #> d[ACE Inhibitor] 1 #> d[ARB] 1 @@ -476,7 +476,7 @@

Fixed effect meta-analysis

#> d[Placebo] 1 #> lp__ 1 #> -#> Samples were drawn using NUTS(diag_e) at Fri Jun 16 15:50:29 2023. +#> Samples were drawn using NUTS(diag_e) at Tue Jan 9 17:56:28 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). @@ -487,7 +487,7 @@

Fixed effect meta-analysis

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

plot_prior_posterior(db_fit_FE)
-

+

Random effects meta-analysis

@@ -529,23 +529,23 @@

Random effects meta-analysis

#> post-warmup draws per chain=1000, total post-warmup draws=4000. #> #> mean se_mean sd 2.5% 25% 50% 75% 97.5% n_eff -#> d[ACE Inhibitor] -0.33 0.00 0.08 -0.49 -0.38 -0.33 -0.28 -0.18 1989 -#> d[ARB] -0.40 0.00 0.10 -0.60 -0.46 -0.40 -0.34 -0.22 2311 -#> d[CCB] -0.17 0.00 0.06 -0.29 -0.21 -0.17 -0.13 -0.04 2083 -#> d[Diuretic] 0.07 0.00 0.09 -0.10 0.01 0.07 0.13 0.25 2342 -#> d[Placebo] -0.22 0.00 0.09 -0.40 -0.27 -0.21 -0.16 -0.05 1812 -#> lp__ -37980.84 0.22 6.74 -37994.78 -37985.14 -37980.52 -37976.18 -37968.50 983 -#> tau 0.13 0.00 0.04 0.06 0.10 0.12 0.15 0.23 936 +#> d[ACE Inhibitor] -0.33 0.00 0.08 -0.49 -0.38 -0.33 -0.28 -0.18 1438 +#> d[ARB] -0.40 0.00 0.10 -0.59 -0.46 -0.40 -0.34 -0.21 1606 +#> d[CCB] -0.17 0.00 0.07 -0.30 -0.21 -0.17 -0.13 -0.03 1802 +#> d[Diuretic] 0.07 0.00 0.09 -0.10 0.01 0.07 0.13 0.25 1737 +#> d[Placebo] -0.21 0.00 0.09 -0.40 -0.27 -0.21 -0.16 -0.04 1237 +#> lp__ -38070.21 0.22 6.87 -38084.72 -38074.58 -38069.88 -38065.62 -38057.55 967 +#> tau 0.13 0.00 0.05 0.06 0.10 0.13 0.16 0.24 845 #> Rhat -#> d[ACE Inhibitor] 1 -#> d[ARB] 1 -#> d[CCB] 1 -#> d[Diuretic] 1 -#> d[Placebo] 1 -#> lp__ 1 -#> tau 1 +#> d[ACE Inhibitor] 1.00 +#> d[ARB] 1.00 +#> d[CCB] 1.00 +#> d[Diuretic] 1.00 +#> d[Placebo] 1.00 +#> lp__ 1.00 +#> tau 1.01 #> -#> Samples were drawn using NUTS(diag_e) at Fri Jun 16 15:51:07 2023. +#> Samples were drawn using NUTS(diag_e) at Tue Jan 9 17:56:51 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).
@@ -557,28 +557,28 @@

Random effects meta-analysis

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

plot_prior_posterior(db_fit_RE, prior = c("trt", "het"))
-

+

Model comparison

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

(dic_FE <- dic(db_fit_FE))
-#> Residual deviance: 78.4 (on 48 data points)
-#>                pD: 27.2
-#>               DIC: 105.6
+#> Residual deviance: 78.5 (on 48 data points) +#> pD: 27.3 +#> DIC: 105.8
(dic_RE <- dic(db_fit_RE))
 #> Residual deviance: 53.4 (on 48 data points)
-#>                pD: 37.8
-#>               DIC: 91.2
+#> pD: 38.1 +#> DIC: 91.5

The FE model is a very poor fit to the data, with a residual deviance much higher than the number of data points. The RE model fits the data better, and has a much lower DIC; we prefer the RE model.

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

plot(dic_FE)
-

+

plot(dic_RE)
-

+

@@ -588,22 +588,22 @@

Further results

with trt_ref = "Diuretic":

(db_releff_FE <- relative_effects(db_fit_FE, trt_ref = "Diuretic"))
 #>                   mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> d[Beta Blocker]  -0.06 0.06 -0.17 -0.10 -0.06 -0.02  0.05     1454     2513    1
-#> d[ACE Inhibitor] -0.36 0.05 -0.47 -0.40 -0.36 -0.32 -0.25     3948     3136    1
-#> d[ARB]           -0.45 0.06 -0.58 -0.50 -0.45 -0.41 -0.33     3003     2683    1
-#> d[CCB]           -0.25 0.05 -0.36 -0.29 -0.26 -0.22 -0.15     2755     2831    1
-#> d[Placebo]       -0.25 0.06 -0.36 -0.29 -0.25 -0.21 -0.14     4005     3095    1
+#> d[Beta Blocker]  -0.06 0.06 -0.17 -0.09 -0.06 -0.02  0.05     1534     2566    1
+#> d[ACE Inhibitor] -0.36 0.05 -0.47 -0.39 -0.36 -0.32 -0.25     4582     3450    1
+#> d[ARB]           -0.45 0.06 -0.58 -0.49 -0.45 -0.41 -0.33     3181     3052    1
+#> d[CCB]           -0.25 0.05 -0.36 -0.29 -0.25 -0.22 -0.15     2595     3234    1
+#> d[Placebo]       -0.25 0.06 -0.36 -0.28 -0.25 -0.21 -0.14     3992     2883    1
 plot(db_releff_FE, ref_line = 0)
-

+

(db_releff_RE <- relative_effects(db_fit_RE, trt_ref = "Diuretic"))
 #>                   mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> d[Beta Blocker]  -0.07 0.09 -0.25 -0.13 -0.07 -0.01  0.10     2360     2761    1
-#> d[ACE Inhibitor] -0.40 0.09 -0.59 -0.45 -0.40 -0.34 -0.24     3978     2916    1
-#> d[ARB]           -0.47 0.11 -0.70 -0.54 -0.47 -0.40 -0.25     3872     3097    1
-#> d[CCB]           -0.24 0.08 -0.40 -0.29 -0.24 -0.18 -0.07     4121     2997    1
-#> d[Placebo]       -0.29 0.09 -0.48 -0.34 -0.29 -0.23 -0.12     4189     2855    1
+#> d[Beta Blocker]  -0.07 0.09 -0.25 -0.13 -0.07 -0.01  0.10     1776     2284    1
+#> d[ACE Inhibitor] -0.40 0.09 -0.58 -0.46 -0.40 -0.34 -0.24     4083     3200    1
+#> d[ARB]           -0.47 0.11 -0.69 -0.54 -0.47 -0.40 -0.26     3293     2854    1
+#> d[CCB]           -0.24 0.09 -0.41 -0.30 -0.24 -0.18 -0.07     3577     3316    1
+#> d[Placebo]       -0.29 0.09 -0.47 -0.34 -0.28 -0.23 -0.12     3835     2964    1
 plot(db_releff_RE, ref_line = 0)
-

+

Dias et al. (2011) produce absolute predictions of the probability of developing diabetes after three years, assuming a Normal distribution on the baseline cloglog probability of developing @@ -628,14 +628,14 @@

Further results

#> ------------------------------------------------------------------ Study: New 1 ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[New 1: Beta Blocker] 0.06 0.07 0.01 0.02 0.04 0.08 0.23 4212 3856 1 -#> pred[New 1: ACE Inhibitor] 0.05 0.05 0.00 0.02 0.03 0.06 0.18 4242 3741 1 -#> pred[New 1: ARB] 0.04 0.05 0.00 0.01 0.03 0.05 0.16 4236 3672 1 -#> pred[New 1: CCB] 0.05 0.06 0.01 0.02 0.03 0.06 0.19 4236 3857 1 -#> pred[New 1: Diuretic] 0.07 0.07 0.01 0.02 0.04 0.08 0.25 4221 3740 1 -#> pred[New 1: Placebo] 0.05 0.06 0.01 0.02 0.03 0.07 0.20 4226 3897 1 +#> pred[New 1: Beta Blocker] 0.06 0.06 0.01 0.02 0.04 0.07 0.23 3871 3891 1 +#> pred[New 1: ACE Inhibitor] 0.05 0.05 0.00 0.02 0.03 0.06 0.18 3895 3852 1 +#> pred[New 1: ARB] 0.04 0.04 0.00 0.01 0.03 0.05 0.16 3899 3889 1 +#> pred[New 1: CCB] 0.05 0.05 0.01 0.02 0.03 0.06 0.20 3887 3852 1 +#> pred[New 1: Diuretic] 0.06 0.06 0.01 0.02 0.04 0.08 0.24 3905 3891 1 +#> pred[New 1: Placebo] 0.05 0.05 0.01 0.02 0.03 0.06 0.20 3904 3813 1 plot(db_pred_FE)
-

+

db_pred_RE <- predict(db_fit_RE, 
                       newdata = data.frame(time = 3),
                       baseline = distr(qnorm, mean = -4.2, sd = 1.11^-0.5), 
@@ -645,14 +645,14 @@ 

Further results

#> ------------------------------------------------------------------ Study: New 1 ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[New 1: Beta Blocker] 0.06 0.06 0.01 0.02 0.04 0.08 0.24 3660 3969 1 -#> pred[New 1: ACE Inhibitor] 0.05 0.05 0.00 0.02 0.03 0.06 0.18 3652 3971 1 -#> pred[New 1: ARB] 0.04 0.05 0.00 0.02 0.03 0.05 0.17 3703 3672 1 -#> pred[New 1: CCB] 0.05 0.06 0.01 0.02 0.03 0.07 0.21 3664 3868 1 -#> pred[New 1: Diuretic] 0.07 0.07 0.01 0.02 0.04 0.08 0.26 3668 3857 1 -#> pred[New 1: Placebo] 0.05 0.05 0.01 0.02 0.03 0.06 0.20 3700 3698 1 +#> pred[New 1: Beta Blocker] 0.06 0.06 0.01 0.02 0.04 0.08 0.25 3784 3932 1 +#> pred[New 1: ACE Inhibitor] 0.05 0.05 0.00 0.02 0.03 0.06 0.18 3789 3853 1 +#> pred[New 1: ARB] 0.04 0.05 0.00 0.01 0.03 0.05 0.17 3784 3892 1 +#> pred[New 1: CCB] 0.05 0.06 0.01 0.02 0.03 0.06 0.21 3779 3930 1 +#> pred[New 1: Diuretic] 0.07 0.07 0.01 0.02 0.04 0.08 0.26 3776 3852 1 +#> pred[New 1: Placebo] 0.05 0.05 0.01 0.02 0.03 0.06 0.21 3772 3852 1 plot(db_pred_RE)
-

+

If the baseline and newdata arguments are omitted, predicted probabilities will be produced for every study in the network based on their follow-up times and estimated baseline cloglog @@ -662,256 +662,256 @@

Further results

#> ------------------------------------------------------------------- Study: AASK ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[AASK: Beta Blocker] 0.17 0.01 0.14 0.16 0.17 0.18 0.20 5655 3412 1 -#> pred[AASK: ACE Inhibitor] 0.12 0.01 0.10 0.12 0.12 0.13 0.15 4708 3108 1 -#> pred[AASK: ARB] 0.12 0.01 0.09 0.11 0.12 0.13 0.15 4480 2734 1 -#> pred[AASK: CCB] 0.15 0.01 0.12 0.14 0.14 0.15 0.18 5966 3400 1 -#> pred[AASK: Diuretic] 0.18 0.02 0.14 0.17 0.18 0.19 0.22 4488 3080 1 -#> pred[AASK: Placebo] 0.14 0.02 0.11 0.13 0.14 0.15 0.17 3960 2806 1 +#> pred[AASK: Beta Blocker] 0.17 0.02 0.14 0.16 0.17 0.18 0.20 4723 3246 1 +#> pred[AASK: ACE Inhibitor] 0.13 0.01 0.10 0.12 0.12 0.13 0.15 3772 3061 1 +#> pred[AASK: ARB] 0.12 0.01 0.09 0.11 0.12 0.13 0.15 3487 2967 1 +#> pred[AASK: CCB] 0.15 0.02 0.12 0.14 0.14 0.16 0.18 4204 3078 1 +#> pred[AASK: Diuretic] 0.18 0.02 0.14 0.17 0.18 0.19 0.22 3476 3153 1 +#> pred[AASK: Placebo] 0.14 0.02 0.11 0.13 0.14 0.15 0.17 2844 3267 1 #> #> ----------------------------------------------------------------- Study: ALLHAT ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[ALLHAT: Beta Blocker] 0.04 0.01 0.03 0.04 0.04 0.05 0.06 2884 2082 1 -#> pred[ALLHAT: ACE Inhibitor] 0.03 0.00 0.02 0.03 0.03 0.03 0.04 4606 2724 1 -#> pred[ALLHAT: ARB] 0.03 0.00 0.02 0.03 0.03 0.03 0.04 4004 2573 1 -#> pred[ALLHAT: CCB] 0.04 0.00 0.03 0.03 0.04 0.04 0.05 4506 2378 1 -#> pred[ALLHAT: Diuretic] 0.05 0.01 0.04 0.04 0.05 0.05 0.06 4772 2598 1 -#> pred[ALLHAT: Placebo] 0.03 0.00 0.03 0.03 0.03 0.04 0.04 4515 2632 1 +#> pred[ALLHAT: Beta Blocker] 0.04 0.01 0.03 0.04 0.04 0.05 0.06 2494 2348 1 +#> pred[ALLHAT: ACE Inhibitor] 0.03 0.00 0.02 0.03 0.03 0.03 0.04 3888 2440 1 +#> pred[ALLHAT: ARB] 0.03 0.00 0.02 0.03 0.03 0.03 0.04 3598 2730 1 +#> pred[ALLHAT: CCB] 0.04 0.00 0.03 0.03 0.04 0.04 0.05 3558 2108 1 +#> pred[ALLHAT: Diuretic] 0.05 0.01 0.04 0.04 0.05 0.05 0.06 3860 2665 1 +#> pred[ALLHAT: Placebo] 0.03 0.00 0.03 0.03 0.03 0.04 0.05 3687 2481 1 #> #> ----------------------------------------------------------------- Study: ALPINE ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[ALPINE: Beta Blocker] 0.03 0.01 0.01 0.02 0.03 0.03 0.05 6823 3011 1 -#> pred[ALPINE: ACE Inhibitor] 0.02 0.01 0.01 0.01 0.02 0.02 0.03 7511 3296 1 -#> pred[ALPINE: ARB] 0.02 0.01 0.01 0.01 0.02 0.02 0.03 7616 2912 1 -#> pred[ALPINE: CCB] 0.02 0.01 0.01 0.02 0.02 0.03 0.04 7513 2873 1 -#> pred[ALPINE: Diuretic] 0.03 0.01 0.01 0.02 0.03 0.03 0.05 7689 3038 1 -#> pred[ALPINE: Placebo] 0.02 0.01 0.01 0.02 0.02 0.03 0.04 7480 3157 1 +#> pred[ALPINE: Beta Blocker] 0.03 0.01 0.01 0.02 0.02 0.03 0.05 5764 3098 1 +#> pred[ALPINE: ACE Inhibitor] 0.02 0.01 0.01 0.01 0.02 0.02 0.03 6749 3056 1 +#> pred[ALPINE: ARB] 0.02 0.01 0.01 0.01 0.02 0.02 0.03 7128 2936 1 +#> pred[ALPINE: CCB] 0.02 0.01 0.01 0.02 0.02 0.03 0.04 6932 3156 1 +#> pred[ALPINE: Diuretic] 0.03 0.01 0.01 0.02 0.03 0.03 0.05 7259 2950 1 +#> pred[ALPINE: Placebo] 0.02 0.01 0.01 0.02 0.02 0.03 0.04 6941 2811 1 #> #> ----------------------------------------------------------------- Study: ANBP-2 ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[ANBP-2: Beta Blocker] 0.07 0.01 0.05 0.06 0.07 0.07 0.09 3225 2551 1 -#> pred[ANBP-2: ACE Inhibitor] 0.05 0.01 0.04 0.04 0.05 0.05 0.06 4651 2294 1 -#> pred[ANBP-2: ARB] 0.05 0.01 0.03 0.04 0.05 0.05 0.06 4086 2640 1 -#> pred[ANBP-2: CCB] 0.06 0.01 0.04 0.05 0.06 0.06 0.08 4268 2630 1 -#> pred[ANBP-2: Diuretic] 0.07 0.01 0.06 0.07 0.07 0.08 0.09 4914 2333 1 -#> pred[ANBP-2: Placebo] 0.05 0.01 0.04 0.05 0.05 0.06 0.07 4655 2642 1 +#> pred[ANBP-2: Beta Blocker] 0.07 0.01 0.05 0.06 0.07 0.07 0.09 2612 2178 1 +#> pred[ANBP-2: ACE Inhibitor] 0.05 0.01 0.04 0.04 0.05 0.05 0.06 4351 2710 1 +#> pred[ANBP-2: ARB] 0.05 0.01 0.03 0.04 0.05 0.05 0.06 3664 2424 1 +#> pred[ANBP-2: CCB] 0.06 0.01 0.04 0.05 0.06 0.06 0.08 3639 2552 1 +#> pred[ANBP-2: Diuretic] 0.07 0.01 0.06 0.07 0.07 0.08 0.09 4509 2419 1 +#> pred[ANBP-2: Placebo] 0.05 0.01 0.04 0.05 0.05 0.06 0.07 4125 2600 1 #> #> ------------------------------------------------------------------ Study: ASCOT ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[ASCOT: Beta Blocker] 0.11 0.00 0.10 0.11 0.11 0.11 0.12 4088 2655 1 -#> pred[ASCOT: ACE Inhibitor] 0.08 0.01 0.07 0.08 0.08 0.09 0.10 2459 2425 1 -#> pred[ASCOT: ARB] 0.08 0.01 0.06 0.07 0.08 0.08 0.09 2614 2656 1 -#> pred[ASCOT: CCB] 0.10 0.01 0.08 0.09 0.10 0.10 0.11 2403 2455 1 -#> pred[ASCOT: Diuretic] 0.12 0.01 0.10 0.11 0.12 0.13 0.14 2630 2808 1 -#> pred[ASCOT: Placebo] 0.09 0.01 0.08 0.09 0.09 0.10 0.11 2174 2525 1 +#> pred[ASCOT: Beta Blocker] 0.11 0.00 0.10 0.11 0.11 0.11 0.12 5041 2398 1 +#> pred[ASCOT: ACE Inhibitor] 0.08 0.01 0.07 0.08 0.08 0.09 0.10 2056 2404 1 +#> pred[ASCOT: ARB] 0.08 0.01 0.06 0.07 0.08 0.08 0.09 1963 2425 1 +#> pred[ASCOT: CCB] 0.10 0.01 0.08 0.09 0.10 0.10 0.11 2089 2170 1 +#> pred[ASCOT: Diuretic] 0.12 0.01 0.10 0.11 0.12 0.13 0.14 2014 2428 1 +#> pred[ASCOT: Placebo] 0.09 0.01 0.08 0.09 0.09 0.10 0.11 1512 2075 1 #> #> ------------------------------------------------------------------ Study: CAPPP ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[CAPPP: Beta Blocker] 0.07 0.00 0.07 0.07 0.07 0.08 0.08 5806 3269 1 -#> pred[CAPPP: ACE Inhibitor] 0.05 0.00 0.05 0.05 0.05 0.06 0.06 2102 2436 1 -#> pred[CAPPP: ARB] 0.05 0.01 0.04 0.05 0.05 0.05 0.06 2667 2782 1 -#> pred[CAPPP: CCB] 0.06 0.00 0.05 0.06 0.06 0.07 0.07 2872 3057 1 -#> pred[CAPPP: Diuretic] 0.08 0.01 0.07 0.07 0.08 0.08 0.10 2836 2744 1 -#> pred[CAPPP: Placebo] 0.06 0.01 0.05 0.06 0.06 0.06 0.07 2064 2169 1 +#> pred[CAPPP: Beta Blocker] 0.07 0.00 0.07 0.07 0.07 0.08 0.08 4890 3103 1 +#> pred[CAPPP: ACE Inhibitor] 0.05 0.00 0.05 0.05 0.05 0.06 0.06 1680 2220 1 +#> pred[CAPPP: ARB] 0.05 0.01 0.04 0.05 0.05 0.05 0.06 2092 2140 1 +#> pred[CAPPP: CCB] 0.06 0.00 0.05 0.06 0.06 0.07 0.07 2585 2575 1 +#> pred[CAPPP: Diuretic] 0.08 0.01 0.07 0.08 0.08 0.09 0.10 2135 2501 1 +#> pred[CAPPP: Placebo] 0.06 0.01 0.05 0.06 0.06 0.06 0.07 1449 1855 1 #> #> ------------------------------------------------------------------ Study: CHARM ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[CHARM: Beta Blocker] 0.09 0.01 0.07 0.08 0.09 0.10 0.12 3385 2580 1 -#> pred[CHARM: ACE Inhibitor] 0.07 0.01 0.05 0.06 0.07 0.07 0.09 4917 2990 1 -#> pred[CHARM: ARB] 0.06 0.01 0.05 0.06 0.06 0.07 0.08 5365 2806 1 -#> pred[CHARM: CCB] 0.08 0.01 0.06 0.07 0.08 0.08 0.10 4298 2766 1 -#> pred[CHARM: Diuretic] 0.10 0.01 0.07 0.09 0.10 0.10 0.13 4655 2953 1 -#> pred[CHARM: Placebo] 0.07 0.01 0.06 0.07 0.07 0.08 0.09 5332 3046 1 +#> pred[CHARM: Beta Blocker] 0.09 0.01 0.07 0.08 0.09 0.10 0.12 2361 2250 1 +#> pred[CHARM: ACE Inhibitor] 0.07 0.01 0.05 0.06 0.07 0.07 0.09 4092 2726 1 +#> pred[CHARM: ARB] 0.06 0.01 0.05 0.06 0.06 0.07 0.08 4581 3002 1 +#> pred[CHARM: CCB] 0.08 0.01 0.06 0.07 0.08 0.08 0.10 3558 2717 1 +#> pred[CHARM: Diuretic] 0.10 0.01 0.07 0.09 0.10 0.10 0.13 4112 2808 1 +#> pred[CHARM: Placebo] 0.07 0.01 0.06 0.07 0.07 0.08 0.10 4625 2875 1 #> #> ------------------------------------------------------------------ Study: DREAM ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[DREAM: Beta Blocker] 0.23 0.03 0.18 0.21 0.23 0.24 0.29 2512 2184 1 -#> pred[DREAM: ACE Inhibitor] 0.17 0.02 0.13 0.16 0.17 0.18 0.21 3973 2584 1 -#> pred[DREAM: ARB] 0.16 0.02 0.12 0.14 0.16 0.17 0.21 4037 2412 1 -#> pred[DREAM: CCB] 0.20 0.02 0.15 0.18 0.19 0.21 0.25 3320 2485 1 -#> pred[DREAM: Diuretic] 0.24 0.03 0.19 0.22 0.24 0.26 0.31 4006 2414 1 -#> pred[DREAM: Placebo] 0.19 0.02 0.15 0.17 0.19 0.20 0.23 4534 2696 1 +#> pred[DREAM: Beta Blocker] 0.23 0.03 0.18 0.21 0.23 0.24 0.29 2492 2621 1 +#> pred[DREAM: ACE Inhibitor] 0.17 0.02 0.13 0.16 0.17 0.18 0.21 4212 3075 1 +#> pred[DREAM: ARB] 0.16 0.02 0.12 0.14 0.16 0.17 0.21 3712 2893 1 +#> pred[DREAM: CCB] 0.20 0.03 0.15 0.18 0.19 0.21 0.25 3651 2834 1 +#> pred[DREAM: Diuretic] 0.24 0.03 0.19 0.22 0.24 0.26 0.31 4067 2569 1 +#> pred[DREAM: Placebo] 0.19 0.02 0.15 0.17 0.19 0.20 0.24 4509 2798 1 #> #> ------------------------------------------------------------------- Study: EWPH ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[EWPH: Beta Blocker] 0.06 0.01 0.04 0.05 0.06 0.07 0.09 3975 3022 1 -#> pred[EWPH: ACE Inhibitor] 0.05 0.01 0.03 0.04 0.04 0.05 0.06 5523 2710 1 -#> pred[EWPH: ARB] 0.04 0.01 0.03 0.04 0.04 0.05 0.06 5524 3241 1 -#> pred[EWPH: CCB] 0.05 0.01 0.04 0.05 0.05 0.06 0.08 5349 3231 1 -#> pred[EWPH: Diuretic] 0.07 0.01 0.05 0.06 0.07 0.07 0.09 6077 2781 1 -#> pred[EWPH: Placebo] 0.05 0.01 0.03 0.04 0.05 0.06 0.07 6220 3220 1 +#> pred[EWPH: Beta Blocker] 0.06 0.01 0.04 0.05 0.06 0.07 0.09 3506 2967 1 +#> pred[EWPH: ACE Inhibitor] 0.05 0.01 0.03 0.04 0.04 0.05 0.07 4771 3198 1 +#> pred[EWPH: ARB] 0.04 0.01 0.03 0.04 0.04 0.05 0.06 4052 3280 1 +#> pred[EWPH: CCB] 0.05 0.01 0.04 0.05 0.05 0.06 0.08 4108 3243 1 +#> pred[EWPH: Diuretic] 0.07 0.01 0.05 0.06 0.07 0.07 0.10 4852 3138 1 +#> pred[EWPH: Placebo] 0.05 0.01 0.03 0.04 0.05 0.06 0.07 4749 2947 1 #> #> ------------------------------------------------------------------ Study: FEVER ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[FEVER: Beta Blocker] 0.04 0.01 0.03 0.04 0.04 0.05 0.05 3222 2571 1 -#> pred[FEVER: ACE Inhibitor] 0.03 0.00 0.02 0.03 0.03 0.03 0.04 4674 3094 1 -#> pred[FEVER: ARB] 0.03 0.00 0.02 0.03 0.03 0.03 0.04 4159 2761 1 -#> pred[FEVER: CCB] 0.04 0.00 0.03 0.03 0.03 0.04 0.05 4059 2659 1 -#> pred[FEVER: Diuretic] 0.04 0.01 0.03 0.04 0.04 0.05 0.06 4358 2739 1 -#> pred[FEVER: Placebo] 0.03 0.00 0.03 0.03 0.03 0.04 0.04 4573 3128 1 +#> pred[FEVER: Beta Blocker] 0.04 0.01 0.03 0.04 0.04 0.04 0.05 2565 2642 1 +#> pred[FEVER: ACE Inhibitor] 0.03 0.00 0.02 0.03 0.03 0.03 0.04 3706 2837 1 +#> pred[FEVER: ARB] 0.03 0.00 0.02 0.02 0.03 0.03 0.04 3737 2459 1 +#> pred[FEVER: CCB] 0.03 0.00 0.03 0.03 0.03 0.04 0.05 3697 2988 1 +#> pred[FEVER: Diuretic] 0.04 0.01 0.03 0.04 0.04 0.05 0.06 3942 2928 1 +#> pred[FEVER: Placebo] 0.03 0.00 0.02 0.03 0.03 0.04 0.04 3795 2544 1 #> #> ----------------------------------------------------------------- Study: HAPPHY ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[HAPPHY: Beta Blocker] 0.02 0 0.02 0.02 0.02 0.03 0.03 5506 2808 1 -#> pred[HAPPHY: ACE Inhibitor] 0.02 0 0.01 0.02 0.02 0.02 0.02 4397 3339 1 -#> pred[HAPPHY: ARB] 0.02 0 0.01 0.02 0.02 0.02 0.02 4209 3122 1 -#> pred[HAPPHY: CCB] 0.02 0 0.02 0.02 0.02 0.02 0.03 4625 3140 1 -#> pred[HAPPHY: Diuretic] 0.03 0 0.02 0.02 0.03 0.03 0.03 4019 3222 1 -#> pred[HAPPHY: Placebo] 0.02 0 0.02 0.02 0.02 0.02 0.02 3824 2768 1 +#> pred[HAPPHY: Beta Blocker] 0.02 0 0.02 0.02 0.02 0.03 0.03 4877 3398 1 +#> pred[HAPPHY: ACE Inhibitor] 0.02 0 0.01 0.02 0.02 0.02 0.02 3655 2613 1 +#> pred[HAPPHY: ARB] 0.02 0 0.01 0.02 0.02 0.02 0.02 3736 3039 1 +#> pred[HAPPHY: CCB] 0.02 0 0.02 0.02 0.02 0.02 0.03 3830 2783 1 +#> pred[HAPPHY: Diuretic] 0.03 0 0.02 0.02 0.03 0.03 0.03 3133 2826 1 +#> pred[HAPPHY: Placebo] 0.02 0 0.02 0.02 0.02 0.02 0.02 2870 3062 1 #> #> ------------------------------------------------------------------- Study: HOPE ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[HOPE: Beta Blocker] 0.06 0.01 0.04 0.05 0.06 0.06 0.08 2828 2833 1 -#> pred[HOPE: ACE Inhibitor] 0.04 0.01 0.03 0.04 0.04 0.05 0.06 4547 2994 1 -#> pred[HOPE: ARB] 0.04 0.01 0.03 0.04 0.04 0.04 0.05 4621 3024 1 -#> pred[HOPE: CCB] 0.05 0.01 0.04 0.05 0.05 0.05 0.07 3831 2560 1 -#> pred[HOPE: Diuretic] 0.06 0.01 0.05 0.06 0.06 0.07 0.08 4252 2689 1 -#> pred[HOPE: Placebo] 0.05 0.01 0.04 0.04 0.05 0.05 0.06 5132 3169 1 +#> pred[HOPE: Beta Blocker] 0.06 0.01 0.04 0.05 0.06 0.06 0.08 2246 2122 1 +#> pred[HOPE: ACE Inhibitor] 0.04 0.01 0.03 0.04 0.04 0.05 0.06 3893 3079 1 +#> pred[HOPE: ARB] 0.04 0.01 0.03 0.04 0.04 0.04 0.05 3666 2986 1 +#> pred[HOPE: CCB] 0.05 0.01 0.04 0.04 0.05 0.05 0.07 3231 2836 1 +#> pred[HOPE: Diuretic] 0.06 0.01 0.05 0.06 0.06 0.07 0.08 4129 2995 1 +#> pred[HOPE: Placebo] 0.05 0.01 0.04 0.04 0.05 0.05 0.06 4106 2752 1 #> #> ---------------------------------------------------------------- Study: INSIGHT ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[INSIGHT: Beta Blocker] 0.07 0.01 0.05 0.06 0.06 0.07 0.09 3717 2785 1 -#> pred[INSIGHT: ACE Inhibitor] 0.05 0.01 0.03 0.04 0.05 0.05 0.06 4391 2837 1 -#> pred[INSIGHT: ARB] 0.04 0.01 0.03 0.04 0.04 0.05 0.06 4484 2872 1 -#> pred[INSIGHT: CCB] 0.06 0.01 0.04 0.05 0.06 0.06 0.07 4816 2807 1 -#> pred[INSIGHT: Diuretic] 0.07 0.01 0.05 0.06 0.07 0.08 0.09 5350 3216 1 -#> pred[INSIGHT: Placebo] 0.05 0.01 0.04 0.05 0.05 0.06 0.07 4341 2836 1 +#> pred[INSIGHT: Beta Blocker] 0.07 0.01 0.05 0.06 0.06 0.07 0.08 2646 2628 1 +#> pred[INSIGHT: ACE Inhibitor] 0.05 0.01 0.03 0.04 0.05 0.05 0.06 3590 2713 1 +#> pred[INSIGHT: ARB] 0.04 0.01 0.03 0.04 0.04 0.05 0.06 3423 2317 1 +#> pred[INSIGHT: CCB] 0.06 0.01 0.04 0.05 0.05 0.06 0.07 3740 3088 1 +#> pred[INSIGHT: Diuretic] 0.07 0.01 0.05 0.06 0.07 0.07 0.09 4217 2346 1 +#> pred[INSIGHT: Placebo] 0.05 0.01 0.04 0.05 0.05 0.06 0.07 3560 2604 1 #> #> ----------------------------------------------------------------- Study: INVEST ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[INVEST: Beta Blocker] 0.08 0.00 0.08 0.08 0.08 0.08 0.09 7158 2641 1 -#> pred[INVEST: ACE Inhibitor] 0.06 0.01 0.05 0.06 0.06 0.06 0.07 2310 2203 1 -#> pred[INVEST: ARB] 0.06 0.01 0.05 0.05 0.06 0.06 0.07 2478 3089 1 -#> pred[INVEST: CCB] 0.07 0.00 0.06 0.07 0.07 0.07 0.08 2517 2451 1 -#> pred[INVEST: Diuretic] 0.09 0.01 0.07 0.08 0.09 0.09 0.11 2592 2860 1 -#> pred[INVEST: Placebo] 0.07 0.01 0.06 0.06 0.07 0.07 0.08 2079 2136 1 +#> pred[INVEST: Beta Blocker] 0.08 0.00 0.08 0.08 0.08 0.08 0.09 6040 2876 1 +#> pred[INVEST: ACE Inhibitor] 0.06 0.01 0.05 0.06 0.06 0.06 0.07 2019 2434 1 +#> pred[INVEST: ARB] 0.06 0.01 0.05 0.05 0.06 0.06 0.07 1978 2354 1 +#> pred[INVEST: CCB] 0.07 0.00 0.06 0.07 0.07 0.07 0.08 2229 2585 1 +#> pred[INVEST: Diuretic] 0.09 0.01 0.07 0.08 0.09 0.09 0.11 2069 2556 1 +#> pred[INVEST: Placebo] 0.07 0.01 0.06 0.06 0.07 0.07 0.08 1500 1955 1 #> #> ------------------------------------------------------------------- Study: LIFE ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[LIFE: Beta Blocker] 0.08 0.00 0.07 0.08 0.08 0.08 0.09 7400 3069 1 -#> pred[LIFE: ACE Inhibitor] 0.06 0.01 0.05 0.06 0.06 0.06 0.07 2756 2296 1 -#> pred[LIFE: ARB] 0.06 0.01 0.05 0.05 0.06 0.06 0.07 2813 3038 1 -#> pred[LIFE: CCB] 0.07 0.01 0.06 0.07 0.07 0.07 0.08 3027 2539 1 -#> pred[LIFE: Diuretic] 0.09 0.01 0.07 0.08 0.09 0.09 0.10 2978 3170 1 -#> pred[LIFE: Placebo] 0.07 0.01 0.05 0.06 0.07 0.07 0.08 2433 2670 1 +#> pred[LIFE: Beta Blocker] 0.08 0.00 0.07 0.08 0.08 0.08 0.09 7078 2746 1 +#> pred[LIFE: ACE Inhibitor] 0.06 0.01 0.05 0.06 0.06 0.06 0.07 2268 2786 1 +#> pred[LIFE: ARB] 0.06 0.01 0.05 0.05 0.06 0.06 0.07 1975 2442 1 +#> pred[LIFE: CCB] 0.07 0.01 0.06 0.07 0.07 0.07 0.08 2941 2434 1 +#> pred[LIFE: Diuretic] 0.09 0.01 0.07 0.08 0.09 0.09 0.11 2351 2509 1 +#> pred[LIFE: Placebo] 0.07 0.01 0.05 0.06 0.07 0.07 0.08 1728 2165 1 #> #> ------------------------------------------------------------------ Study: MRC-E ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[MRC-E: Beta Blocker] 0.03 0 0.02 0.03 0.03 0.03 0.04 4075 2916 1 -#> pred[MRC-E: ACE Inhibitor] 0.02 0 0.02 0.02 0.02 0.02 0.03 5624 2677 1 -#> pred[MRC-E: ARB] 0.02 0 0.01 0.02 0.02 0.02 0.03 5582 3186 1 -#> pred[MRC-E: CCB] 0.03 0 0.02 0.02 0.02 0.03 0.03 4965 3083 1 -#> pred[MRC-E: Diuretic] 0.03 0 0.02 0.03 0.03 0.03 0.04 4743 3214 1 -#> pred[MRC-E: Placebo] 0.02 0 0.02 0.02 0.02 0.03 0.03 5116 3265 1 +#> pred[MRC-E: Beta Blocker] 0.03 0 0.02 0.03 0.03 0.03 0.04 3514 3056 1 +#> pred[MRC-E: ACE Inhibitor] 0.02 0 0.02 0.02 0.02 0.02 0.03 4767 3028 1 +#> pred[MRC-E: ARB] 0.02 0 0.01 0.02 0.02 0.02 0.03 4670 3162 1 +#> pred[MRC-E: CCB] 0.03 0 0.02 0.02 0.02 0.03 0.03 4412 2808 1 +#> pred[MRC-E: Diuretic] 0.03 0 0.02 0.03 0.03 0.03 0.04 4325 2982 1 +#> pred[MRC-E: Placebo] 0.02 0 0.02 0.02 0.02 0.03 0.03 4216 3534 1 #> #> ----------------------------------------------------------------- Study: NORDIL ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[NORDIL: Beta Blocker] 0.05 0.00 0.04 0.05 0.05 0.05 0.06 6952 3161 1 -#> pred[NORDIL: ACE Inhibitor] 0.04 0.00 0.03 0.03 0.04 0.04 0.04 2845 2633 1 -#> pred[NORDIL: ARB] 0.03 0.00 0.03 0.03 0.03 0.04 0.04 3001 2653 1 -#> pred[NORDIL: CCB] 0.04 0.00 0.04 0.04 0.04 0.04 0.05 3330 2870 1 -#> pred[NORDIL: Diuretic] 0.05 0.01 0.04 0.05 0.05 0.06 0.06 2988 3019 1 -#> pred[NORDIL: Placebo] 0.04 0.00 0.03 0.04 0.04 0.04 0.05 2510 2459 1 +#> pred[NORDIL: Beta Blocker] 0.05 0.00 0.04 0.05 0.05 0.05 0.06 6403 3275 1 +#> pred[NORDIL: ACE Inhibitor] 0.04 0.00 0.03 0.03 0.04 0.04 0.04 2326 2387 1 +#> pred[NORDIL: ARB] 0.03 0.00 0.03 0.03 0.03 0.04 0.04 2037 2491 1 +#> pred[NORDIL: CCB] 0.04 0.00 0.04 0.04 0.04 0.04 0.05 2673 2639 1 +#> pred[NORDIL: Diuretic] 0.05 0.01 0.04 0.05 0.05 0.06 0.06 2339 2475 1 +#> pred[NORDIL: Placebo] 0.04 0.00 0.03 0.04 0.04 0.04 0.05 1833 2091 1 #> #> ------------------------------------------------------------------ Study: PEACE ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[PEACE: Beta Blocker] 0.14 0.02 0.11 0.13 0.14 0.15 0.18 2525 2210 1 -#> pred[PEACE: ACE Inhibitor] 0.10 0.01 0.08 0.09 0.10 0.11 0.13 3686 2599 1 -#> pred[PEACE: ARB] 0.09 0.01 0.07 0.09 0.09 0.10 0.12 3891 2759 1 -#> pred[PEACE: CCB] 0.12 0.02 0.09 0.11 0.12 0.13 0.15 3283 2496 1 -#> pred[PEACE: Diuretic] 0.15 0.02 0.11 0.13 0.15 0.16 0.20 3744 2479 1 -#> pred[PEACE: Placebo] 0.11 0.01 0.09 0.10 0.11 0.12 0.14 4224 2391 1 +#> pred[PEACE: Beta Blocker] 0.14 0.02 0.10 0.13 0.14 0.15 0.18 2153 2171 1 +#> pred[PEACE: ACE Inhibitor] 0.10 0.01 0.08 0.09 0.10 0.11 0.13 3960 2836 1 +#> pred[PEACE: ARB] 0.09 0.01 0.07 0.09 0.09 0.10 0.13 3461 2694 1 +#> pred[PEACE: CCB] 0.12 0.02 0.09 0.11 0.12 0.13 0.15 3122 2631 1 +#> pred[PEACE: Diuretic] 0.15 0.02 0.11 0.13 0.15 0.16 0.19 3703 2711 1 +#> pred[PEACE: Placebo] 0.11 0.01 0.09 0.10 0.11 0.12 0.14 4168 2706 1 #> #> ------------------------------------------------------------------ Study: SCOPE ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[SCOPE: Beta Blocker] 0.06 0.01 0.05 0.06 0.06 0.07 0.09 3570 2705 1 -#> pred[SCOPE: ACE Inhibitor] 0.05 0.01 0.03 0.04 0.05 0.05 0.06 5082 2885 1 -#> pred[SCOPE: ARB] 0.04 0.01 0.03 0.04 0.04 0.05 0.06 5747 2796 1 -#> pred[SCOPE: CCB] 0.06 0.01 0.04 0.05 0.05 0.06 0.07 4483 3018 1 -#> pred[SCOPE: Diuretic] 0.07 0.01 0.05 0.06 0.07 0.08 0.09 4968 3072 1 -#> pred[SCOPE: Placebo] 0.05 0.01 0.04 0.05 0.05 0.06 0.07 5511 2599 1 +#> pred[SCOPE: Beta Blocker] 0.06 0.01 0.05 0.06 0.06 0.07 0.09 2151 2008 1 +#> pred[SCOPE: ACE Inhibitor] 0.05 0.01 0.03 0.04 0.05 0.05 0.06 3607 2638 1 +#> pred[SCOPE: ARB] 0.04 0.01 0.03 0.04 0.04 0.05 0.06 3985 2702 1 +#> pred[SCOPE: CCB] 0.06 0.01 0.04 0.05 0.05 0.06 0.07 2959 2261 1 +#> pred[SCOPE: Diuretic] 0.07 0.01 0.05 0.06 0.07 0.08 0.09 3938 2644 1 +#> pred[SCOPE: Placebo] 0.05 0.01 0.04 0.05 0.05 0.06 0.07 4557 2312 1 #> #> ------------------------------------------------------------------- Study: SHEP ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[SHEP: Beta Blocker] 0.09 0.01 0.06 0.08 0.09 0.09 0.11 3056 2136 1 -#> pred[SHEP: ACE Inhibitor] 0.06 0.01 0.05 0.06 0.06 0.07 0.08 4602 2896 1 -#> pred[SHEP: ARB] 0.06 0.01 0.04 0.05 0.06 0.06 0.08 4440 3005 1 -#> pred[SHEP: CCB] 0.07 0.01 0.05 0.07 0.07 0.08 0.10 4048 2549 1 -#> pred[SHEP: Diuretic] 0.09 0.01 0.07 0.08 0.09 0.10 0.12 4560 2938 1 -#> pred[SHEP: Placebo] 0.07 0.01 0.05 0.06 0.07 0.08 0.09 4874 2720 1 +#> pred[SHEP: Beta Blocker] 0.09 0.01 0.06 0.08 0.09 0.09 0.12 2162 2221 1 +#> pred[SHEP: ACE Inhibitor] 0.06 0.01 0.05 0.06 0.06 0.07 0.08 4209 2968 1 +#> pred[SHEP: ARB] 0.06 0.01 0.04 0.05 0.06 0.06 0.08 3542 2638 1 +#> pred[SHEP: CCB] 0.07 0.01 0.05 0.07 0.07 0.08 0.10 3452 2651 1 +#> pred[SHEP: Diuretic] 0.09 0.01 0.07 0.08 0.09 0.10 0.12 4340 2571 1 +#> pred[SHEP: Placebo] 0.07 0.01 0.05 0.06 0.07 0.08 0.09 4156 2845 1 #> #> ----------------------------------------------------------------- Study: STOP-2 ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[STOP-2: Beta Blocker] 0.05 0.00 0.05 0.05 0.05 0.06 0.06 4136 2926 1 -#> pred[STOP-2: ACE Inhibitor] 0.04 0.00 0.03 0.04 0.04 0.04 0.05 2861 2937 1 -#> pred[STOP-2: ARB] 0.04 0.00 0.03 0.03 0.04 0.04 0.05 3248 2908 1 -#> pred[STOP-2: CCB] 0.05 0.00 0.04 0.04 0.05 0.05 0.05 3968 3120 1 -#> pred[STOP-2: Diuretic] 0.06 0.01 0.05 0.05 0.06 0.06 0.07 3510 2808 1 -#> pred[STOP-2: Placebo] 0.04 0.00 0.03 0.04 0.04 0.05 0.05 2797 2902 1 +#> pred[STOP-2: Beta Blocker] 0.05 0.00 0.04 0.05 0.05 0.06 0.06 3564 2894 1 +#> pred[STOP-2: ACE Inhibitor] 0.04 0.00 0.03 0.04 0.04 0.04 0.05 2323 2639 1 +#> pred[STOP-2: ARB] 0.04 0.00 0.03 0.03 0.04 0.04 0.04 2316 2854 1 +#> pred[STOP-2: CCB] 0.05 0.00 0.04 0.04 0.05 0.05 0.05 3358 3095 1 +#> pred[STOP-2: Diuretic] 0.06 0.01 0.05 0.05 0.06 0.06 0.07 2722 2768 1 +#> pred[STOP-2: Placebo] 0.04 0.00 0.03 0.04 0.04 0.05 0.05 1929 1935 1 #> #> ------------------------------------------------------------------ Study: VALUE ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[VALUE: Beta Blocker] 0.20 0.02 0.15 0.18 0.19 0.21 0.25 3076 2358 1.00 -#> pred[VALUE: ACE Inhibitor] 0.15 0.02 0.11 0.13 0.14 0.16 0.19 4181 2812 1.00 -#> pred[VALUE: ARB] 0.14 0.02 0.10 0.13 0.14 0.15 0.17 4273 2621 1.00 -#> pred[VALUE: CCB] 0.17 0.02 0.13 0.16 0.17 0.18 0.21 4724 2630 1.01 -#> pred[VALUE: Diuretic] 0.21 0.03 0.16 0.19 0.21 0.22 0.27 4515 2389 1.00 -#> pred[VALUE: Placebo] 0.16 0.02 0.12 0.15 0.16 0.17 0.21 4034 2833 1.00 +#> pred[VALUE: Beta Blocker] 0.20 0.03 0.15 0.18 0.19 0.21 0.25 2623 2133 1 +#> pred[VALUE: ACE Inhibitor] 0.15 0.02 0.11 0.13 0.14 0.16 0.19 3370 2479 1 +#> pred[VALUE: ARB] 0.14 0.02 0.10 0.13 0.14 0.15 0.17 3700 2326 1 +#> pred[VALUE: CCB] 0.17 0.02 0.13 0.16 0.17 0.18 0.21 3514 2400 1 +#> pred[VALUE: Diuretic] 0.21 0.03 0.16 0.19 0.21 0.22 0.27 3360 2698 1 +#> pred[VALUE: Placebo] 0.16 0.02 0.12 0.15 0.16 0.17 0.21 3284 2180 1 plot(db_pred_RE_studies) -

+

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

(db_ranks <- posterior_ranks(db_fit_RE))
 #>                     mean   sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> rank[Beta Blocker]  5.19 0.42    5   5   5   5     6     2702       NA    1
-#> rank[ACE Inhibitor] 1.84 0.54    1   2   2   2     3     3679     3568    1
-#> rank[ARB]           1.28 0.52    1   1   1   1     3     3323     2878    1
-#> rank[CCB]           3.71 0.52    3   3   4   4     4     3382     3433    1
-#> rank[Diuretic]      5.79 0.41    5   6   6   6     6     2817       NA    1
-#> rank[Placebo]       3.19 0.60    2   3   3   4     4     3322     3236    1
+#> rank[Beta Blocker]  5.18 0.43    5   5   5   5     6     1971       NA    1
+#> rank[ACE Inhibitor] 1.85 0.54    1   2   2   2     3     3345     2913    1
+#> rank[ARB]           1.27 0.52    1   1   1   1     3     3185     3079    1
+#> rank[CCB]           3.69 0.54    3   3   4   4     4     2977     2623    1
+#> rank[Diuretic]      5.80 0.41    5   6   6   6     6     2280       NA    1
+#> rank[Placebo]       3.21 0.60    2   3   3   4     4     2826     2278    1
 plot(db_ranks)

(db_rankprobs <- posterior_rank_probs(db_fit_RE))
 #>                  p_rank[1] p_rank[2] p_rank[3] p_rank[4] p_rank[5] p_rank[6]
-#> d[Beta Blocker]       0.00      0.00      0.00      0.01      0.79       0.2
-#> d[ACE Inhibitor]      0.23      0.70      0.07      0.00      0.00       0.0
-#> d[ARB]                0.76      0.21      0.03      0.00      0.00       0.0
-#> d[CCB]                0.00      0.02      0.26      0.71      0.01       0.0
+#> d[Beta Blocker]       0.00      0.00      0.00      0.02      0.78       0.2
+#> d[ACE Inhibitor]      0.23      0.71      0.06      0.01      0.00       0.0
+#> d[ARB]                0.77      0.20      0.03      0.00      0.00       0.0
+#> d[CCB]                0.00      0.02      0.27      0.69      0.01       0.0
 #> d[Diuretic]           0.00      0.00      0.00      0.00      0.20       0.8
-#> d[Placebo]            0.01      0.07      0.64      0.27      0.00       0.0
+#> d[Placebo]            0.01      0.07      0.64      0.28      0.01       0.0
 plot(db_rankprobs)
-

+

(db_cumrankprobs <- posterior_rank_probs(db_fit_RE, cumulative = TRUE))
 #>                  p_rank[1] p_rank[2] p_rank[3] p_rank[4] p_rank[5] p_rank[6]
-#> d[Beta Blocker]       0.00      0.00      0.00      0.01       0.8         1
-#> d[ACE Inhibitor]      0.23      0.93      1.00      1.00       1.0         1
-#> d[ARB]                0.76      0.97      1.00      1.00       1.0         1
-#> d[CCB]                0.00      0.02      0.28      0.99       1.0         1
+#> d[Beta Blocker]       0.00      0.00      0.00      0.02       0.8         1
+#> d[ACE Inhibitor]      0.23      0.93      0.99      1.00       1.0         1
+#> d[ARB]                0.77      0.97      1.00      1.00       1.0         1
+#> d[CCB]                0.00      0.02      0.30      0.99       1.0         1
 #> d[Diuretic]           0.00      0.00      0.00      0.00       0.2         1
-#> d[Placebo]            0.01      0.08      0.73      1.00       1.0         1
+#> d[Placebo]            0.01      0.08      0.71      0.99       1.0         1
 plot(db_cumrankprobs)
-

+

References

diff --git a/vignettes/example_dietary_fat.html b/vignettes/example_dietary_fat.html index 254fdeba7..030038c90 100644 --- a/vignettes/example_dietary_fat.html +++ b/vignettes/example_dietary_fat.html @@ -453,10 +453,10 @@

Fixed effect meta-analysis

#> 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[Reduced Fat] -0.01 0.00 0.05 -0.11 -0.04 -0.01 0.03 0.10 3324 1 -#> lp__ 5386.16 0.06 2.43 5380.38 5384.81 5386.53 5387.90 5389.85 1636 1 +#> d[Reduced Fat] -0.01 0.00 0.05 -0.11 -0.04 -0.01 0.03 0.10 3448 1 +#> lp__ 5325.54 0.06 2.28 5320.39 5324.19 5325.82 5327.18 5329.17 1560 1 #> -#> Samples were drawn using NUTS(diag_e) at Fri Jun 16 15:49:42 2023. +#> Samples were drawn using NUTS(diag_e) at Tue Jan 9 17:56:03 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).
@@ -467,7 +467,7 @@

Fixed effect meta-analysis

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

plot_prior_posterior(diet_fit_FE)
-

+

Random effects meta-analysis

@@ -502,11 +502,11 @@

Random effects meta-analysis

#> 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[Reduced Fat] -0.02 0.00 0.09 -0.19 -0.06 -0.01 0.03 0.16 1954 1.00 -#> lp__ 5378.69 0.11 3.97 5370.03 5376.28 5378.98 5381.43 5385.76 1204 1.01 -#> tau 0.13 0.00 0.12 0.00 0.04 0.10 0.18 0.44 914 1.01 +#> d[Reduced Fat] -0.02 0.00 0.09 -0.20 -0.07 -0.02 0.03 0.15 2045 1 +#> lp__ 5340.70 0.13 3.95 5332.26 5338.20 5340.96 5343.47 5347.61 971 1 +#> tau 0.13 0.00 0.11 0.01 0.05 0.10 0.18 0.41 1172 1 #> -#> Samples were drawn using NUTS(diag_e) at Fri Jun 16 15:50:01 2023. +#> Samples were drawn using NUTS(diag_e) at Tue Jan 9 17:56:14 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).
@@ -518,28 +518,28 @@

Random effects meta-analysis

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

plot_prior_posterior(diet_fit_RE, prior = c("trt", "het"))
-

+

Model comparison

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

(dic_FE <- dic(diet_fit_FE))
-#> Residual deviance: 22.5 (on 21 data points)
-#>                pD: 11.3
-#>               DIC: 33.8
+#> Residual deviance: 22.2 (on 21 data points) +#> pD: 11 +#> DIC: 33.2
(dic_RE <- dic(diet_fit_RE))
 #> Residual deviance: 21.4 (on 21 data points)
-#>                pD: 13.5
-#>               DIC: 34.9
+#> pD: 13.6 +#> DIC: 35

Both models appear to fit the data well, as the residual deviance is close to the number of data points. The DIC is very similar between models, so the FE model may be preferred for parsimony.

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

plot(dic_FE)
-

+

plot(dic_RE)
-

+

@@ -557,19 +557,19 @@

Further results

type = "response") pred_FE #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[Control] 0.07 0.06 0.01 0.03 0.05 0.08 0.21 4079 3852 1 -#> pred[Reduced Fat] 0.07 0.06 0.01 0.03 0.05 0.08 0.21 4076 3837 1 +#> pred[Control] 0.07 0.06 0.01 0.03 0.05 0.08 0.21 4202 3972 1 +#> pred[Reduced Fat] 0.06 0.06 0.01 0.03 0.05 0.08 0.21 4224 3978 1 plot(pred_FE)
-

+

pred_RE <- predict(diet_fit_RE, 
                    baseline = distr(qnorm, mean = -3, sd = 1.77^-0.5), 
                    type = "response")
 pred_RE
 #>                   mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> pred[Control]     0.07 0.05 0.01 0.03 0.05 0.08  0.21     4066     3840    1
-#> pred[Reduced Fat] 0.07 0.05 0.01 0.03 0.05 0.08  0.21     4053     3891    1
+#> pred[Control]     0.07 0.06 0.01 0.03 0.05 0.08  0.22     4043     3537    1
+#> pred[Reduced Fat] 0.07 0.06 0.01 0.03 0.05 0.08  0.22     4020     3720    1
 plot(pred_RE)
-

+

If the baseline argument is omitted, predicted rates will be produced for every study in the network based on their estimated baseline log rate \(\mu_j\):

@@ -578,56 +578,56 @@

Further results

#> ------------------------------------------------------------------- Study: DART ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[DART: Control] 0.06 0 0.05 0.06 0.06 0.06 0.07 5452 3272 1 -#> pred[DART: Reduced Fat] 0.06 0 0.05 0.06 0.06 0.06 0.07 6911 3353 1 +#> pred[DART: Control] 0.06 0 0.05 0.06 0.06 0.06 0.07 5543 2859 1 +#> pred[DART: Reduced Fat] 0.06 0 0.05 0.06 0.06 0.06 0.07 6370 3212 1 #> #> ------------------------------------------------------ Study: London Corn/Olive ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[London Corn/Olive: Control] 0.07 0.02 0.03 0.06 0.07 0.09 0.13 7073 2747 1 -#> pred[London Corn/Olive: Reduced Fat] 0.07 0.02 0.03 0.06 0.07 0.09 0.13 7289 2771 1 +#> pred[London Corn/Olive: Control] 0.07 0.03 0.03 0.06 0.07 0.09 0.13 7039 2639 1 +#> pred[London Corn/Olive: Reduced Fat] 0.07 0.02 0.03 0.05 0.07 0.09 0.13 7254 2690 1 #> #> --------------------------------------------------------- Study: London Low Fat ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[London Low Fat: Control] 0.06 0.01 0.04 0.05 0.06 0.06 0.08 6524 3043 1 -#> pred[London Low Fat: Reduced Fat] 0.06 0.01 0.04 0.05 0.06 0.06 0.08 7178 3122 1 +#> pred[London Low Fat: Control] 0.06 0.01 0.04 0.05 0.06 0.06 0.08 8037 2986 1 +#> pred[London Low Fat: Reduced Fat] 0.06 0.01 0.04 0.05 0.06 0.06 0.08 9224 3205 1 #> #> ----------------------------------------------------- Study: Minnesota Coronary ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[Minnesota Coronary: Control] 0.05 0 0.05 0.05 0.05 0.06 0.06 4692 3481 1 -#> pred[Minnesota Coronary: Reduced Fat] 0.05 0 0.05 0.05 0.05 0.06 0.06 6816 3434 1 +#> pred[Minnesota Coronary: Control] 0.05 0 0.05 0.05 0.05 0.06 0.06 4832 3586 1 +#> pred[Minnesota Coronary: Reduced Fat] 0.05 0 0.05 0.05 0.05 0.06 0.06 6395 3547 1 #> #> --------------------------------------------------------------- Study: MRC Soya ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[MRC Soya: Control] 0.04 0.01 0.03 0.04 0.04 0.04 0.05 6175 2950 1 -#> pred[MRC Soya: Reduced Fat] 0.04 0.01 0.03 0.04 0.04 0.04 0.05 6730 3128 1 +#> pred[MRC Soya: Control] 0.04 0.01 0.03 0.04 0.04 0.04 0.05 6442 2770 1 +#> pred[MRC Soya: Reduced Fat] 0.04 0.01 0.03 0.04 0.04 0.04 0.05 7057 2832 1 #> #> -------------------------------------------------------- Study: Oslo Diet-Heart ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[Oslo Diet-Heart: Control] 0.06 0.01 0.05 0.06 0.06 0.07 0.08 6170 3114 1 -#> pred[Oslo Diet-Heart: Reduced Fat] 0.06 0.01 0.05 0.06 0.06 0.07 0.08 7358 3304 1 +#> pred[Oslo Diet-Heart: Control] 0.06 0.01 0.05 0.06 0.06 0.07 0.08 6028 2675 1 +#> pred[Oslo Diet-Heart: Reduced Fat] 0.06 0.01 0.05 0.06 0.06 0.07 0.08 8013 3279 1 #> #> ------------------------------------------------------------------ Study: STARS ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[STARS: Control] 0.02 0.01 0.01 0.01 0.02 0.03 0.05 6615 2782 1 -#> pred[STARS: Reduced Fat] 0.02 0.01 0.01 0.01 0.02 0.03 0.05 6555 2869 1 +#> pred[STARS: Control] 0.02 0.01 0.01 0.01 0.02 0.03 0.05 7028 2787 1 +#> pred[STARS: Reduced Fat] 0.02 0.01 0.01 0.01 0.02 0.03 0.05 6997 2750 1 #> #> ------------------------------------------------------ Study: Sydney Diet-Heart ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[Sydney Diet-Heart: Control] 0.03 0 0.03 0.03 0.03 0.04 0.04 6128 3054 1 -#> pred[Sydney Diet-Heart: Reduced Fat] 0.03 0 0.03 0.03 0.03 0.04 0.04 6857 2848 1 +#> pred[Sydney Diet-Heart: Control] 0.03 0 0.03 0.03 0.03 0.04 0.04 6388 3364 1 +#> pred[Sydney Diet-Heart: Reduced Fat] 0.03 0 0.03 0.03 0.03 0.04 0.04 7326 3336 1 #> #> ------------------------------------------------ Study: Veterans Administration ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS -#> pred[Veterans Administration: Control] 0.11 0.01 0.1 0.11 0.11 0.12 0.13 5138 3259 -#> pred[Veterans Administration: Reduced Fat] 0.11 0.01 0.1 0.11 0.11 0.12 0.13 7201 3502 +#> pred[Veterans Administration: Control] 0.11 0.01 0.1 0.11 0.11 0.12 0.13 4882 3030 +#> pred[Veterans Administration: Reduced Fat] 0.11 0.01 0.1 0.11 0.11 0.12 0.13 7066 3282 #> Rhat #> pred[Veterans Administration: Control] 1 #> pred[Veterans Administration: Reduced Fat] 1 @@ -635,13 +635,13 @@

Further results

#> ------------------------------------------------ Study: Veterans Diet & Skin CA ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS -#> pred[Veterans Diet & Skin CA: Control] 0.01 0.01 0 0.01 0.01 0.02 0.03 6490 2644 -#> pred[Veterans Diet & Skin CA: Reduced Fat] 0.01 0.01 0 0.01 0.01 0.02 0.03 6503 2607 +#> pred[Veterans Diet & Skin CA: Control] 0.01 0.01 0 0.01 0.01 0.02 0.03 6770 2728 +#> pred[Veterans Diet & Skin CA: Reduced Fat] 0.01 0.01 0 0.01 0.01 0.02 0.03 6895 2652 #> Rhat #> pred[Veterans Diet & Skin CA: Control] 1 #> pred[Veterans Diet & Skin CA: Reduced Fat] 1 plot(pred_FE_studies) + ggplot2::facet_grid(Study~., labeller = ggplot2::label_wrap_gen(width = 10)) -

+

References

diff --git a/vignettes/example_hta_psoriasis.html b/vignettes/example_hta_psoriasis.html index 4d0286a89..f4049325b 100644 --- a/vignettes/example_hta_psoriasis.html +++ b/vignettes/example_hta_psoriasis.html @@ -495,19 +495,19 @@

Fixed effect meta-analysis

#> 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[Ciclosporin] 1.93 0.01 0.35 1.30 1.69 1.91 2.15 2.64 1523 1 -#> d[Efalizumab] 1.19 0.00 0.06 1.07 1.15 1.19 1.23 1.30 2250 1 -#> d[Etanercept 25 mg] 1.51 0.00 0.10 1.32 1.44 1.51 1.57 1.70 1794 1 -#> d[Etanercept 50 mg] 1.92 0.00 0.10 1.72 1.85 1.92 1.99 2.12 2056 1 -#> d[Fumaderm] 1.47 0.01 0.49 0.61 1.14 1.44 1.77 2.50 2529 1 -#> d[Infliximab] 2.33 0.01 0.27 1.83 2.15 2.33 2.52 2.87 2829 1 -#> d[Methotrexate] 1.63 0.01 0.45 0.77 1.33 1.62 1.92 2.53 1719 1 -#> lp__ -3405.15 0.10 3.60 -3412.90 -3407.43 -3404.79 -3402.53 -3399.25 1327 1 +#> d[Ciclosporin] 1.93 0.01 0.34 1.31 1.68 1.91 2.15 2.63 1320 1 +#> d[Efalizumab] 1.19 0.00 0.06 1.08 1.15 1.19 1.23 1.30 1911 1 +#> d[Etanercept 25 mg] 1.51 0.00 0.09 1.33 1.44 1.51 1.57 1.69 2287 1 +#> d[Etanercept 50 mg] 1.92 0.00 0.10 1.73 1.85 1.92 1.98 2.11 2514 1 +#> d[Fumaderm] 1.48 0.01 0.49 0.61 1.14 1.45 1.79 2.51 2348 1 +#> d[Infliximab] 2.34 0.01 0.28 1.83 2.16 2.33 2.52 2.91 2842 1 +#> d[Methotrexate] 1.62 0.01 0.44 0.77 1.32 1.62 1.92 2.51 1540 1 +#> lp__ -3516.17 0.09 3.58 -3524.40 -3518.36 -3515.86 -3513.56 -3510.21 1454 1 #> cc[PASI50] 0.00 NaN 0.00 0.00 0.00 0.00 0.00 0.00 NaN NaN -#> cc[PASI75] 0.76 0.00 0.03 0.70 0.74 0.76 0.78 0.82 5385 1 -#> cc[PASI90] 1.56 0.00 0.05 1.46 1.53 1.56 1.60 1.67 5914 1 +#> cc[PASI75] 0.76 0.00 0.03 0.70 0.73 0.75 0.78 0.82 5385 1 +#> cc[PASI90] 1.56 0.00 0.05 1.46 1.53 1.56 1.60 1.67 6851 1 #> -#> Samples were drawn using NUTS(diag_e) at Fri Jun 16 16:16:43 2023. +#> Samples were drawn using NUTS(diag_e) at Tue Jan 9 18:07:36 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).
@@ -532,12 +532,12 @@

Fixed effect meta-analysis

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

plot_prior_posterior(pso_fit_FE)
-

+

Focusing specifically on the cutpoints we see that these are highly identified by the data, which is why the implicit flat priors work for these parameters.

plot_prior_posterior(pso_fit_FE, prior = "aux")
-

+

Random effects meta-analysis

@@ -581,20 +581,20 @@

Random effects meta-analysis

#> post-warmup draws per chain=2500, total post-warmup draws=10000. #> #> mean se_mean sd 2.5% 25% 50% 75% 97.5% n_eff Rhat -#> d[Ciclosporin] 2.04 0.01 0.44 1.30 1.74 2.00 2.29 2.98 3155 1 -#> d[Efalizumab] 1.19 0.00 0.18 0.80 1.10 1.19 1.28 1.58 4356 1 -#> d[Etanercept 25 mg] 1.53 0.00 0.25 1.00 1.40 1.52 1.65 2.06 4941 1 -#> d[Etanercept 50 mg] 1.93 0.00 0.28 1.33 1.79 1.93 2.07 2.52 4523 1 -#> d[Fumaderm] 1.50 0.01 0.64 0.29 1.09 1.47 1.88 2.82 7767 1 -#> d[Infliximab] 2.31 0.00 0.39 1.54 2.08 2.31 2.55 3.09 7015 1 -#> d[Methotrexate] 1.73 0.01 0.66 0.57 1.30 1.69 2.09 3.15 4093 1 -#> lp__ -3410.42 0.19 6.73 -3424.09 -3414.94 -3410.10 -3405.61 -3398.14 1245 1 -#> tau 0.32 0.01 0.23 0.02 0.16 0.27 0.44 0.88 920 1 +#> d[Ciclosporin] 2.02 0.01 0.42 1.29 1.74 1.99 2.27 2.95 2437 1 +#> d[Efalizumab] 1.19 0.00 0.18 0.80 1.10 1.19 1.27 1.56 3907 1 +#> d[Etanercept 25 mg] 1.53 0.00 0.24 1.04 1.40 1.52 1.65 2.03 5361 1 +#> d[Etanercept 50 mg] 1.92 0.00 0.28 1.35 1.78 1.92 2.06 2.49 4927 1 +#> d[Fumaderm] 1.48 0.01 0.61 0.34 1.09 1.46 1.85 2.78 8575 1 +#> d[Infliximab] 2.32 0.00 0.38 1.55 2.08 2.31 2.55 3.08 6738 1 +#> d[Methotrexate] 1.71 0.01 0.63 0.57 1.31 1.68 2.06 3.09 3771 1 +#> lp__ -3523.36 0.20 6.74 -3537.03 -3527.97 -3523.18 -3518.57 -3510.96 1170 1 +#> tau 0.31 0.01 0.22 0.02 0.15 0.27 0.43 0.84 860 1 #> cc[PASI50] 0.00 NaN 0.00 0.00 0.00 0.00 0.00 0.00 NaN NaN -#> cc[PASI75] 0.76 0.00 0.03 0.70 0.74 0.76 0.78 0.82 15406 1 -#> cc[PASI90] 1.56 0.00 0.05 1.46 1.53 1.56 1.60 1.67 18542 1 +#> cc[PASI75] 0.76 0.00 0.03 0.70 0.73 0.76 0.78 0.82 18439 1 +#> cc[PASI90] 1.56 0.00 0.05 1.46 1.53 1.56 1.60 1.67 21740 1 #> -#> Samples were drawn using NUTS(diag_e) at Fri Jun 16 16:19:08 2023. +#> Samples were drawn using NUTS(diag_e) at Tue Jan 9 18:08:43 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).
@@ -606,27 +606,27 @@

Random effects meta-analysis

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

plot_prior_posterior(pso_fit_RE, prior = c("trt", "aux", "het"))
-

+

Model comparison

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

(dic_FE <- dic(pso_fit_FE))
-#> Residual deviance: 74.9 (on 58 data points)
-#>                pD: 25.5
-#>               DIC: 100.4
+#> Residual deviance: 75.1 (on 58 data points) +#> pD: 25.6 +#> DIC: 100.6
(dic_RE <- dic(pso_fit_RE))
-#> Residual deviance: 62.5 (on 58 data points)
-#>                pD: 33.5
-#>               DIC: 96
+#> Residual deviance: 62.7 (on 58 data points) +#> pD: 33.4 +#> DIC: 96.1

The random effects model has a lower DIC and the residual deviance is closer to the number of data points, so is preferred in this case.

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

plot(dic_FE)
-

+

plot(dic_RE)
-

+

Most data points are fit well, with posterior mean residual deviances close to the degrees of freedom. The Meffert 1997 study has a substantially higher residual deviance contribution, which could be @@ -652,63 +652,63 @@

Predicted probabilities of response

type = "response") pred_FE #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[Supportive care, PASI50] 0.14 0.02 0.10 0.12 0.14 0.15 0.18 3631 3432 1.00 -#> pred[Supportive care, PASI75] 0.03 0.01 0.02 0.03 0.03 0.04 0.05 3807 3516 1.00 -#> pred[Supportive care, PASI90] 0.00 0.00 0.00 0.00 0.00 0.00 0.01 4068 3394 1.00 -#> pred[Ciclosporin, PASI50] 0.78 0.10 0.57 0.72 0.79 0.86 0.94 1601 1559 1.01 -#> pred[Ciclosporin, PASI75] 0.53 0.13 0.28 0.43 0.52 0.62 0.80 1597 1637 1.01 -#> pred[Ciclosporin, PASI90] 0.25 0.11 0.08 0.16 0.23 0.31 0.51 1620 1581 1.00 -#> pred[Efalizumab, PASI50] 0.54 0.04 0.45 0.51 0.54 0.56 0.62 2923 3442 1.00 -#> pred[Efalizumab, PASI75] 0.25 0.04 0.19 0.23 0.25 0.28 0.33 3036 3325 1.00 -#> pred[Efalizumab, PASI90] 0.07 0.02 0.04 0.06 0.07 0.08 0.11 3343 3688 1.00 -#> pred[Etanercept 25 mg, PASI50] 0.66 0.05 0.56 0.63 0.66 0.69 0.75 2119 3171 1.00 -#> pred[Etanercept 25 mg, PASI75] 0.37 0.05 0.27 0.33 0.36 0.40 0.47 2154 3381 1.00 -#> pred[Etanercept 25 mg, PASI90] 0.13 0.03 0.08 0.11 0.12 0.15 0.19 2243 3551 1.00 -#> pred[Etanercept 50 mg, PASI50] 0.79 0.04 0.71 0.77 0.79 0.82 0.86 2311 3362 1.00 -#> pred[Etanercept 50 mg, PASI75] 0.53 0.05 0.42 0.49 0.53 0.56 0.63 2320 3169 1.00 -#> pred[Etanercept 50 mg, PASI90] 0.23 0.04 0.16 0.20 0.23 0.26 0.32 2443 3047 1.00 -#> pred[Fumaderm, PASI50] 0.63 0.16 0.31 0.51 0.64 0.75 0.92 2891 2000 1.00 -#> pred[Fumaderm, PASI75] 0.36 0.17 0.10 0.23 0.34 0.47 0.75 2895 2022 1.00 -#> pred[Fumaderm, PASI90] 0.14 0.11 0.02 0.06 0.11 0.19 0.45 2900 2149 1.00 -#> pred[Infliximab, PASI50] 0.88 0.05 0.76 0.85 0.89 0.92 0.97 2936 2860 1.00 -#> pred[Infliximab, PASI75] 0.68 0.10 0.48 0.61 0.68 0.75 0.86 2991 2924 1.00 -#> pred[Infliximab, PASI90] 0.38 0.11 0.20 0.30 0.37 0.45 0.60 2994 2911 1.00 -#> pred[Methotrexate, PASI50] 0.69 0.15 0.36 0.59 0.70 0.80 0.93 1769 2043 1.00 -#> pred[Methotrexate, PASI75] 0.42 0.16 0.13 0.30 0.41 0.53 0.76 1760 2038 1.00 -#> pred[Methotrexate, PASI90] 0.17 0.11 0.03 0.09 0.15 0.23 0.46 1769 1966 1.00 +#> pred[Supportive care, PASI50] 0.14 0.02 0.10 0.12 0.14 0.15 0.18 3631 3432 1 +#> pred[Supportive care, PASI75] 0.03 0.01 0.02 0.03 0.03 0.04 0.05 3798 3795 1 +#> pred[Supportive care, PASI90] 0.00 0.00 0.00 0.00 0.00 0.00 0.01 4176 3581 1 +#> pred[Ciclosporin, PASI50] 0.78 0.10 0.57 0.72 0.79 0.85 0.94 1465 1547 1 +#> pred[Ciclosporin, PASI75] 0.53 0.13 0.28 0.43 0.52 0.62 0.79 1462 1773 1 +#> pred[Ciclosporin, PASI90] 0.24 0.11 0.08 0.16 0.23 0.31 0.50 1481 1647 1 +#> pred[Efalizumab, PASI50] 0.54 0.04 0.45 0.51 0.53 0.57 0.62 3061 3193 1 +#> pred[Efalizumab, PASI75] 0.25 0.04 0.19 0.23 0.25 0.28 0.33 3153 3293 1 +#> pred[Efalizumab, PASI90] 0.07 0.02 0.04 0.06 0.07 0.08 0.11 3409 3327 1 +#> pred[Etanercept 25 mg, PASI50] 0.66 0.05 0.56 0.63 0.66 0.69 0.75 2707 3322 1 +#> pred[Etanercept 25 mg, PASI75] 0.37 0.05 0.27 0.33 0.37 0.40 0.46 2738 3788 1 +#> pred[Etanercept 25 mg, PASI90] 0.13 0.03 0.08 0.11 0.12 0.14 0.19 2906 3155 1 +#> pred[Etanercept 50 mg, PASI50] 0.79 0.04 0.71 0.77 0.79 0.82 0.86 2779 3495 1 +#> pred[Etanercept 50 mg, PASI75] 0.53 0.05 0.42 0.49 0.53 0.56 0.63 2769 3678 1 +#> pred[Etanercept 50 mg, PASI90] 0.23 0.04 0.16 0.20 0.23 0.26 0.32 2892 3481 1 +#> pred[Fumaderm, PASI50] 0.63 0.17 0.31 0.52 0.64 0.76 0.92 2793 2222 1 +#> pred[Fumaderm, PASI75] 0.37 0.17 0.10 0.24 0.35 0.48 0.76 2781 2275 1 +#> pred[Fumaderm, PASI90] 0.15 0.12 0.02 0.06 0.11 0.20 0.45 2763 2260 1 +#> pred[Infliximab, PASI50] 0.88 0.06 0.75 0.85 0.89 0.93 0.97 2927 2764 1 +#> pred[Infliximab, PASI75] 0.68 0.10 0.47 0.62 0.68 0.75 0.86 2890 2912 1 +#> pred[Infliximab, PASI90] 0.38 0.11 0.19 0.30 0.37 0.45 0.61 2904 2750 1 +#> pred[Methotrexate, PASI50] 0.68 0.15 0.37 0.59 0.70 0.80 0.93 1654 1948 1 +#> pred[Methotrexate, PASI75] 0.42 0.16 0.13 0.30 0.41 0.53 0.75 1642 1918 1 +#> pred[Methotrexate, PASI90] 0.17 0.11 0.03 0.09 0.15 0.23 0.45 1658 1987 1 plot(pred_FE) -

+

pred_RE <- predict(pso_fit_RE, 
                    baseline = distr(qnorm, mean = -1.097, sd = 123^-0.5), 
                    type = "response")
 pred_RE
 #>                                mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
 #> pred[Supportive care, PASI50]  0.14 0.02 0.10 0.12 0.14 0.15  0.18     9886     9993    1
-#> pred[Supportive care, PASI75]  0.03 0.01 0.02 0.03 0.03 0.04  0.05    10253    10100    1
-#> pred[Supportive care, PASI90]  0.00 0.00 0.00 0.00 0.00 0.00  0.01    11065     9464    1
-#> pred[Ciclosporin, PASI50]      0.80 0.11 0.57 0.74 0.82 0.89  0.97     3820     3219    1
-#> pred[Ciclosporin, PASI75]      0.56 0.16 0.28 0.45 0.56 0.67  0.87     3838     3154    1
-#> pred[Ciclosporin, PASI90]      0.28 0.15 0.08 0.18 0.26 0.36  0.64     3897     3202    1
-#> pred[Efalizumab, PASI50]       0.54 0.08 0.37 0.49 0.54 0.58  0.70     5661     3984    1
-#> pred[Efalizumab, PASI75]       0.26 0.07 0.14 0.22 0.25 0.29  0.40     5716     3974    1
-#> pred[Efalizumab, PASI90]       0.08 0.03 0.03 0.06 0.07 0.09  0.15     5834     3972    1
-#> pred[Etanercept 25 mg, PASI50] 0.66 0.09 0.46 0.61 0.66 0.72  0.84     5913     4067    1
-#> pred[Etanercept 25 mg, PASI75] 0.38 0.10 0.19 0.32 0.37 0.43  0.59     5965     4186    1
-#> pred[Etanercept 25 mg, PASI90] 0.14 0.06 0.05 0.10 0.13 0.16  0.29     6104     4392    1
-#> pred[Etanercept 50 mg, PASI50] 0.79 0.08 0.59 0.75 0.80 0.84  0.93     5405     3886    1
-#> pred[Etanercept 50 mg, PASI75] 0.53 0.11 0.29 0.47 0.53 0.59  0.76     5412     4016    1
-#> pred[Etanercept 50 mg, PASI90] 0.24 0.09 0.09 0.19 0.23 0.28  0.46     5540     4115    1
-#> pred[Fumaderm, PASI50]         0.63 0.20 0.21 0.49 0.65 0.78  0.96     8267     5197    1
-#> pred[Fumaderm, PASI75]         0.38 0.21 0.06 0.22 0.35 0.51  0.84     8338     5146    1
-#> pred[Fumaderm, PASI90]         0.16 0.15 0.01 0.06 0.12 0.22  0.57     8273     5428    1
-#> pred[Infliximab, PASI50]       0.87 0.08 0.66 0.83 0.89 0.93  0.98     7628     4995    1
-#> pred[Infliximab, PASI75]       0.66 0.13 0.37 0.58 0.68 0.76  0.89     7639     5157    1
-#> pred[Infliximab, PASI90]       0.37 0.14 0.13 0.28 0.36 0.46  0.67     7644     5164    1
-#> pred[Methotrexate, PASI50]     0.70 0.18 0.30 0.58 0.72 0.84  0.98     4827     3070    1
-#> pred[Methotrexate, PASI75]     0.45 0.21 0.10 0.29 0.43 0.60  0.91     4850     3085    1
-#> pred[Methotrexate, PASI90]     0.21 0.18 0.02 0.09 0.16 0.29  0.70     4889     3149    1
+#> pred[Supportive care, PASI75]  0.03 0.01 0.02 0.03 0.03 0.04  0.05    10471     9755    1
+#> pred[Supportive care, PASI90]  0.00 0.00 0.00 0.00 0.00 0.00  0.01    11189     9998    1
+#> pred[Ciclosporin, PASI50]      0.80 0.10 0.57 0.74 0.81 0.88  0.97     2891     2681    1
+#> pred[Ciclosporin, PASI75]      0.56 0.15 0.28 0.45 0.55 0.66  0.87     2857     2603    1
+#> pred[Ciclosporin, PASI90]      0.28 0.14 0.08 0.18 0.25 0.35  0.62     2896     2773    1
+#> pred[Efalizumab, PASI50]       0.53 0.08 0.37 0.49 0.54 0.58  0.69     5018     3190    1
+#> pred[Efalizumab, PASI75]       0.26 0.06 0.14 0.22 0.25 0.29  0.40     5080     3220    1
+#> pred[Efalizumab, PASI90]       0.07 0.03 0.03 0.06 0.07 0.09  0.14     5195     3201    1
+#> pred[Etanercept 25 mg, PASI50] 0.66 0.09 0.46 0.61 0.67 0.72  0.83     5965     4297    1
+#> pred[Etanercept 25 mg, PASI75] 0.38 0.09 0.20 0.32 0.37 0.43  0.58     5967     4145    1
+#> pred[Etanercept 25 mg, PASI90] 0.14 0.06 0.05 0.10 0.13 0.16  0.27     6030     4166    1
+#> pred[Etanercept 50 mg, PASI50] 0.79 0.08 0.59 0.75 0.80 0.84  0.92     5795     3901    1
+#> pred[Etanercept 50 mg, PASI75] 0.53 0.11 0.30 0.47 0.53 0.59  0.74     5828     4022    1
+#> pred[Etanercept 50 mg, PASI90] 0.24 0.09 0.09 0.19 0.23 0.28  0.44     5865     4122    1
+#> pred[Fumaderm, PASI50]         0.63 0.19 0.22 0.50 0.64 0.78  0.95     8804     6212    1
+#> pred[Fumaderm, PASI75]         0.37 0.20 0.06 0.22 0.35 0.51  0.82     8801     6264    1
+#> pred[Fumaderm, PASI90]         0.16 0.14 0.01 0.06 0.11 0.21  0.55     8856     6381    1
+#> pred[Infliximab, PASI50]       0.87 0.08 0.67 0.83 0.89 0.93  0.98     7199     5104    1
+#> pred[Infliximab, PASI75]       0.67 0.13 0.38 0.59 0.68 0.76  0.89     7201     5220    1
+#> pred[Infliximab, PASI90]       0.37 0.14 0.13 0.28 0.37 0.46  0.67     7243     5377    1
+#> pred[Methotrexate, PASI50]     0.70 0.18 0.29 0.58 0.72 0.83  0.98     4456     2702    1
+#> pred[Methotrexate, PASI75]     0.45 0.21 0.10 0.29 0.43 0.59  0.89     4447     2722    1
+#> pred[Methotrexate, PASI90]     0.21 0.17 0.02 0.09 0.16 0.28  0.67     4419     2758    1
 plot(pred_RE)
-

+

If instead of information on the baseline PASI 50 response probit probability we have PASI 50 event counts, we can use these to construct a Beta distribution for the baseline probability of PASI 50 response. @@ -726,31 +726,31 @@

Predicted probabilities of response

pred_FE_beta #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat #> pred[Supportive care, PASI50] 0.14 0.02 0.10 0.12 0.14 0.15 0.17 3940 4002 1 -#> pred[Supportive care, PASI75] 0.03 0.01 0.02 0.03 0.03 0.04 0.05 4082 4057 1 -#> pred[Supportive care, PASI90] 0.00 0.00 0.00 0.00 0.00 0.00 0.01 4371 3724 1 -#> pred[Ciclosporin, PASI50] 0.78 0.10 0.58 0.72 0.79 0.85 0.94 1658 1987 1 -#> pred[Ciclosporin, PASI75] 0.53 0.13 0.29 0.43 0.52 0.62 0.79 1658 1965 1 -#> pred[Ciclosporin, PASI90] 0.24 0.11 0.08 0.16 0.23 0.31 0.50 1684 1926 1 -#> pred[Efalizumab, PASI50] 0.54 0.04 0.46 0.51 0.54 0.56 0.61 3290 3569 1 -#> pred[Efalizumab, PASI75] 0.25 0.03 0.19 0.23 0.25 0.27 0.32 3323 3713 1 -#> pred[Efalizumab, PASI90] 0.07 0.01 0.05 0.06 0.07 0.08 0.10 3473 3569 1 -#> pred[Etanercept 25 mg, PASI50] 0.66 0.05 0.57 0.63 0.66 0.69 0.74 2500 3212 1 -#> pred[Etanercept 25 mg, PASI75] 0.37 0.05 0.28 0.33 0.37 0.40 0.46 2508 3037 1 -#> pred[Etanercept 25 mg, PASI90] 0.13 0.03 0.08 0.11 0.12 0.14 0.18 2557 3604 1 -#> pred[Etanercept 50 mg, PASI50] 0.79 0.04 0.72 0.77 0.79 0.82 0.86 2768 3281 1 -#> pred[Etanercept 50 mg, PASI75] 0.53 0.05 0.43 0.49 0.53 0.56 0.62 2737 3331 1 -#> pred[Etanercept 50 mg, PASI90] 0.23 0.04 0.16 0.20 0.23 0.26 0.31 2758 3251 1 -#> pred[Fumaderm, PASI50] 0.63 0.16 0.31 0.52 0.63 0.75 0.93 2808 2212 1 -#> pred[Fumaderm, PASI75] 0.36 0.17 0.11 0.24 0.34 0.47 0.75 2808 2332 1 -#> pred[Fumaderm, PASI90] 0.14 0.11 0.02 0.06 0.11 0.19 0.45 2809 2318 1 -#> pred[Infliximab, PASI50] 0.88 0.05 0.76 0.85 0.89 0.92 0.96 2954 2774 1 -#> pred[Infliximab, PASI75] 0.68 0.10 0.48 0.61 0.68 0.75 0.85 3005 2828 1 -#> pred[Infliximab, PASI90] 0.38 0.10 0.19 0.30 0.37 0.44 0.59 3001 2788 1 -#> pred[Methotrexate, PASI50] 0.69 0.15 0.37 0.59 0.70 0.80 0.93 1840 2180 1 -#> pred[Methotrexate, PASI75] 0.42 0.16 0.14 0.30 0.41 0.53 0.75 1831 2092 1 -#> pred[Methotrexate, PASI90] 0.17 0.11 0.03 0.09 0.15 0.23 0.45 1839 2194 1 +#> pred[Supportive care, PASI75] 0.03 0.01 0.02 0.03 0.03 0.04 0.05 4150 3816 1 +#> pred[Supportive care, PASI90] 0.00 0.00 0.00 0.00 0.00 0.00 0.01 4410 3897 1 +#> pred[Ciclosporin, PASI50] 0.78 0.10 0.58 0.72 0.79 0.85 0.94 1410 1921 1 +#> pred[Ciclosporin, PASI75] 0.53 0.13 0.29 0.43 0.52 0.62 0.79 1412 1768 1 +#> pred[Ciclosporin, PASI90] 0.24 0.11 0.08 0.16 0.23 0.30 0.50 1427 1631 1 +#> pred[Efalizumab, PASI50] 0.54 0.04 0.46 0.51 0.54 0.56 0.61 3267 3490 1 +#> pred[Efalizumab, PASI75] 0.25 0.03 0.19 0.23 0.25 0.27 0.32 3330 3666 1 +#> pred[Efalizumab, PASI90] 0.07 0.01 0.04 0.06 0.07 0.08 0.10 3498 3813 1 +#> pred[Etanercept 25 mg, PASI50] 0.66 0.04 0.57 0.63 0.66 0.69 0.74 2871 2833 1 +#> pred[Etanercept 25 mg, PASI75] 0.37 0.05 0.28 0.33 0.37 0.40 0.46 2982 3380 1 +#> pred[Etanercept 25 mg, PASI90] 0.13 0.03 0.08 0.11 0.12 0.14 0.18 3225 3574 1 +#> pred[Etanercept 50 mg, PASI50] 0.79 0.04 0.72 0.77 0.79 0.82 0.86 2867 3036 1 +#> pred[Etanercept 50 mg, PASI75] 0.53 0.05 0.43 0.49 0.52 0.56 0.62 3050 3340 1 +#> pred[Etanercept 50 mg, PASI90] 0.23 0.04 0.16 0.20 0.23 0.25 0.31 3249 3249 1 +#> pred[Fumaderm, PASI50] 0.63 0.16 0.32 0.52 0.64 0.76 0.92 2796 2015 1 +#> pred[Fumaderm, PASI75] 0.37 0.17 0.11 0.24 0.34 0.48 0.75 2834 2037 1 +#> pred[Fumaderm, PASI90] 0.15 0.12 0.02 0.06 0.11 0.20 0.45 2801 1995 1 +#> pred[Infliximab, PASI50] 0.88 0.05 0.76 0.85 0.89 0.92 0.97 2960 2277 1 +#> pred[Infliximab, PASI75] 0.68 0.10 0.48 0.62 0.69 0.75 0.87 2921 2330 1 +#> pred[Infliximab, PASI90] 0.38 0.11 0.19 0.30 0.37 0.45 0.61 2932 2409 1 +#> pred[Methotrexate, PASI50] 0.68 0.15 0.37 0.59 0.70 0.79 0.92 1582 1997 1 +#> pred[Methotrexate, PASI75] 0.42 0.16 0.14 0.29 0.41 0.53 0.74 1577 2074 1 +#> pred[Methotrexate, PASI90] 0.17 0.11 0.03 0.09 0.15 0.23 0.44 1590 2137 1 plot(pred_FE_beta) -

+

pred_RE_beta <- predict(pso_fit_RE, 
                         baseline = distr(qbeta, 56, 408-56),
                         baseline_type = "response",
@@ -758,31 +758,31 @@ 

Predicted probabilities of response

pred_RE_beta #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat #> pred[Supportive care, PASI50] 0.14 0.02 0.11 0.13 0.14 0.15 0.17 9843 9606 1 -#> pred[Supportive care, PASI75] 0.03 0.01 0.02 0.03 0.03 0.04 0.05 10425 9634 1 -#> pred[Supportive care, PASI90] 0.00 0.00 0.00 0.00 0.00 0.00 0.01 11490 9632 1 -#> pred[Ciclosporin, PASI50] 0.80 0.11 0.57 0.74 0.82 0.88 0.97 3902 3056 1 -#> pred[Ciclosporin, PASI75] 0.56 0.15 0.28 0.45 0.56 0.67 0.87 3924 2995 1 -#> pred[Ciclosporin, PASI90] 0.28 0.14 0.08 0.18 0.26 0.36 0.64 3978 3263 1 -#> pred[Efalizumab, PASI50] 0.54 0.08 0.38 0.49 0.54 0.58 0.70 5446 4339 1 -#> pred[Efalizumab, PASI75] 0.26 0.06 0.14 0.22 0.25 0.29 0.40 5511 4216 1 -#> pred[Efalizumab, PASI90] 0.07 0.03 0.03 0.06 0.07 0.09 0.15 5635 4455 1 -#> pred[Etanercept 25 mg, PASI50] 0.66 0.09 0.46 0.61 0.66 0.72 0.83 6179 4147 1 -#> pred[Etanercept 25 mg, PASI75] 0.38 0.10 0.20 0.32 0.37 0.43 0.59 6233 4095 1 -#> pred[Etanercept 25 mg, PASI90] 0.14 0.06 0.05 0.10 0.13 0.16 0.28 6367 4196 1 -#> pred[Etanercept 50 mg, PASI50] 0.79 0.08 0.58 0.75 0.80 0.84 0.93 5479 3544 1 -#> pred[Etanercept 50 mg, PASI75] 0.53 0.11 0.29 0.47 0.53 0.59 0.76 5476 3674 1 -#> pred[Etanercept 50 mg, PASI90] 0.24 0.09 0.09 0.19 0.23 0.28 0.45 5580 3691 1 -#> pred[Fumaderm, PASI50] 0.63 0.20 0.21 0.49 0.65 0.79 0.96 8326 5222 1 -#> pred[Fumaderm, PASI75] 0.38 0.21 0.06 0.22 0.35 0.51 0.83 8392 5294 1 -#> pred[Fumaderm, PASI90] 0.16 0.15 0.01 0.06 0.12 0.22 0.56 8347 5384 1 -#> pred[Infliximab, PASI50] 0.87 0.08 0.67 0.84 0.89 0.93 0.98 7664 5059 1 -#> pred[Infliximab, PASI75] 0.66 0.13 0.37 0.59 0.67 0.76 0.89 7669 5301 1 -#> pred[Infliximab, PASI90] 0.37 0.14 0.13 0.28 0.36 0.46 0.67 7677 5326 1 -#> pred[Methotrexate, PASI50] 0.70 0.18 0.30 0.58 0.72 0.84 0.98 4891 3247 1 -#> pred[Methotrexate, PASI75] 0.45 0.21 0.10 0.29 0.43 0.60 0.91 4913 3171 1 -#> pred[Methotrexate, PASI90] 0.21 0.18 0.02 0.09 0.16 0.29 0.70 4951 3248 1 +#> pred[Supportive care, PASI75] 0.03 0.01 0.02 0.03 0.03 0.04 0.05 10410 9613 1 +#> pred[Supportive care, PASI90] 0.00 0.00 0.00 0.00 0.00 0.00 0.01 12274 9519 1 +#> pred[Ciclosporin, PASI50] 0.80 0.10 0.57 0.74 0.81 0.88 0.97 3035 2838 1 +#> pred[Ciclosporin, PASI75] 0.56 0.15 0.28 0.45 0.55 0.66 0.87 3003 2786 1 +#> pred[Ciclosporin, PASI90] 0.28 0.14 0.08 0.18 0.25 0.35 0.62 3060 2825 1 +#> pred[Efalizumab, PASI50] 0.53 0.07 0.38 0.49 0.54 0.58 0.68 4688 3388 1 +#> pred[Efalizumab, PASI75] 0.26 0.06 0.14 0.22 0.25 0.29 0.39 4765 3360 1 +#> pred[Efalizumab, PASI90] 0.07 0.03 0.03 0.06 0.07 0.09 0.14 4943 3392 1 +#> pred[Etanercept 25 mg, PASI50] 0.66 0.09 0.47 0.61 0.67 0.71 0.83 5847 4057 1 +#> pred[Etanercept 25 mg, PASI75] 0.38 0.09 0.20 0.32 0.37 0.43 0.58 5850 4035 1 +#> pred[Etanercept 25 mg, PASI90] 0.14 0.06 0.05 0.10 0.13 0.16 0.27 5991 4071 1 +#> pred[Etanercept 50 mg, PASI50] 0.79 0.08 0.59 0.75 0.80 0.84 0.92 5774 3766 1 +#> pred[Etanercept 50 mg, PASI75] 0.53 0.11 0.30 0.47 0.53 0.59 0.74 5801 3891 1 +#> pred[Etanercept 50 mg, PASI90] 0.24 0.09 0.09 0.19 0.23 0.28 0.44 5909 4035 1 +#> pred[Fumaderm, PASI50] 0.63 0.19 0.22 0.50 0.64 0.78 0.95 8902 6259 1 +#> pred[Fumaderm, PASI75] 0.37 0.20 0.06 0.22 0.35 0.50 0.82 8891 6286 1 +#> pred[Fumaderm, PASI90] 0.16 0.14 0.01 0.06 0.11 0.21 0.55 8960 6369 1 +#> pred[Infliximab, PASI50] 0.87 0.08 0.67 0.84 0.89 0.93 0.98 7029 5043 1 +#> pred[Infliximab, PASI75] 0.67 0.13 0.38 0.59 0.68 0.76 0.89 7031 5042 1 +#> pred[Infliximab, PASI90] 0.37 0.14 0.13 0.28 0.36 0.46 0.67 7095 5071 1 +#> pred[Methotrexate, PASI50] 0.70 0.18 0.30 0.58 0.72 0.84 0.98 4471 2855 1 +#> pred[Methotrexate, PASI75] 0.45 0.21 0.10 0.29 0.43 0.59 0.89 4472 2878 1 +#> pred[Methotrexate, PASI90] 0.21 0.17 0.02 0.09 0.16 0.28 0.67 4484 2720 1 plot(pred_RE_beta)
-

+

(Notice that these results are equivalent to those calculated above using the Normal distribution for the baseline probit probability, since these event counts correspond to the same probit probability.)

@@ -794,7 +794,7 @@

Predicted probabilities of response

facet_null() + aes(colour = Category) + scale_colour_brewer(palette = "Blues") -

+

If the baseline argument is omitted, predicted probabilities will be produced for every study in the network based on their estimated baseline probit probability \(\mu_j\).

@@ -807,40 +807,40 @@

Ranks and rank probabilities

better (the outcomes are positive).

(pso_ranks <- posterior_ranks(pso_fit_RE, lower_better = FALSE))
 #>                        mean   sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> rank[Supportive care]  7.99 0.12    8   8   8   8     8     5976       NA    1
-#> rank[Ciclosporin]      2.76 1.28    1   2   3   4     5     7445     7599    1
-#> rank[Efalizumab]       6.33 0.82    4   6   7   7     7     5703     5550    1
-#> rank[Etanercept 25 mg] 4.94 1.07    3   4   5   6     7     7249     5668    1
-#> rank[Etanercept 50 mg] 3.05 1.24    1   2   3   4     6     5641     5104    1
-#> rank[Fumaderm]         4.86 1.97    1   3   5   7     7     7970     5590    1
-#> rank[Infliximab]       1.84 1.21    1   1   1   2     5     3683     4661    1
-#> rank[Methotrexate]     4.23 1.88    1   3   4   6     7     6051     5623    1
+#> rank[Supportive care]  7.99 0.11    8   8   8   8     8     6794       NA    1
+#> rank[Ciclosporin]      2.77 1.27    1   2   3   4     5     6291     6805    1
+#> rank[Efalizumab]       6.35 0.81    4   6   7   7     7     5929       NA    1
+#> rank[Etanercept 25 mg] 4.92 1.07    3   4   5   6     7     6353     5633    1
+#> rank[Etanercept 50 mg] 3.05 1.22    1   2   3   4     6     4814     5452    1
+#> rank[Fumaderm]         4.91 1.93    1   3   5   7     7     8323     6866    1
+#> rank[Infliximab]       1.77 1.17    1   1   1   2     5     3843     4744    1
+#> rank[Methotrexate]     4.24 1.86    1   3   4   6     7     5385     5667    1
 plot(pso_ranks)
-

+

(pso_rankprobs <- posterior_rank_probs(pso_fit_RE, lower_better = FALSE))
 #>                     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[Supportive care]       0.00      0.00      0.00      0.00      0.00      0.00      0.01      0.99
-#> d[Ciclosporin]           0.17      0.29      0.27      0.16      0.08      0.02      0.00      0.00
-#> d[Efalizumab]            0.00      0.00      0.01      0.02      0.10      0.36      0.51      0.00
-#> d[Etanercept 25 mg]      0.00      0.01      0.08      0.21      0.38      0.26      0.05      0.00
-#> d[Etanercept 50 mg]      0.08      0.30      0.26      0.24      0.09      0.02      0.01      0.00
-#> d[Fumaderm]              0.08      0.09      0.10      0.12      0.16      0.18      0.27      0.01
-#> d[Infliximab]            0.57      0.20      0.13      0.06      0.03      0.01      0.00      0.00
-#> d[Methotrexate]          0.10      0.12      0.15      0.18      0.16      0.14      0.15      0.00
+#> d[Ciclosporin]           0.17      0.29      0.27      0.17      0.07      0.02      0.00      0.00
+#> d[Efalizumab]            0.00      0.00      0.01      0.03      0.10      0.36      0.52      0.00
+#> d[Etanercept 25 mg]      0.00      0.01      0.08      0.21      0.39      0.26      0.05      0.00
+#> d[Etanercept 50 mg]      0.08      0.30      0.27      0.24      0.09      0.02      0.01      0.00
+#> d[Fumaderm]              0.07      0.09      0.10      0.11      0.16      0.19      0.27      0.01
+#> d[Infliximab]            0.60      0.18      0.12      0.06      0.02      0.01      0.00      0.00
+#> d[Methotrexate]          0.09      0.12      0.15      0.18      0.17      0.15      0.14      0.00
 plot(pso_rankprobs)
-

+

(pso_cumrankprobs <- posterior_rank_probs(pso_fit_RE, lower_better = FALSE, cumulative = TRUE))
 #>                     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[Supportive care]       0.00      0.00      0.00      0.00      0.00      0.00      0.01         1
 #> d[Ciclosporin]           0.17      0.46      0.73      0.90      0.98      1.00      1.00         1
-#> d[Efalizumab]            0.00      0.00      0.01      0.03      0.13      0.49      1.00         1
-#> d[Etanercept 25 mg]      0.00      0.02      0.10      0.31      0.69      0.95      1.00         1
-#> d[Etanercept 50 mg]      0.08      0.38      0.64      0.88      0.97      0.99      1.00         1
-#> d[Fumaderm]              0.08      0.17      0.26      0.38      0.54      0.72      0.99         1
-#> d[Infliximab]            0.57      0.76      0.89      0.95      0.98      1.00      1.00         1
-#> d[Methotrexate]          0.10      0.21      0.37      0.54      0.71      0.85      1.00         1
+#> d[Efalizumab]            0.00      0.00      0.01      0.03      0.13      0.48      1.00         1
+#> d[Etanercept 25 mg]      0.00      0.02      0.10      0.31      0.70      0.95      1.00         1
+#> d[Etanercept 50 mg]      0.08      0.38      0.65      0.89      0.97      0.99      1.00         1
+#> d[Fumaderm]              0.07      0.15      0.25      0.37      0.53      0.72      0.99         1
+#> d[Infliximab]            0.60      0.78      0.90      0.96      0.99      1.00      1.00         1
+#> d[Methotrexate]          0.09      0.21      0.36      0.54      0.71      0.85      1.00         1
 plot(pso_cumrankprobs)
-

+

diff --git a/vignettes/example_ndmm.html b/vignettes/example_ndmm.html index 99a41ed84..81f5adf2b 100644 --- a/vignettes/example_ndmm.html +++ b/vignettes/example_ndmm.html @@ -363,73 +363,73 @@

Example: Newly diagnosed multiple -
library(multinma)
-#> For execution on a local, multicore CPU with excess RAM we recommend calling
-#> options(mc.cores = parallel::detectCores())
-#> 
-#> Attaching package: 'multinma'
-#> The following objects are masked from 'package:stats':
-#> 
-#>     dgamma, pgamma, qgamma
-library(survival)
-library(dplyr)
-#> 
-#> Attaching package: 'dplyr'
-#> The following objects are masked from 'package:stats':
-#> 
-#>     filter, lag
-#> The following objects are masked from 'package:base':
-#> 
-#>     intersect, setdiff, setequal, union
-library(ggplot2)
-library(loo)
-#> This is loo version 2.6.0
-#> - Online documentation and vignettes at mc-stan.org/loo
-#> - As of v2.0.0 loo defaults to 1 core but we recommend using as many as possible. Use the 'cores' argument or set options(mc.cores = NUM_CORES) for an entire session.
-#> - Windows 10 users: loo may be very slow if 'mc.cores' is set in your .Rprofile file (see https://github.com/stan-dev/loo/issues/94).
-
options(mc.cores = parallel::detectCores())
-

Leahy and Walsh (2019) present a network of five trials +

library(multinma)
+#> For execution on a local, multicore CPU with excess RAM we recommend calling
+#> options(mc.cores = parallel::detectCores())
+#> 
+#> Attaching package: 'multinma'
+#> The following objects are masked from 'package:stats':
+#> 
+#>     dgamma, pgamma, qgamma
+library(survival)
+library(dplyr)
+#> 
+#> Attaching package: 'dplyr'
+#> The following objects are masked from 'package:stats':
+#> 
+#>     filter, lag
+#> The following objects are masked from 'package:base':
+#> 
+#>     intersect, setdiff, setequal, union
+library(ggplot2)
+library(loo)
+#> This is loo version 2.6.0
+#> - Online documentation and vignettes at mc-stan.org/loo
+#> - As of v2.0.0 loo defaults to 1 core but we recommend using as many as possible. Use the 'cores' argument or set options(mc.cores = NUM_CORES) for an entire session.
+#> - Windows 10 users: loo may be very slow if 'mc.cores' is set in your .Rprofile file (see https://github.com/stan-dev/loo/issues/94).
+
options(mc.cores = parallel::detectCores())
+

Leahy and Walsh (2019) present a network of five trials comparing lenalidomide and thalidomide to placebo for newly diagnosed multiple myeloma (NDMM) after autologous stem cell transplant (ASCT). The outcome of interest is progression free survival (PFS). Simulated individual patient data (IPD) from three trials are found in the data set ndmm_ipd. These include outcome times, censoring indicators, and covariates for each individual:

-
head(ndmm_ipd)
-#>          study trt       studyf trtf      age iss_stage3 response_cr_vgpr male eventtime status
-#> 1 McCarthy2012 Pbo McCarthy2012  Pbo 50.81625          0                1    0 31.106516      1
-#> 2 McCarthy2012 Pbo McCarthy2012  Pbo 62.18165          0                0    0  3.299623      0
-#> 3 McCarthy2012 Pbo McCarthy2012  Pbo 51.53762          1                1    1 57.400000      0
-#> 4 McCarthy2012 Pbo McCarthy2012  Pbo 46.74128          0                1    1 57.400000      0
-#> 5 McCarthy2012 Pbo McCarthy2012  Pbo 62.62561          0                1    1 57.400000      0
-#> 6 McCarthy2012 Pbo McCarthy2012  Pbo 49.24520          1                1    0 30.714460      0
+
head(ndmm_ipd)
+#>          study trt       studyf trtf      age iss_stage3 response_cr_vgpr male eventtime status
+#> 1 McCarthy2012 Pbo McCarthy2012  Pbo 50.81625          0                1    0 31.106516      1
+#> 2 McCarthy2012 Pbo McCarthy2012  Pbo 62.18165          0                0    0  3.299623      0
+#> 3 McCarthy2012 Pbo McCarthy2012  Pbo 51.53762          1                1    1 57.400000      0
+#> 4 McCarthy2012 Pbo McCarthy2012  Pbo 46.74128          0                1    1 57.400000      0
+#> 5 McCarthy2012 Pbo McCarthy2012  Pbo 62.62561          0                1    1 57.400000      0
+#> 6 McCarthy2012 Pbo McCarthy2012  Pbo 49.24520          1                1    0 30.714460      0

Aggregate data (AgD) consisting of reconstructed event/censoring times from digitized Kaplan-Meier curves and covariate summaries are available on a further two trials, found in the data sets ndmm_agd and ndmm_agd_covs.

-
head(ndmm_agd)
-#>        study     studyf trt trtf eventtime status
-#> 1 Morgan2012 Morgan2012 Pbo  Pbo  18.72575      1
-#> 2 Morgan2012 Morgan2012 Pbo  Pbo  63.36000      0
-#> 3 Morgan2012 Morgan2012 Pbo  Pbo  34.35726      1
-#> 4 Morgan2012 Morgan2012 Pbo  Pbo  10.77826      1
-#> 5 Morgan2012 Morgan2012 Pbo  Pbo  63.36000      0
-#> 6 Morgan2012 Morgan2012 Pbo  Pbo  14.52966      1
-
-ndmm_agd_covs
-#>         study      studyf  trt trtf sample_size  age_min age_iqr_l age_median age_iqr_h  age_max
-#> 1 Jackson2019 Jackson2019  Len  Len        1137 17.28246  59.13164   65.76766  72.00756 85.76095
-#> 2 Jackson2019 Jackson2019  Pbo  Pbo         864 21.18572  58.30991   65.47402  71.80261 86.23080
-#> 3  Morgan2012  Morgan2012  Pbo  Pbo         410 33.88979  58.05696   64.15999  70.44791 84.79372
-#> 4  Morgan2012  Morgan2012 Thal Thal         408 38.45127  59.30022   65.48736  71.73597 84.69365
-#>   age_mean   age_sd iss_stage3 response_cr_vgpr      male
-#> 1 65.16867 8.936962  0.2480211        0.8258575 0.6165347
-#> 2 64.62894 9.399272  0.1921296        0.8310185 0.6215278
-#> 3 63.92360 9.006311  0.3634146        0.7170732 0.6195122
-#> 4 65.59387 8.384686  0.3186275        0.7450980 0.6151961
-

Phillippo et al. (n.d.) analysed these data -using multilevel network meta-regression (ML-NMR), and we recreate these -analyses here.

+
head(ndmm_agd)
+#>        study     studyf trt trtf eventtime status
+#> 1 Morgan2012 Morgan2012 Pbo  Pbo  18.72575      1
+#> 2 Morgan2012 Morgan2012 Pbo  Pbo  63.36000      0
+#> 3 Morgan2012 Morgan2012 Pbo  Pbo  34.35726      1
+#> 4 Morgan2012 Morgan2012 Pbo  Pbo  10.77826      1
+#> 5 Morgan2012 Morgan2012 Pbo  Pbo  63.36000      0
+#> 6 Morgan2012 Morgan2012 Pbo  Pbo  14.52966      1
+
+ndmm_agd_covs
+#>         study      studyf  trt trtf sample_size  age_min age_iqr_l age_median age_iqr_h  age_max
+#> 1 Jackson2019 Jackson2019  Len  Len        1137 17.28246  59.13164   65.76766  72.00756 85.76095
+#> 2 Jackson2019 Jackson2019  Pbo  Pbo         864 21.18572  58.30991   65.47402  71.80261 86.23080
+#> 3  Morgan2012  Morgan2012  Pbo  Pbo         410 33.88979  58.05696   64.15999  70.44791 84.79372
+#> 4  Morgan2012  Morgan2012 Thal Thal         408 38.45127  59.30022   65.48736  71.73597 84.69365
+#>   age_mean   age_sd iss_stage3 response_cr_vgpr      male
+#> 1 65.16867 8.936962  0.2480211        0.8258575 0.6165347
+#> 2 64.62894 9.399272  0.1921296        0.8310185 0.6215278
+#> 3 63.92360 9.006311  0.3634146        0.7170732 0.6195122
+#> 4 65.59387 8.384686  0.3186275        0.7450980 0.6151961
+

Phillippo et al. (n.d.) +analysed these data using multilevel network meta-regression (ML-NMR), +and we recreate these analyses here.

Study data

We consider adjustment for the following covariates:

@@ -442,31 +442,31 @@

Study data

The summary distributions of these characteristics in each study are as follows:

-
bind_rows(
-  summarise(ndmm_ipd,
-            N = n(),
-            age_mean = mean(age), age_sd = sd(age),
-            iss_stage3 = mean(iss_stage3),
-            response_cr_vgpr = mean(response_cr_vgpr),
-            male = mean(male),
-            .by = c(studyf, trtf)),
-  transmute(ndmm_agd_covs,
-            studyf, trtf,
-            N = sample_size,
-            age_mean, age_sd, iss_stage3, response_cr_vgpr, male)
-) %>%
-  mutate(across(where(is.double), ~round(., digits = 2)))
-#>          studyf trtf    N age_mean age_sd iss_stage3 response_cr_vgpr male
-#> 1  McCarthy2012  Pbo  229    57.39   5.56       0.18             0.71 0.55
-#> 2  McCarthy2012  Len  231    57.93   6.33       0.27             0.62 0.52
-#> 3     Attal2012  Pbo  307    54.22   5.24       0.16             0.54 0.58
-#> 4     Attal2012  Len  307    54.35   6.06       0.24             0.55 0.55
-#> 5   Palumbo2014  Pbo  125    54.44   8.98       0.12             0.38 0.63
-#> 6   Palumbo2014  Len  126    53.90   9.69       0.10             0.42 0.46
-#> 7   Jackson2019  Len 1137    65.17   8.94       0.25             0.83 0.62
-#> 8   Jackson2019  Pbo  864    64.63   9.40       0.19             0.83 0.62
-#> 9    Morgan2012  Pbo  410    63.92   9.01       0.36             0.72 0.62
-#> 10   Morgan2012 Thal  408    65.59   8.38       0.32             0.75 0.62
+
bind_rows(
+  summarise(ndmm_ipd,
+            N = n(),
+            age_mean = mean(age), age_sd = sd(age),
+            iss_stage3 = mean(iss_stage3),
+            response_cr_vgpr = mean(response_cr_vgpr),
+            male = mean(male),
+            .by = c(studyf, trtf)),
+  transmute(ndmm_agd_covs,
+            studyf, trtf,
+            N = sample_size,
+            age_mean, age_sd, iss_stage3, response_cr_vgpr, male)
+) %>%
+  mutate(across(where(is.double), ~round(., digits = 2)))
+#>          studyf trtf    N age_mean age_sd iss_stage3 response_cr_vgpr male
+#> 1  McCarthy2012  Pbo  229    57.39   5.56       0.18             0.71 0.55
+#> 2  McCarthy2012  Len  231    57.93   6.33       0.27             0.62 0.52
+#> 3     Attal2012  Pbo  307    54.22   5.24       0.16             0.54 0.58
+#> 4     Attal2012  Len  307    54.35   6.06       0.24             0.55 0.55
+#> 5   Palumbo2014  Pbo  125    54.44   8.98       0.12             0.38 0.63
+#> 6   Palumbo2014  Len  126    53.90   9.69       0.10             0.42 0.46
+#> 7   Jackson2019  Len 1137    65.17   8.94       0.25             0.83 0.62
+#> 8   Jackson2019  Pbo  864    64.63   9.40       0.19             0.83 0.62
+#> 9    Morgan2012  Pbo  410    63.92   9.01       0.36             0.72 0.62
+#> 10   Morgan2012 Thal  408    65.59   8.38       0.32             0.75 0.62

Setup

@@ -477,18 +477,18 @@

Preparing treatment classes

study on the placebo vs. thalidomide comparison, we make the shared effect modifier assumption between the two active treatments in order to estimate the effect modifying treatment-covariate interactions for -thalidomide Phillippo et al. (2020). Since lenalidomide and -thalidomide are both in the same class of treatments, this assumption -may be reasonable.

+thalidomide Phillippo et al. (2020). Since +lenalidomide and thalidomide are both in the same class of treatments, +this assumption may be reasonable.

To impose this assumption, we create a treatment class variable for active treatments vs. placebo.

-
ndmm_ipd$trtclass <- case_match(ndmm_ipd$trtf,
-                                "Pbo" ~ "Placebo",
-                                c("Len", "Thal") ~ "Active")
-
-ndmm_agd$trtclass <- case_match(ndmm_agd$trtf,
-                                "Pbo" ~ "Placebo",
-                                c("Len", "Thal") ~ "Active")
+
ndmm_ipd$trtclass <- case_match(ndmm_ipd$trtf,
+                                "Pbo" ~ "Placebo",
+                                c("Len", "Thal") ~ "Active")
+
+ndmm_agd$trtclass <- case_match(ndmm_agd$trtf,
+                                "Pbo" ~ "Placebo",
+                                c("Len", "Thal") ~ "Active")

Setting up the network

@@ -507,19 +507,19 @@

Setting up the network

so that the covariate information can be matched to the corresponding arms in the outcome data. The IPD and AgD are then combined into a single network using combine_network().

-
ndmm_net <- combine_network(
-  set_ipd(ndmm_ipd,
-          study = studyf,
-          trt = trtf,
-          trt_class = trtclass,
-          Surv = Surv(eventtime, status)),
-  set_agd_surv(ndmm_agd,
-               study = studyf,
-               trt = trtf,
-               trt_class = trtclass,
-               Surv = Surv(eventtime, status),
-               covariates = ndmm_agd_covs)
-)
+
ndmm_net <- combine_network(
+  set_ipd(ndmm_ipd,
+          study = studyf,
+          trt = trtf,
+          trt_class = trtclass,
+          Surv = Surv(eventtime, status)),
+  set_agd_surv(ndmm_agd,
+               study = studyf,
+               trt = trtf,
+               trt_class = trtclass,
+               Surv = Surv(eventtime, status),
+               covariates = ndmm_agd_covs)
+)

Adding numerical integration for ML-NMR

@@ -535,67 +535,67 @@

Adding numerical integration for ML-NMR

information on the correlations between covariates. If known, these can be specified using the cor argument. However, by default the weighted average correlations from the IPD studies will be used.

-
ndmm_net <- add_integration(ndmm_net,
-                            age = distr(qgamma, mean = age_mean, sd = age_sd),
-                            iss_stage3 = distr(qbern, iss_stage3),
-                            response_cr_vgpr = distr(qbern, response_cr_vgpr),
-                            male = distr(qbern, male))
-#> Using weighted average correlation matrix computed from IPD studies.
-
-ndmm_net
-#> A network with 3 IPD studies, and 2 AgD studies (arm-based).
-#> 
-#> ------------------------------------------------------------------- IPD studies ---- 
-#>  Study        Treatment arms
-#>  Attal2012    2: Pbo | Len  
-#>  McCarthy2012 2: Pbo | Len  
-#>  Palumbo2014  2: Pbo | Len  
-#> 
-#>  Outcome type: survival
-#> ------------------------------------------------------- AgD studies (arm-based) ---- 
-#>  Study       Treatment arms
-#>  Jackson2019 2: Pbo | Len  
-#>  Morgan2012  2: Pbo | Thal 
-#> 
-#>  Outcome type: survival
-#> ------------------------------------------------------------------------------------
-#> Total number of treatments: 3, in 2 classes
-#> Total number of studies: 5
-#> Reference treatment is: Pbo
-#> Network is connected
-#> 
-#> --------------------------------------------------------- Numerical integration ---- 
-#> Numerical integration points available for 4 covariates: 
-#>   age iss_stage3 response_cr_vgpr male
-#> Number of numerical integration points: 64
+
ndmm_net <- add_integration(ndmm_net,
+                            age = distr(qgamma, mean = age_mean, sd = age_sd),
+                            iss_stage3 = distr(qbern, iss_stage3),
+                            response_cr_vgpr = distr(qbern, response_cr_vgpr),
+                            male = distr(qbern, male))
+#> Using weighted average correlation matrix computed from IPD studies.
+
+ndmm_net
+#> A network with 3 IPD studies, and 2 AgD studies (arm-based).
+#> 
+#> ------------------------------------------------------------------- IPD studies ---- 
+#>  Study        Treatment arms
+#>  Attal2012    2: Pbo | Len  
+#>  McCarthy2012 2: Pbo | Len  
+#>  Palumbo2014  2: Pbo | Len  
+#> 
+#>  Outcome type: survival
+#> ------------------------------------------------------- AgD studies (arm-based) ---- 
+#>  Study       Treatment arms
+#>  Jackson2019 2: Pbo | Len  
+#>  Morgan2012  2: Pbo | Thal 
+#> 
+#>  Outcome type: survival
+#> ------------------------------------------------------------------------------------
+#> Total number of treatments: 3, in 2 classes
+#> Total number of studies: 5
+#> Reference treatment is: Pbo
+#> Network is connected
+#> 
+#> --------------------------------------------------------- Numerical integration ---- 
+#> Numerical integration points available for 4 covariates: 
+#>   age iss_stage3 response_cr_vgpr male
+#> Number of numerical integration points: 64

Network plot

We can plot the network diagram using the plot() method.

-
plot(ndmm_net,
-     weight_nodes = TRUE,
-     weight_edges = TRUE,
-     # Nudge treatment labels away from nodes
-     nudge = 0.1,
-     # Manual layout
-     layout = data.frame(x = c(0, -1, 1),
-                         y = c(-0.5, 0, 0))) +
-  guides(edge_colour = guide_legend(override.aes = list(edge_width = 2))) +
-  theme(legend.position = "bottom", legend.direction = "vertical")
+
plot(ndmm_net,
+     weight_nodes = TRUE,
+     weight_edges = TRUE,
+     # Nudge treatment labels away from nodes
+     nudge = 0.1,
+     # Manual layout
+     layout = data.frame(x = c(0, -1, 1),
+                         y = c(-0.5, 0, 0))) +
+  guides(edge_colour = guide_legend(override.aes = list(edge_width = 2))) +
+  theme(legend.position = "bottom", legend.direction = "vertical")

Kaplan-Meier plots

We can produce Kaplan-Meier plots of the data from each study, with the aid of the geom_km() function.

-
ggplot() +
-  geom_km(ndmm_net) +
-  facet_wrap(~.study) +
-  labs(y = "Survival probability", x = "Time") +
-  coord_cartesian(ylim = c(0, 1)) +
-  theme_multinma() +
-  theme(legend.position = "top", legend.box.spacing = unit(0, "lines"))
+
ggplot() +
+  geom_km(ndmm_net) +
+  facet_wrap(~.study) +
+  labs(y = "Survival probability", x = "Time") +
+  coord_cartesian(ylim = c(0, 1)) +
+  theme_multinma() +
+  theme(legend.position = "top", legend.box.spacing = unit(0, "lines"))

The transform argument to geom_km() can be used to transform the Kaplan-Meier curves prior to plotting, for example @@ -606,26 +606,26 @@

Kaplan-Meier plots

ML-NMR models with M-spline baseline hazards

We fit a proportional hazards survival model with cubic M-splines on -the baseline hazard Phillippo et al. (n.d.). This allows the -baseline hazard to flexibly follow any shape that the baseline hazard -may take. ML-NMR models are fit using the nma() function, -and we specify that a M-spline baseline hazard should be used with -likelihood = "mspline".

+the baseline hazard Phillippo et al. (n.d.). +This allows the baseline hazard to flexibly follow any shape that the +baseline hazard may take. ML-NMR models are fit using the +nma() function, and we specify that a M-spline baseline +hazard should be used with likelihood = "mspline".

Fitting spline models requires the user to specify the number and location of the knots. By default, seven internal knots are used (n_knots = 7) which are placed at evenly spaced quantiles on the observed event times within each study. Overfitting is avoided by the use of a random walk prior distribution on the (inverse softmax transformed) spline coefficients that penalises complexity and shrinks -towards a constant baseline hazard (Phillippo et al., n.d.); in -practice this means that the number of knots can be set to a -sufficiently large number and left to shrink to a suitable level of -complexity controlled by the standard deviation of the random walk. The -number of knots can be changed using the n_knots argument, -or custom knot locations can be specified using the knots -argument. The nma() function will always place boundary -knots at the earliest entry time into the study (0 with no delayed -entry) and at the maximum event/censoring time.

+towards a constant baseline hazard (Phillippo et al., +n.d.); in practice this means that the number of knots can be +set to a sufficiently large number and left to shrink to a suitable +level of complexity controlled by the standard deviation of the random +walk. The number of knots can be changed using the n_knots +argument, or custom knot locations can be specified using the +knots argument. The nma() function will always +place boundary knots at the earliest entry time into the study (0 with +no delayed entry) and at the maximum event/censoring time.

By default, the nma() function will fit a cubic M-spline (mspline_degree = 3). Piecewise-constant hazards (i.e. piecewise exponential hazards) are a special case with degree 0 @@ -640,126 +640,126 @@

ML-NMR models with M-spline baseline hazards

distribution. We also set QR = TRUE, as using the QR decomposition can greatly increase sampling efficiency for regression models.

-
ndmm_fit <- nma(ndmm_net,
-                regression = ~(age + iss_stage3 + response_cr_vgpr + male)*.trt,
-                likelihood = "mspline",
-                prior_intercept = normal(0, 100),
-                prior_trt = normal(0, 100),
-                prior_reg = normal(0, 100),
-                prior_aux = half_normal(1),
-                QR = TRUE)
-#> Note: Setting "Pbo" as the network reference treatment.
-
-ndmm_fit
-#> A fixed effects ML-NMR with a mspline likelihood (log link).
-#> Cubic M-spline baseline hazard with 7 internal knots.
-#> Regression model: ~(age + iss_stage3 + response_cr_vgpr + male) * .trt.
-#> Centred covariates at the following overall mean values:
-#>              age       iss_stage3 response_cr_vgpr             male 
-#>       61.6558571        0.2297184        0.7314265        0.6020451 
-#> Inference for Stan model: survival_mspline.
-#> 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[age]                                   0.08    0.00 0.01      0.06      0.07      0.08
-#> beta[iss_stage3]                            0.35    0.00 0.13      0.10      0.26      0.35
-#> beta[response_cr_vgpr]                     -0.13    0.00 0.10     -0.34     -0.20     -0.13
-#> beta[male]                                  0.00    0.00 0.10     -0.20     -0.07      0.00
-#> beta[age:.trtclassActive]                  -0.02    0.00 0.01     -0.03     -0.02     -0.02
-#> beta[iss_stage3:.trtclassActive]            0.20    0.00 0.17     -0.14      0.09      0.20
-#> beta[response_cr_vgpr:.trtclassActive]      0.20    0.00 0.14     -0.09      0.10      0.20
-#> beta[male:.trtclassActive]                  0.14    0.00 0.15     -0.17      0.03      0.14
-#> d[Len]                                     -0.66    0.00 0.05     -0.77     -0.70     -0.66
-#> d[Thal]                                    -0.20    0.00 0.11     -0.40     -0.27     -0.20
-#> lp__                                   -12499.11    0.23 7.32 -12514.14 -12504.05 -12498.73
-#> sigma[Attal2012]                            0.88    0.01 0.39      0.29      0.60      0.82
-#> sigma[McCarthy2012]                         1.75    0.01 0.56      0.83      1.34      1.68
-#> sigma[Palumbo2014]                          0.59    0.01 0.52      0.02      0.20      0.45
-#> sigma[Jackson2019]                          0.81    0.01 0.33      0.33      0.57      0.75
-#> sigma[Morgan2012]                           0.77    0.02 0.50      0.04      0.41      0.70
-#>                                              75%     97.5% n_eff Rhat
-#> beta[age]                                   0.08      0.09  4376 1.00
-#> beta[iss_stage3]                            0.43      0.59  4972 1.00
-#> beta[response_cr_vgpr]                     -0.06      0.07  5101 1.00
-#> beta[male]                                  0.07      0.20  5881 1.00
-#> beta[age:.trtclassActive]                  -0.01      0.00  3695 1.00
-#> beta[iss_stage3:.trtclassActive]            0.32      0.54  4979 1.00
-#> beta[response_cr_vgpr:.trtclassActive]      0.29      0.48  4627 1.00
-#> beta[male:.trtclassActive]                  0.24      0.44  5149 1.00
-#> d[Len]                                     -0.63     -0.56  4987 1.00
-#> d[Thal]                                    -0.12      0.01  3918 1.01
-#> lp__                                   -12493.85 -12485.92  1052 1.01
-#> sigma[Attal2012]                            1.09      1.82  1936 1.00
-#> sigma[McCarthy2012]                         2.11      2.98  2491 1.00
-#> sigma[Palumbo2014]                          0.85      1.93  1445 1.00
-#> sigma[Jackson2019]                          0.98      1.59  1734 1.01
-#> sigma[Morgan2012]                           1.06      1.95   969 1.00
-#> 
-#> Samples were drawn using NUTS(diag_e) at Thu Oct 12 19:58:13 2023.
-#> 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).
+
ndmm_fit <- nma(ndmm_net,
+                regression = ~(age + iss_stage3 + response_cr_vgpr + male)*.trt,
+                likelihood = "mspline",
+                prior_intercept = normal(0, 100),
+                prior_trt = normal(0, 100),
+                prior_reg = normal(0, 100),
+                prior_aux = half_normal(1),
+                QR = TRUE)
+#> Note: Setting "Pbo" as the network reference treatment.
+
+ndmm_fit
+#> A fixed effects ML-NMR with a mspline likelihood (log link).
+#> Cubic M-spline baseline hazard with 7 internal knots.
+#> Regression model: ~(age + iss_stage3 + response_cr_vgpr + male) * .trt.
+#> Centred covariates at the following overall mean values:
+#>              age       iss_stage3 response_cr_vgpr             male 
+#>       61.6558571        0.2297184        0.7314265        0.6020451 
+#> Inference for Stan model: survival_mspline.
+#> 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[age]                                   0.08    0.00 0.01      0.06      0.07      0.08
+#> beta[iss_stage3]                            0.35    0.00 0.13      0.10      0.26      0.35
+#> beta[response_cr_vgpr]                     -0.13    0.00 0.10     -0.34     -0.20     -0.13
+#> beta[male]                                  0.00    0.00 0.10     -0.20     -0.07      0.00
+#> beta[age:.trtclassActive]                  -0.02    0.00 0.01     -0.03     -0.02     -0.02
+#> beta[iss_stage3:.trtclassActive]            0.20    0.00 0.17     -0.14      0.09      0.20
+#> beta[response_cr_vgpr:.trtclassActive]      0.20    0.00 0.14     -0.09      0.10      0.20
+#> beta[male:.trtclassActive]                  0.14    0.00 0.15     -0.17      0.03      0.14
+#> d[Len]                                     -0.66    0.00 0.05     -0.77     -0.70     -0.66
+#> d[Thal]                                    -0.20    0.00 0.11     -0.40     -0.27     -0.20
+#> lp__                                   -12499.11    0.23 7.32 -12514.14 -12504.05 -12498.73
+#> sigma[Attal2012]                            0.88    0.01 0.39      0.29      0.60      0.82
+#> sigma[McCarthy2012]                         1.75    0.01 0.56      0.83      1.34      1.68
+#> sigma[Palumbo2014]                          0.59    0.01 0.52      0.02      0.20      0.45
+#> sigma[Jackson2019]                          0.81    0.01 0.33      0.33      0.57      0.75
+#> sigma[Morgan2012]                           0.77    0.02 0.50      0.04      0.41      0.70
+#>                                              75%     97.5% n_eff Rhat
+#> beta[age]                                   0.08      0.09  4376 1.00
+#> beta[iss_stage3]                            0.43      0.59  4972 1.00
+#> beta[response_cr_vgpr]                     -0.06      0.07  5101 1.00
+#> beta[male]                                  0.07      0.20  5881 1.00
+#> beta[age:.trtclassActive]                  -0.01      0.00  3695 1.00
+#> beta[iss_stage3:.trtclassActive]            0.32      0.54  4979 1.00
+#> beta[response_cr_vgpr:.trtclassActive]      0.29      0.48  4627 1.00
+#> beta[male:.trtclassActive]                  0.24      0.44  5149 1.00
+#> d[Len]                                     -0.63     -0.56  4987 1.00
+#> d[Thal]                                    -0.12      0.01  3918 1.01
+#> lp__                                   -12493.85 -12485.92  1052 1.01
+#> sigma[Attal2012]                            1.09      1.82  1936 1.00
+#> sigma[McCarthy2012]                         2.11      2.98  2491 1.00
+#> sigma[Palumbo2014]                          0.85      1.93  1445 1.00
+#> sigma[Jackson2019]                          0.98      1.59  1734 1.01
+#> sigma[Morgan2012]                           1.06      1.95   969 1.00
+#> 
+#> Samples were drawn using NUTS(diag_e) at Thu Oct 12 19:58:13 2023.
+#> 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 details of the spline coefficients are not printed by default, but can be shown with print() or summary() using the pars option:

-
summary(ndmm_fit, pars = "scoef")
-#>                         mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> scoef[Attal2012, 1]     0.02 0.00 0.01 0.01 0.02 0.02  0.03     2468     1624 1.00
-#> scoef[McCarthy2012, 1]  0.01 0.00 0.00 0.00 0.01 0.01  0.01     3523     3205 1.00
-#> scoef[Palumbo2014, 1]   0.01 0.00 0.01 0.01 0.02 0.02  0.02     2116     3388 1.00
-#> scoef[Jackson2019, 1]   0.01 0.00 0.01 0.01 0.01 0.01  0.02     2495     3269 1.01
-#> scoef[Morgan2012, 1]    0.01 0.00 0.01 0.01 0.01 0.01  0.02     1165     2636 1.01
-#> scoef[Attal2012, 2]     0.03 0.01 0.02 0.02 0.03 0.03  0.04     2661     1995 1.00
-#> scoef[McCarthy2012, 2]  0.01 0.01 0.00 0.01 0.01 0.02  0.03     3293     3334 1.00
-#> scoef[Palumbo2014, 2]   0.03 0.01 0.02 0.03 0.03 0.03  0.04     2465     3270 1.00
-#> scoef[Jackson2019, 2]   0.02 0.00 0.02 0.02 0.02 0.03  0.03     2222     3147 1.01
-#> scoef[Morgan2012, 2]    0.02 0.00 0.01 0.02 0.02 0.03  0.03     1342     2926 1.01
-#> scoef[Attal2012, 3]     0.05 0.01 0.04 0.05 0.05 0.06  0.07     3837     3615 1.00
-#> scoef[McCarthy2012, 3]  0.05 0.01 0.03 0.04 0.05 0.06  0.09     3373     3301 1.00
-#> scoef[Palumbo2014, 3]   0.05 0.01 0.04 0.05 0.05 0.06  0.07     4695     3591 1.00
-#> scoef[Jackson2019, 3]   0.04 0.00 0.04 0.04 0.04 0.05  0.05     3312     3224 1.00
-#> scoef[Morgan2012, 3]    0.04 0.01 0.03 0.04 0.04 0.05  0.06     3584     3326 1.00
-#> scoef[Attal2012, 4]     0.09 0.01 0.06 0.08 0.08 0.09  0.11     4699     2958 1.00
-#> scoef[McCarthy2012, 4]  0.09 0.02 0.06 0.08 0.09 0.10  0.13     4182     3236 1.00
-#> scoef[Palumbo2014, 4]   0.07 0.01 0.05 0.06 0.07 0.07  0.09     4427     3725 1.00
-#> scoef[Jackson2019, 4]   0.06 0.01 0.05 0.06 0.06 0.07  0.08     3811     3104 1.00
-#> scoef[Morgan2012, 4]    0.07 0.01 0.05 0.06 0.07 0.07  0.08     3657     3469 1.00
-#> scoef[Attal2012, 5]     0.10 0.01 0.07 0.09 0.10 0.11  0.13     4416     3747 1.00
-#> scoef[McCarthy2012, 5]  0.07 0.02 0.04 0.06 0.07 0.09  0.11     3400     3357 1.00
-#> scoef[Palumbo2014, 5]   0.09 0.01 0.07 0.08 0.08 0.09  0.12     3100     3537 1.00
-#> scoef[Jackson2019, 5]   0.08 0.01 0.07 0.08 0.08 0.09  0.10     3484     3268 1.00
-#> scoef[Morgan2012, 5]    0.08 0.01 0.07 0.08 0.08 0.09  0.11     1542     2765 1.00
-#> scoef[Attal2012, 6]     0.11 0.02 0.08 0.10 0.11 0.12  0.15     4130     3521 1.00
-#> scoef[McCarthy2012, 6]  0.08 0.02 0.05 0.07 0.08 0.09  0.12     3733     3526 1.00
-#> scoef[Palumbo2014, 6]   0.09 0.01 0.06 0.08 0.09 0.09  0.12     4718     3260 1.00
-#> scoef[Jackson2019, 6]   0.11 0.01 0.09 0.10 0.11 0.11  0.13     3673     3629 1.00
-#> scoef[Morgan2012, 6]    0.10 0.01 0.08 0.09 0.10 0.11  0.13     3914     3569 1.00
-#> scoef[Attal2012, 7]     0.14 0.02 0.11 0.13 0.14 0.15  0.19     3454     3624 1.00
-#> scoef[McCarthy2012, 7]  0.13 0.03 0.08 0.11 0.12 0.14  0.18     3538     3333 1.00
-#> scoef[Palumbo2014, 7]   0.13 0.02 0.10 0.12 0.12 0.14  0.18     3550     3357 1.00
-#> scoef[Jackson2019, 7]   0.13 0.01 0.10 0.12 0.13 0.13  0.15     3705     3604 1.00
-#> scoef[Morgan2012, 7]    0.13 0.02 0.10 0.12 0.13 0.14  0.16     4651     3552 1.00
-#> scoef[Attal2012, 8]     0.17 0.02 0.12 0.15 0.17 0.18  0.22     4415     3648 1.00
-#> scoef[McCarthy2012, 8]  0.19 0.04 0.12 0.16 0.18 0.21  0.27     3589     3194 1.00
-#> scoef[Palumbo2014, 8]   0.18 0.03 0.13 0.17 0.18 0.19  0.24     4096     3493 1.00
-#> scoef[Jackson2019, 8]   0.19 0.02 0.15 0.18 0.19 0.20  0.23     3722     3896 1.00
-#> scoef[Morgan2012, 8]    0.20 0.02 0.15 0.18 0.19 0.21  0.25     3894     3098 1.00
-#> scoef[Attal2012, 9]     0.12 0.02 0.07 0.10 0.12 0.13  0.16     4005     3200 1.00
-#> scoef[McCarthy2012, 9]  0.12 0.04 0.05 0.10 0.12 0.15  0.20     2951     3267 1.00
-#> scoef[Palumbo2014, 9]   0.14 0.03 0.08 0.13 0.15 0.16  0.18     3351     3011 1.00
-#> scoef[Jackson2019, 9]   0.15 0.02 0.11 0.13 0.15 0.16  0.19     3277     3337 1.00
-#> scoef[Morgan2012, 9]    0.16 0.03 0.11 0.15 0.16 0.17  0.22     3822     3196 1.00
-#> scoef[Attal2012, 10]    0.10 0.02 0.07 0.09 0.10 0.11  0.14     4864     3366 1.00
-#> scoef[McCarthy2012, 10] 0.16 0.04 0.09 0.13 0.15 0.18  0.24     4056     3424 1.00
-#> scoef[Palumbo2014, 10]  0.13 0.02 0.08 0.12 0.13 0.14  0.18     5155     3406 1.00
-#> scoef[Jackson2019, 10]  0.12 0.02 0.09 0.11 0.12 0.13  0.16     3572     3232 1.00
-#> scoef[Morgan2012, 10]   0.12 0.02 0.08 0.11 0.12 0.13  0.17     4044     3655 1.00
-#> scoef[Attal2012, 11]    0.07 0.02 0.05 0.06 0.07 0.08  0.11     6035     3940 1.00
-#> scoef[McCarthy2012, 11] 0.09 0.03 0.04 0.06 0.08 0.10  0.15     4969     3157 1.00
-#> scoef[Palumbo2014, 11]  0.08 0.02 0.05 0.07 0.08 0.09  0.13     4934     3655 1.00
-#> scoef[Jackson2019, 11]  0.08 0.01 0.06 0.07 0.08 0.09  0.12     4599     3791 1.00
-#> scoef[Morgan2012, 11]   0.06 0.02 0.03 0.05 0.07 0.08  0.09     2666     3835 1.00
+
summary(ndmm_fit, pars = "scoef")
+#>                         mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> scoef[Attal2012, 1]     0.02 0.00 0.01 0.01 0.02 0.02  0.03     2468     1624 1.00
+#> scoef[McCarthy2012, 1]  0.01 0.00 0.00 0.00 0.01 0.01  0.01     3523     3205 1.00
+#> scoef[Palumbo2014, 1]   0.01 0.00 0.01 0.01 0.02 0.02  0.02     2116     3388 1.00
+#> scoef[Jackson2019, 1]   0.01 0.00 0.01 0.01 0.01 0.01  0.02     2495     3269 1.01
+#> scoef[Morgan2012, 1]    0.01 0.00 0.01 0.01 0.01 0.01  0.02     1165     2636 1.01
+#> scoef[Attal2012, 2]     0.03 0.01 0.02 0.02 0.03 0.03  0.04     2661     1995 1.00
+#> scoef[McCarthy2012, 2]  0.01 0.01 0.00 0.01 0.01 0.02  0.03     3293     3334 1.00
+#> scoef[Palumbo2014, 2]   0.03 0.01 0.02 0.03 0.03 0.03  0.04     2465     3270 1.00
+#> scoef[Jackson2019, 2]   0.02 0.00 0.02 0.02 0.02 0.03  0.03     2222     3147 1.01
+#> scoef[Morgan2012, 2]    0.02 0.00 0.01 0.02 0.02 0.03  0.03     1342     2926 1.01
+#> scoef[Attal2012, 3]     0.05 0.01 0.04 0.05 0.05 0.06  0.07     3837     3615 1.00
+#> scoef[McCarthy2012, 3]  0.05 0.01 0.03 0.04 0.05 0.06  0.09     3373     3301 1.00
+#> scoef[Palumbo2014, 3]   0.05 0.01 0.04 0.05 0.05 0.06  0.07     4695     3591 1.00
+#> scoef[Jackson2019, 3]   0.04 0.00 0.04 0.04 0.04 0.05  0.05     3312     3224 1.00
+#> scoef[Morgan2012, 3]    0.04 0.01 0.03 0.04 0.04 0.05  0.06     3584     3326 1.00
+#> scoef[Attal2012, 4]     0.09 0.01 0.06 0.08 0.08 0.09  0.11     4699     2958 1.00
+#> scoef[McCarthy2012, 4]  0.09 0.02 0.06 0.08 0.09 0.10  0.13     4182     3236 1.00
+#> scoef[Palumbo2014, 4]   0.07 0.01 0.05 0.06 0.07 0.07  0.09     4427     3725 1.00
+#> scoef[Jackson2019, 4]   0.06 0.01 0.05 0.06 0.06 0.07  0.08     3811     3104 1.00
+#> scoef[Morgan2012, 4]    0.07 0.01 0.05 0.06 0.07 0.07  0.08     3657     3469 1.00
+#> scoef[Attal2012, 5]     0.10 0.01 0.07 0.09 0.10 0.11  0.13     4416     3747 1.00
+#> scoef[McCarthy2012, 5]  0.07 0.02 0.04 0.06 0.07 0.09  0.11     3400     3357 1.00
+#> scoef[Palumbo2014, 5]   0.09 0.01 0.07 0.08 0.08 0.09  0.12     3100     3537 1.00
+#> scoef[Jackson2019, 5]   0.08 0.01 0.07 0.08 0.08 0.09  0.10     3484     3268 1.00
+#> scoef[Morgan2012, 5]    0.08 0.01 0.07 0.08 0.08 0.09  0.11     1542     2765 1.00
+#> scoef[Attal2012, 6]     0.11 0.02 0.08 0.10 0.11 0.12  0.15     4130     3521 1.00
+#> scoef[McCarthy2012, 6]  0.08 0.02 0.05 0.07 0.08 0.09  0.12     3733     3526 1.00
+#> scoef[Palumbo2014, 6]   0.09 0.01 0.06 0.08 0.09 0.09  0.12     4718     3260 1.00
+#> scoef[Jackson2019, 6]   0.11 0.01 0.09 0.10 0.11 0.11  0.13     3673     3629 1.00
+#> scoef[Morgan2012, 6]    0.10 0.01 0.08 0.09 0.10 0.11  0.13     3914     3569 1.00
+#> scoef[Attal2012, 7]     0.14 0.02 0.11 0.13 0.14 0.15  0.19     3454     3624 1.00
+#> scoef[McCarthy2012, 7]  0.13 0.03 0.08 0.11 0.12 0.14  0.18     3538     3333 1.00
+#> scoef[Palumbo2014, 7]   0.13 0.02 0.10 0.12 0.12 0.14  0.18     3550     3357 1.00
+#> scoef[Jackson2019, 7]   0.13 0.01 0.10 0.12 0.13 0.13  0.15     3705     3604 1.00
+#> scoef[Morgan2012, 7]    0.13 0.02 0.10 0.12 0.13 0.14  0.16     4651     3552 1.00
+#> scoef[Attal2012, 8]     0.17 0.02 0.12 0.15 0.17 0.18  0.22     4415     3648 1.00
+#> scoef[McCarthy2012, 8]  0.19 0.04 0.12 0.16 0.18 0.21  0.27     3589     3194 1.00
+#> scoef[Palumbo2014, 8]   0.18 0.03 0.13 0.17 0.18 0.19  0.24     4096     3493 1.00
+#> scoef[Jackson2019, 8]   0.19 0.02 0.15 0.18 0.19 0.20  0.23     3722     3896 1.00
+#> scoef[Morgan2012, 8]    0.20 0.02 0.15 0.18 0.19 0.21  0.25     3894     3098 1.00
+#> scoef[Attal2012, 9]     0.12 0.02 0.07 0.10 0.12 0.13  0.16     4005     3200 1.00
+#> scoef[McCarthy2012, 9]  0.12 0.04 0.05 0.10 0.12 0.15  0.20     2951     3267 1.00
+#> scoef[Palumbo2014, 9]   0.14 0.03 0.08 0.13 0.15 0.16  0.18     3351     3011 1.00
+#> scoef[Jackson2019, 9]   0.15 0.02 0.11 0.13 0.15 0.16  0.19     3277     3337 1.00
+#> scoef[Morgan2012, 9]    0.16 0.03 0.11 0.15 0.16 0.17  0.22     3822     3196 1.00
+#> scoef[Attal2012, 10]    0.10 0.02 0.07 0.09 0.10 0.11  0.14     4864     3366 1.00
+#> scoef[McCarthy2012, 10] 0.16 0.04 0.09 0.13 0.15 0.18  0.24     4056     3424 1.00
+#> scoef[Palumbo2014, 10]  0.13 0.02 0.08 0.12 0.13 0.14  0.18     5155     3406 1.00
+#> scoef[Jackson2019, 10]  0.12 0.02 0.09 0.11 0.12 0.13  0.16     3572     3232 1.00
+#> scoef[Morgan2012, 10]   0.12 0.02 0.08 0.11 0.12 0.13  0.17     4044     3655 1.00
+#> scoef[Attal2012, 11]    0.07 0.02 0.05 0.06 0.07 0.08  0.11     6035     3940 1.00
+#> scoef[McCarthy2012, 11] 0.09 0.03 0.04 0.06 0.08 0.10  0.15     4969     3157 1.00
+#> scoef[Palumbo2014, 11]  0.08 0.02 0.05 0.07 0.08 0.09  0.13     4934     3655 1.00
+#> scoef[Jackson2019, 11]  0.08 0.01 0.06 0.07 0.08 0.09  0.12     4599     3791 1.00
+#> scoef[Morgan2012, 11]   0.06 0.02 0.03 0.05 0.07 0.08  0.09     2666     3835 1.00

Ploting hazards

Let us look at the estimated hazard functions under this model.

@@ -768,18 +768,18 @@

Ploting hazards

population-average marginal hazards (level = "aggregate", which is the default). These can then be plotted using the plot() function.

-
plot(predict(ndmm_fit, type = "hazard", level = "aggregate"))
+
plot(predict(ndmm_fit, type = "hazard", level = "aggregate"))

We can also look at the individual-level baseline hazards. This is again possible using the predict() function, this time with level = "individual". Since we want to show the baseline hazard for the reference level of the covariates, we’ll create a data frame to pass to predict() as newdata.

-
refdat <- tibble(study = ndmm_net$studies,
-                 age = ndmm_fit$xbar["age"],
-                 iss_stage3 = 0,
-                 response_cr_vgpr = 0,
-                 male = 0)
+
refdat <- tibble(study = ndmm_net$studies,
+                 age = ndmm_fit$xbar["age"],
+                 iss_stage3 = 0,
+                 response_cr_vgpr = 0,
+                 male = 0)

Since we are providing a new data frame for prediction, we also need to provide the times to predict at and the distributions of the baseline (intercept) and auxiliary (spline coefficient) parameters. We will @@ -787,20 +787,20 @@

Ploting hazards

event/censoring time in each study. We specify a named list of the study names for both baseline and aux, to use the posterior distributions from each study for these parameters.

-
# At evenly spaced times between the boundary knots
-tdat <- purrr::imap_dfr(ndmm_fit$basis,
-                        ~tibble(study = factor(.y, levels = ndmm_net$studies),
-                                lower = attr(.x, "Boundary.knots")[1],
-                                upper = attr(.x, "Boundary.knots")[2],
-                                times = seq(lower, upper, length = 50)))
-
-refdat <- left_join(refdat, tdat, by = "study")
-
-studies <- as.list(setNames(nm = levels(ndmm_net$studies)))
+
# At evenly spaced times between the boundary knots
+tdat <- purrr::imap_dfr(ndmm_fit$basis,
+                        ~tibble(study = factor(.y, levels = ndmm_net$studies),
+                                lower = attr(.x, "Boundary.knots")[1],
+                                upper = attr(.x, "Boundary.knots")[2],
+                                times = seq(lower, upper, length = 50)))
+
+refdat <- left_join(refdat, tdat, by = "study")
+
+studies <- as.list(setNames(nm = levels(ndmm_net$studies)))

Then we produce the predictions and plot:

-
plot(predict(ndmm_fit, type = "hazard", level = "individual",
-             newdata = refdat, study = study, times = times,
-             baseline = studies, aux = studies))
+
plot(predict(ndmm_fit, type = "hazard", level = "individual",
+             newdata = refdat, study = study, times = times,
+             baseline = studies, aux = studies))

@@ -815,127 +815,127 @@

Assessing the proportional hazards assumption

study), and we could simply write aux_by = .trt; but we choose to make the stratification by study explicit in this instance.

-
ndmm_fit_nph <- nma(ndmm_net,
-                    regression = ~(age + iss_stage3 + response_cr_vgpr + male)*.trt,
-                    likelihood = "mspline",
-                    prior_intercept = normal(0, 100),
-                    prior_trt = normal(0, 100),
-                    prior_reg = normal(0, 100),
-                    prior_aux = half_normal(1),
-                    aux_by = c(.study, .trt),
-                    QR = TRUE)
-#> Note: Setting "Pbo" as the network reference treatment.
-
-ndmm_fit_nph
-#> A fixed effects ML-NMR with a mspline likelihood (log link).
-#> Cubic M-spline baseline hazard with 7 internal knots.
-#> Regression model: ~(age + iss_stage3 + response_cr_vgpr + male) * .trt.
-#> Centred covariates at the following overall mean values:
-#>              age       iss_stage3 response_cr_vgpr             male 
-#>       61.6558571        0.2297184        0.7314265        0.6020451 
-#> Stratified baseline hazards by .study and .trt.
-#> Inference for Stan model: survival_mspline.
-#> 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[age]                                   0.07    0.00 0.01      0.06      0.07      0.07
-#> beta[iss_stage3]                            0.33    0.00 0.13      0.08      0.24      0.33
-#> beta[response_cr_vgpr]                     -0.11    0.00 0.10     -0.30     -0.18     -0.11
-#> beta[male]                                 -0.01    0.00 0.10     -0.21     -0.08     -0.01
-#> beta[age:.trtclassActive]                  -0.01    0.00 0.01     -0.03     -0.02     -0.01
-#> beta[iss_stage3:.trtclassActive]            0.24    0.00 0.17     -0.11      0.11      0.24
-#> beta[response_cr_vgpr:.trtclassActive]      0.16    0.00 0.14     -0.12      0.06      0.16
-#> beta[male:.trtclassActive]                  0.15    0.00 0.15     -0.14      0.05      0.15
-#> d[Len]                                     -0.62    0.00 0.07     -0.75     -0.66     -0.62
-#> d[Thal]                                    -0.26    0.00 0.12     -0.49     -0.33     -0.25
-#> lp__                                   -12534.68    0.27 9.19 -12553.34 -12540.75 -12534.38
-#> sigma[Attal2012: Pbo]                       0.93    0.01 0.42      0.17      0.64      0.89
-#> sigma[Attal2012: Len]                       0.63    0.01 0.40      0.06      0.34      0.55
-#> sigma[McCarthy2012: Pbo]                    1.38    0.01 0.53      0.56      0.98      1.31
-#> sigma[McCarthy2012: Len]                    1.20    0.01 0.46      0.50      0.86      1.14
-#> sigma[Palumbo2014: Pbo]                     0.60    0.01 0.49      0.02      0.24      0.49
-#> sigma[Palumbo2014: Len]                     0.77    0.01 0.54      0.03      0.35      0.68
-#> sigma[Jackson2019: Pbo]                     0.63    0.01 0.33      0.16      0.40      0.58
-#> sigma[Jackson2019: Len]                     0.99    0.01 0.41      0.35      0.69      0.93
-#> sigma[Morgan2012: Pbo]                      0.33    0.01 0.32      0.01      0.10      0.23
-#> sigma[Morgan2012: Thal]                     1.02    0.01 0.49      0.19      0.67      0.97
-#>                                              75%     97.5% n_eff Rhat
-#> beta[age]                                   0.08      0.09  3031    1
-#> beta[iss_stage3]                            0.42      0.58  5960    1
-#> beta[response_cr_vgpr]                     -0.04      0.08  6219    1
-#> beta[male]                                  0.05      0.19  5980    1
-#> beta[age:.trtclassActive]                  -0.01      0.01  3006    1
-#> beta[iss_stage3:.trtclassActive]            0.36      0.58  5580    1
-#> beta[response_cr_vgpr:.trtclassActive]      0.25      0.43  4989    1
-#> beta[male:.trtclassActive]                  0.25      0.46  4670    1
-#> d[Len]                                     -0.57     -0.49  2884    1
-#> d[Thal]                                    -0.17     -0.03  5412    1
-#> lp__                                   -12528.20 -12517.61  1138    1
-#> sigma[Attal2012: Pbo]                       1.18      1.86  1319    1
-#> sigma[Attal2012: Len]                       0.84      1.59  1986    1
-#> sigma[McCarthy2012: Pbo]                    1.70      2.59  2816    1
-#> sigma[McCarthy2012: Len]                    1.47      2.27  2672    1
-#> sigma[Palumbo2014: Pbo]                     0.84      1.85  2023    1
-#> sigma[Palumbo2014: Len]                     1.09      2.06  2084    1
-#> sigma[Jackson2019: Pbo]                     0.80      1.42  1811    1
-#> sigma[Jackson2019: Len]                     1.24      1.94  1921    1
-#> sigma[Morgan2012: Pbo]                      0.45      1.22  2206    1
-#> sigma[Morgan2012: Thal]                     1.31      2.12  1601    1
-#> 
-#> Samples were drawn using NUTS(diag_e) at Thu Oct 12 22:47:57 2023.
-#> 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).
+
ndmm_fit_nph <- nma(ndmm_net,
+                    regression = ~(age + iss_stage3 + response_cr_vgpr + male)*.trt,
+                    likelihood = "mspline",
+                    prior_intercept = normal(0, 100),
+                    prior_trt = normal(0, 100),
+                    prior_reg = normal(0, 100),
+                    prior_aux = half_normal(1),
+                    aux_by = c(.study, .trt),
+                    QR = TRUE)
+#> Note: Setting "Pbo" as the network reference treatment.
+
+ndmm_fit_nph
+#> A fixed effects ML-NMR with a mspline likelihood (log link).
+#> Cubic M-spline baseline hazard with 7 internal knots.
+#> Regression model: ~(age + iss_stage3 + response_cr_vgpr + male) * .trt.
+#> Centred covariates at the following overall mean values:
+#>              age       iss_stage3 response_cr_vgpr             male 
+#>       61.6558571        0.2297184        0.7314265        0.6020451 
+#> Stratified baseline hazards by .study and .trt.
+#> Inference for Stan model: survival_mspline.
+#> 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[age]                                   0.07    0.00 0.01      0.06      0.07      0.07
+#> beta[iss_stage3]                            0.33    0.00 0.13      0.08      0.24      0.33
+#> beta[response_cr_vgpr]                     -0.11    0.00 0.10     -0.30     -0.18     -0.11
+#> beta[male]                                 -0.01    0.00 0.10     -0.21     -0.08     -0.01
+#> beta[age:.trtclassActive]                  -0.01    0.00 0.01     -0.03     -0.02     -0.01
+#> beta[iss_stage3:.trtclassActive]            0.24    0.00 0.17     -0.11      0.11      0.24
+#> beta[response_cr_vgpr:.trtclassActive]      0.16    0.00 0.14     -0.12      0.06      0.16
+#> beta[male:.trtclassActive]                  0.15    0.00 0.15     -0.14      0.05      0.15
+#> d[Len]                                     -0.62    0.00 0.07     -0.75     -0.66     -0.62
+#> d[Thal]                                    -0.26    0.00 0.12     -0.49     -0.33     -0.25
+#> lp__                                   -12534.68    0.27 9.19 -12553.34 -12540.75 -12534.38
+#> sigma[Attal2012: Pbo]                       0.93    0.01 0.42      0.17      0.64      0.89
+#> sigma[Attal2012: Len]                       0.63    0.01 0.40      0.06      0.34      0.55
+#> sigma[McCarthy2012: Pbo]                    1.38    0.01 0.53      0.56      0.98      1.31
+#> sigma[McCarthy2012: Len]                    1.20    0.01 0.46      0.50      0.86      1.14
+#> sigma[Palumbo2014: Pbo]                     0.60    0.01 0.49      0.02      0.24      0.49
+#> sigma[Palumbo2014: Len]                     0.77    0.01 0.54      0.03      0.35      0.68
+#> sigma[Jackson2019: Pbo]                     0.63    0.01 0.33      0.16      0.40      0.58
+#> sigma[Jackson2019: Len]                     0.99    0.01 0.41      0.35      0.69      0.93
+#> sigma[Morgan2012: Pbo]                      0.33    0.01 0.32      0.01      0.10      0.23
+#> sigma[Morgan2012: Thal]                     1.02    0.01 0.49      0.19      0.67      0.97
+#>                                              75%     97.5% n_eff Rhat
+#> beta[age]                                   0.08      0.09  3031    1
+#> beta[iss_stage3]                            0.42      0.58  5960    1
+#> beta[response_cr_vgpr]                     -0.04      0.08  6219    1
+#> beta[male]                                  0.05      0.19  5980    1
+#> beta[age:.trtclassActive]                  -0.01      0.01  3006    1
+#> beta[iss_stage3:.trtclassActive]            0.36      0.58  5580    1
+#> beta[response_cr_vgpr:.trtclassActive]      0.25      0.43  4989    1
+#> beta[male:.trtclassActive]                  0.25      0.46  4670    1
+#> d[Len]                                     -0.57     -0.49  2884    1
+#> d[Thal]                                    -0.17     -0.03  5412    1
+#> lp__                                   -12528.20 -12517.61  1138    1
+#> sigma[Attal2012: Pbo]                       1.18      1.86  1319    1
+#> sigma[Attal2012: Len]                       0.84      1.59  1986    1
+#> sigma[McCarthy2012: Pbo]                    1.70      2.59  2816    1
+#> sigma[McCarthy2012: Len]                    1.47      2.27  2672    1
+#> sigma[Palumbo2014: Pbo]                     0.84      1.85  2023    1
+#> sigma[Palumbo2014: Len]                     1.09      2.06  2084    1
+#> sigma[Jackson2019: Pbo]                     0.80      1.42  1811    1
+#> sigma[Jackson2019: Len]                     1.24      1.94  1921    1
+#> sigma[Morgan2012: Pbo]                      0.45      1.22  2206    1
+#> sigma[Morgan2012: Thal]                     1.31      2.12  1601    1
+#> 
+#> Samples were drawn using NUTS(diag_e) at Thu Oct 12 22:47:57 2023.
+#> 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).

We then compare model fit between models with and without PH using the LOOIC.

-
(ndmm_fit_loo <- loo(ndmm_fit))
-#> 
-#> Computed from 4000 by 4144 log-likelihood matrix
-#> 
-#>          Estimate    SE
-#> elpd_loo -12398.8 116.0
-#> p_loo        35.1   0.7
-#> looic     24797.7 232.1
-#> ------
-#> Monte Carlo SE of elpd_loo is 0.1.
-#> 
-#> All Pareto k estimates are good (k < 0.5).
-#> See help('pareto-k-diagnostic') for details.
-(ndmm_fit_nph_loo <- loo(ndmm_fit_nph))
-#> 
-#> Computed from 4000 by 4144 log-likelihood matrix
-#> 
-#>          Estimate    SE
-#> elpd_loo -12405.4 116.1
-#> p_loo        44.2   0.8
-#> looic     24810.9 232.2
-#> ------
-#> Monte Carlo SE of elpd_loo is 0.1.
-#> 
-#> All Pareto k estimates are good (k < 0.5).
-#> See help('pareto-k-diagnostic') for details.
-
-# Compare to PH model
-loo_compare(ndmm_fit_loo, ndmm_fit_nph_loo)
-#>        elpd_diff se_diff
-#> model1  0.0       0.0   
-#> model2 -6.6       3.5
+
(ndmm_fit_loo <- loo(ndmm_fit))
+#> 
+#> Computed from 4000 by 4144 log-likelihood matrix
+#> 
+#>          Estimate    SE
+#> elpd_loo -12398.8 116.0
+#> p_loo        35.1   0.7
+#> looic     24797.7 232.1
+#> ------
+#> Monte Carlo SE of elpd_loo is 0.1.
+#> 
+#> All Pareto k estimates are good (k < 0.5).
+#> See help('pareto-k-diagnostic') for details.
+(ndmm_fit_nph_loo <- loo(ndmm_fit_nph))
+#> 
+#> Computed from 4000 by 4144 log-likelihood matrix
+#> 
+#>          Estimate    SE
+#> elpd_loo -12405.4 116.1
+#> p_loo        44.2   0.8
+#> looic     24810.9 232.2
+#> ------
+#> Monte Carlo SE of elpd_loo is 0.1.
+#> 
+#> All Pareto k estimates are good (k < 0.5).
+#> See help('pareto-k-diagnostic') for details.
+
+# Compare to PH model
+loo_compare(ndmm_fit_loo, ndmm_fit_nph_loo)
+#>        elpd_diff se_diff
+#> model1  0.0       0.0   
+#> model2 -6.6       3.5

The overall fit for the proportional hazards model is better.

We should check that no single study has a better fit with the non-PH model, in case an improved fit in one study has been masked by the increased complexity in others.

-
studies_all <- c(ndmm_ipd$study, ndmm_agd$study)
-cbind(
-  PH = by(ndmm_fit_loo$pointwise[, "looic"], studies_all, sum),
-  `non-PH` = by(ndmm_fit_nph_loo$pointwise[, "looic"], studies_all, sum)
-)
-#>                     PH    non-PH
-#> Attal2012     3345.132  3346.962
-#> Jackson2019  12398.245 12400.166
-#> McCarthy2012  2726.430  2737.793
-#> Morgan2012    4991.066  4989.484
-#> Palumbo2014   1336.786  1336.462
+
studies_all <- c(ndmm_ipd$study, ndmm_agd$study)
+cbind(
+  PH = by(ndmm_fit_loo$pointwise[, "looic"], studies_all, sum),
+  `non-PH` = by(ndmm_fit_nph_loo$pointwise[, "looic"], studies_all, sum)
+)
+#>                     PH    non-PH
+#> Attal2012     3345.132  3346.962
+#> Jackson2019  12398.245 12400.166
+#> McCarthy2012  2726.430  2737.793
+#> Morgan2012    4991.066  4989.484
+#> Palumbo2014   1336.786  1336.462

The LOOIC is similar or lower for the proportional hazards model compared to the non-proportional hazards model in all studies. Based on LOOIC alone, there is no evidence to suggest that the proportional @@ -967,140 +967,140 @@

Comparison to unadjusted NMA

For comparison, we also fit NMA models without any covariate adjustment, both with and without the proportional hazards assumption.

-
ndmm_fit_nma <- nma(ndmm_net,
-                    likelihood = "mspline",
-                    prior_intercept = normal(0, 100),
-                    prior_trt = normal(0, 100),
-                    prior_aux = half_normal(1))
-#> Note: Setting "Pbo" as the network reference treatment.
-
-ndmm_fit_nma
-#> A fixed effects ML-NMR with a mspline likelihood (log link).
-#> Cubic M-spline baseline hazard with 7 internal knots.
-#> Inference for Stan model: survival_mspline.
-#> 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
-#> d[Len]                  -0.52    0.00 0.05     -0.61     -0.55     -0.52     -0.49     -0.43  3117
-#> d[Thal]                 -0.11    0.00 0.09     -0.28     -0.17     -0.11     -0.05      0.07  4059
-#> lp__                -12533.05    0.21 6.85 -12547.59 -12537.46 -12532.59 -12528.12 -12521.11  1032
-#> sigma[Attal2012]         0.82    0.01 0.39      0.19      0.55      0.77      1.04      1.74  1573
-#> sigma[McCarthy2012]      1.71    0.01 0.56      0.76      1.29      1.66      2.06      2.95  2142
-#> sigma[Palumbo2014]       0.66    0.01 0.50      0.04      0.29      0.55      0.91      1.89  1794
-#> sigma[Jackson2019]       0.85    0.01 0.31      0.41      0.62      0.80      1.01      1.59  1960
-#> sigma[Morgan2012]        0.90    0.01 0.46      0.29      0.57      0.80      1.14      2.02  1424
-#>                     Rhat
-#> d[Len]                 1
-#> d[Thal]                1
-#> lp__                   1
-#> sigma[Attal2012]       1
-#> sigma[McCarthy2012]    1
-#> sigma[Palumbo2014]     1
-#> sigma[Jackson2019]     1
-#> sigma[Morgan2012]      1
-#> 
-#> Samples were drawn using NUTS(diag_e) at Thu Oct 12 23:00:43 2023.
-#> 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).
-
-ndmm_fit_nma_nph <- nma(ndmm_net,
-                        likelihood = "mspline",
-                        prior_intercept = normal(0, 100),
-                        prior_trt = normal(0, 100),
-                        prior_aux = half_normal(1),
-                        aux_by = c(.study, .trt))
-#> Note: Setting "Pbo" as the network reference treatment.
-
-ndmm_fit_nma_nph
-#> A fixed effects ML-NMR with a mspline likelihood (log link).
-#> Cubic M-spline baseline hazard with 7 internal knots.
-#> Stratified baseline hazards by .study and .trt.
-#> Inference for Stan model: survival_mspline.
-#> 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%
-#> d[Len]                       -0.47    0.00 0.05     -0.57     -0.50     -0.47     -0.43     -0.37
-#> d[Thal]                      -0.14    0.00 0.10     -0.34     -0.21     -0.14     -0.08      0.05
-#> lp__                     -12563.41    0.25 8.85 -12581.68 -12569.30 -12563.15 -12557.29 -12547.02
-#> sigma[Attal2012: Pbo]         0.95    0.01 0.43      0.22      0.65      0.91      1.20      1.94
-#> sigma[Attal2012: Len]         0.51    0.01 0.38      0.03      0.23      0.43      0.70      1.44
-#> sigma[McCarthy2012: Pbo]      1.26    0.01 0.55      0.40      0.86      1.19      1.60      2.57
-#> sigma[McCarthy2012: Len]      1.13    0.01 0.47      0.42      0.78      1.06      1.39      2.22
-#> sigma[Palumbo2014: Pbo]       0.87    0.01 0.50      0.13      0.51      0.78      1.14      2.07
-#> sigma[Palumbo2014: Len]       0.72    0.01 0.56      0.03      0.28      0.59      1.05      2.06
-#> sigma[Jackson2019: Pbo]       0.88    0.01 0.32      0.43      0.65      0.83      1.05      1.68
-#> sigma[Jackson2019: Len]       1.06    0.01 0.43      0.45      0.75      0.98      1.30      2.09
-#> sigma[Morgan2012: Pbo]        0.51    0.01 0.35      0.05      0.26      0.43      0.68      1.40
-#> sigma[Morgan2012: Thal]       1.07    0.01 0.45      0.36      0.74      1.01      1.33      2.12
-#>                          n_eff Rhat
-#> d[Len]                    2546    1
-#> d[Thal]                   3304    1
-#> lp__                      1252    1
-#> sigma[Attal2012: Pbo]     1825    1
-#> sigma[Attal2012: Len]     1854    1
-#> sigma[McCarthy2012: Pbo]  2327    1
-#> sigma[McCarthy2012: Len]  2396    1
-#> sigma[Palumbo2014: Pbo]   2391    1
-#> sigma[Palumbo2014: Len]   2302    1
-#> sigma[Jackson2019: Pbo]   2060    1
-#> sigma[Jackson2019: Len]   1774    1
-#> sigma[Morgan2012: Pbo]    2150    1
-#> sigma[Morgan2012: Thal]   2407    1
-#> 
-#> Samples were drawn using NUTS(diag_e) at Thu Oct 12 23:07:04 2023.
-#> 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).
+
ndmm_fit_nma <- nma(ndmm_net,
+                    likelihood = "mspline",
+                    prior_intercept = normal(0, 100),
+                    prior_trt = normal(0, 100),
+                    prior_aux = half_normal(1))
+#> Note: Setting "Pbo" as the network reference treatment.
+
+ndmm_fit_nma
+#> A fixed effects ML-NMR with a mspline likelihood (log link).
+#> Cubic M-spline baseline hazard with 7 internal knots.
+#> Inference for Stan model: survival_mspline.
+#> 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
+#> d[Len]                  -0.52    0.00 0.05     -0.61     -0.55     -0.52     -0.49     -0.43  3117
+#> d[Thal]                 -0.11    0.00 0.09     -0.28     -0.17     -0.11     -0.05      0.07  4059
+#> lp__                -12533.05    0.21 6.85 -12547.59 -12537.46 -12532.59 -12528.12 -12521.11  1032
+#> sigma[Attal2012]         0.82    0.01 0.39      0.19      0.55      0.77      1.04      1.74  1573
+#> sigma[McCarthy2012]      1.71    0.01 0.56      0.76      1.29      1.66      2.06      2.95  2142
+#> sigma[Palumbo2014]       0.66    0.01 0.50      0.04      0.29      0.55      0.91      1.89  1794
+#> sigma[Jackson2019]       0.85    0.01 0.31      0.41      0.62      0.80      1.01      1.59  1960
+#> sigma[Morgan2012]        0.90    0.01 0.46      0.29      0.57      0.80      1.14      2.02  1424
+#>                     Rhat
+#> d[Len]                 1
+#> d[Thal]                1
+#> lp__                   1
+#> sigma[Attal2012]       1
+#> sigma[McCarthy2012]    1
+#> sigma[Palumbo2014]     1
+#> sigma[Jackson2019]     1
+#> sigma[Morgan2012]      1
+#> 
+#> Samples were drawn using NUTS(diag_e) at Thu Oct 12 23:00:43 2023.
+#> 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).
+
+ndmm_fit_nma_nph <- nma(ndmm_net,
+                        likelihood = "mspline",
+                        prior_intercept = normal(0, 100),
+                        prior_trt = normal(0, 100),
+                        prior_aux = half_normal(1),
+                        aux_by = c(.study, .trt))
+#> Note: Setting "Pbo" as the network reference treatment.
+
+ndmm_fit_nma_nph
+#> A fixed effects ML-NMR with a mspline likelihood (log link).
+#> Cubic M-spline baseline hazard with 7 internal knots.
+#> Stratified baseline hazards by .study and .trt.
+#> Inference for Stan model: survival_mspline.
+#> 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%
+#> d[Len]                       -0.47    0.00 0.05     -0.57     -0.50     -0.47     -0.43     -0.37
+#> d[Thal]                      -0.14    0.00 0.10     -0.34     -0.21     -0.14     -0.08      0.05
+#> lp__                     -12563.41    0.25 8.85 -12581.68 -12569.30 -12563.15 -12557.29 -12547.02
+#> sigma[Attal2012: Pbo]         0.95    0.01 0.43      0.22      0.65      0.91      1.20      1.94
+#> sigma[Attal2012: Len]         0.51    0.01 0.38      0.03      0.23      0.43      0.70      1.44
+#> sigma[McCarthy2012: Pbo]      1.26    0.01 0.55      0.40      0.86      1.19      1.60      2.57
+#> sigma[McCarthy2012: Len]      1.13    0.01 0.47      0.42      0.78      1.06      1.39      2.22
+#> sigma[Palumbo2014: Pbo]       0.87    0.01 0.50      0.13      0.51      0.78      1.14      2.07
+#> sigma[Palumbo2014: Len]       0.72    0.01 0.56      0.03      0.28      0.59      1.05      2.06
+#> sigma[Jackson2019: Pbo]       0.88    0.01 0.32      0.43      0.65      0.83      1.05      1.68
+#> sigma[Jackson2019: Len]       1.06    0.01 0.43      0.45      0.75      0.98      1.30      2.09
+#> sigma[Morgan2012: Pbo]        0.51    0.01 0.35      0.05      0.26      0.43      0.68      1.40
+#> sigma[Morgan2012: Thal]       1.07    0.01 0.45      0.36      0.74      1.01      1.33      2.12
+#>                          n_eff Rhat
+#> d[Len]                    2546    1
+#> d[Thal]                   3304    1
+#> lp__                      1252    1
+#> sigma[Attal2012: Pbo]     1825    1
+#> sigma[Attal2012: Len]     1854    1
+#> sigma[McCarthy2012: Pbo]  2327    1
+#> sigma[McCarthy2012: Len]  2396    1
+#> sigma[Palumbo2014: Pbo]   2391    1
+#> sigma[Palumbo2014: Len]   2302    1
+#> sigma[Jackson2019: Pbo]   2060    1
+#> sigma[Jackson2019: Len]   1774    1
+#> sigma[Morgan2012: Pbo]    2150    1
+#> sigma[Morgan2012: Thal]   2407    1
+#> 
+#> Samples were drawn using NUTS(diag_e) at Thu Oct 12 23:07:04 2023.
+#> 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).

Again, we compare the model fit using the LOOIC, both overall and within each study.

-
# Compare overall model fit
-(ndmm_fit_nma_loo <- loo(ndmm_fit_nma))
-#> 
-#> Computed from 4000 by 4144 log-likelihood matrix
-#> 
-#>          Estimate    SE
-#> elpd_loo -12473.4 115.2
-#> p_loo        27.1   0.4
-#> looic     24946.7 230.5
-#> ------
-#> Monte Carlo SE of elpd_loo is 0.1.
-#> 
-#> All Pareto k estimates are good (k < 0.5).
-#> See help('pareto-k-diagnostic') for details.
-
-(ndmm_fit_nma_nph_loo <- loo(ndmm_fit_nma_nph))
-#> 
-#> Computed from 4000 by 4144 log-likelihood matrix
-#> 
-#>          Estimate    SE
-#> elpd_loo -12475.9 115.3
-#> p_loo        37.6   0.6
-#> looic     24951.8 230.6
-#> ------
-#> Monte Carlo SE of elpd_loo is 0.1.
-#> 
-#> All Pareto k estimates are good (k < 0.5).
-#> See help('pareto-k-diagnostic') for details.
-
-loo_compare(ndmm_fit_nma_loo, ndmm_fit_nma_nph_loo)
-#>        elpd_diff se_diff
-#> model1  0.0       0.0   
-#> model2 -2.5       4.4
-
-# Compare model fit by study
-cbind(
-  PH = by(ndmm_fit_nma_loo$pointwise[, "looic"], studies_all, sum),
-  `non-PH` = by(ndmm_fit_nma_nph_loo$pointwise[, "looic"], studies_all, sum)
-)
-#>                     PH    non-PH
-#> Attal2012     3410.058  3410.280
-#> Jackson2019  12404.314 12398.934
-#> McCarthy2012  2770.382  2781.407
-#> Morgan2012    4989.289  4990.538
-#> Palumbo2014   1372.698  1370.594
+
# Compare overall model fit
+(ndmm_fit_nma_loo <- loo(ndmm_fit_nma))
+#> 
+#> Computed from 4000 by 4144 log-likelihood matrix
+#> 
+#>          Estimate    SE
+#> elpd_loo -12473.4 115.2
+#> p_loo        27.1   0.4
+#> looic     24946.7 230.5
+#> ------
+#> Monte Carlo SE of elpd_loo is 0.1.
+#> 
+#> All Pareto k estimates are good (k < 0.5).
+#> See help('pareto-k-diagnostic') for details.
+
+(ndmm_fit_nma_nph_loo <- loo(ndmm_fit_nma_nph))
+#> 
+#> Computed from 4000 by 4144 log-likelihood matrix
+#> 
+#>          Estimate    SE
+#> elpd_loo -12475.9 115.3
+#> p_loo        37.6   0.6
+#> looic     24951.8 230.6
+#> ------
+#> Monte Carlo SE of elpd_loo is 0.1.
+#> 
+#> All Pareto k estimates are good (k < 0.5).
+#> See help('pareto-k-diagnostic') for details.
+
+loo_compare(ndmm_fit_nma_loo, ndmm_fit_nma_nph_loo)
+#>        elpd_diff se_diff
+#> model1  0.0       0.0   
+#> model2 -2.5       4.4
+
+# Compare model fit by study
+cbind(
+  PH = by(ndmm_fit_nma_loo$pointwise[, "looic"], studies_all, sum),
+  `non-PH` = by(ndmm_fit_nma_nph_loo$pointwise[, "looic"], studies_all, sum)
+)
+#>                     PH    non-PH
+#> Attal2012     3410.058  3410.280
+#> Jackson2019  12404.314 12398.934
+#> McCarthy2012  2770.382  2781.407
+#> Morgan2012    4989.289  4990.538
+#> Palumbo2014   1372.698  1370.594

Whilst there is little difference in overall model fit, the non-PH model is preferred in the Jackson2019 study with a substantially lower LOOIC. Including the covariates in the ML-NMR model is sufficient to @@ -1147,9 +1147,9 @@

Population-average survival probabilities

These are marginal or standardised survival curves. We also overlay the unadjusted Kaplan-Meier curves from the data using the geom_km() helper function.

-
plot(predict(ndmm_fit, type = "survival")) + 
-  geom_km(ndmm_net) +
-  theme(legend.position = "top", legend.box.spacing = unit(0, "lines"))
+
plot(predict(ndmm_fit, type = "survival")) + 
+  geom_km(ndmm_net) +
+  theme(legend.position = "top", legend.box.spacing = unit(0, "lines"))

Whilst the adjusted and unadjusted curves are not exactly comparable (although these are both marginal survival estimates, the adjusted @@ -1165,47 +1165,47 @@

Population-average median survival times

The predict() function can produce a range of other absolute effect summaries, for example population-average median survival times:

-
(medsurv <- predict(ndmm_fit, type = "median"))
-#> Warning: Evaluating M-spline at times beyond the boundary knots.
-#> Evaluating M-spline at times beyond the boundary knots.
-#> Evaluating M-spline at times beyond the boundary knots.
-#> Evaluating M-spline at times beyond the boundary knots.
-#> -------------------------------------------------------------- Study: Attal2012 ---- 
-#> 
-#>                        mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> pred[Attal2012: Pbo]  28.95 1.47 26.13 27.93 28.93 29.90 31.91     5299     3136 1.00
-#> pred[Attal2012: Len]  46.74 2.33 42.20 45.14 46.78 48.29 51.41     7287     3045 1.00
-#> pred[Attal2012: Thal] 32.35 3.42 26.30 29.99 32.11 34.43 39.96     2487     3264 1.01
-#> 
-#> ----------------------------------------------------------- Study: McCarthy2012 ---- 
-#> 
-#>                           mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> pred[McCarthy2012: Pbo]  33.79 2.11 29.63 32.37 33.74 35.16 38.05     4417     3185 1.00
-#> pred[McCarthy2012: Len]  55.66 3.31 49.21 53.37 55.69 57.81 62.25     5297     3292 1.00
-#> pred[McCarthy2012: Thal] 38.52 4.02 31.17 35.83 38.32 41.02 46.74     3925     3168 1.01
-#> 
-#> ------------------------------------------------------------ Study: Palumbo2014 ---- 
-#> 
-#>                          mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> pred[Palumbo2014: Pbo]  22.29 2.21 18.29 20.75 22.14 23.76 26.91     4908     3445 1.00
-#> pred[Palumbo2014: Len]  44.53 4.65 36.18 41.24 44.34 47.42 54.18     7050     2970 1.00
-#> pred[Palumbo2014: Thal] 27.56 4.21 20.07 24.61 27.28 30.17 36.60     4591     3615 1.01
-#> 
-#> ------------------------------------------------------------ Study: Jackson2019 ---- 
-#> 
-#>                          mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> pred[Jackson2019: Pbo]  24.45 1.34 22.02 23.50 24.43 25.33 27.15     2035     3398 1.01
-#> pred[Jackson2019: Len]  50.47 2.48 45.75 48.76 50.38 52.05 55.47      118     2795 1.03
-#> pred[Jackson2019: Thal] 31.27 3.76 24.60 28.64 31.03 33.65 39.21     5212     3108 1.00
-#> 
-#> ------------------------------------------------------------- Study: Morgan2012 ---- 
-#> 
-#>                         mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> pred[Morgan2012: Pbo]  21.22 1.90 17.67 19.91 21.13 22.45 25.26     1157     3295 1.01
-#> pred[Morgan2012: Len]  48.88 6.57 38.03 44.37 48.25 52.45 63.32      873     3187 1.01
-#> pred[Morgan2012: Thal] 27.59 2.50 23.22 25.81 27.40 29.25 32.85     4950     3698 1.00
-
-plot(medsurv)
+
(medsurv <- predict(ndmm_fit, type = "median"))
+#> Warning: Evaluating M-spline at times beyond the boundary knots.
+#> Evaluating M-spline at times beyond the boundary knots.
+#> Evaluating M-spline at times beyond the boundary knots.
+#> Evaluating M-spline at times beyond the boundary knots.
+#> -------------------------------------------------------------- Study: Attal2012 ---- 
+#> 
+#>                        mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> pred[Attal2012: Pbo]  28.95 1.47 26.13 27.93 28.93 29.90 31.91     5299     3136 1.00
+#> pred[Attal2012: Len]  46.74 2.33 42.20 45.14 46.78 48.29 51.41     7287     3045 1.00
+#> pred[Attal2012: Thal] 32.35 3.42 26.30 29.99 32.11 34.43 39.96     2487     3264 1.01
+#> 
+#> ----------------------------------------------------------- Study: McCarthy2012 ---- 
+#> 
+#>                           mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> pred[McCarthy2012: Pbo]  33.79 2.11 29.63 32.37 33.74 35.16 38.05     4417     3185 1.00
+#> pred[McCarthy2012: Len]  55.66 3.31 49.21 53.37 55.69 57.81 62.25     5297     3292 1.00
+#> pred[McCarthy2012: Thal] 38.52 4.02 31.17 35.83 38.32 41.02 46.74     3925     3168 1.01
+#> 
+#> ------------------------------------------------------------ Study: Palumbo2014 ---- 
+#> 
+#>                          mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> pred[Palumbo2014: Pbo]  22.29 2.21 18.29 20.75 22.14 23.76 26.91     4908     3445 1.00
+#> pred[Palumbo2014: Len]  44.53 4.65 36.18 41.24 44.34 47.42 54.18     7050     2970 1.00
+#> pred[Palumbo2014: Thal] 27.56 4.21 20.07 24.61 27.28 30.17 36.60     4591     3615 1.01
+#> 
+#> ------------------------------------------------------------ Study: Jackson2019 ---- 
+#> 
+#>                          mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> pred[Jackson2019: Pbo]  24.45 1.34 22.02 23.50 24.43 25.33 27.15     2035     3398 1.01
+#> pred[Jackson2019: Len]  50.47 2.48 45.75 48.76 50.38 52.05 55.47      118     2795 1.03
+#> pred[Jackson2019: Thal] 31.27 3.76 24.60 28.64 31.03 33.65 39.21     5212     3108 1.00
+#> 
+#> ------------------------------------------------------------- Study: Morgan2012 ---- 
+#> 
+#>                         mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> pred[Morgan2012: Pbo]  21.22 1.90 17.67 19.91 21.13 22.45 25.26     1157     3295 1.01
+#> pred[Morgan2012: Len]  48.88 6.57 38.03 44.37 48.25 52.45 63.32      873     3187 1.01
+#> pred[Morgan2012: Thal] 27.59 2.50 23.22 25.81 27.40 29.25 32.85     4950     3698 1.00
+
+plot(medsurv)

@@ -1214,63 +1214,63 @@

Population-average conditional log hazard ratios

relative_effects() function. With a ML-NMR model (or an IPD meta-regression), these are population-average conditional log hazard ratios (or log survival time ratios for AFT models).

-
(loghr <- relative_effects(ndmm_fit, all_contrasts = TRUE))
-#> -------------------------------------------------------------- Study: Attal2012 ---- 
-#> 
-#> Covariate values:
-#>    age iss_stage3 response_cr_vgpr male
-#>  54.29        0.2             0.54 0.57
-#> 
-#>                             mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> d[Attal2012: Len vs. Pbo]  -0.60 0.07 -0.74 -0.64 -0.59 -0.54 -0.45     7342     3387 1.00
-#> d[Attal2012: Thal vs. Pbo] -0.13 0.13 -0.39 -0.22 -0.13 -0.04  0.12     4188     3416 1.01
-#> d[Attal2012: Thal vs. Len]  0.46 0.12  0.24  0.38  0.46  0.54  0.69     3631     3276 1.01
-#> 
-#> ----------------------------------------------------------- Study: McCarthy2012 ---- 
-#> 
-#> Covariate values:
-#>    age iss_stage3 response_cr_vgpr male
-#>  57.66       0.23             0.67 0.54
-#> 
-#>                                mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> d[McCarthy2012: Len vs. Pbo]  -0.62 0.06 -0.74 -0.66 -0.62 -0.58 -0.51     7421     3243 1.00
-#> d[McCarthy2012: Thal vs. Pbo] -0.16 0.12 -0.39 -0.24 -0.16 -0.08  0.07     4194     2877 1.01
-#> d[McCarthy2012: Thal vs. Len]  0.46 0.12  0.24  0.38  0.46  0.54  0.69     3631     3276 1.01
-#> 
-#> ------------------------------------------------------------ Study: Palumbo2014 ---- 
-#> 
-#> Covariate values:
-#>    age iss_stage3 response_cr_vgpr male
-#>  54.17       0.11              0.4 0.55
-#> 
-#>                               mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> d[Palumbo2014: Len vs. Pbo]  -0.64 0.08 -0.80 -0.70 -0.64 -0.58 -0.48     7666     3354 1.00
-#> d[Palumbo2014: Thal vs. Pbo] -0.18 0.14 -0.44 -0.27 -0.18 -0.08  0.09     4182     3321 1.01
-#> d[Palumbo2014: Thal vs. Len]  0.46 0.12  0.24  0.38  0.46  0.54  0.69     3631     3276 1.01
-#> 
-#> ------------------------------------------------------------ Study: Jackson2019 ---- 
-#> 
-#> Covariate values:
-#>    age iss_stage3 response_cr_vgpr male
-#>  64.63       0.21             0.84 0.62
-#> 
-#>                               mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> d[Jackson2019: Len vs. Pbo]  -0.69 0.06 -0.81 -0.72 -0.69 -0.64 -0.57     4040     3447 1.00
-#> d[Jackson2019: Thal vs. Pbo] -0.22 0.11 -0.44 -0.29 -0.22 -0.15 -0.01     4339     2883 1.01
-#> d[Jackson2019: Thal vs. Len]  0.46 0.12  0.24  0.38  0.46  0.54  0.69     3631     3276 1.01
-#> 
-#> ------------------------------------------------------------- Study: Morgan2012 ---- 
-#> 
-#> Covariate values:
-#>    age iss_stage3 response_cr_vgpr male
-#>  64.46       0.33             0.73 0.62
-#> 
-#>                              mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> d[Morgan2012: Len vs. Pbo]  -0.68 0.06 -0.80 -0.72 -0.68 -0.64 -0.56     4134     3288 1.00
-#> d[Morgan2012: Thal vs. Pbo] -0.22 0.10 -0.42 -0.28 -0.22 -0.15 -0.02     4430     2726 1.01
-#> d[Morgan2012: Thal vs. Len]  0.46 0.12  0.24  0.38  0.46  0.54  0.69     3631     3276 1.01
-
-plot(loghr)
+
(loghr <- relative_effects(ndmm_fit, all_contrasts = TRUE))
+#> -------------------------------------------------------------- Study: Attal2012 ---- 
+#> 
+#> Covariate values:
+#>    age iss_stage3 response_cr_vgpr male
+#>  54.29        0.2             0.54 0.57
+#> 
+#>                             mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> d[Attal2012: Len vs. Pbo]  -0.60 0.07 -0.74 -0.64 -0.59 -0.54 -0.45     7342     3387 1.00
+#> d[Attal2012: Thal vs. Pbo] -0.13 0.13 -0.39 -0.22 -0.13 -0.04  0.12     4188     3416 1.01
+#> d[Attal2012: Thal vs. Len]  0.46 0.12  0.24  0.38  0.46  0.54  0.69     3631     3276 1.01
+#> 
+#> ----------------------------------------------------------- Study: McCarthy2012 ---- 
+#> 
+#> Covariate values:
+#>    age iss_stage3 response_cr_vgpr male
+#>  57.66       0.23             0.67 0.54
+#> 
+#>                                mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> d[McCarthy2012: Len vs. Pbo]  -0.62 0.06 -0.74 -0.66 -0.62 -0.58 -0.51     7421     3243 1.00
+#> d[McCarthy2012: Thal vs. Pbo] -0.16 0.12 -0.39 -0.24 -0.16 -0.08  0.07     4194     2877 1.01
+#> d[McCarthy2012: Thal vs. Len]  0.46 0.12  0.24  0.38  0.46  0.54  0.69     3631     3276 1.01
+#> 
+#> ------------------------------------------------------------ Study: Palumbo2014 ---- 
+#> 
+#> Covariate values:
+#>    age iss_stage3 response_cr_vgpr male
+#>  54.17       0.11              0.4 0.55
+#> 
+#>                               mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> d[Palumbo2014: Len vs. Pbo]  -0.64 0.08 -0.80 -0.70 -0.64 -0.58 -0.48     7666     3354 1.00
+#> d[Palumbo2014: Thal vs. Pbo] -0.18 0.14 -0.44 -0.27 -0.18 -0.08  0.09     4182     3321 1.01
+#> d[Palumbo2014: Thal vs. Len]  0.46 0.12  0.24  0.38  0.46  0.54  0.69     3631     3276 1.01
+#> 
+#> ------------------------------------------------------------ Study: Jackson2019 ---- 
+#> 
+#> Covariate values:
+#>    age iss_stage3 response_cr_vgpr male
+#>  64.63       0.21             0.84 0.62
+#> 
+#>                               mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> d[Jackson2019: Len vs. Pbo]  -0.69 0.06 -0.81 -0.72 -0.69 -0.64 -0.57     4040     3447 1.00
+#> d[Jackson2019: Thal vs. Pbo] -0.22 0.11 -0.44 -0.29 -0.22 -0.15 -0.01     4339     2883 1.01
+#> d[Jackson2019: Thal vs. Len]  0.46 0.12  0.24  0.38  0.46  0.54  0.69     3631     3276 1.01
+#> 
+#> ------------------------------------------------------------- Study: Morgan2012 ---- 
+#> 
+#> Covariate values:
+#>    age iss_stage3 response_cr_vgpr male
+#>  64.46       0.33             0.73 0.62
+#> 
+#>                              mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> d[Morgan2012: Len vs. Pbo]  -0.68 0.06 -0.80 -0.72 -0.68 -0.64 -0.56     4134     3288 1.00
+#> d[Morgan2012: Thal vs. Pbo] -0.22 0.10 -0.42 -0.28 -0.22 -0.15 -0.02     4430     2726 1.01
+#> d[Morgan2012: Thal vs. Len]  0.46 0.12  0.24  0.38  0.46  0.54  0.69     3631     3276 1.01
+
+plot(loghr)

diff --git a/vignettes/example_parkinsons.html b/vignettes/example_parkinsons.html index c1e08f329..0726387aa 100644 --- a/vignettes/example_parkinsons.html +++ b/vignettes/example_parkinsons.html @@ -471,14 +471,14 @@

Fixed effect meta-analysis

#> 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[1] 0.52 0.01 0.48 -0.41 0.19 0.53 0.84 1.47 1554 1 -#> d[2] -1.28 0.01 0.52 -2.30 -1.64 -1.28 -0.93 -0.27 1461 1 -#> d[3] 0.04 0.01 0.33 -0.59 -0.19 0.04 0.27 0.66 1791 1 -#> d[5] -0.30 0.00 0.21 -0.71 -0.44 -0.30 -0.16 0.13 2891 1 -#> lp__ -6.69 0.06 2.38 -12.27 -8.05 -6.37 -4.95 -3.04 1581 1 +#> mean se_mean sd 2.5% 25% 50% 75% 97.5% n_eff Rhat +#> d[1] 0.52 0.01 0.49 -0.44 0.19 0.51 0.84 1.49 1455 1 +#> d[2] -1.29 0.01 0.53 -2.36 -1.63 -1.30 -0.93 -0.24 1447 1 +#> d[3] 0.05 0.01 0.32 -0.59 -0.17 0.05 0.26 0.68 2084 1 +#> d[5] -0.30 0.00 0.21 -0.70 -0.45 -0.31 -0.17 0.11 3020 1 +#> lp__ -58.31 0.06 2.45 -64.18 -59.72 -57.98 -56.53 -54.61 1593 1 #> -#> Samples were drawn using NUTS(diag_e) at Fri Jun 16 15:51:45 2023. +#> Samples were drawn using NUTS(diag_e) at Tue Jan 9 17:57:15 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). @@ -489,7 +489,7 @@

Fixed effect meta-analysis

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

plot_prior_posterior(arm_fit_FE)
-

+

Random effects meta-analysis

@@ -518,7 +518,7 @@

Random effects meta-analysis

prior_het = half_normal(scale = 5), adapt_delta = 0.99) #> Note: Setting "4" as the network reference treatment. -#> Warning: There were 3 divergent transitions after warmup. See +#> Warning: There were 2 divergent transitions after warmup. See #> https://mc-stan.org/misc/warnings.html#divergent-transitions-after-warmup #> to find out why this is a problem and how to eliminate them. #> Warning: Examine the pairs() plot to diagnose sampling problems
@@ -529,7 +529,7 @@

Random effects meta-analysis

investigate where in the posterior distribution these divergences are happening (indicated by red crosses):

pairs(arm_fit_RE, pars = c("mu[4]", "d[3]", "delta[4: 3]", "tau"))
-

+

The divergent transitions occur in the upper tail of the heterogeneity standard deviation. In this case, with only a small number of studies, there is not very much information to estimate the @@ -544,15 +544,15 @@

Random effects meta-analysis

#> 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[1] 0.55 0.02 0.66 -0.65 0.16 0.53 0.93 1.77 1437 1 -#> d[2] -1.31 0.02 0.71 -2.69 -1.74 -1.31 -0.89 0.00 1628 1 -#> d[3] 0.04 0.01 0.50 -0.91 -0.25 0.04 0.33 0.97 1636 1 -#> d[5] -0.31 0.01 0.46 -1.26 -0.51 -0.29 -0.09 0.59 2024 1 -#> lp__ -12.83 0.10 3.60 -20.63 -15.03 -12.50 -10.23 -6.88 1380 1 -#> tau 0.40 0.02 0.40 0.01 0.13 0.29 0.52 1.49 618 1 +#> mean se_mean sd 2.5% 25% 50% 75% 97.5% n_eff Rhat +#> d[1] 0.52 0.02 0.62 -0.63 0.14 0.51 0.90 1.78 1522 1 +#> d[2] -1.32 0.02 0.68 -2.68 -1.74 -1.32 -0.91 -0.01 1633 1 +#> d[3] 0.03 0.01 0.48 -0.89 -0.24 0.04 0.31 0.94 2222 1 +#> d[5] -0.31 0.01 0.43 -1.15 -0.50 -0.31 -0.10 0.49 1629 1 +#> lp__ -76.05 0.10 3.59 -84.03 -78.19 -75.72 -73.52 -70.04 1358 1 +#> tau 0.38 0.01 0.38 0.01 0.12 0.27 0.51 1.37 723 1 #> -#> Samples were drawn using NUTS(diag_e) at Fri Jun 16 15:52:07 2023. +#> Samples were drawn using NUTS(diag_e) at Tue Jan 9 17:57:26 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). @@ -564,28 +564,28 @@

Random effects meta-analysis

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

plot_prior_posterior(arm_fit_RE)
-

+

Model comparison

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

(arm_dic_FE <- dic(arm_fit_FE))
-#> Residual deviance: 13.4 (on 15 data points)
-#>                pD: 11.1
-#>               DIC: 24.4
+#> Residual deviance: 13.5 (on 15 data points) +#> pD: 11.2 +#> DIC: 24.7
(arm_dic_RE <- dic(arm_fit_RE))
-#> Residual deviance: 13.7 (on 15 data points)
-#>                pD: 12.6
-#>               DIC: 26.3
+#> Residual deviance: 13.5 (on 15 data points) +#> pD: 12.3 +#> DIC: 25.8

Both models fit the data well, having posterior mean residual deviance close to the number of data points. The DIC is similar between models, so we choose the FE model based on parsimony.

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

plot(arm_dic_FE)
-

+

plot(arm_dic_RE)
-

+

@@ -596,20 +596,20 @@

Further results

trt_ref = 1:

(arm_releff_FE <- relative_effects(arm_fit_FE, trt_ref = 1))
 #>       mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> d[4] -0.52 0.48 -1.47 -0.84 -0.53 -0.19  0.41     1561     2426    1
-#> d[2] -1.81 0.32 -2.46 -2.02 -1.81 -1.59 -1.19     5125     2917    1
-#> d[3] -0.48 0.49 -1.44 -0.81 -0.48 -0.15  0.47     2416     2508    1
-#> d[5] -0.82 0.53 -1.86 -1.18 -0.83 -0.47  0.20     1762     1810    1
+#> d[4] -0.52 0.49 -1.49 -0.84 -0.51 -0.19  0.44     1462     2068    1
+#> d[2] -1.81 0.33 -2.48 -2.03 -1.81 -1.58 -1.16     5387     3162    1
+#> d[3] -0.47 0.50 -1.44 -0.82 -0.47 -0.13  0.50     2184     2601    1
+#> d[5] -0.82 0.53 -1.87 -1.17 -0.82 -0.47  0.21     1571     2072    1
 plot(arm_releff_FE, ref_line = 0)
-

+

(arm_releff_RE <- relative_effects(arm_fit_RE, trt_ref = 1))
 #>       mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> d[4] -0.55 0.66 -1.77 -0.93 -0.53 -0.16  0.65     1498     1706    1
-#> d[2] -1.86 0.51 -2.94 -2.15 -1.86 -1.56 -0.87     4005     2430    1
-#> d[3] -0.51 0.66 -1.72 -0.90 -0.49 -0.12  0.75     2471     2260    1
-#> d[5] -0.85 0.79 -2.37 -1.28 -0.85 -0.41  0.71     1801     1677    1
+#> d[4] -0.52 0.62 -1.78 -0.90 -0.51 -0.14  0.63     1551     1917    1
+#> d[2] -1.85 0.50 -2.86 -2.12 -1.84 -1.55 -0.91     4153     2853    1
+#> d[3] -0.49 0.62 -1.69 -0.87 -0.49 -0.11  0.68     3010     2412    1
+#> d[5] -0.83 0.76 -2.38 -1.25 -0.81 -0.38  0.58     1704     1902    1
 plot(arm_releff_RE, ref_line = 0)
-

+

Following Dias et al. (2011), we produce absolute predictions of the mean off-time reduction on each treatment assuming a Normal distribution for the outcomes on treatment 1 (placebo) with mean \(-0.73\) and precision \(21\). We use the predict() @@ -626,26 +626,26 @@

Further results

trt_ref = 1) arm_pred_FE #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[4] -1.25 0.53 -2.30 -1.61 -1.25 -0.89 -0.22 1796 2499 1 +#> pred[4] -1.24 0.53 -2.29 -1.60 -1.25 -0.88 -0.20 1570 2220 1 #> pred[1] -0.73 0.22 -1.16 -0.88 -0.73 -0.58 -0.29 3910 3936 1 -#> pred[2] -2.53 0.39 -3.29 -2.80 -2.54 -2.27 -1.77 4640 2825 1 -#> pred[3] -1.21 0.53 -2.22 -1.57 -1.21 -0.86 -0.15 2585 2980 1 -#> pred[5] -1.55 0.57 -2.68 -1.94 -1.56 -1.16 -0.44 1993 2600 1 +#> pred[2] -2.53 0.40 -3.31 -2.78 -2.53 -2.27 -1.75 4820 3588 1 +#> pred[3] -1.20 0.54 -2.25 -1.56 -1.20 -0.81 -0.15 2260 2867 1 +#> pred[5] -1.55 0.57 -2.69 -1.92 -1.55 -1.18 -0.45 1664 2609 1 plot(arm_pred_FE)
-

+

arm_pred_RE <- predict(arm_fit_RE, 
                        baseline = distr(qnorm, mean = -0.73, sd = 21^-0.5),
                        type = "response",
                        trt_ref = 1)
 arm_pred_RE
 #>          mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> pred[4] -1.27 0.69 -2.62 -1.69 -1.26 -0.85  0.05     1650     1667    1
+#> pred[4] -1.25 0.65 -2.60 -1.66 -1.24 -0.82 -0.06     1653     1893    1
 #> pred[1] -0.73 0.22 -1.16 -0.87 -0.73 -0.58 -0.30     3976     3867    1
-#> pred[2] -2.59 0.56 -3.68 -2.92 -2.57 -2.25 -1.49     3978     2541    1
-#> pred[3] -1.23 0.69 -2.54 -1.66 -1.23 -0.81  0.13     2654     2319    1
-#> pred[5] -1.58 0.83 -3.12 -2.05 -1.57 -1.11  0.04     1930     1701    1
+#> pred[2] -2.58 0.55 -3.64 -2.89 -2.57 -2.25 -1.56     4242     2675    1
+#> pred[3] -1.22 0.66 -2.50 -1.64 -1.21 -0.80  0.03     3146     2589    1
+#> pred[5] -1.56 0.79 -3.12 -2.00 -1.53 -1.09 -0.14     1760     1765    1
 plot(arm_pred_RE)
-

+

If the baseline argument is omitted, predictions of mean off-time reduction will be produced for every study in the network based on their estimated baseline response \(\mu_j\):

@@ -654,96 +654,96 @@

Further results

#> ---------------------------------------------------------------------- Study: 1 ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[1: 4] -1.65 0.47 -2.57 -1.96 -1.66 -1.33 -0.75 2070 2888 1 -#> pred[1: 1] -1.12 0.43 -1.95 -1.41 -1.13 -0.84 -0.28 3883 3420 1 -#> pred[1: 2] -2.93 0.51 -3.92 -3.28 -2.93 -2.57 -1.96 3903 3458 1 -#> pred[1: 3] -1.61 0.40 -2.39 -1.87 -1.60 -1.34 -0.84 4134 3242 1 -#> pred[1: 5] -1.95 0.51 -2.97 -2.28 -1.95 -1.60 -0.95 2263 2753 1 +#> pred[1: 4] -1.64 0.46 -2.59 -1.94 -1.64 -1.35 -0.76 1940 2553 1 +#> pred[1: 1] -1.13 0.43 -1.97 -1.42 -1.12 -0.84 -0.29 3545 2759 1 +#> pred[1: 2] -2.93 0.51 -3.95 -3.29 -2.93 -2.59 -1.96 3165 2850 1 +#> pred[1: 3] -1.60 0.40 -2.40 -1.86 -1.59 -1.33 -0.80 3429 3084 1 +#> pred[1: 5] -1.95 0.50 -2.96 -2.28 -1.95 -1.61 -0.98 1982 2436 1 #> #> ---------------------------------------------------------------------- Study: 2 ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[2: 4] -1.16 0.51 -2.19 -1.50 -1.17 -0.81 -0.20 1462 2235 1 -#> pred[2: 1] -0.64 0.26 -1.15 -0.81 -0.64 -0.46 -0.13 4983 3344 1 -#> pred[2: 2] -2.44 0.24 -2.92 -2.60 -2.44 -2.28 -1.99 4253 3244 1 -#> pred[2: 3] -1.12 0.52 -2.12 -1.47 -1.12 -0.76 -0.10 2389 2725 1 -#> pred[2: 5] -1.46 0.55 -2.56 -1.84 -1.46 -1.09 -0.39 1653 2265 1 +#> pred[2: 4] -1.16 0.52 -2.17 -1.50 -1.15 -0.82 -0.13 1447 2010 1 +#> pred[2: 1] -0.64 0.26 -1.14 -0.81 -0.64 -0.47 -0.13 4796 3864 1 +#> pred[2: 2] -2.45 0.25 -2.92 -2.62 -2.44 -2.28 -1.97 4864 3265 1 +#> pred[2: 3] -1.11 0.54 -2.18 -1.47 -1.11 -0.76 -0.06 2060 2552 1 +#> pred[2: 5] -1.46 0.56 -2.57 -1.82 -1.46 -1.10 -0.37 1557 2098 1 #> #> ---------------------------------------------------------------------- Study: 3 ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[3: 4] -1.11 0.41 -1.94 -1.38 -1.11 -0.83 -0.30 1796 2328 1 -#> pred[3: 1] -0.59 0.35 -1.27 -0.83 -0.59 -0.36 0.11 4190 3442 1 -#> pred[3: 2] -2.40 0.38 -3.15 -2.65 -2.40 -2.13 -1.65 4199 3486 1 -#> pred[3: 3] -1.07 0.46 -1.95 -1.38 -1.07 -0.77 -0.16 2930 2423 1 -#> pred[3: 5] -1.41 0.47 -2.33 -1.72 -1.41 -1.10 -0.49 1972 2508 1 +#> pred[3: 4] -1.11 0.42 -1.95 -1.39 -1.10 -0.83 -0.29 1714 2578 1 +#> pred[3: 1] -0.59 0.38 -1.33 -0.85 -0.60 -0.34 0.13 4890 3255 1 +#> pred[3: 2] -2.40 0.40 -3.19 -2.67 -2.39 -2.13 -1.62 4261 2897 1 +#> pred[3: 3] -1.06 0.48 -2.01 -1.38 -1.06 -0.75 -0.12 2691 3161 1 +#> pred[3: 5] -1.41 0.47 -2.33 -1.72 -1.42 -1.09 -0.49 1803 2763 1 #> #> ---------------------------------------------------------------------- Study: 4 ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[4: 4] -0.39 0.30 -0.97 -0.60 -0.39 -0.18 0.19 2277 2640 1 -#> pred[4: 1] 0.13 0.51 -0.86 -0.21 0.14 0.48 1.14 2326 2753 1 -#> pred[4: 2] -1.67 0.55 -2.76 -2.05 -1.67 -1.30 -0.60 2282 2895 1 -#> pred[4: 3] -0.35 0.25 -0.83 -0.52 -0.35 -0.18 0.14 4546 3077 1 -#> pred[4: 5] -0.69 0.37 -1.43 -0.94 -0.69 -0.45 0.02 2468 2805 1 +#> pred[4: 4] -0.40 0.30 -0.99 -0.60 -0.39 -0.20 0.18 2265 2762 1 +#> pred[4: 1] 0.12 0.51 -0.87 -0.24 0.11 0.48 1.09 2127 2799 1 +#> pred[4: 2] -1.69 0.56 -2.77 -2.06 -1.69 -1.31 -0.59 1962 2477 1 +#> pred[4: 3] -0.35 0.24 -0.83 -0.52 -0.36 -0.18 0.12 4953 3214 1 +#> pred[4: 5] -0.70 0.36 -1.40 -0.94 -0.70 -0.46 -0.01 2477 2779 1 #> #> ---------------------------------------------------------------------- Study: 5 ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[5: 4] -0.56 0.34 -1.20 -0.79 -0.56 -0.33 0.13 2475 2599 1 -#> pred[5: 1] -0.03 0.53 -1.10 -0.38 -0.03 0.32 1.00 2503 2883 1 -#> pred[5: 2] -1.84 0.57 -2.96 -2.21 -1.84 -1.45 -0.71 2344 2950 1 -#> pred[5: 3] -0.52 0.29 -1.10 -0.71 -0.52 -0.31 0.06 5216 3387 1 -#> pred[5: 5] -0.86 0.40 -1.63 -1.13 -0.86 -0.59 -0.04 2629 2791 1 +#> pred[5: 4] -0.56 0.35 -1.25 -0.79 -0.54 -0.33 0.12 2514 2543 1 +#> pred[5: 1] -0.04 0.55 -1.15 -0.42 -0.03 0.34 1.02 2143 2665 1 +#> pred[5: 2] -1.85 0.60 -3.01 -2.23 -1.84 -1.46 -0.69 1966 2181 1 +#> pred[5: 3] -0.51 0.29 -1.08 -0.71 -0.51 -0.32 0.06 4987 2803 1 +#> pred[5: 5] -0.86 0.40 -1.67 -1.13 -0.86 -0.59 -0.07 2686 2693 1 #> #> ---------------------------------------------------------------------- Study: 6 ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[6: 4] -2.20 0.18 -2.56 -2.31 -2.19 -2.08 -1.86 3342 2849 1 -#> pred[6: 1] -1.67 0.51 -2.68 -2.02 -1.68 -1.33 -0.66 1728 2468 1 -#> pred[6: 2] -3.48 0.55 -4.53 -3.86 -3.49 -3.10 -2.40 1567 2472 1 -#> pred[6: 3] -2.16 0.37 -2.86 -2.41 -2.15 -1.91 -1.41 2043 2625 1 -#> pred[6: 5] -2.50 0.17 -2.82 -2.61 -2.50 -2.39 -2.16 5040 3309 1 +#> pred[6: 4] -2.19 0.17 -2.53 -2.31 -2.19 -2.08 -1.86 2909 2629 1 +#> pred[6: 1] -1.68 0.51 -2.71 -2.02 -1.68 -1.34 -0.65 1584 2059 1 +#> pred[6: 2] -3.48 0.56 -4.58 -3.84 -3.49 -3.11 -2.37 1566 2208 1 +#> pred[6: 3] -2.15 0.37 -2.87 -2.39 -2.15 -1.90 -1.43 2340 2707 1 +#> pred[6: 5] -2.50 0.17 -2.82 -2.61 -2.50 -2.39 -2.17 5579 3339 1 #> #> ---------------------------------------------------------------------- Study: 7 ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[7: 4] -1.81 0.18 -2.17 -1.93 -1.80 -1.68 -1.46 3122 2471 1 -#> pred[7: 1] -1.28 0.52 -2.28 -1.64 -1.28 -0.94 -0.26 1617 2223 1 -#> pred[7: 2] -3.09 0.56 -4.16 -3.48 -3.08 -2.70 -2.01 1483 2177 1 -#> pred[7: 3] -1.76 0.37 -2.45 -2.02 -1.77 -1.51 -1.03 1895 2504 1 -#> pred[7: 5] -2.11 0.20 -2.49 -2.24 -2.11 -1.96 -1.71 4216 3018 1 +#> pred[7: 4] -1.79 0.18 -2.13 -1.91 -1.79 -1.67 -1.45 3591 3141 1 +#> pred[7: 1] -1.28 0.52 -2.27 -1.63 -1.28 -0.93 -0.21 1579 2161 1 +#> pred[7: 2] -3.08 0.56 -4.17 -3.47 -3.09 -2.71 -1.95 1546 2169 1 +#> pred[7: 3] -1.75 0.37 -2.48 -2.00 -1.75 -1.50 -1.05 2259 2571 1 +#> pred[7: 5] -2.10 0.21 -2.49 -2.24 -2.10 -1.96 -1.69 4670 3172 1 plot(arm_pred_FE_studies) -

+

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

(arm_ranks <- posterior_ranks(arm_fit_FE))
 #>         mean   sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> rank[4] 3.51 0.72    2   3   3   4     5     1946       NA    1
-#> rank[1] 4.63 0.77    2   5   5   5     5     2089       NA    1
-#> rank[2] 1.05 0.26    1   1   1   1     2     2382     2410    1
-#> rank[3] 3.51 0.92    2   3   4   4     5     2355       NA    1
-#> rank[5] 2.29 0.69    1   2   2   2     4     2180     2219    1
+#> rank[4] 3.51 0.72    2   3   3   4     5     2091       NA    1
+#> rank[1] 4.62 0.79    2   5   5   5     5     1999       NA    1
+#> rank[2] 1.06 0.31    1   1   1   1     2     2051     2153    1
+#> rank[3] 3.55 0.92    2   3   4   4     5     2948       NA    1
+#> rank[5] 2.26 0.67    1   2   2   2     4     2493     2702    1
 plot(arm_ranks)
-

+

(arm_rankprobs <- posterior_rank_probs(arm_fit_FE))
 #>      p_rank[1] p_rank[2] p_rank[3] p_rank[4] p_rank[5]
-#> d[4]      0.00      0.05      0.49      0.38      0.09
-#> d[1]      0.00      0.04      0.07      0.12      0.78
-#> d[2]      0.96      0.04      0.01      0.00      0.00
-#> d[3]      0.00      0.17      0.26      0.44      0.12
-#> d[5]      0.04      0.71      0.18      0.06      0.01
+#> d[4]      0.00      0.04      0.49      0.38      0.09
+#> d[1]      0.00      0.04      0.07      0.12      0.77
+#> d[2]      0.95      0.04      0.01      0.00      0.00
+#> d[3]      0.00      0.16      0.26      0.44      0.14
+#> d[5]      0.05      0.72      0.17      0.05      0.01
 plot(arm_rankprobs)
-

+

(arm_cumrankprobs <- posterior_rank_probs(arm_fit_FE, cumulative = TRUE))
 #>      p_rank[1] p_rank[2] p_rank[3] p_rank[4] p_rank[5]
 #> d[4]      0.00      0.05      0.53      0.91         1
-#> d[1]      0.00      0.04      0.11      0.22         1
-#> d[2]      0.96      0.99      1.00      1.00         1
-#> d[3]      0.00      0.17      0.43      0.88         1
-#> d[5]      0.04      0.75      0.93      0.99         1
+#> d[1]      0.00      0.04      0.11      0.23         1
+#> d[2]      0.95      0.99      1.00      1.00         1
+#> d[3]      0.00      0.16      0.42      0.86         1
+#> d[5]      0.05      0.76      0.94      0.99         1
 plot(arm_cumrankprobs)
-

+

@@ -814,21 +814,21 @@

Fixed effect meta-analysis

#> 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[1] 0.51 0.01 0.48 -0.42 0.18 0.52 0.84 1.45 2125 1 -#> d[2] -1.30 0.01 0.53 -2.35 -1.66 -1.30 -0.95 -0.28 2188 1 -#> d[3] 0.04 0.01 0.34 -0.62 -0.18 0.04 0.27 0.73 2949 1 -#> d[5] -0.30 0.00 0.21 -0.71 -0.44 -0.30 -0.16 0.11 2981 1 -#> lp__ -3.19 0.03 1.46 -6.82 -3.92 -2.86 -2.11 -1.41 1765 1 +#> mean se_mean sd 2.5% 25% 50% 75% 97.5% n_eff Rhat +#> d[1] 0.52 0.01 0.48 -0.40 0.19 0.51 0.85 1.50 2071 1 +#> d[2] -1.29 0.01 0.52 -2.34 -1.64 -1.30 -0.94 -0.27 2191 1 +#> d[3] 0.04 0.01 0.33 -0.59 -0.19 0.04 0.27 0.69 2688 1 +#> d[5] -0.30 0.00 0.21 -0.71 -0.44 -0.31 -0.16 0.12 3076 1 +#> lp__ -25.27 0.03 1.41 -28.91 -25.98 -24.95 -24.22 -23.49 1720 1 #> -#> Samples were drawn using NUTS(diag_e) at Fri Jun 16 15:52:44 2023. +#> Samples were drawn using NUTS(diag_e) at Tue Jan 9 17:57:46 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 prior and posterior distributions can be compared visually using the plot_prior_posterior() function:

plot_prior_posterior(contr_fit_FE)
-

+

Random effects meta-analysis

@@ -855,7 +855,7 @@

Random effects meta-analysis

prior_het = half_normal(scale = 5), adapt_delta = 0.99) #> Note: Setting "4" as the network reference treatment. -#> Warning: There were 5 divergent transitions after warmup. See +#> Warning: There were 1 divergent transitions after warmup. See #> https://mc-stan.org/misc/warnings.html#divergent-transitions-after-warmup #> to find out why this is a problem and how to eliminate them. #> Warning: Examine the pairs() plot to diagnose sampling problems
@@ -866,7 +866,7 @@

Random effects meta-analysis

investigate where in the posterior distribution these divergences are happening (indicated by red crosses):

pairs(contr_fit_RE, pars = c("d[3]", "delta[4: 4 vs. 3]", "tau"))
-

+

The divergent transitions occur in the upper tail of the heterogeneity standard deviation. In this case, with only a small number of studies, there is not very much information to estimate the @@ -881,15 +881,15 @@

Random effects meta-analysis

#> 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[1] 0.53 0.02 0.74 -0.76 0.13 0.52 0.93 1.85 1349 1.00 -#> d[2] -1.32 0.02 0.75 -2.75 -1.73 -1.32 -0.90 0.08 1655 1.00 -#> d[3] 0.05 0.01 0.50 -0.93 -0.24 0.04 0.33 1.08 2018 1.00 -#> d[5] -0.30 0.01 0.49 -1.18 -0.52 -0.31 -0.10 0.67 1461 1.00 -#> lp__ -8.15 0.08 2.80 -14.25 -9.84 -7.89 -6.17 -3.37 1259 1.00 -#> tau 0.42 0.02 0.45 0.02 0.13 0.29 0.55 1.67 493 1.01 +#> mean se_mean sd 2.5% 25% 50% 75% 97.5% n_eff Rhat +#> d[1] 0.53 0.01 0.62 -0.64 0.15 0.52 0.90 1.77 2374 1 +#> d[2] -1.31 0.01 0.70 -2.64 -1.73 -1.31 -0.91 0.08 2315 1 +#> d[3] 0.03 0.01 0.48 -0.89 -0.24 0.03 0.30 0.92 2405 1 +#> d[5] -0.30 0.01 0.46 -1.27 -0.51 -0.31 -0.10 0.58 1453 1 +#> lp__ -32.87 0.09 2.87 -39.20 -34.57 -32.61 -30.85 -27.99 1067 1 +#> tau 0.40 0.02 0.43 0.01 0.12 0.28 0.51 1.51 789 1 #> -#> Samples were drawn using NUTS(diag_e) at Fri Jun 16 15:52:59 2023. +#> Samples were drawn using NUTS(diag_e) at Tue Jan 9 17:57:55 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). @@ -900,28 +900,28 @@

Random effects meta-analysis

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

plot_prior_posterior(contr_fit_RE)
-

+

Model comparison

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

(contr_dic_FE <- dic(contr_fit_FE))
-#> Residual deviance: 6.4 (on 8 data points)
+#> Residual deviance: 6.3 (on 8 data points)
 #>                pD: 4.1
-#>               DIC: 10.5
+#> DIC: 10.4
(contr_dic_RE <- dic(contr_fit_RE))
-#> Residual deviance: 6.6 (on 8 data points)
-#>                pD: 5.4
-#>               DIC: 12
+#> Residual deviance: 6.5 (on 8 data points) +#> pD: 5.3 +#> DIC: 11.8

Both models fit the data well, having posterior mean residual deviance close to the number of data points. The DIC is similar between models, so we choose the FE model based on parsimony.

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

plot(contr_dic_FE)
-

+

plot(contr_dic_RE)
-

+

@@ -932,20 +932,20 @@

Further results

trt_ref = 1:

(contr_releff_FE <- relative_effects(contr_fit_FE, trt_ref = 1))
 #>       mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> d[4] -0.51 0.48 -1.45 -0.84 -0.52 -0.18  0.42     2148     2109    1
-#> d[2] -1.82 0.33 -2.48 -2.03 -1.81 -1.59 -1.19     5110     3326    1
-#> d[3] -0.47 0.49 -1.41 -0.80 -0.47 -0.15  0.50     2970     2869    1
-#> d[5] -0.81 0.53 -1.85 -1.18 -0.82 -0.45  0.21     2228     2285    1
+#> d[4] -0.52 0.48 -1.50 -0.85 -0.51 -0.19  0.40     2079     1902    1
+#> d[2] -1.81 0.33 -2.47 -2.03 -1.81 -1.59 -1.18     5161     3033    1
+#> d[3] -0.48 0.49 -1.43 -0.81 -0.46 -0.16  0.49     2944     2987    1
+#> d[5] -0.82 0.52 -1.85 -1.18 -0.81 -0.46  0.19     2210     2363    1
 plot(contr_releff_FE, ref_line = 0)
-

+

(contr_releff_RE <- relative_effects(contr_fit_RE, trt_ref = 1))
 #>       mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> d[4] -0.53 0.74 -1.85 -0.93 -0.52 -0.13  0.76     1918     1301    1
-#> d[2] -1.85 0.53 -2.94 -2.14 -1.85 -1.55 -0.83     2862     1173    1
-#> d[3] -0.48 0.72 -1.83 -0.89 -0.49 -0.09  0.90     2249     1142    1
-#> d[5] -0.83 0.96 -2.41 -1.29 -0.84 -0.37  0.70     1971     1443    1
+#> d[4] -0.53 0.62 -1.77 -0.90 -0.52 -0.15  0.64     2734     1906    1
+#> d[2] -1.84 0.51 -2.83 -2.14 -1.84 -1.55 -0.81     3720     2532    1
+#> d[3] -0.50 0.63 -1.76 -0.86 -0.50 -0.12  0.72     3618     2669    1
+#> d[5] -0.83 0.74 -2.34 -1.26 -0.84 -0.39  0.56     2394     1698    1
 plot(contr_releff_RE, ref_line = 0)
-

+

Following Dias et al. (2011), we produce absolute predictions of the mean off-time reduction on each treatment assuming a Normal distribution for the outcomes on treatment 1 (placebo) with mean \(-0.73\) and precision \(21\). We use the predict() @@ -962,26 +962,26 @@

Further results

trt_ref = 1) contr_pred_FE #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[4] -1.24 0.53 -2.27 -1.61 -1.25 -0.88 -0.19 2422 2633 1 +#> pred[4] -1.25 0.53 -2.32 -1.60 -1.24 -0.89 -0.22 2373 2538 1 #> pred[1] -0.73 0.22 -1.16 -0.88 -0.73 -0.58 -0.30 3988 3629 1 -#> pred[2] -2.55 0.40 -3.32 -2.81 -2.55 -2.28 -1.77 4816 3691 1 -#> pred[3] -1.20 0.53 -2.23 -1.56 -1.20 -0.83 -0.14 3217 3261 1 -#> pred[5] -1.54 0.57 -2.63 -1.94 -1.55 -1.16 -0.44 2495 2582 1 +#> pred[2] -2.54 0.39 -3.34 -2.80 -2.54 -2.28 -1.77 4817 3183 1 +#> pred[3] -1.21 0.54 -2.27 -1.56 -1.20 -0.85 -0.15 3205 3270 1 +#> pred[5] -1.55 0.57 -2.66 -1.93 -1.55 -1.17 -0.44 2493 2437 1 plot(contr_pred_FE)
-

+

contr_pred_RE <- predict(contr_fit_RE, 
                        baseline = distr(qnorm, mean = -0.73, sd = 21^-0.5),
                        type = "response",
                        trt_ref = 1)
 contr_pred_RE
 #>          mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> pred[4] -1.26 0.77 -2.67 -1.68 -1.27 -0.84  0.12     1995     1516    1
+#> pred[4] -1.26 0.66 -2.54 -1.67 -1.24 -0.86 -0.01     2879     2089    1
 #> pred[1] -0.73 0.22 -1.16 -0.88 -0.73 -0.59 -0.31     3715     3592    1
-#> pred[2] -2.58 0.57 -3.75 -2.91 -2.58 -2.25 -1.46     2808     1235    1
-#> pred[3] -1.21 0.75 -2.62 -1.66 -1.23 -0.80  0.22     2275     1195    1
-#> pred[5] -1.56 0.98 -3.17 -2.06 -1.57 -1.09  0.05     2050     1535    1
+#> pred[2] -2.57 0.56 -3.66 -2.91 -2.58 -2.24 -1.46     3722     2467    1
+#> pred[3] -1.23 0.67 -2.57 -1.63 -1.24 -0.81  0.05     3715     2838    1
+#> pred[5] -1.57 0.78 -3.12 -2.02 -1.56 -1.09 -0.09     2359     1834    1
 plot(contr_pred_RE)
-

+

If the baseline argument is omitted an error will be raised, as there are no study baselines estimated in this network.

# Not run
@@ -990,31 +990,31 @@ 

Further results

cumulative rank probabilities.

(contr_ranks <- posterior_ranks(contr_fit_FE))
 #>         mean   sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> rank[4] 3.52 0.73    2   3   3   4     5     2831       NA    1
-#> rank[1] 4.63 0.79    2   5   5   5     5     2203       NA    1
-#> rank[2] 1.05 0.28    1   1   1   1     2     2537     2614    1
-#> rank[3] 3.51 0.92    2   3   4   4     5     3430       NA    1
-#> rank[5] 2.30 0.68    1   2   2   3     4     2378     2181    1
+#> rank[4] 3.51 0.73    2   3   3   4     5     2462       NA    1
+#> rank[1] 4.64 0.77    2   5   5   5     5     2330       NA    1
+#> rank[2] 1.05 0.28    1   1   1   1     2     2564     2522    1
+#> rank[3] 3.51 0.92    2   3   4   4     5     3676       NA    1
+#> rank[5] 2.29 0.67    1   2   2   2     4     2598     2496    1
 plot(contr_ranks)
-

+

(contr_rankprobs <- posterior_rank_probs(contr_fit_FE))
 #>      p_rank[1] p_rank[2] p_rank[3] p_rank[4] p_rank[5]
-#> d[4]      0.00      0.05      0.48      0.39      0.09
-#> d[1]      0.00      0.04      0.07      0.12      0.78
+#> d[4]      0.00      0.05      0.48      0.38      0.09
+#> d[1]      0.00      0.04      0.06      0.12      0.78
 #> d[2]      0.96      0.03      0.01      0.00      0.00
-#> d[3]      0.00      0.17      0.27      0.44      0.12
-#> d[5]      0.04      0.71      0.18      0.06      0.01
+#> d[3]      0.00      0.16      0.27      0.44      0.12
+#> d[5]      0.04      0.72      0.18      0.06      0.01
 plot(contr_rankprobs)
-

+

(contr_cumrankprobs <- posterior_rank_probs(contr_fit_FE, cumulative = TRUE))
 #>      p_rank[1] p_rank[2] p_rank[3] p_rank[4] p_rank[5]
-#> d[4]      0.00      0.05      0.52      0.91         1
-#> d[1]      0.00      0.04      0.11      0.22         1
+#> d[4]      0.00      0.05      0.53      0.91         1
+#> d[1]      0.00      0.04      0.10      0.22         1
 #> d[2]      0.96      0.99      1.00      1.00         1
 #> d[3]      0.00      0.17      0.44      0.88         1
-#> d[5]      0.04      0.75      0.93      0.99         1
+#> d[5]      0.04      0.76      0.93      0.99         1
 plot(contr_cumrankprobs)
-

+

@@ -1121,14 +1121,14 @@

Fixed effect meta-analysis

#> 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[1] 0.54 0.01 0.50 -0.45 0.20 0.53 0.87 1.52 1351 1 -#> d[2] -1.27 0.01 0.53 -2.33 -1.62 -1.27 -0.92 -0.21 1452 1 -#> d[3] 0.05 0.01 0.33 -0.56 -0.16 0.05 0.27 0.70 2384 1 -#> d[5] -0.29 0.00 0.20 -0.68 -0.42 -0.29 -0.16 0.11 3047 1 -#> lp__ -4.69 0.05 1.94 -9.39 -5.70 -4.36 -3.26 -1.99 1589 1 +#> mean se_mean sd 2.5% 25% 50% 75% 97.5% n_eff Rhat +#> d[1] 0.54 0.01 0.48 -0.43 0.21 0.56 0.87 1.46 1400 1 +#> d[2] -1.28 0.01 0.52 -2.29 -1.64 -1.27 -0.93 -0.31 1453 1 +#> d[3] 0.05 0.01 0.33 -0.58 -0.17 0.05 0.27 0.72 2193 1 +#> d[5] -0.31 0.00 0.21 -0.71 -0.44 -0.31 -0.17 0.11 3102 1 +#> lp__ -43.33 0.05 1.88 -47.85 -44.38 -42.97 -41.97 -40.62 1734 1 #> -#> Samples were drawn using NUTS(diag_e) at Fri Jun 16 15:53:31 2023. +#> Samples were drawn using NUTS(diag_e) at Tue Jan 9 17:58:10 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).
@@ -1139,7 +1139,7 @@

Fixed effect meta-analysis

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

plot_prior_posterior(mix_fit_FE)
-

+

Random effects meta-analysis

@@ -1168,7 +1168,7 @@

Random effects meta-analysis

prior_het = half_normal(scale = 5), adapt_delta = 0.99) #> Note: Setting "4" as the network reference treatment. -#> Warning: There were 1 divergent transitions after warmup. See +#> Warning: There were 2 divergent transitions after warmup. See #> https://mc-stan.org/misc/warnings.html#divergent-transitions-after-warmup #> to find out why this is a problem and how to eliminate them. #> Warning: Examine the pairs() plot to diagnose sampling problems
@@ -1179,7 +1179,7 @@

Random effects meta-analysis

investigate where in the posterior distribution these divergences are happening (indicated by red crosses):

pairs(mix_fit_RE, pars = c("d[3]", "delta[4: 4 vs. 3]", "tau"))
-

+

The divergent transitions occur in the upper tail of the heterogeneity standard deviation. In this case, with only a small number of studies, there is not very much information to estimate the @@ -1194,15 +1194,15 @@

Random effects meta-analysis

#> 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[1] 0.54 0.01 0.62 -0.70 0.16 0.54 0.93 1.74 2026 1.00 -#> d[2] -1.30 0.02 0.69 -2.71 -1.72 -1.29 -0.87 0.02 2090 1.00 -#> d[3] 0.01 0.01 0.47 -0.95 -0.26 0.02 0.30 0.90 2852 1.00 -#> d[5] -0.29 0.01 0.42 -1.14 -0.50 -0.30 -0.09 0.53 2405 1.00 -#> lp__ -10.64 0.09 3.25 -17.61 -12.61 -10.33 -8.33 -5.14 1183 1.00 -#> tau 0.39 0.01 0.38 0.02 0.13 0.29 0.53 1.42 646 1.01 +#> mean se_mean sd 2.5% 25% 50% 75% 97.5% n_eff Rhat +#> d[1] 0.52 0.02 0.62 -0.68 0.14 0.52 0.90 1.73 1630 1.00 +#> d[2] -1.32 0.02 0.69 -2.70 -1.74 -1.31 -0.90 0.01 1869 1.00 +#> d[3] 0.01 0.01 0.46 -0.92 -0.26 0.02 0.28 0.88 2335 1.00 +#> d[5] -0.28 0.01 0.41 -1.07 -0.49 -0.29 -0.08 0.55 2213 1.00 +#> lp__ -51.85 0.11 3.31 -59.22 -53.81 -51.51 -49.50 -46.37 938 1.00 +#> tau 0.39 0.01 0.37 0.01 0.13 0.28 0.52 1.35 601 1.01 #> -#> Samples were drawn using NUTS(diag_e) at Fri Jun 16 15:53:54 2023. +#> Samples were drawn using NUTS(diag_e) at Tue Jan 9 17:58:21 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). @@ -1214,28 +1214,28 @@

Random effects meta-analysis

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

plot_prior_posterior(mix_fit_RE)
-

+

Model comparison

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

(mix_dic_FE <- dic(mix_fit_FE))
-#> Residual deviance: 9.4 (on 11 data points)
-#>                pD: 7.1
-#>               DIC: 16.5
+#> Residual deviance: 9.3 (on 11 data points) +#> pD: 7 +#> DIC: 16.4
(mix_dic_RE <- dic(mix_fit_RE))
 #> Residual deviance: 9.5 (on 11 data points)
-#>                pD: 8.4
-#>               DIC: 17.9
+#> pD: 8.3 +#> DIC: 17.8

Both models fit the data well, having posterior mean residual deviance close to the number of data points. The DIC is similar between models, so we choose the FE model based on parsimony.

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

plot(mix_dic_FE)
-

+

plot(mix_dic_RE)
-

+

@@ -1246,20 +1246,20 @@

Further results

trt_ref = 1:

(mix_releff_FE <- relative_effects(mix_fit_FE, trt_ref = 1))
 #>       mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> d[4] -0.54 0.50 -1.52 -0.87 -0.53 -0.20  0.45     1362     1865    1
-#> d[2] -1.81 0.34 -2.49 -2.03 -1.80 -1.58 -1.13     5688     3158    1
-#> d[3] -0.48 0.50 -1.45 -0.82 -0.48 -0.14  0.48     2201     2871    1
-#> d[5] -0.83 0.53 -1.89 -1.18 -0.84 -0.47  0.23     1471     2375    1
+#> d[4] -0.54 0.48 -1.46 -0.87 -0.56 -0.21  0.43     1439     2275    1
+#> d[2] -1.82 0.33 -2.46 -2.04 -1.82 -1.59 -1.14     5602     3215    1
+#> d[3] -0.49 0.48 -1.43 -0.82 -0.49 -0.16  0.46     2255     2644    1
+#> d[5] -0.84 0.52 -1.86 -1.21 -0.85 -0.49  0.17     1559     2448    1
 plot(mix_releff_FE, ref_line = 0)
-

+

(mix_releff_RE <- relative_effects(mix_fit_RE, trt_ref = 1))
 #>       mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> d[4] -0.54 0.62 -1.74 -0.93 -0.54 -0.16  0.70     2009     2208    1
-#> d[2] -1.83 0.50 -2.84 -2.13 -1.83 -1.54 -0.83     4185     2461    1
-#> d[3] -0.53 0.64 -1.81 -0.90 -0.53 -0.14  0.73     2992     2498    1
-#> d[5] -0.83 0.75 -2.36 -1.28 -0.83 -0.40  0.74     2220     1883    1
+#> d[4] -0.52 0.62 -1.73 -0.90 -0.52 -0.14  0.68     1690     1682    1
+#> d[2] -1.84 0.50 -2.86 -2.12 -1.83 -1.55 -0.86     4089     2312    1
+#> d[3] -0.51 0.62 -1.72 -0.89 -0.50 -0.12  0.70     2941     2065    1
+#> d[5] -0.80 0.76 -2.31 -1.24 -0.79 -0.38  0.70     1791     1643    1
 plot(mix_releff_RE, ref_line = 0)
-

+

Following Dias et al. (2011), we produce absolute predictions of the mean off-time reduction on each treatment assuming a Normal distribution for the outcomes on treatment 1 (placebo) with mean \(-0.73\) and precision \(21\). We use the predict() @@ -1276,26 +1276,26 @@

Further results

trt_ref = 1) mix_pred_FE #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[4] -1.26 0.54 -2.28 -1.62 -1.26 -0.90 -0.20 1437 2402 1 +#> pred[4] -1.26 0.54 -2.28 -1.63 -1.27 -0.89 -0.21 1564 2770 1 #> pred[1] -0.72 0.22 -1.14 -0.87 -0.72 -0.58 -0.29 3556 3638 1 -#> pred[2] -2.53 0.40 -3.33 -2.79 -2.53 -2.25 -1.78 4946 3640 1 -#> pred[3] -1.20 0.54 -2.24 -1.56 -1.21 -0.83 -0.14 2203 2910 1 -#> pred[5] -1.55 0.57 -2.67 -1.93 -1.56 -1.16 -0.43 1532 2360 1 +#> pred[2] -2.54 0.40 -3.33 -2.81 -2.53 -2.27 -1.77 5100 3406 1 +#> pred[3] -1.21 0.54 -2.28 -1.58 -1.21 -0.85 -0.13 2366 3038 1 +#> pred[5] -1.57 0.57 -2.69 -1.95 -1.58 -1.17 -0.47 1656 2573 1 plot(mix_pred_FE)
-

+

mix_pred_RE <- predict(mix_fit_RE, 
                        baseline = distr(qnorm, mean = -0.73, sd = 21^-0.5),
                        type = "response",
                        trt_ref = 1)
 mix_pred_RE
 #>          mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> pred[4] -1.27 0.66 -2.55 -1.69 -1.26 -0.86  0.04     2089     2170    1
+#> pred[4] -1.25 0.65 -2.51 -1.67 -1.24 -0.84  0.05     1799     1935    1
 #> pred[1] -0.73 0.22 -1.17 -0.88 -0.73 -0.58 -0.31     4051     3817    1
-#> pred[2] -2.56 0.55 -3.68 -2.90 -2.56 -2.22 -1.47     4127     2529    1
-#> pred[3] -1.25 0.67 -2.60 -1.67 -1.26 -0.84  0.06     3027     2404    1
-#> pred[5] -1.56 0.78 -3.19 -2.03 -1.55 -1.10  0.02     2234     2132    1
+#> pred[2] -2.57 0.54 -3.62 -2.89 -2.57 -2.24 -1.53     4082     2741    1
+#> pred[3] -1.24 0.66 -2.52 -1.64 -1.24 -0.82  0.05     3016     2476    1
+#> pred[5] -1.53 0.79 -3.07 -2.01 -1.53 -1.06  0.04     1830     1872    1
 plot(mix_pred_RE)
-

+

If the baseline argument is omitted, predictions of mean off-time reduction will be produced for every arm-based study in the network based on their estimated baseline response \(\mu_j\):

@@ -1304,60 +1304,60 @@

Further results

#> ---------------------------------------------------------------------- Study: 1 ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[1: 4] -1.66 0.46 -2.59 -1.96 -1.67 -1.34 -0.76 1906 2750 1 -#> pred[1: 1] -1.13 0.44 -1.99 -1.42 -1.12 -0.83 -0.27 3421 3183 1 -#> pred[1: 2] -2.93 0.52 -3.96 -3.29 -2.93 -2.58 -1.90 3322 2785 1 -#> pred[1: 3] -1.61 0.40 -2.39 -1.88 -1.61 -1.33 -0.83 3506 3107 1 -#> pred[1: 5] -1.95 0.51 -2.97 -2.28 -1.95 -1.62 -0.96 2057 2618 1 +#> pred[1: 4] -1.66 0.46 -2.57 -1.97 -1.66 -1.35 -0.73 1773 2308 1 +#> pred[1: 1] -1.12 0.43 -1.96 -1.42 -1.11 -0.82 -0.31 3431 2745 1 +#> pred[1: 2] -2.94 0.51 -3.94 -3.28 -2.92 -2.60 -1.95 3163 2927 1 +#> pred[1: 3] -1.61 0.39 -2.33 -1.87 -1.62 -1.34 -0.85 3321 2745 1 +#> pred[1: 5] -1.96 0.50 -2.94 -2.31 -1.97 -1.63 -1.00 1872 2319 1 #> #> ---------------------------------------------------------------------- Study: 2 ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[2: 4] -1.18 0.53 -2.23 -1.53 -1.18 -0.83 -0.15 1384 2051 1 -#> pred[2: 1] -0.64 0.26 -1.15 -0.82 -0.64 -0.47 -0.12 4802 3488 1 -#> pred[2: 2] -2.45 0.25 -2.93 -2.61 -2.45 -2.29 -1.96 4260 3056 1 -#> pred[2: 3] -1.13 0.54 -2.16 -1.49 -1.12 -0.77 -0.06 2016 2729 1 -#> pred[2: 5] -1.47 0.56 -2.57 -1.84 -1.48 -1.09 -0.37 1495 2249 1 +#> pred[2: 4] -1.17 0.51 -2.16 -1.53 -1.18 -0.83 -0.17 1429 2350 1 +#> pred[2: 1] -0.64 0.26 -1.15 -0.81 -0.64 -0.46 -0.11 5027 3218 1 +#> pred[2: 2] -2.45 0.24 -2.92 -2.62 -2.45 -2.28 -1.99 4600 3784 1 +#> pred[2: 3] -1.12 0.52 -2.12 -1.48 -1.13 -0.77 -0.10 2135 2645 1 +#> pred[2: 5] -1.48 0.55 -2.51 -1.85 -1.49 -1.11 -0.41 1540 2193 1 #> #> ---------------------------------------------------------------------- Study: 3 ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[3: 4] -1.13 0.42 -1.93 -1.41 -1.12 -0.85 -0.30 1680 2691 1 -#> pred[3: 1] -0.59 0.36 -1.33 -0.83 -0.58 -0.35 0.09 3847 3220 1 -#> pred[3: 2] -2.40 0.38 -3.16 -2.65 -2.40 -2.15 -1.63 4053 3307 1 -#> pred[3: 3] -1.07 0.46 -1.98 -1.38 -1.07 -0.76 -0.16 2690 2739 1 -#> pred[3: 5] -1.42 0.47 -2.33 -1.74 -1.41 -1.10 -0.52 1942 2711 1 +#> pred[3: 4] -1.12 0.42 -1.95 -1.40 -1.11 -0.84 -0.28 1776 2446 1 +#> pred[3: 1] -0.58 0.36 -1.29 -0.82 -0.58 -0.34 0.12 4552 3294 1 +#> pred[3: 2] -2.40 0.38 -3.17 -2.65 -2.40 -2.14 -1.65 4155 3226 1 +#> pred[3: 3] -1.07 0.47 -2.00 -1.38 -1.07 -0.75 -0.13 2816 2808 1 +#> pred[3: 5] -1.42 0.47 -2.36 -1.73 -1.42 -1.12 -0.52 2004 2545 1 plot(mix_pred_FE_studies) -

+

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

(mix_ranks <- posterior_ranks(mix_fit_FE))
 #>         mean   sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> rank[4] 3.49 0.71    2   3   3   4     5     2091       NA    1
-#> rank[1] 4.63 0.79    2   5   5   5     5     2052       NA    1
-#> rank[2] 1.06 0.29    1   1   1   1     2     2240     2381    1
-#> rank[3] 3.54 0.93    2   3   4   4     5     2898       NA    1
-#> rank[5] 2.28 0.67    1   2   2   2     4     2131     2344    1
+#> rank[4] 3.48 0.72    2   3   3   4     5     2118       NA    1
+#> rank[1] 4.65 0.76    2   5   5   5     5     1863       NA    1
+#> rank[2] 1.05 0.27    1   1   1   1     2     2313     2316    1
+#> rank[3] 3.55 0.91    2   3   4   4     5     3138       NA    1
+#> rank[5] 2.27 0.64    1   2   2   2     4     2398     2801    1
 plot(mix_ranks)
-

+

(mix_rankprobs <- posterior_rank_probs(mix_fit_FE))
 #>      p_rank[1] p_rank[2] p_rank[3] p_rank[4] p_rank[5]
-#> d[4]      0.00      0.04      0.51      0.37      0.08
-#> d[1]      0.00      0.05      0.06      0.11      0.78
-#> d[2]      0.95      0.04      0.01      0.00      0.00
-#> d[3]      0.00      0.17      0.24      0.46      0.13
-#> d[5]      0.04      0.71      0.18      0.05      0.01
+#> d[4]      0.00      0.05      0.50      0.37      0.08
+#> d[1]      0.00      0.04      0.06      0.11      0.79
+#> d[2]      0.96      0.03      0.01      0.00      0.00
+#> d[3]      0.00      0.16      0.26      0.46      0.12
+#> d[5]      0.04      0.73      0.17      0.05      0.01
 plot(mix_rankprobs)
-

+

(mix_cumrankprobs <- posterior_rank_probs(mix_fit_FE, cumulative = TRUE))
 #>      p_rank[1] p_rank[2] p_rank[3] p_rank[4] p_rank[5]
-#> d[4]      0.00      0.04      0.55      0.92         1
-#> d[1]      0.00      0.05      0.10      0.22         1
-#> d[2]      0.95      0.99      1.00      1.00         1
-#> d[3]      0.00      0.17      0.41      0.87         1
-#> d[5]      0.04      0.75      0.94      0.99         1
+#> d[4]      0.00      0.05      0.55      0.92         1
+#> d[1]      0.00      0.04      0.10      0.21         1
+#> d[2]      0.96      0.99      1.00      1.00         1
+#> d[3]      0.00      0.16      0.41      0.88         1
+#> d[5]      0.04      0.77      0.94      0.99         1
 plot(mix_cumrankprobs)
-

+

diff --git a/vignettes/example_plaque_psoriasis.html b/vignettes/example_plaque_psoriasis.html index b432ef791..c60cff050 100644 --- a/vignettes/example_plaque_psoriasis.html +++ b/vignettes/example_plaque_psoriasis.html @@ -689,51 +689,51 @@

Fixed effect ML-NMR

#> post-warmup draws per chain=1000, total post-warmup draws=4000. #> #> mean se_mean sd 2.5% 25% 50% 75% -#> beta[durnpso] 0.04 0.00 0.06 -0.07 0.00 0.04 0.09 -#> beta[prevsys] -0.14 0.00 0.16 -0.45 -0.25 -0.14 -0.03 -#> beta[bsa] -0.06 0.01 0.43 -0.95 -0.34 -0.05 0.24 +#> beta[durnpso] 0.04 0.00 0.06 -0.08 0.00 0.04 0.09 +#> beta[prevsys] -0.14 0.00 0.16 -0.45 -0.24 -0.14 -0.03 +#> beta[bsa] -0.07 0.01 0.44 -0.95 -0.37 -0.06 0.23 #> beta[weight] 0.04 0.00 0.03 -0.02 0.02 0.04 0.06 -#> beta[psa] -0.08 0.00 0.17 -0.42 -0.19 -0.08 0.03 +#> beta[psa] -0.08 0.00 0.17 -0.42 -0.19 -0.08 0.04 #> beta[durnpso:.trtclassTNFa blocker] -0.03 0.00 0.07 -0.17 -0.08 -0.03 0.02 #> beta[durnpso:.trtclassIL blocker] -0.01 0.00 0.07 -0.14 -0.06 -0.01 0.03 #> beta[prevsys:.trtclassTNFa blocker] 0.19 0.00 0.19 -0.17 0.07 0.19 0.32 -#> beta[prevsys:.trtclassIL blocker] 0.07 0.00 0.18 -0.28 -0.05 0.07 0.19 -#> beta[bsa:.trtclassTNFa blocker] 0.05 0.01 0.50 -0.91 -0.30 0.04 0.38 -#> beta[bsa:.trtclassIL blocker] 0.29 0.01 0.48 -0.61 -0.04 0.27 0.61 +#> beta[prevsys:.trtclassIL blocker] 0.07 0.00 0.18 -0.29 -0.05 0.07 0.18 +#> beta[bsa:.trtclassTNFa blocker] 0.06 0.01 0.51 -0.93 -0.29 0.05 0.41 +#> beta[bsa:.trtclassIL blocker] 0.30 0.01 0.48 -0.64 -0.02 0.30 0.61 #> beta[weight:.trtclassTNFa blocker] -0.17 0.00 0.04 -0.24 -0.19 -0.17 -0.14 #> beta[weight:.trtclassIL blocker] -0.10 0.00 0.03 -0.16 -0.12 -0.10 -0.08 -#> beta[psa:.trtclassTNFa blocker] -0.05 0.00 0.21 -0.46 -0.20 -0.05 0.08 -#> beta[psa:.trtclassIL blocker] 0.01 0.00 0.18 -0.34 -0.12 0.01 0.13 -#> d[ETN] 1.55 0.00 0.08 1.39 1.50 1.55 1.61 -#> d[IXE_Q2W] 2.95 0.00 0.09 2.79 2.90 2.95 3.01 +#> beta[psa:.trtclassTNFa blocker] -0.06 0.00 0.21 -0.46 -0.20 -0.05 0.09 +#> beta[psa:.trtclassIL blocker] 0.01 0.00 0.19 -0.36 -0.12 0.00 0.13 +#> d[ETN] 1.55 0.00 0.08 1.39 1.49 1.55 1.60 +#> d[IXE_Q2W] 2.95 0.00 0.08 2.79 2.90 2.95 3.01 #> d[IXE_Q4W] 2.54 0.00 0.08 2.38 2.49 2.54 2.60 -#> d[SEC_150] 2.15 0.00 0.12 1.91 2.07 2.14 2.22 +#> d[SEC_150] 2.14 0.00 0.12 1.92 2.06 2.14 2.22 #> d[SEC_300] 2.45 0.00 0.12 2.21 2.37 2.45 2.53 -#> lp__ -1576.39 0.09 3.47 -1584.27 -1578.57 -1576.08 -1573.89 +#> lp__ -1653.73 0.09 3.50 -1661.68 -1655.81 -1653.40 -1651.28 #> 97.5% n_eff Rhat -#> beta[durnpso] 0.17 6054 1 -#> beta[prevsys] 0.17 5824 1 -#> beta[bsa] 0.75 4613 1 -#> beta[weight] 0.10 5639 1 -#> beta[psa] 0.24 6108 1 -#> beta[durnpso:.trtclassTNFa blocker] 0.11 6249 1 -#> beta[durnpso:.trtclassIL blocker] 0.12 7358 1 -#> beta[prevsys:.trtclassTNFa blocker] 0.56 5682 1 -#> beta[prevsys:.trtclassIL blocker] 0.41 6831 1 -#> beta[bsa:.trtclassTNFa blocker] 1.09 5008 1 -#> beta[bsa:.trtclassIL blocker] 1.25 5734 1 -#> beta[weight:.trtclassTNFa blocker] -0.09 6594 1 -#> beta[weight:.trtclassIL blocker] -0.03 7049 1 -#> beta[psa:.trtclassTNFa blocker] 0.35 6226 1 -#> beta[psa:.trtclassIL blocker] 0.37 7246 1 -#> d[ETN] 1.71 4179 1 -#> d[IXE_Q2W] 3.13 5195 1 -#> d[IXE_Q4W] 2.70 5332 1 -#> d[SEC_150] 2.38 4540 1 -#> d[SEC_300] 2.69 4704 1 -#> lp__ -1570.58 1384 1 +#> beta[durnpso] 0.16 5855 1 +#> beta[prevsys] 0.17 5762 1 +#> beta[bsa] 0.79 5202 1 +#> beta[weight] 0.10 5614 1 +#> beta[psa] 0.25 6280 1 +#> beta[durnpso:.trtclassTNFa blocker] 0.12 6160 1 +#> beta[durnpso:.trtclassIL blocker] 0.12 7065 1 +#> beta[prevsys:.trtclassTNFa blocker] 0.55 5952 1 +#> beta[prevsys:.trtclassIL blocker] 0.41 7238 1 +#> beta[bsa:.trtclassTNFa blocker] 1.06 5287 1 +#> beta[bsa:.trtclassIL blocker] 1.25 6484 1 +#> beta[weight:.trtclassTNFa blocker] -0.10 6191 1 +#> beta[weight:.trtclassIL blocker] -0.04 6697 1 +#> beta[psa:.trtclassTNFa blocker] 0.35 6837 1 +#> beta[psa:.trtclassIL blocker] 0.38 7690 1 +#> d[ETN] 1.71 3763 1 +#> d[IXE_Q2W] 3.12 5287 1 +#> d[IXE_Q4W] 2.70 5311 1 +#> d[SEC_150] 2.38 4191 1 +#> d[SEC_300] 2.69 4948 1 +#> lp__ -1647.87 1513 1 #> -#> Samples were drawn using NUTS(diag_e) at Fri Jun 16 15:59:16 2023. +#> Samples were drawn using NUTS(diag_e) at Tue Jan 9 18:01:28 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).
@@ -744,7 +744,7 @@

Fixed effect ML-NMR

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

plot_prior_posterior(pso_fit_FE, prior = c("intercept", "trt", "reg"))
-

+

We now recommend assessing sufficient accuracy of the numerical integration by running half of the chains with n_int / 2 integration points and half with the full n_int. Any @@ -793,13 +793,10 @@

Random effects ML-NMR

init_r = 0.1, QR = TRUE) #> Note: Setting "PBO" as the network reference treatment. -#> Warning: There were 9 divergent transitions after warmup. See +#> Warning: There were 10 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 -#> Warning: Bulk Effective Sample Size (ESS) is too low, indicating posterior means and medians may be unreliable. -#> Running the chains for more iterations may help. See -#> https://mc-stan.org/misc/warnings.html#bulk-ess +#> Warning: Examine the pairs() plot to diagnose sampling problems

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

print(pso_fit_RE)
@@ -813,53 +810,53 @@ 

Random effects ML-NMR

#> post-warmup draws per chain=1000, total post-warmup draws=4000. #> #> mean se_mean sd 2.5% 25% 50% 75% -#> beta[durnpso] 0.05 0.00 0.06 -0.08 0.00 0.05 0.09 -#> beta[prevsys] -0.13 0.00 0.16 -0.43 -0.23 -0.13 -0.02 -#> beta[bsa] -0.10 0.01 0.45 -1.00 -0.40 -0.09 0.20 -#> beta[weight] 0.04 0.00 0.03 -0.01 0.03 0.04 0.06 -#> beta[psa] -0.07 0.00 0.17 -0.41 -0.18 -0.06 0.05 -#> beta[durnpso:.trtclassTNFa blocker] -0.03 0.00 0.07 -0.18 -0.08 -0.03 0.01 -#> beta[durnpso:.trtclassIL blocker] -0.02 0.00 0.07 -0.15 -0.06 -0.02 0.03 -#> beta[prevsys:.trtclassTNFa blocker] 0.18 0.00 0.19 -0.20 0.06 0.19 0.31 -#> beta[prevsys:.trtclassIL blocker] 0.05 0.00 0.17 -0.29 -0.07 0.05 0.17 -#> beta[bsa:.trtclassTNFa blocker] 0.09 0.01 0.52 -0.90 -0.26 0.09 0.43 -#> beta[bsa:.trtclassIL blocker] 0.34 0.01 0.50 -0.62 0.00 0.34 0.66 +#> beta[durnpso] 0.05 0.00 0.06 -0.07 0.01 0.05 0.09 +#> beta[prevsys] -0.13 0.00 0.16 -0.44 -0.24 -0.13 -0.02 +#> beta[bsa] -0.11 0.01 0.44 -1.01 -0.40 -0.09 0.19 +#> beta[weight] 0.04 0.00 0.03 -0.01 0.02 0.04 0.06 +#> beta[psa] -0.07 0.00 0.17 -0.41 -0.19 -0.06 0.05 +#> beta[durnpso:.trtclassTNFa blocker] -0.03 0.00 0.07 -0.18 -0.08 -0.03 0.02 +#> beta[durnpso:.trtclassIL blocker] -0.02 0.00 0.07 -0.14 -0.06 -0.02 0.03 +#> beta[prevsys:.trtclassTNFa blocker] 0.19 0.00 0.19 -0.19 0.06 0.19 0.32 +#> beta[prevsys:.trtclassIL blocker] 0.05 0.00 0.18 -0.30 -0.06 0.05 0.17 +#> beta[bsa:.trtclassTNFa blocker] 0.10 0.01 0.53 -0.92 -0.26 0.09 0.45 +#> beta[bsa:.trtclassIL blocker] 0.34 0.01 0.48 -0.56 0.01 0.32 0.66 #> beta[weight:.trtclassTNFa blocker] -0.17 0.00 0.04 -0.24 -0.20 -0.17 -0.15 -#> beta[weight:.trtclassIL blocker] -0.10 0.00 0.03 -0.16 -0.13 -0.10 -0.08 -#> beta[psa:.trtclassTNFa blocker] -0.07 0.00 0.21 -0.49 -0.21 -0.06 0.08 -#> beta[psa:.trtclassIL blocker] -0.01 0.00 0.19 -0.38 -0.14 -0.01 0.12 -#> d[ETN] 1.56 0.00 0.15 1.28 1.47 1.56 1.64 -#> d[IXE_Q2W] 2.98 0.00 0.15 2.67 2.89 2.97 3.06 -#> d[IXE_Q4W] 2.57 0.00 0.15 2.28 2.48 2.56 2.65 -#> d[SEC_150] 2.13 0.01 0.22 1.71 2.00 2.13 2.26 -#> d[SEC_300] 2.43 0.00 0.22 1.96 2.30 2.43 2.57 -#> lp__ -1580.68 0.14 4.74 -1590.46 -1583.77 -1580.44 -1577.38 -#> tau 0.18 0.00 0.11 0.02 0.10 0.16 0.24 +#> beta[weight:.trtclassIL blocker] -0.10 0.00 0.03 -0.17 -0.12 -0.10 -0.08 +#> beta[psa:.trtclassTNFa blocker] -0.07 0.00 0.21 -0.49 -0.21 -0.07 0.07 +#> beta[psa:.trtclassIL blocker] -0.01 0.00 0.19 -0.36 -0.13 -0.01 0.12 +#> d[ETN] 1.56 0.00 0.14 1.30 1.47 1.56 1.65 +#> d[IXE_Q2W] 2.98 0.00 0.15 2.70 2.89 2.97 3.06 +#> d[IXE_Q4W] 2.56 0.00 0.14 2.29 2.47 2.56 2.65 +#> d[SEC_150] 2.13 0.01 0.23 1.67 2.00 2.14 2.26 +#> d[SEC_300] 2.43 0.00 0.23 1.97 2.31 2.43 2.57 +#> lp__ -1659.55 0.14 4.80 -1669.64 -1662.66 -1659.27 -1656.11 +#> tau 0.18 0.00 0.11 0.02 0.10 0.17 0.24 #> 97.5% n_eff Rhat -#> beta[durnpso] 0.17 4157 1 -#> beta[prevsys] 0.18 4509 1 -#> beta[bsa] 0.74 4066 1 -#> beta[weight] 0.10 3734 1 -#> beta[psa] 0.28 3595 1 -#> beta[durnpso:.trtclassTNFa blocker] 0.11 4470 1 -#> beta[durnpso:.trtclassIL blocker] 0.12 4680 1 -#> beta[prevsys:.trtclassTNFa blocker] 0.54 4750 1 -#> beta[prevsys:.trtclassIL blocker] 0.39 5180 1 -#> beta[bsa:.trtclassTNFa blocker] 1.13 4303 1 -#> beta[bsa:.trtclassIL blocker] 1.36 4521 1 -#> beta[weight:.trtclassTNFa blocker] -0.10 3995 1 -#> beta[weight:.trtclassIL blocker] -0.04 4310 1 -#> beta[psa:.trtclassTNFa blocker] 0.35 3848 1 -#> beta[psa:.trtclassIL blocker] 0.36 4260 1 -#> d[ETN] 1.88 2224 1 -#> d[IXE_Q2W] 3.31 1484 1 -#> d[IXE_Q4W] 2.90 1609 1 -#> d[SEC_150] 2.59 1887 1 -#> d[SEC_300] 2.88 2241 1 -#> lp__ -1572.12 1092 1 -#> tau 0.47 779 1 +#> beta[durnpso] 0.17 5072 1 +#> beta[prevsys] 0.19 4093 1 +#> beta[bsa] 0.72 4277 1 +#> beta[weight] 0.10 4878 1 +#> beta[psa] 0.27 4560 1 +#> beta[durnpso:.trtclassTNFa blocker] 0.10 4957 1 +#> beta[durnpso:.trtclassIL blocker] 0.11 5180 1 +#> beta[prevsys:.trtclassTNFa blocker] 0.56 4325 1 +#> beta[prevsys:.trtclassIL blocker] 0.40 4454 1 +#> beta[bsa:.trtclassTNFa blocker] 1.15 4332 1 +#> beta[bsa:.trtclassIL blocker] 1.37 4813 1 +#> beta[weight:.trtclassTNFa blocker] -0.10 4878 1 +#> beta[weight:.trtclassIL blocker] -0.04 5754 1 +#> beta[psa:.trtclassTNFa blocker] 0.34 4777 1 +#> beta[psa:.trtclassIL blocker] 0.37 5034 1 +#> d[ETN] 1.88 2239 1 +#> d[IXE_Q2W] 3.29 1975 1 +#> d[IXE_Q4W] 2.88 1986 1 +#> d[SEC_150] 2.62 2045 1 +#> d[SEC_300] 2.89 2151 1 +#> lp__ -1651.00 1143 1 +#> tau 0.45 819 1 #> -#> Samples were drawn using NUTS(diag_e) at Fri Jun 16 16:09:41 2023. +#> Samples were drawn using NUTS(diag_e) at Tue Jan 9 18:05:34 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).
@@ -871,7 +868,7 @@

Random effects ML-NMR

There are a number of divergent transitions, which we can investigate using the pairs() method:

pairs(pso_fit_RE, pars = c("delta[UNCOVER-2: ETN]", "d[ETN]", "tau", "lp__"))
-

+

The divergent transition errors (red crosses) seem to be concentrated in the upper tail of the heterogeneity standard deviation parameter. This suggests that the information to identify the heterogeneity @@ -880,7 +877,7 @@

Random effects ML-NMR

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

plot_prior_posterior(pso_fit_RE, prior = c("intercept", "trt", "reg", "het"))
-

+

@@ -889,12 +886,12 @@

Model comparison

dic() function.

(pso_dic_FE <- dic(pso_fit_FE))
 #> Residual deviance: 3129.6 (on 3858 data points)
-#>                pD: 24.4
-#>               DIC: 3153.9
+#>                pD: 24.3
+#>               DIC: 3154
 (pso_dic_RE <- dic(pso_fit_RE))
-#> Residual deviance: 3124.1 (on 3858 data points)
-#>                pD: 28.6
-#>               DIC: 3152.6
+#> Residual deviance: 3123.6 (on 3858 data points) +#> pD: 28.1 +#> DIC: 3151.8

The DIC is similar between the FE and RE models, suggesting that there is little evidence for any residual heterogeneity.

@@ -907,7 +904,7 @@

Producing relative effects and event probabilities

pars = "beta", stat = "halfeye", ref_line = 0) -

+

Plots of posterior summaries are based on the ggdist package, which allows a great degree of flexibility, and can be further customised using ggplot2 commands. In the above command we @@ -926,11 +923,11 @@

Producing relative effects and event probabilities

#> 1.6 0.62 0.34 8.34 0.14 #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> d[FIXTURE: ETN] 1.66 0.09 1.48 1.60 1.66 1.72 1.84 4163 3451 1 -#> d[FIXTURE: IXE_Q2W] 3.03 0.10 2.84 2.96 3.03 3.09 3.23 5293 3135 1 -#> d[FIXTURE: IXE_Q4W] 2.62 0.10 2.44 2.55 2.61 2.68 2.80 5409 3348 1 -#> d[FIXTURE: SEC_150] 2.22 0.12 1.98 2.14 2.22 2.30 2.45 4474 2977 1 -#> d[FIXTURE: SEC_300] 2.52 0.12 2.28 2.44 2.52 2.60 2.77 4641 3491 1 +#> d[FIXTURE: ETN] 1.66 0.09 1.48 1.60 1.66 1.72 1.83 3946 3304 1 +#> d[FIXTURE: IXE_Q2W] 3.03 0.10 2.83 2.97 3.03 3.09 3.22 5454 3264 1 +#> d[FIXTURE: IXE_Q4W] 2.62 0.09 2.43 2.55 2.62 2.68 2.80 5449 3509 1 +#> d[FIXTURE: SEC_150] 2.22 0.12 1.99 2.14 2.21 2.30 2.46 4114 3281 1 +#> d[FIXTURE: SEC_300] 2.52 0.12 2.28 2.44 2.52 2.60 2.77 4826 3223 1 #> #> -------------------------------------------------------------- Study: UNCOVER-1 ---- #> @@ -939,11 +936,11 @@

Producing relative effects and event probabilities

#> 2 0.73 0.28 9.24 0.28 #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> d[UNCOVER-1: ETN] 1.51 0.09 1.34 1.45 1.51 1.57 1.68 4305 3009 1 -#> d[UNCOVER-1: IXE_Q2W] 2.92 0.09 2.75 2.87 2.92 2.98 3.10 5191 3040 1 -#> d[UNCOVER-1: IXE_Q4W] 2.51 0.08 2.34 2.46 2.51 2.57 2.68 5524 3095 1 -#> d[UNCOVER-1: SEC_150] 2.12 0.12 1.88 2.03 2.12 2.20 2.35 4672 2922 1 -#> d[UNCOVER-1: SEC_300] 2.42 0.13 2.17 2.33 2.42 2.50 2.67 4823 3555 1 +#> d[UNCOVER-1: ETN] 1.51 0.09 1.34 1.45 1.51 1.56 1.68 4021 3195 1 +#> d[UNCOVER-1: IXE_Q2W] 2.92 0.08 2.76 2.87 2.92 2.98 3.09 5381 3450 1 +#> d[UNCOVER-1: IXE_Q4W] 2.51 0.08 2.35 2.45 2.51 2.57 2.67 5442 3490 1 +#> d[UNCOVER-1: SEC_150] 2.11 0.12 1.88 2.03 2.11 2.19 2.37 4526 3396 1 +#> d[UNCOVER-1: SEC_300] 2.42 0.13 2.17 2.33 2.42 2.50 2.66 5268 3521 1 #> #> -------------------------------------------------------------- Study: UNCOVER-2 ---- #> @@ -952,11 +949,11 @@

Producing relative effects and event probabilities

#> 1.87 0.64 0.27 9.17 0.24 #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> d[UNCOVER-2: ETN] 1.51 0.08 1.35 1.45 1.51 1.57 1.67 4395 3250 1 -#> d[UNCOVER-2: IXE_Q2W] 2.92 0.08 2.76 2.87 2.92 2.98 3.09 5417 3157 1 -#> d[UNCOVER-2: IXE_Q4W] 2.51 0.08 2.35 2.46 2.51 2.57 2.67 5513 3392 1 -#> d[UNCOVER-2: SEC_150] 2.11 0.12 1.88 2.03 2.11 2.20 2.35 4723 2757 1 -#> d[UNCOVER-2: SEC_300] 2.42 0.12 2.18 2.34 2.42 2.50 2.66 4850 3437 1 +#> d[UNCOVER-2: ETN] 1.51 0.08 1.35 1.45 1.51 1.56 1.67 3933 2907 1 +#> d[UNCOVER-2: IXE_Q2W] 2.92 0.08 2.76 2.87 2.92 2.98 3.08 5462 3414 1 +#> d[UNCOVER-2: IXE_Q4W] 2.51 0.08 2.35 2.46 2.51 2.56 2.66 5491 3450 1 +#> d[UNCOVER-2: SEC_150] 2.11 0.12 1.89 2.03 2.11 2.19 2.36 4444 3381 1 +#> d[UNCOVER-2: SEC_300] 2.42 0.12 2.17 2.33 2.42 2.50 2.66 5200 3179 1 #> #> -------------------------------------------------------------- Study: UNCOVER-3 ---- #> @@ -965,13 +962,13 @@

Producing relative effects and event probabilities

#> 1.78 0.59 0.28 9.01 0.2 #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> d[UNCOVER-3: ETN] 1.53 0.08 1.37 1.48 1.53 1.58 1.68 4349 3327 1 -#> d[UNCOVER-3: IXE_Q2W] 2.94 0.09 2.77 2.88 2.94 3.00 3.11 5478 3242 1 -#> d[UNCOVER-3: IXE_Q4W] 2.53 0.08 2.36 2.47 2.53 2.58 2.68 5520 3568 1 -#> d[UNCOVER-3: SEC_150] 2.13 0.12 1.90 2.05 2.13 2.21 2.36 4733 2925 1 -#> d[UNCOVER-3: SEC_300] 2.44 0.12 2.20 2.35 2.44 2.52 2.67 4859 3527 1 +#> d[UNCOVER-3: ETN] 1.53 0.08 1.37 1.48 1.53 1.58 1.68 3904 3093 1 +#> d[UNCOVER-3: IXE_Q2W] 2.94 0.08 2.78 2.89 2.94 3.00 3.10 5565 3353 1 +#> d[UNCOVER-3: IXE_Q4W] 2.53 0.08 2.37 2.47 2.53 2.58 2.68 5567 3521 1 +#> d[UNCOVER-3: SEC_150] 2.13 0.12 1.91 2.05 2.13 2.21 2.37 4357 3290 1 +#> d[UNCOVER-3: SEC_300] 2.43 0.12 2.19 2.35 2.43 2.51 2.67 5129 3122 1 plot(pso_releff_FE, ref_line = 0) -

+

Predicted probabilities of achieving PASI 75 in each study population on each treatment are produced using the predict() method. The argument type = "reponse" specifies that we want @@ -980,44 +977,44 @@

Producing relative effects and event probabilities

#> ---------------------------------------------------------------- Study: FIXTURE ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[FIXTURE: PBO] 0.04 0.01 0.03 0.04 0.04 0.05 0.06 4073 3044 1 -#> pred[FIXTURE: ETN] 0.46 0.02 0.41 0.44 0.46 0.47 0.50 8809 3352 1 -#> pred[FIXTURE: IXE_Q2W] 0.89 0.02 0.85 0.88 0.89 0.90 0.92 6685 3109 1 -#> pred[FIXTURE: IXE_Q4W] 0.80 0.03 0.74 0.78 0.80 0.81 0.84 7140 3196 1 -#> pred[FIXTURE: SEC_150] 0.67 0.03 0.62 0.65 0.67 0.69 0.72 10256 2586 1 -#> pred[FIXTURE: SEC_300] 0.77 0.02 0.72 0.75 0.77 0.79 0.81 11159 3055 1 +#> pred[FIXTURE: PBO] 0.04 0.01 0.03 0.04 0.04 0.05 0.06 3673 3276 1 +#> pred[FIXTURE: ETN] 0.46 0.02 0.41 0.44 0.46 0.47 0.50 7094 3154 1 +#> pred[FIXTURE: IXE_Q2W] 0.89 0.02 0.85 0.88 0.89 0.90 0.92 5713 3269 1 +#> pred[FIXTURE: IXE_Q4W] 0.80 0.03 0.74 0.78 0.80 0.81 0.84 6881 2975 1 +#> pred[FIXTURE: SEC_150] 0.67 0.03 0.62 0.65 0.67 0.69 0.72 10191 3077 1 +#> pred[FIXTURE: SEC_300] 0.77 0.02 0.72 0.75 0.77 0.79 0.81 10285 2650 1 #> #> -------------------------------------------------------------- Study: UNCOVER-1 ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[UNCOVER-1: PBO] 0.06 0.01 0.04 0.05 0.06 0.06 0.08 6213 3090 1 -#> pred[UNCOVER-1: ETN] 0.46 0.03 0.40 0.44 0.46 0.48 0.52 7054 2975 1 -#> pred[UNCOVER-1: IXE_Q2W] 0.90 0.01 0.88 0.89 0.90 0.91 0.92 8389 2878 1 -#> pred[UNCOVER-1: IXE_Q4W] 0.81 0.02 0.78 0.80 0.81 0.82 0.84 9081 3268 1 -#> pred[UNCOVER-1: SEC_150] 0.69 0.04 0.61 0.66 0.69 0.72 0.77 7044 2889 1 -#> pred[UNCOVER-1: SEC_300] 0.78 0.04 0.71 0.76 0.79 0.81 0.85 6569 3227 1 +#> pred[UNCOVER-1: PBO] 0.06 0.01 0.04 0.05 0.06 0.06 0.08 5080 3091 1 +#> pred[UNCOVER-1: ETN] 0.46 0.03 0.40 0.44 0.46 0.48 0.52 6093 2665 1 +#> pred[UNCOVER-1: IXE_Q2W] 0.90 0.01 0.88 0.89 0.90 0.91 0.92 7747 3408 1 +#> pred[UNCOVER-1: IXE_Q4W] 0.81 0.02 0.78 0.80 0.81 0.82 0.84 8821 3046 1 +#> pred[UNCOVER-1: SEC_150] 0.69 0.04 0.60 0.66 0.69 0.72 0.77 6219 3215 1 +#> pred[UNCOVER-1: SEC_300] 0.78 0.04 0.71 0.76 0.79 0.81 0.85 6765 3278 1 #> #> -------------------------------------------------------------- Study: UNCOVER-2 ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[UNCOVER-2: PBO] 0.05 0.01 0.03 0.04 0.05 0.05 0.06 5456 3204 1 -#> pred[UNCOVER-2: ETN] 0.42 0.02 0.38 0.41 0.42 0.43 0.46 8505 3319 1 -#> pred[UNCOVER-2: IXE_Q2W] 0.88 0.01 0.86 0.87 0.88 0.89 0.90 6940 3036 1 -#> pred[UNCOVER-2: IXE_Q4W] 0.78 0.02 0.75 0.77 0.78 0.79 0.81 8252 2978 1 -#> pred[UNCOVER-2: SEC_150] 0.65 0.04 0.57 0.62 0.65 0.68 0.73 8658 3194 1 -#> pred[UNCOVER-2: SEC_300] 0.75 0.04 0.68 0.73 0.75 0.78 0.82 8929 3296 1 +#> pred[UNCOVER-2: PBO] 0.05 0.01 0.03 0.04 0.05 0.05 0.06 5144 3272 1 +#> pred[UNCOVER-2: ETN] 0.42 0.02 0.38 0.41 0.42 0.43 0.46 7732 2930 1 +#> pred[UNCOVER-2: IXE_Q2W] 0.88 0.01 0.86 0.87 0.88 0.89 0.90 6871 3011 1 +#> pred[UNCOVER-2: IXE_Q4W] 0.78 0.02 0.75 0.77 0.78 0.79 0.81 9099 3497 1 +#> pred[UNCOVER-2: SEC_150] 0.65 0.04 0.57 0.62 0.65 0.68 0.73 7338 3108 1 +#> pred[UNCOVER-2: SEC_300] 0.75 0.04 0.68 0.73 0.75 0.78 0.82 8539 3309 1 #> #> -------------------------------------------------------------- Study: UNCOVER-3 ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[UNCOVER-3: PBO] 0.08 0.01 0.06 0.07 0.08 0.08 0.10 5666 3158 1 -#> pred[UNCOVER-3: ETN] 0.53 0.02 0.49 0.52 0.53 0.54 0.57 8427 2956 1 -#> pred[UNCOVER-3: IXE_Q2W] 0.93 0.01 0.91 0.92 0.93 0.93 0.94 6907 3392 1 -#> pred[UNCOVER-3: IXE_Q4W] 0.85 0.01 0.83 0.85 0.85 0.86 0.88 8952 3340 1 -#> pred[UNCOVER-3: SEC_150] 0.75 0.04 0.67 0.72 0.75 0.77 0.81 8519 2995 1 -#> pred[UNCOVER-3: SEC_300] 0.83 0.03 0.77 0.81 0.83 0.85 0.88 8023 3179 1 +#> pred[UNCOVER-3: PBO] 0.08 0.01 0.06 0.07 0.08 0.08 0.10 5480 3452 1 +#> pred[UNCOVER-3: ETN] 0.53 0.02 0.49 0.51 0.53 0.54 0.57 8342 3231 1 +#> pred[UNCOVER-3: IXE_Q2W] 0.93 0.01 0.91 0.92 0.93 0.93 0.94 6786 2970 1 +#> pred[UNCOVER-3: IXE_Q4W] 0.85 0.01 0.83 0.85 0.85 0.86 0.88 9005 3312 1 +#> pred[UNCOVER-3: SEC_150] 0.75 0.04 0.67 0.72 0.75 0.77 0.81 6774 3370 1 +#> pred[UNCOVER-3: SEC_300] 0.83 0.03 0.77 0.81 0.83 0.85 0.88 7981 3078 1 plot(pso_pred_FE, ref_line = c(0, 1)) -

+

We can produce population-adjusted ranks, rank probabilities, and cumulative rank probabilities in each study population using the posterior_ranks() and posterior_rank_probs() @@ -1035,10 +1032,10 @@

Producing relative effects and event probabilities

#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat #> rank[FIXTURE: PBO] 6.00 0.00 6 6 6 6 6 NA NA NA #> rank[FIXTURE: ETN] 5.00 0.00 5 5 5 5 5 NA NA NA -#> rank[FIXTURE: IXE_Q2W] 1.00 0.02 1 1 1 1 1 4016 4016 1 -#> rank[FIXTURE: IXE_Q4W] 2.22 0.41 2 2 2 2 3 4139 4022 1 -#> rank[FIXTURE: SEC_150] 4.00 0.05 4 4 4 4 4 2632 NA 1 -#> rank[FIXTURE: SEC_300] 2.79 0.41 2 3 3 3 3 4170 2176 1 +#> rank[FIXTURE: IXE_Q2W] 1.00 0.00 1 1 1 1 1 NA NA NA +#> rank[FIXTURE: IXE_Q4W] 2.23 0.42 2 2 2 2 3 4316 NA 1 +#> rank[FIXTURE: SEC_150] 4.00 0.04 4 4 4 4 4 3162 NA 1 +#> rank[FIXTURE: SEC_300] 2.77 0.42 2 3 3 3 3 4376 3162 1 #> #> -------------------------------------------------------------- Study: UNCOVER-1 ---- #> @@ -1049,10 +1046,10 @@

Producing relative effects and event probabilities

#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat #> rank[UNCOVER-1: PBO] 6.00 0.00 6 6 6 6 6 NA NA NA #> rank[UNCOVER-1: ETN] 5.00 0.00 5 5 5 5 5 NA NA NA -#> rank[UNCOVER-1: IXE_Q2W] 1.00 0.02 1 1 1 1 1 4016 4016 1 -#> rank[UNCOVER-1: IXE_Q4W] 2.22 0.41 2 2 2 2 3 4139 4022 1 -#> rank[UNCOVER-1: SEC_150] 4.00 0.05 4 4 4 4 4 2632 NA 1 -#> rank[UNCOVER-1: SEC_300] 2.79 0.41 2 3 3 3 3 4170 2176 1 +#> rank[UNCOVER-1: IXE_Q2W] 1.00 0.00 1 1 1 1 1 NA NA NA +#> rank[UNCOVER-1: IXE_Q4W] 2.23 0.42 2 2 2 2 3 4316 NA 1 +#> rank[UNCOVER-1: SEC_150] 4.00 0.04 4 4 4 4 4 3162 NA 1 +#> rank[UNCOVER-1: SEC_300] 2.77 0.42 2 3 3 3 3 4376 3162 1 #> #> -------------------------------------------------------------- Study: UNCOVER-2 ---- #> @@ -1063,10 +1060,10 @@

Producing relative effects and event probabilities

#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat #> rank[UNCOVER-2: PBO] 6.00 0.00 6 6 6 6 6 NA NA NA #> rank[UNCOVER-2: ETN] 5.00 0.00 5 5 5 5 5 NA NA NA -#> rank[UNCOVER-2: IXE_Q2W] 1.00 0.02 1 1 1 1 1 4016 4016 1 -#> rank[UNCOVER-2: IXE_Q4W] 2.22 0.41 2 2 2 2 3 4139 4022 1 -#> rank[UNCOVER-2: SEC_150] 4.00 0.05 4 4 4 4 4 2632 NA 1 -#> rank[UNCOVER-2: SEC_300] 2.79 0.41 2 3 3 3 3 4170 2176 1 +#> rank[UNCOVER-2: IXE_Q2W] 1.00 0.00 1 1 1 1 1 NA NA NA +#> rank[UNCOVER-2: IXE_Q4W] 2.23 0.42 2 2 2 2 3 4316 NA 1 +#> rank[UNCOVER-2: SEC_150] 4.00 0.04 4 4 4 4 4 3162 NA 1 +#> rank[UNCOVER-2: SEC_300] 2.77 0.42 2 3 3 3 3 4376 3162 1 #> #> -------------------------------------------------------------- Study: UNCOVER-3 ---- #> @@ -1077,10 +1074,10 @@

Producing relative effects and event probabilities

#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat #> rank[UNCOVER-3: PBO] 6.00 0.00 6 6 6 6 6 NA NA NA #> rank[UNCOVER-3: ETN] 5.00 0.00 5 5 5 5 5 NA NA NA -#> rank[UNCOVER-3: IXE_Q2W] 1.00 0.02 1 1 1 1 1 4016 4016 1 -#> rank[UNCOVER-3: IXE_Q4W] 2.22 0.41 2 2 2 2 3 4139 4022 1 -#> rank[UNCOVER-3: SEC_150] 4.00 0.05 4 4 4 4 4 2632 NA 1 -#> rank[UNCOVER-3: SEC_300] 2.79 0.41 2 3 3 3 3 4170 2176 1 +#> rank[UNCOVER-3: IXE_Q2W] 1.00 0.00 1 1 1 1 1 NA NA NA +#> rank[UNCOVER-3: IXE_Q4W] 2.23 0.42 2 2 2 2 3 4316 NA 1 +#> rank[UNCOVER-3: SEC_150] 4.00 0.04 4 4 4 4 4 3162 NA 1 +#> rank[UNCOVER-3: SEC_300] 2.77 0.42 2 3 3 3 3 4376 3162 1 plot(pso_ranks_FE)

(pso_rankprobs_FE <- posterior_rank_probs(pso_fit_FE, lower_better = FALSE))
@@ -1094,9 +1091,9 @@ 

Producing relative effects and event probabilities

#> d[FIXTURE: PBO] 0 0.00 0.00 0 0 1 #> d[FIXTURE: ETN] 0 0.00 0.00 0 1 0 #> d[FIXTURE: IXE_Q2W] 1 0.00 0.00 0 0 0 -#> d[FIXTURE: IXE_Q4W] 0 0.79 0.21 0 0 0 +#> d[FIXTURE: IXE_Q4W] 0 0.77 0.23 0 0 0 #> d[FIXTURE: SEC_150] 0 0.00 0.00 1 0 0 -#> d[FIXTURE: SEC_300] 0 0.21 0.78 0 0 0 +#> d[FIXTURE: SEC_300] 0 0.23 0.77 0 0 0 #> #> -------------------------------------------------------------- Study: UNCOVER-1 ---- #> @@ -1108,9 +1105,9 @@

Producing relative effects and event probabilities

#> d[UNCOVER-1: PBO] 0 0.00 0.00 0 0 1 #> d[UNCOVER-1: ETN] 0 0.00 0.00 0 1 0 #> d[UNCOVER-1: IXE_Q2W] 1 0.00 0.00 0 0 0 -#> d[UNCOVER-1: IXE_Q4W] 0 0.79 0.21 0 0 0 +#> d[UNCOVER-1: IXE_Q4W] 0 0.77 0.23 0 0 0 #> d[UNCOVER-1: SEC_150] 0 0.00 0.00 1 0 0 -#> d[UNCOVER-1: SEC_300] 0 0.21 0.78 0 0 0 +#> d[UNCOVER-1: SEC_300] 0 0.23 0.77 0 0 0 #> #> -------------------------------------------------------------- Study: UNCOVER-2 ---- #> @@ -1122,9 +1119,9 @@

Producing relative effects and event probabilities

#> d[UNCOVER-2: PBO] 0 0.00 0.00 0 0 1 #> d[UNCOVER-2: ETN] 0 0.00 0.00 0 1 0 #> d[UNCOVER-2: IXE_Q2W] 1 0.00 0.00 0 0 0 -#> d[UNCOVER-2: IXE_Q4W] 0 0.79 0.21 0 0 0 +#> d[UNCOVER-2: IXE_Q4W] 0 0.77 0.23 0 0 0 #> d[UNCOVER-2: SEC_150] 0 0.00 0.00 1 0 0 -#> d[UNCOVER-2: SEC_300] 0 0.21 0.78 0 0 0 +#> d[UNCOVER-2: SEC_300] 0 0.23 0.77 0 0 0 #> #> -------------------------------------------------------------- Study: UNCOVER-3 ---- #> @@ -1136,11 +1133,11 @@

Producing relative effects and event probabilities

#> d[UNCOVER-3: PBO] 0 0.00 0.00 0 0 1 #> d[UNCOVER-3: ETN] 0 0.00 0.00 0 1 0 #> d[UNCOVER-3: IXE_Q2W] 1 0.00 0.00 0 0 0 -#> d[UNCOVER-3: IXE_Q4W] 0 0.79 0.21 0 0 0 +#> d[UNCOVER-3: IXE_Q4W] 0 0.77 0.23 0 0 0 #> d[UNCOVER-3: SEC_150] 0 0.00 0.00 1 0 0 -#> d[UNCOVER-3: SEC_300] 0 0.21 0.78 0 0 0 +#> d[UNCOVER-3: SEC_300] 0 0.23 0.77 0 0 0 plot(pso_rankprobs_FE)
-

+

(pso_cumrankprobs_FE <- posterior_rank_probs(pso_fit_FE, lower_better = FALSE, cumulative = TRUE))
 #> ---------------------------------------------------------------- Study: FIXTURE ---- 
 #> 
@@ -1152,9 +1149,9 @@ 

Producing relative effects and event probabilities

#> d[FIXTURE: PBO] 0 0.00 0 0 0 1 #> d[FIXTURE: ETN] 0 0.00 0 0 1 1 #> d[FIXTURE: IXE_Q2W] 1 1.00 1 1 1 1 -#> d[FIXTURE: IXE_Q4W] 0 0.79 1 1 1 1 +#> d[FIXTURE: IXE_Q4W] 0 0.77 1 1 1 1 #> d[FIXTURE: SEC_150] 0 0.00 0 1 1 1 -#> d[FIXTURE: SEC_300] 0 0.21 1 1 1 1 +#> d[FIXTURE: SEC_300] 0 0.23 1 1 1 1 #> #> -------------------------------------------------------------- Study: UNCOVER-1 ---- #> @@ -1166,9 +1163,9 @@

Producing relative effects and event probabilities

#> d[UNCOVER-1: PBO] 0 0.00 0 0 0 1 #> d[UNCOVER-1: ETN] 0 0.00 0 0 1 1 #> d[UNCOVER-1: IXE_Q2W] 1 1.00 1 1 1 1 -#> d[UNCOVER-1: IXE_Q4W] 0 0.79 1 1 1 1 +#> d[UNCOVER-1: IXE_Q4W] 0 0.77 1 1 1 1 #> d[UNCOVER-1: SEC_150] 0 0.00 0 1 1 1 -#> d[UNCOVER-1: SEC_300] 0 0.21 1 1 1 1 +#> d[UNCOVER-1: SEC_300] 0 0.23 1 1 1 1 #> #> -------------------------------------------------------------- Study: UNCOVER-2 ---- #> @@ -1180,9 +1177,9 @@

Producing relative effects and event probabilities

#> d[UNCOVER-2: PBO] 0 0.00 0 0 0 1 #> d[UNCOVER-2: ETN] 0 0.00 0 0 1 1 #> d[UNCOVER-2: IXE_Q2W] 1 1.00 1 1 1 1 -#> d[UNCOVER-2: IXE_Q4W] 0 0.79 1 1 1 1 +#> d[UNCOVER-2: IXE_Q4W] 0 0.77 1 1 1 1 #> d[UNCOVER-2: SEC_150] 0 0.00 0 1 1 1 -#> d[UNCOVER-2: SEC_300] 0 0.21 1 1 1 1 +#> d[UNCOVER-2: SEC_300] 0 0.23 1 1 1 1 #> #> -------------------------------------------------------------- Study: UNCOVER-3 ---- #> @@ -1194,11 +1191,11 @@

Producing relative effects and event probabilities

#> d[UNCOVER-3: PBO] 0 0.00 0 0 0 1 #> d[UNCOVER-3: ETN] 0 0.00 0 0 1 1 #> d[UNCOVER-3: IXE_Q2W] 1 1.00 1 1 1 1 -#> d[UNCOVER-3: IXE_Q4W] 0 0.79 1 1 1 1 +#> d[UNCOVER-3: IXE_Q4W] 0 0.77 1 1 1 1 #> d[UNCOVER-3: SEC_150] 0 0.00 0 1 1 1 -#> d[UNCOVER-3: SEC_300] 0 0.21 1 1 1 1 +#> d[UNCOVER-3: SEC_300] 0 0.23 1 1 1 1 plot(pso_cumrankprobs_FE)
-

+

All of the above estimates (relative effects, predictions, rankings) can also be produced for a specific target population or populations by providing a suitable newdata argument to for function (and @@ -1224,13 +1221,13 @@

Producing relative effects and event probabilities

#> 3 0.1 0.6 10 0.2 #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> d[New 1: ETN] 1.25 0.23 0.83 1.10 1.25 1.40 1.72 5601 3197 1 -#> d[New 1: IXE_Q2W] 2.89 0.22 2.46 2.73 2.88 3.03 3.34 6758 3050 1 -#> d[New 1: IXE_Q4W] 2.47 0.22 2.06 2.32 2.47 2.62 2.92 6854 2847 1 -#> d[New 1: SEC_150] 2.08 0.23 1.64 1.92 2.07 2.23 2.53 6625 2859 1 -#> d[New 1: SEC_300] 2.38 0.23 1.94 2.23 2.37 2.53 2.85 7033 2685 1 +#> d[New 1: ETN] 1.25 0.23 0.83 1.10 1.25 1.41 1.69 6135 3191 1 +#> d[New 1: IXE_Q2W] 2.89 0.22 2.46 2.73 2.89 3.04 3.33 7232 3509 1 +#> d[New 1: IXE_Q4W] 2.48 0.22 2.05 2.32 2.47 2.63 2.90 7341 3341 1 +#> d[New 1: SEC_150] 2.08 0.23 1.64 1.92 2.07 2.23 2.53 6978 3385 1 +#> d[New 1: SEC_300] 2.38 0.23 1.95 2.23 2.38 2.54 2.84 7196 3331 1 plot(pso_releff_FE_new, ref_line = 0) -

+

For absolute predictions, we require information about the full covariate distribution in the target population, not just the mean values. If IPD are available for the target population, @@ -1276,14 +1273,14 @@

Producing relative effects and event probabilities

#> ------------------------------------------------------------------ Study: New 1 ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> pred[New 1: PBO] 0.06 0.03 0.03 0.04 0.06 0.08 0.12 5233 3208 1 -#> pred[New 1: ETN] 0.37 0.06 0.26 0.33 0.37 0.41 0.49 5020 3342 1 -#> pred[New 1: IXE_Q2W] 0.90 0.03 0.84 0.88 0.90 0.92 0.94 5521 3567 1 -#> pred[New 1: IXE_Q4W] 0.81 0.04 0.72 0.78 0.81 0.83 0.87 5554 3585 1 -#> pred[New 1: SEC_150] 0.68 0.06 0.56 0.64 0.68 0.72 0.79 4892 3653 1 -#> pred[New 1: SEC_300] 0.78 0.05 0.68 0.75 0.78 0.81 0.87 5029 3585 1 +#> pred[New 1: PBO] 0.06 0.03 0.03 0.04 0.06 0.07 0.12 5067 3486 1 +#> pred[New 1: ETN] 0.37 0.06 0.26 0.33 0.37 0.41 0.48 5667 3616 1 +#> pred[New 1: IXE_Q2W] 0.90 0.03 0.84 0.88 0.90 0.92 0.94 5828 3461 1 +#> pred[New 1: IXE_Q4W] 0.81 0.04 0.72 0.78 0.81 0.83 0.87 5939 3377 1 +#> pred[New 1: SEC_150] 0.68 0.06 0.57 0.64 0.68 0.72 0.78 5696 3817 1 +#> pred[New 1: SEC_300] 0.78 0.05 0.68 0.75 0.78 0.81 0.86 6242 3916 1 plot(pso_pred_FE_new, ref_line = c(0, 1)) -

+

@@ -1499,75 +1496,75 @@

ML-NMR model

#> Regression model: ~(durnpso + prevsys + bsa + weight + psa) * .trt. #> Centred covariates at the following overall mean values: #> durnpso prevsys bsa weight psa -#> 1.8159830 0.6576489 0.2987820 8.9097263 0.2104826 +#> 1.7947485 0.6504375 0.2973544 8.9165934 0.2074278 #> Inference for Stan model: ordered_multinomial. #> 4 chains, each with iter=2000; warmup=1000; thin=1; #> post-warmup draws per chain=1000, total post-warmup draws=4000. #> #> mean se_mean sd 2.5% 25% 50% 75% -#> beta[durnpso] 0.03 0.00 0.06 -0.08 -0.01 0.03 0.08 -#> beta[prevsys] -0.17 0.00 0.16 -0.49 -0.28 -0.17 -0.06 -#> beta[bsa] -0.10 0.01 0.45 -1.01 -0.40 -0.08 0.21 -#> beta[weight] 0.04 0.00 0.03 -0.01 0.02 0.04 0.06 -#> beta[psa] -0.08 0.00 0.17 -0.42 -0.20 -0.08 0.03 +#> beta[durnpso] 0.03 0.00 0.06 -0.09 -0.01 0.03 0.08 +#> beta[prevsys] -0.17 0.00 0.15 -0.46 -0.28 -0.18 -0.07 +#> beta[bsa] -0.12 0.01 0.44 -1.02 -0.40 -0.11 0.18 +#> beta[weight] 0.04 0.00 0.03 -0.01 0.03 0.04 0.06 +#> beta[psa] -0.07 0.00 0.17 -0.43 -0.20 -0.07 0.04 #> beta[durnpso:.trtclassTNFa blocker] -0.02 0.00 0.07 -0.16 -0.07 -0.02 0.03 -#> beta[durnpso:.trtclassIL-12/23 blocker] -0.06 0.00 0.10 -0.26 -0.13 -0.07 0.00 -#> beta[durnpso:.trtclassIL-17 blocker] -0.02 0.00 0.06 -0.14 -0.07 -0.02 0.02 -#> beta[prevsys:.trtclassTNFa blocker] 0.19 0.00 0.19 -0.18 0.07 0.19 0.32 -#> beta[prevsys:.trtclassIL-12/23 blocker] 0.45 0.01 0.34 -0.24 0.24 0.47 0.68 -#> beta[prevsys:.trtclassIL-17 blocker] 0.16 0.00 0.17 -0.17 0.05 0.16 0.28 -#> beta[bsa:.trtclassTNFa blocker] 0.24 0.01 0.51 -0.73 -0.11 0.22 0.57 -#> beta[bsa:.trtclassIL-12/23 blocker] 0.61 0.01 0.68 -0.71 0.14 0.61 1.07 -#> beta[bsa:.trtclassIL-17 blocker] 0.27 0.01 0.47 -0.63 -0.06 0.26 0.58 +#> beta[durnpso:.trtclassIL-12/23 blocker] -0.06 0.00 0.10 -0.26 -0.13 -0.07 0.01 +#> beta[durnpso:.trtclassIL-17 blocker] -0.02 0.00 0.06 -0.15 -0.07 -0.02 0.02 +#> beta[prevsys:.trtclassTNFa blocker] 0.20 0.00 0.18 -0.16 0.08 0.20 0.32 +#> beta[prevsys:.trtclassIL-12/23 blocker] 0.45 0.00 0.32 -0.20 0.24 0.46 0.68 +#> beta[prevsys:.trtclassIL-17 blocker] 0.17 0.00 0.16 -0.15 0.06 0.17 0.28 +#> beta[bsa:.trtclassTNFa blocker] 0.26 0.01 0.51 -0.71 -0.08 0.25 0.59 +#> beta[bsa:.trtclassIL-12/23 blocker] 0.61 0.01 0.66 -0.65 0.17 0.61 1.06 +#> beta[bsa:.trtclassIL-17 blocker] 0.29 0.01 0.46 -0.60 -0.02 0.28 0.58 #> beta[weight:.trtclassTNFa blocker] -0.16 0.00 0.03 -0.23 -0.18 -0.16 -0.14 #> beta[weight:.trtclassIL-12/23 blocker] -0.09 0.00 0.05 -0.18 -0.12 -0.09 -0.06 #> beta[weight:.trtclassIL-17 blocker] -0.13 0.00 0.03 -0.19 -0.15 -0.13 -0.11 -#> beta[psa:.trtclassTNFa blocker] -0.05 0.00 0.20 -0.43 -0.18 -0.04 0.08 -#> beta[psa:.trtclassIL-12/23 blocker] 0.12 0.01 0.33 -0.51 -0.11 0.12 0.36 -#> beta[psa:.trtclassIL-17 blocker] 0.10 0.00 0.18 -0.24 -0.02 0.10 0.21 +#> beta[psa:.trtclassTNFa blocker] -0.06 0.00 0.20 -0.46 -0.19 -0.05 0.08 +#> beta[psa:.trtclassIL-12/23 blocker] 0.13 0.01 0.34 -0.53 -0.10 0.12 0.35 +#> beta[psa:.trtclassIL-17 blocker] 0.09 0.00 0.18 -0.26 -0.03 0.09 0.22 #> d[ETN] 1.58 0.00 0.07 1.44 1.53 1.58 1.63 -#> d[IXE_Q2W] 2.91 0.00 0.07 2.76 2.86 2.91 2.96 -#> d[IXE_Q4W] 2.69 0.00 0.08 2.54 2.64 2.69 2.74 -#> d[SEC_150] 2.19 0.00 0.08 2.03 2.13 2.19 2.24 -#> d[SEC_300] 2.60 0.00 0.08 2.45 2.54 2.60 2.65 -#> d[UST] 2.13 0.00 0.11 1.91 2.06 2.13 2.20 -#> lp__ -7640.27 0.11 4.31 -7649.63 -7642.96 -7639.97 -7637.16 +#> d[IXE_Q2W] 2.91 0.00 0.07 2.77 2.86 2.91 2.96 +#> d[IXE_Q4W] 2.69 0.00 0.08 2.55 2.64 2.69 2.74 +#> d[SEC_150] 2.19 0.00 0.08 2.03 2.13 2.19 2.25 +#> d[SEC_300] 2.60 0.00 0.08 2.44 2.54 2.60 2.65 +#> d[UST] 2.13 0.00 0.11 1.91 2.06 2.13 2.21 +#> lp__ -7752.94 0.10 4.30 -7762.02 -7755.80 -7752.63 -7749.89 #> cc[PASI75] 0.00 NaN 0.00 0.00 0.00 0.00 0.00 #> cc[PASI90] 0.69 0.00 0.02 0.65 0.68 0.69 0.70 #> cc[PASI100] 1.53 0.00 0.02 1.49 1.52 1.53 1.55 #> 97.5% n_eff Rhat -#> beta[durnpso] 0.15 2512 1 -#> beta[prevsys] 0.14 2701 1 -#> beta[bsa] 0.77 2254 1 -#> beta[weight] 0.10 2331 1 -#> beta[psa] 0.24 3019 1 -#> beta[durnpso:.trtclassTNFa blocker] 0.12 2678 1 -#> beta[durnpso:.trtclassIL-12/23 blocker] 0.14 3490 1 -#> beta[durnpso:.trtclassIL-17 blocker] 0.10 2899 1 -#> beta[prevsys:.trtclassTNFa blocker] 0.55 2824 1 -#> beta[prevsys:.trtclassIL-12/23 blocker] 1.11 4293 1 -#> beta[prevsys:.trtclassIL-17 blocker] 0.48 3128 1 -#> beta[bsa:.trtclassTNFa blocker] 1.27 2433 1 -#> beta[bsa:.trtclassIL-12/23 blocker] 1.93 2921 1 -#> beta[bsa:.trtclassIL-17 blocker] 1.25 2728 1 -#> beta[weight:.trtclassTNFa blocker] -0.10 2590 1 -#> beta[weight:.trtclassIL-12/23 blocker] 0.01 3473 1 -#> beta[weight:.trtclassIL-17 blocker] -0.07 2731 1 -#> beta[psa:.trtclassTNFa blocker] 0.33 2990 1 -#> beta[psa:.trtclassIL-12/23 blocker] 0.77 3967 1 -#> beta[psa:.trtclassIL-17 blocker] 0.46 3516 1 -#> d[ETN] 1.72 1969 1 -#> d[IXE_Q2W] 3.06 2104 1 -#> d[IXE_Q4W] 2.84 2327 1 -#> d[SEC_150] 2.36 2267 1 -#> d[SEC_300] 2.76 2396 1 -#> d[UST] 2.34 3215 1 -#> lp__ -7632.94 1664 1 +#> beta[durnpso] 0.15 3278 1 +#> beta[prevsys] 0.13 3239 1 +#> beta[bsa] 0.73 2993 1 +#> beta[weight] 0.10 2717 1 +#> beta[psa] 0.25 3200 1 +#> beta[durnpso:.trtclassTNFa blocker] 0.12 3645 1 +#> beta[durnpso:.trtclassIL-12/23 blocker] 0.14 3762 1 +#> beta[durnpso:.trtclassIL-17 blocker] 0.11 3711 1 +#> beta[prevsys:.trtclassTNFa blocker] 0.55 3330 1 +#> beta[prevsys:.trtclassIL-12/23 blocker] 1.05 4366 1 +#> beta[prevsys:.trtclassIL-17 blocker] 0.47 3593 1 +#> beta[bsa:.trtclassTNFa blocker] 1.30 3147 1 +#> beta[bsa:.trtclassIL-12/23 blocker] 1.89 3386 1 +#> beta[bsa:.trtclassIL-17 blocker] 1.22 3490 1 +#> beta[weight:.trtclassTNFa blocker] -0.10 3342 1 +#> beta[weight:.trtclassIL-12/23 blocker] 0.00 4100 1 +#> beta[weight:.trtclassIL-17 blocker] -0.07 3080 1 +#> beta[psa:.trtclassTNFa blocker] 0.34 3511 1 +#> beta[psa:.trtclassIL-12/23 blocker] 0.80 3769 1 +#> beta[psa:.trtclassIL-17 blocker] 0.46 3732 1 +#> d[ETN] 1.72 2114 1 +#> d[IXE_Q2W] 3.06 2708 1 +#> d[IXE_Q4W] 2.84 2949 1 +#> d[SEC_150] 2.36 2357 1 +#> d[SEC_300] 2.76 2456 1 +#> d[UST] 2.36 3349 1 +#> lp__ -7745.56 1701 1 #> cc[PASI75] 0.00 NaN NaN -#> cc[PASI90] 0.72 3323 1 -#> cc[PASI100] 1.58 2862 1 +#> cc[PASI90] 0.72 4016 1 +#> cc[PASI100] 1.58 3777 1 #> -#> Samples were drawn using NUTS(diag_e) at Sun Aug 28 12:56:36 2022. +#> Samples were drawn using NUTS(diag_e) at Tue Jan 9 11:53:40 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).
@@ -1617,77 +1614,77 @@

Assessing residual heterogeneity with a random effects ML-NMR

#> Regression model: ~(durnpso + prevsys + bsa + weight + psa) * .trt. #> Centred covariates at the following overall mean values: #> durnpso prevsys bsa weight psa -#> 1.8159830 0.6576489 0.2987820 8.9097263 0.2104826 +#> 1.7947485 0.6504375 0.2973544 8.9165934 0.2074278 #> Inference for Stan model: ordered_multinomial. #> 4 chains, each with iter=2000; warmup=1000; thin=1; #> post-warmup draws per chain=1000, total post-warmup draws=4000. #> #> mean se_mean sd 2.5% 25% 50% 75% -#> beta[durnpso] 0.04 0.00 0.06 -0.08 -0.01 0.04 0.08 -#> beta[prevsys] -0.16 0.00 0.16 -0.46 -0.26 -0.15 -0.06 -#> beta[bsa] -0.14 0.01 0.46 -1.09 -0.45 -0.13 0.17 +#> beta[durnpso] 0.04 0.00 0.06 -0.09 0.00 0.04 0.08 +#> beta[prevsys] -0.16 0.00 0.16 -0.47 -0.27 -0.16 -0.05 +#> beta[bsa] -0.13 0.01 0.47 -1.09 -0.43 -0.11 0.20 #> beta[weight] 0.05 0.00 0.03 -0.01 0.03 0.05 0.07 -#> beta[psa] -0.07 0.00 0.17 -0.40 -0.18 -0.06 0.04 -#> beta[durnpso:.trtclassTNFa blocker] -0.02 0.00 0.07 -0.17 -0.07 -0.02 0.03 -#> beta[durnpso:.trtclassIL-12/23 blocker] -0.07 0.00 0.10 -0.27 -0.14 -0.07 0.01 -#> beta[durnpso:.trtclassIL-17 blocker] -0.03 0.00 0.06 -0.15 -0.07 -0.02 0.02 -#> beta[prevsys:.trtclassTNFa blocker] 0.19 0.00 0.18 -0.17 0.07 0.19 0.31 -#> beta[prevsys:.trtclassIL-12/23 blocker] 0.43 0.00 0.35 -0.27 0.20 0.44 0.67 -#> beta[prevsys:.trtclassIL-17 blocker] 0.15 0.00 0.16 -0.18 0.04 0.15 0.26 -#> beta[bsa:.trtclassTNFa blocker] 0.27 0.01 0.53 -0.73 -0.08 0.25 0.61 -#> beta[bsa:.trtclassIL-12/23 blocker] 0.66 0.01 0.66 -0.65 0.21 0.67 1.09 -#> beta[bsa:.trtclassIL-17 blocker] 0.32 0.01 0.48 -0.58 -0.01 0.31 0.63 +#> beta[psa] -0.07 0.00 0.18 -0.41 -0.19 -0.07 0.05 +#> beta[durnpso:.trtclassTNFa blocker] -0.02 0.00 0.07 -0.17 -0.07 -0.03 0.03 +#> beta[durnpso:.trtclassIL-12/23 blocker] -0.07 0.00 0.10 -0.26 -0.14 -0.07 0.00 +#> beta[durnpso:.trtclassIL-17 blocker] -0.03 0.00 0.07 -0.16 -0.07 -0.03 0.02 +#> beta[prevsys:.trtclassTNFa blocker] 0.19 0.00 0.18 -0.16 0.07 0.19 0.31 +#> beta[prevsys:.trtclassIL-12/23 blocker] 0.44 0.00 0.33 -0.22 0.22 0.44 0.67 +#> beta[prevsys:.trtclassIL-17 blocker] 0.16 0.00 0.17 -0.17 0.05 0.16 0.27 +#> beta[bsa:.trtclassTNFa blocker] 0.25 0.01 0.53 -0.75 -0.12 0.24 0.59 +#> beta[bsa:.trtclassIL-12/23 blocker] 0.63 0.01 0.66 -0.65 0.18 0.62 1.07 +#> beta[bsa:.trtclassIL-17 blocker] 0.30 0.01 0.48 -0.60 -0.04 0.30 0.62 #> beta[weight:.trtclassTNFa blocker] -0.16 0.00 0.03 -0.23 -0.19 -0.16 -0.14 -#> beta[weight:.trtclassIL-12/23 blocker] -0.09 0.00 0.05 -0.18 -0.12 -0.09 -0.06 +#> beta[weight:.trtclassIL-12/23 blocker] -0.09 0.00 0.05 -0.19 -0.12 -0.09 -0.06 #> beta[weight:.trtclassIL-17 blocker] -0.13 0.00 0.03 -0.19 -0.15 -0.13 -0.11 -#> beta[psa:.trtclassTNFa blocker] -0.06 0.00 0.20 -0.46 -0.20 -0.06 0.07 -#> beta[psa:.trtclassIL-12/23 blocker] 0.11 0.00 0.33 -0.53 -0.10 0.11 0.34 -#> beta[psa:.trtclassIL-17 blocker] 0.08 0.00 0.18 -0.27 -0.04 0.08 0.20 -#> d[ETN] 1.59 0.00 0.11 1.38 1.52 1.59 1.66 -#> d[IXE_Q2W] 2.93 0.00 0.11 2.73 2.86 2.93 3.00 -#> d[IXE_Q4W] 2.71 0.00 0.12 2.49 2.64 2.71 2.78 -#> d[SEC_150] 2.21 0.00 0.12 1.99 2.13 2.21 2.28 +#> beta[psa:.trtclassTNFa blocker] -0.06 0.00 0.21 -0.47 -0.20 -0.06 0.08 +#> beta[psa:.trtclassIL-12/23 blocker] 0.11 0.00 0.34 -0.55 -0.12 0.11 0.34 +#> beta[psa:.trtclassIL-17 blocker] 0.08 0.00 0.19 -0.29 -0.04 0.08 0.21 +#> d[ETN] 1.59 0.00 0.11 1.38 1.52 1.59 1.65 +#> d[IXE_Q2W] 2.93 0.00 0.11 2.72 2.86 2.93 3.00 +#> d[IXE_Q4W] 2.71 0.00 0.11 2.48 2.64 2.71 2.78 +#> d[SEC_150] 2.22 0.00 0.12 2.00 2.14 2.21 2.29 #> d[SEC_300] 2.64 0.00 0.12 2.42 2.56 2.63 2.71 #> d[UST] 2.17 0.00 0.17 1.85 2.06 2.16 2.27 -#> lp__ -7646.77 0.21 6.32 -7660.09 -7650.88 -7646.44 -7642.40 -#> tau 0.13 0.00 0.07 0.02 0.09 0.13 0.17 +#> lp__ -7761.18 0.20 6.16 -7774.24 -7765.11 -7760.94 -7756.88 +#> tau 0.14 0.00 0.07 0.03 0.09 0.13 0.17 #> cc[PASI75] 0.00 NaN 0.00 0.00 0.00 0.00 0.00 -#> cc[PASI90] 0.69 0.00 0.02 0.66 0.68 0.69 0.70 +#> cc[PASI90] 0.69 0.00 0.02 0.65 0.68 0.69 0.70 #> cc[PASI100] 1.53 0.00 0.02 1.49 1.52 1.53 1.55 #> 97.5% n_eff Rhat -#> beta[durnpso] 0.16 3817 1 -#> beta[prevsys] 0.16 4212 1 -#> beta[bsa] 0.73 3325 1 -#> beta[weight] 0.10 3585 1 -#> beta[psa] 0.27 4167 1 -#> beta[durnpso:.trtclassTNFa blocker] 0.12 3797 1 -#> beta[durnpso:.trtclassIL-12/23 blocker] 0.13 5280 1 -#> beta[durnpso:.trtclassIL-17 blocker] 0.10 4181 1 -#> beta[prevsys:.trtclassTNFa blocker] 0.54 4064 1 -#> beta[prevsys:.trtclassIL-12/23 blocker] 1.06 5604 1 -#> beta[prevsys:.trtclassIL-17 blocker] 0.46 4509 1 -#> beta[bsa:.trtclassTNFa blocker] 1.31 3573 1 -#> beta[bsa:.trtclassIL-12/23 blocker] 1.98 4347 1 -#> beta[bsa:.trtclassIL-17 blocker] 1.29 3634 1 -#> beta[weight:.trtclassTNFa blocker] -0.10 3833 1 -#> beta[weight:.trtclassIL-12/23 blocker] 0.00 5021 1 -#> beta[weight:.trtclassIL-17 blocker] -0.07 4493 1 -#> beta[psa:.trtclassTNFa blocker] 0.35 4225 1 -#> beta[psa:.trtclassIL-12/23 blocker] 0.75 6190 1 -#> beta[psa:.trtclassIL-17 blocker] 0.43 4403 1 -#> d[ETN] 1.81 2805 1 -#> d[IXE_Q2W] 3.15 3031 1 -#> d[IXE_Q4W] 2.95 2966 1 -#> d[SEC_150] 2.47 2726 1 -#> d[SEC_300] 2.88 2575 1 -#> d[UST] 2.52 2667 1 -#> lp__ -7635.39 899 1 -#> tau 0.29 620 1 +#> beta[durnpso] 0.16 4028 1 +#> beta[prevsys] 0.15 3931 1 +#> beta[bsa] 0.75 3963 1 +#> beta[weight] 0.10 4005 1 +#> beta[psa] 0.28 3835 1 +#> beta[durnpso:.trtclassTNFa blocker] 0.12 4080 1 +#> beta[durnpso:.trtclassIL-12/23 blocker] 0.13 4244 1 +#> beta[durnpso:.trtclassIL-17 blocker] 0.10 4440 1 +#> beta[prevsys:.trtclassTNFa blocker] 0.54 4143 1 +#> beta[prevsys:.trtclassIL-12/23 blocker] 1.07 4555 1 +#> beta[prevsys:.trtclassIL-17 blocker] 0.48 4517 1 +#> beta[bsa:.trtclassTNFa blocker] 1.33 4333 1 +#> beta[bsa:.trtclassIL-12/23 blocker] 1.96 4933 1 +#> beta[bsa:.trtclassIL-17 blocker] 1.30 4329 1 +#> beta[weight:.trtclassTNFa blocker] -0.10 4309 1 +#> beta[weight:.trtclassIL-12/23 blocker] 0.00 4940 1 +#> beta[weight:.trtclassIL-17 blocker] -0.07 4681 1 +#> beta[psa:.trtclassTNFa blocker] 0.35 3883 1 +#> beta[psa:.trtclassIL-12/23 blocker] 0.78 4810 1 +#> beta[psa:.trtclassIL-17 blocker] 0.44 4230 1 +#> d[ETN] 1.81 2539 1 +#> d[IXE_Q2W] 3.16 2657 1 +#> d[IXE_Q4W] 2.93 2394 1 +#> d[SEC_150] 2.47 2433 1 +#> d[SEC_300] 2.90 2193 1 +#> d[UST] 2.50 3305 1 +#> lp__ -7750.02 985 1 +#> tau 0.30 622 1 #> cc[PASI75] 0.00 NaN NaN -#> cc[PASI90] 0.72 5665 1 -#> cc[PASI100] 1.58 6212 1 +#> cc[PASI90] 0.72 5611 1 +#> cc[PASI100] 1.58 5856 1 #> -#> Samples were drawn using NUTS(diag_e) at Sun Aug 28 14:09:25 2022. +#> Samples were drawn using NUTS(diag_e) at Tue Jan 9 12:36:43 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). @@ -1695,13 +1692,13 @@

Assessing residual heterogeneity with a random effects ML-NMR

tau is small compared to the relative treatment effects. We compare the model fit using the DIC:

(pso_dic_FE <- dic(pso_fit_FE))
-
#> Residual deviance: 8811.4 (on 12387 data points)
+
#> Residual deviance: 8811.2 (on 12387 data points)
 #>                pD: 36
-#>               DIC: 8847.4
+#> DIC: 8847.3
(pso_dic_RE <- dic(pso_fit_RE))
-
#> Residual deviance: 8800.1 (on 12387 data points)
+
#> Residual deviance: 8799.8 (on 12387 data points)
 #>                pD: 42.3
-#>               DIC: 8842.4
+#> DIC: 8842.1

The DIC is lower for the RE model, indicating that there may be residual heterogeneity in the network and that the conditional constancy of relative effects assumption may be invalid—there may be additional @@ -1745,89 +1742,89 @@

Assessing residual inconsistency with an unrelated mean effects #> Regression model: ~(durnpso + prevsys + bsa + weight + psa) * .trt. #> Centred covariates at the following overall mean values: #> durnpso prevsys bsa weight psa -#> 1.8159830 0.6576489 0.2987820 8.9097263 0.2104826 +#> 1.7947485 0.6504375 0.2973544 8.9165934 0.2074278 #> Inference for Stan model: ordered_multinomial. #> 4 chains, each with iter=2000; warmup=1000; thin=1; #> post-warmup draws per chain=1000, total post-warmup draws=4000. #> #> mean se_mean sd 2.5% 25% 50% 75% -#> beta[durnpso] 0.03 0.00 0.06 -0.09 -0.01 0.03 0.07 -#> beta[prevsys] -0.17 0.00 0.16 -0.47 -0.27 -0.17 -0.06 -#> beta[bsa] -0.09 0.01 0.44 -0.98 -0.38 -0.08 0.21 -#> beta[weight] 0.04 0.00 0.03 -0.01 0.02 0.04 0.06 -#> beta[psa] -0.08 0.00 0.17 -0.42 -0.20 -0.08 0.03 -#> beta[durnpso:.trtclassTNFa blocker] -0.02 0.00 0.07 -0.16 -0.07 -0.02 0.03 -#> beta[durnpso:.trtclassIL-12/23 blocker] -0.06 0.00 0.10 -0.26 -0.13 -0.06 0.01 -#> beta[durnpso:.trtclassIL-17 blocker] -0.02 0.00 0.06 -0.14 -0.06 -0.02 0.02 -#> beta[prevsys:.trtclassTNFa blocker] 0.19 0.00 0.18 -0.16 0.07 0.19 0.31 -#> beta[prevsys:.trtclassIL-12/23 blocker] 0.45 0.01 0.35 -0.24 0.21 0.46 0.70 -#> beta[prevsys:.trtclassIL-17 blocker] 0.16 0.00 0.16 -0.16 0.05 0.16 0.27 -#> beta[bsa:.trtclassTNFa blocker] 0.22 0.01 0.50 -0.76 -0.12 0.20 0.56 -#> beta[bsa:.trtclassIL-12/23 blocker] 0.59 0.01 0.67 -0.72 0.13 0.60 1.05 -#> beta[bsa:.trtclassIL-17 blocker] 0.26 0.01 0.46 -0.64 -0.05 0.25 0.56 -#> beta[weight:.trtclassTNFa blocker] -0.16 0.00 0.03 -0.23 -0.18 -0.16 -0.14 +#> beta[durnpso] 0.04 0.00 0.06 -0.08 0.00 0.04 0.08 +#> beta[prevsys] -0.18 0.00 0.16 -0.48 -0.28 -0.18 -0.07 +#> beta[bsa] -0.10 0.01 0.44 -0.99 -0.38 -0.09 0.20 +#> beta[weight] 0.04 0.00 0.03 -0.01 0.03 0.04 0.06 +#> beta[psa] -0.08 0.00 0.16 -0.40 -0.19 -0.08 0.03 +#> beta[durnpso:.trtclassTNFa blocker] -0.02 0.00 0.07 -0.16 -0.07 -0.02 0.02 +#> beta[durnpso:.trtclassIL-12/23 blocker] -0.06 0.00 0.10 -0.26 -0.13 -0.07 0.00 +#> beta[durnpso:.trtclassIL-17 blocker] -0.02 0.00 0.06 -0.14 -0.07 -0.02 0.02 +#> beta[prevsys:.trtclassTNFa blocker] 0.20 0.00 0.18 -0.15 0.09 0.20 0.33 +#> beta[prevsys:.trtclassIL-12/23 blocker] 0.45 0.01 0.35 -0.28 0.23 0.47 0.70 +#> beta[prevsys:.trtclassIL-17 blocker] 0.17 0.00 0.16 -0.15 0.06 0.18 0.29 +#> beta[bsa:.trtclassTNFa blocker] 0.24 0.01 0.50 -0.74 -0.10 0.23 0.58 +#> beta[bsa:.trtclassIL-12/23 blocker] 0.60 0.01 0.66 -0.71 0.17 0.60 1.04 +#> beta[bsa:.trtclassIL-17 blocker] 0.27 0.01 0.46 -0.61 -0.05 0.26 0.57 +#> beta[weight:.trtclassTNFa blocker] -0.16 0.00 0.03 -0.23 -0.19 -0.16 -0.14 #> beta[weight:.trtclassIL-12/23 blocker] -0.09 0.00 0.05 -0.18 -0.12 -0.09 -0.06 #> beta[weight:.trtclassIL-17 blocker] -0.13 0.00 0.03 -0.19 -0.15 -0.13 -0.11 -#> beta[psa:.trtclassTNFa blocker] -0.05 0.00 0.20 -0.44 -0.18 -0.05 0.09 -#> beta[psa:.trtclassIL-12/23 blocker] 0.12 0.01 0.35 -0.54 -0.12 0.12 0.36 -#> beta[psa:.trtclassIL-17 blocker] 0.10 0.00 0.18 -0.26 -0.03 0.09 0.22 +#> beta[psa:.trtclassTNFa blocker] -0.05 0.00 0.19 -0.44 -0.18 -0.05 0.08 +#> beta[psa:.trtclassIL-12/23 blocker] 0.12 0.00 0.34 -0.53 -0.11 0.13 0.36 +#> beta[psa:.trtclassIL-17 blocker] 0.10 0.00 0.17 -0.24 -0.02 0.10 0.21 #> d[ETN vs. PBO] 1.58 0.00 0.07 1.44 1.53 1.58 1.63 #> d[IXE_Q2W vs. PBO] 2.91 0.00 0.07 2.77 2.86 2.91 2.96 -#> d[IXE_Q4W vs. PBO] 2.69 0.00 0.07 2.54 2.64 2.69 2.74 -#> d[SEC_150 vs. PBO] 2.19 0.00 0.08 2.02 2.13 2.19 2.25 -#> d[SEC_300 vs. PBO] 2.60 0.00 0.08 2.44 2.54 2.60 2.65 -#> d[UST vs. IXE_Q2W] -0.78 0.00 0.16 -1.09 -0.89 -0.78 -0.68 -#> d[UST vs. SEC_300] -0.47 0.00 0.09 -0.65 -0.53 -0.47 -0.41 -#> lp__ -7640.40 0.10 4.39 -7650.22 -7643.16 -7639.97 -7637.34 +#> d[IXE_Q4W vs. PBO] 2.69 0.00 0.07 2.55 2.64 2.69 2.74 +#> d[SEC_150 vs. PBO] 2.19 0.00 0.08 2.03 2.14 2.19 2.25 +#> d[SEC_300 vs. PBO] 2.60 0.00 0.08 2.43 2.54 2.60 2.66 +#> d[UST vs. IXE_Q2W] -0.79 0.00 0.16 -1.10 -0.90 -0.79 -0.68 +#> d[UST vs. SEC_300] -0.47 0.00 0.09 -0.65 -0.53 -0.47 -0.40 +#> lp__ -7756.43 0.11 4.32 -7765.88 -7759.08 -7756.13 -7753.33 #> cc[PASI75] 0.00 NaN 0.00 0.00 0.00 0.00 0.00 -#> cc[PASI90] 0.69 0.00 0.02 0.65 0.68 0.69 0.70 -#> cc[PASI100] 1.53 0.00 0.02 1.49 1.52 1.53 1.55 +#> cc[PASI90] 0.69 0.00 0.02 0.65 0.67 0.69 0.70 +#> cc[PASI100] 1.53 0.00 0.02 1.48 1.52 1.53 1.55 #> 97.5% n_eff Rhat -#> beta[durnpso] 0.15 2591 1 -#> beta[prevsys] 0.14 2698 1 -#> beta[bsa] 0.74 2778 1 -#> beta[weight] 0.10 2854 1 -#> beta[psa] 0.25 2997 1 -#> beta[durnpso:.trtclassTNFa blocker] 0.12 2850 1 -#> beta[durnpso:.trtclassIL-12/23 blocker] 0.13 3732 1 -#> beta[durnpso:.trtclassIL-17 blocker] 0.11 3146 1 -#> beta[prevsys:.trtclassTNFa blocker] 0.54 2803 1 -#> beta[prevsys:.trtclassIL-12/23 blocker] 1.09 4034 1 -#> beta[prevsys:.trtclassIL-17 blocker] 0.48 3191 1 -#> beta[bsa:.trtclassTNFa blocker] 1.20 2846 1 -#> beta[bsa:.trtclassIL-12/23 blocker] 1.91 3889 1 -#> beta[bsa:.trtclassIL-17 blocker] 1.19 3282 1 -#> beta[weight:.trtclassTNFa blocker] -0.09 3169 1 -#> beta[weight:.trtclassIL-12/23 blocker] 0.00 4218 1 -#> beta[weight:.trtclassIL-17 blocker] -0.07 3421 1 -#> beta[psa:.trtclassTNFa blocker] 0.35 3036 1 -#> beta[psa:.trtclassIL-12/23 blocker] 0.81 4680 1 -#> beta[psa:.trtclassIL-17 blocker] 0.45 3454 1 -#> d[ETN vs. PBO] 1.73 2815 1 -#> d[IXE_Q2W vs. PBO] 3.05 2892 1 -#> d[IXE_Q4W vs. PBO] 2.84 3286 1 -#> d[SEC_150 vs. PBO] 2.36 2992 1 -#> d[SEC_300 vs. PBO] 2.76 3203 1 -#> d[UST vs. IXE_Q2W] -0.47 4990 1 -#> d[UST vs. SEC_300] -0.29 6387 1 -#> lp__ -7633.00 1771 1 +#> beta[durnpso] 0.15 3284 1 +#> beta[prevsys] 0.12 3119 1 +#> beta[bsa] 0.74 3357 1 +#> beta[weight] 0.10 3195 1 +#> beta[psa] 0.25 3296 1 +#> beta[durnpso:.trtclassTNFa blocker] 0.11 3451 1 +#> beta[durnpso:.trtclassIL-12/23 blocker] 0.14 4341 1 +#> beta[durnpso:.trtclassIL-17 blocker] 0.10 3853 1 +#> beta[prevsys:.trtclassTNFa blocker] 0.55 3201 1 +#> beta[prevsys:.trtclassIL-12/23 blocker] 1.08 4743 1 +#> beta[prevsys:.trtclassIL-17 blocker] 0.48 3578 1 +#> beta[bsa:.trtclassTNFa blocker] 1.23 3593 1 +#> beta[bsa:.trtclassIL-12/23 blocker] 1.85 4364 1 +#> beta[bsa:.trtclassIL-17 blocker] 1.20 3941 1 +#> beta[weight:.trtclassTNFa blocker] -0.09 3555 1 +#> beta[weight:.trtclassIL-12/23 blocker] 0.00 4746 1 +#> beta[weight:.trtclassIL-17 blocker] -0.07 3758 1 +#> beta[psa:.trtclassTNFa blocker] 0.32 3727 1 +#> beta[psa:.trtclassIL-12/23 blocker] 0.77 4746 1 +#> beta[psa:.trtclassIL-17 blocker] 0.45 3793 1 +#> d[ETN vs. PBO] 1.73 2605 1 +#> d[IXE_Q2W vs. PBO] 3.05 2642 1 +#> d[IXE_Q4W vs. PBO] 2.84 2998 1 +#> d[SEC_150 vs. PBO] 2.36 2650 1 +#> d[SEC_300 vs. PBO] 2.77 2861 1 +#> d[UST vs. IXE_Q2W] -0.47 5596 1 +#> d[UST vs. SEC_300] -0.29 6888 1 +#> lp__ -7749.04 1498 1 #> cc[PASI75] 0.00 NaN NaN -#> cc[PASI90] 0.72 3712 1 -#> cc[PASI100] 1.58 3257 1 +#> cc[PASI90] 0.72 3023 1 +#> cc[PASI100] 1.58 3164 1 #> -#> Samples were drawn using NUTS(diag_e) at Sun Aug 28 14:26:48 2022. +#> Samples were drawn using NUTS(diag_e) at Tue Jan 9 12:47:42 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).

We compare model fit to the FE ML-NMR model using the DIC.

pso_dic_FE
-
#> Residual deviance: 8811.4 (on 12387 data points)
+
#> Residual deviance: 8811.2 (on 12387 data points)
 #>                pD: 36
-#>               DIC: 8847.4
+#> DIC: 8847.3
(pso_dic_UME <- dic(pso_fit_UME))
-
#> Residual deviance: 8811.7 (on 12387 data points)
-#>                pD: 36.3
-#>               DIC: 8848
+
#> Residual deviance: 8811.8 (on 12387 data points)
+#>                pD: 36.5
+#>               DIC: 8848.4

The DIC values are similar between the FE model (assuming consistency) and the UME (inconsistency) model, which suggests no evidence for inconsistency overall. It is also important to compare the @@ -1839,7 +1836,7 @@

Assessing residual inconsistency with an unrelated mean effects
plot(pso_dic_FE, pso_dic_UME, show_uncertainty = FALSE) +
   xlab("Residual deviance - consistency model") +
   ylab("Residual deviance - inconsistency (UME) model")
-

plot of chunk pso-full-dev-dev

+

plot of chunk pso-full-dev-dev

All points lie on the line of equality, so there is no evidence of inconsistency. If random effects models had been fitted then the heterogeneity estimates should also be compared as a drop in @@ -1937,34 +1934,34 @@

Relaxing the shared effect modifier assumption

#> Note: Setting "PBO" as the network reference treatment.

Comparing model fit using the DIC

pso_dic_FE
-
#> Residual deviance: 8811.4 (on 12387 data points)
+
#> Residual deviance: 8811.2 (on 12387 data points)
 #>                pD: 36
-#>               DIC: 8847.4
+#> DIC: 8847.3
lapply(noSEM_fits, dic)
#> $durnpso
-#> Residual deviance: 8812.5 (on 12387 data points)
+#> Residual deviance: 8812.4 (on 12387 data points)
 #>                pD: 37.7
-#>               DIC: 8850.3
+#>               DIC: 8850.1
 #> 
 #> $prevsys
-#> Residual deviance: 8813.4 (on 12387 data points)
-#>                pD: 37.8
-#>               DIC: 8851.2
+#> Residual deviance: 8813 (on 12387 data points)
+#>                pD: 37.6
+#>               DIC: 8850.6
 #> 
 #> $bsa
-#> Residual deviance: 8813 (on 12387 data points)
-#>                pD: 37.8
-#>               DIC: 8850.8
+#> Residual deviance: 8812.8 (on 12387 data points)
+#>                pD: 37.7
+#>               DIC: 8850.6
 #> 
 #> $weight
-#> Residual deviance: 8807.5 (on 12387 data points)
-#>                pD: 37.9
-#>               DIC: 8845.4
+#> Residual deviance: 8807.3 (on 12387 data points)
+#>                pD: 38
+#>               DIC: 8845.3
 #> 
 #> $psa
-#> Residual deviance: 8812.2 (on 12387 data points)
-#>                pD: 37.8
-#>               DIC: 8850
+#> Residual deviance: 8812 (on 12387 data points) +#> pD: 38.5 +#> DIC: 8850.5

All of the models have similar or higher DIC to the original model making the shared effect modifier assumption for all covariates, with the only exception being the model with independent interactions for @@ -2020,7 +2017,7 @@

Relaxing the shared effect modifier assumption

aesthetics = c("colour", "fill")) + theme_multinma() + theme(legend.position = c(0.85, 0.2)) -

plot of chunk pso-full-relaxing-SEM

+

plot of chunk pso-full-relaxing-SEM

The independent interaction estimates are very similar to the common interaction estimates, but with much more uncertainty—particularly for the secukinumab regimens which are estimated only from aggregate data. @@ -2048,20 +2045,369 @@

Study populations included in the network

study populations represented in the network using the relative_effects() function.

(pso_releff_FE <- relative_effects(pso_fit_FE))
+
#> ------------------------------------------------------------------ Study: CLEAR ---- 
+#> 
+#> Covariate values:
+#>  durnpso prevsys  bsa weight  psa
+#>     1.73    0.66 0.32   8.74 0.16
+#> 
+#>                   mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> d[CLEAR: ETN]     1.62 0.08 1.47 1.57 1.62 1.67  1.77     2191     2895    1
+#> d[CLEAR: IXE_Q2W] 2.94 0.08 2.78 2.89 2.94 2.99  3.10     2745     2706    1
+#> d[CLEAR: IXE_Q4W] 2.72 0.08 2.57 2.67 2.72 2.78  2.88     2975     2682    1
+#> d[CLEAR: SEC_150] 2.22 0.09 2.05 2.16 2.22 2.28  2.39     2365     2528    1
+#> d[CLEAR: SEC_300] 2.63 0.08 2.46 2.57 2.63 2.68  2.80     2411     2959    1
+#> d[CLEAR: UST]     2.17 0.11 1.95 2.09 2.16 2.24  2.38     3207     2921    1
+#> 
+#> ---------------------------------------------------------------- Study: ERASURE ---- 
+#> 
+#> Covariate values:
+#>  durnpso prevsys  bsa weight  psa
+#>     1.69    0.61 0.32   8.86 0.23
+#> 
+#>                     mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> d[ERASURE: ETN]     1.59 0.07 1.44 1.54 1.59 1.64  1.73     2244     2968    1
+#> d[ERASURE: IXE_Q2W] 2.92 0.08 2.77 2.87 2.92 2.97  3.08     2777     2821    1
+#> d[ERASURE: IXE_Q4W] 2.70 0.08 2.56 2.65 2.70 2.75  2.86     3019     2884    1
+#> d[ERASURE: SEC_150] 2.20 0.08 2.04 2.14 2.20 2.26  2.37     2411     2749    1
+#> d[ERASURE: SEC_300] 2.61 0.08 2.45 2.55 2.61 2.66  2.77     2508     2891    1
+#> d[ERASURE: UST]     2.14 0.12 1.91 2.06 2.14 2.22  2.37     3493     3081    1
+#> 
+#> ---------------------------------------------------------------- Study: FEATURE ---- 
+#> 
+#> Covariate values:
+#>  durnpso prevsys  bsa weight  psa
+#>      1.9    0.67 0.32   9.17 0.15
+#> 
+#>                     mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> d[FEATURE: ETN]     1.55 0.07 1.41 1.50 1.55 1.60  1.70     2253     3017    1
+#> d[FEATURE: IXE_Q2W] 2.88 0.08 2.73 2.83 2.88 2.93  3.04     2881     2641    1
+#> d[FEATURE: IXE_Q4W] 2.66 0.08 2.51 2.61 2.66 2.71  2.82     3121     3016    1
+#> d[FEATURE: SEC_150] 2.16 0.08 2.00 2.10 2.16 2.22  2.33     2421     2566    1
+#> d[FEATURE: SEC_300] 2.57 0.08 2.41 2.51 2.57 2.62  2.73     2530     2830    1
+#> d[FEATURE: UST]     2.12 0.11 1.90 2.05 2.12 2.19  2.34     3432     3215    1
+#> 
+#> ---------------------------------------------------------------- Study: FIXTURE ---- 
+#> 
+#> Covariate values:
+#>  durnpso prevsys  bsa weight  psa
+#>      1.6    0.62 0.34   8.34 0.14
+#> 
+#>                     mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> d[FIXTURE: ETN]     1.69 0.08 1.53 1.63 1.68 1.74  1.85     2382     2730    1
+#> d[FIXTURE: IXE_Q2W] 2.99 0.09 2.82 2.93 2.99 3.05  3.17     2834     2794    1
+#> d[FIXTURE: IXE_Q4W] 2.77 0.09 2.61 2.72 2.77 2.83  2.95     3045     2875    1
+#> d[FIXTURE: SEC_150] 2.27 0.09 2.10 2.21 2.27 2.33  2.45     2406     2615    1
+#> d[FIXTURE: SEC_300] 2.68 0.09 2.51 2.62 2.68 2.74  2.86     2408     2992    1
+#> d[FIXTURE: UST]     2.20 0.12 1.97 2.12 2.20 2.28  2.43     3246     3097    1
+#> 
+#> ---------------------------------------------------------------- Study: IXORA-S ---- 
+#> 
+#> Covariate values:
+#>  durnpso prevsys  bsa weight  psa
+#>     1.67    0.92 0.32   8.78 0.13
+#> 
+#>                     mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> d[IXORA-S: ETN]     1.67 0.10 1.48 1.60 1.67 1.73  1.86     2140     2711    1
+#> d[IXORA-S: IXE_Q2W] 2.98 0.10 2.79 2.91 2.97 3.04  3.17     2546     2835    1
+#> d[IXORA-S: IXE_Q4W] 2.76 0.10 2.57 2.69 2.76 2.82  2.96     2763     2864    1
+#> d[IXORA-S: SEC_150] 2.25 0.10 2.05 2.18 2.25 2.33  2.46     2373     3009    1
+#> d[IXORA-S: SEC_300] 2.66 0.10 2.47 2.59 2.66 2.73  2.87     2418     3124    1
+#> d[IXORA-S: UST]     2.28 0.13 2.04 2.19 2.27 2.36  2.53     2946     2530    1
+#> 
+#> --------------------------------------------------------------- Study: JUNCTURE ---- 
+#> 
+#> Covariate values:
+#>  durnpso prevsys  bsa weight  psa
+#>     1.99    0.55 0.27   9.17 0.23
+#> 
+#>                      mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> d[JUNCTURE: ETN]     1.51 0.07 1.37 1.46 1.51 1.56  1.65     2419     3021    1
+#> d[JUNCTURE: IXE_Q2W] 2.85 0.07 2.71 2.80 2.85 2.90  3.00     3004     2766    1
+#> d[JUNCTURE: IXE_Q4W] 2.63 0.07 2.49 2.59 2.63 2.68  2.78     3295     3225    1
+#> d[JUNCTURE: SEC_150] 2.13 0.08 1.97 2.07 2.13 2.18  2.30     2559     2584    1
+#> d[JUNCTURE: SEC_300] 2.54 0.08 2.38 2.48 2.54 2.59  2.70     2737     2431    1
+#> d[JUNCTURE: UST]     2.04 0.13 1.78 1.94 2.03 2.12  2.31     3874     3205    1
+#> 
+#> -------------------------------------------------------------- Study: UNCOVER-1 ---- 
+#> 
+#> Covariate values:
+#>  durnpso prevsys  bsa weight  psa
+#>        2    0.73 0.28   9.24 0.28
+#> 
+#>                       mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> d[UNCOVER-1: ETN]     1.53 0.08 1.38 1.48 1.53 1.58  1.68     2019     2694    1
+#> d[UNCOVER-1: IXE_Q2W] 2.88 0.08 2.74 2.83 2.88 2.93  3.03     2590     2963    1
+#> d[UNCOVER-1: IXE_Q4W] 2.66 0.08 2.51 2.61 2.66 2.71  2.81     2771     2664    1
+#> d[UNCOVER-1: SEC_150] 2.16 0.09 1.99 2.10 2.16 2.22  2.33     2325     2735    1
+#> d[UNCOVER-1: SEC_300] 2.57 0.09 2.40 2.51 2.57 2.63  2.74     2452     2753    1
+#> d[UNCOVER-1: UST]     2.12 0.12 1.88 2.04 2.12 2.20  2.36     3351     3318    1
+#> 
+#> -------------------------------------------------------------- Study: UNCOVER-2 ---- 
+#> 
+#> Covariate values:
+#>  durnpso prevsys  bsa weight  psa
+#>     1.87    0.64 0.27   9.17 0.24
+#> 
+#>                       mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> d[UNCOVER-2: ETN]     1.53 0.07 1.39 1.48 1.53 1.58  1.67     2151     2749    1
+#> d[UNCOVER-2: IXE_Q2W] 2.87 0.07 2.73 2.82 2.87 2.92  3.01     2708     2688    1
+#> d[UNCOVER-2: IXE_Q4W] 2.65 0.07 2.51 2.60 2.65 2.70  2.79     2977     2739    1
+#> d[UNCOVER-2: SEC_150] 2.15 0.08 1.99 2.09 2.15 2.20  2.31     2451     2480    1
+#> d[UNCOVER-2: SEC_300] 2.56 0.08 2.40 2.50 2.56 2.61  2.72     2566     2563    1
+#> d[UNCOVER-2: UST]     2.08 0.12 1.85 2.00 2.08 2.17  2.33     3490     3316    1
+#> 
+#> -------------------------------------------------------------- Study: UNCOVER-3 ---- 
+#> 
+#> Covariate values:
+#>  durnpso prevsys  bsa weight psa
+#>     1.78    0.59 0.28   9.01 0.2
+#> 
+#>                       mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> d[UNCOVER-3: ETN]     1.55 0.07 1.41 1.50 1.55 1.60  1.69     2315     2954    1
+#> d[UNCOVER-3: IXE_Q2W] 2.88 0.07 2.74 2.83 2.88 2.93  3.03     2846     2790    1
+#> d[UNCOVER-3: IXE_Q4W] 2.67 0.07 2.52 2.62 2.67 2.72  2.81     3132     2866    1
+#> d[UNCOVER-3: SEC_150] 2.16 0.08 2.01 2.11 2.16 2.22  2.32     2481     2445    1
+#> d[UNCOVER-3: SEC_300] 2.57 0.08 2.41 2.52 2.57 2.62  2.73     2603     2581    1
+#> d[UNCOVER-3: UST]     2.08 0.12 1.85 2.00 2.08 2.16  2.33     3588     3148    1

These relative effects can then be plotted using the plot() function.

-
plot(pso_releff_FE, ref_line = 0)
-

plot of chunk pso-full-releff

+
plot(pso_releff_FE, ref_line = 0)
+

plot of chunk pso-full-releff

Similarly, average response probabilities on each treatment, in each study population, at each PASI cutoff can be produced using the predict() function. We specify type = "response" to produce predicted probabilities (rather than probit-probabilities).

-
(pso_pred_FE <- predict(pso_fit_FE, type = "response"))
+
(pso_pred_FE <- predict(pso_fit_FE, type = "response"))
+
#> ------------------------------------------------------------------ Study: CLEAR ---- 
+#> 
+#>                               mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> pred[CLEAR: PBO, PASI75]      0.09 0.02 0.07 0.08 0.09 0.10  0.13     3226     2898    1
+#> pred[CLEAR: PBO, PASI90]      0.02 0.01 0.01 0.02 0.02 0.03  0.04     3516     3005    1
+#> pred[CLEAR: PBO, PASI100]     0.00 0.00 0.00 0.00 0.00 0.00  0.00     3935     2940    1
+#> pred[CLEAR: ETN, PASI75]      0.61 0.03 0.54 0.58 0.61 0.63  0.67     6487     2944    1
+#> pred[CLEAR: ETN, PASI90]      0.35 0.03 0.29 0.32 0.35 0.37  0.41     6826     2581    1
+#> pred[CLEAR: ETN, PASI100]     0.11 0.02 0.08 0.10 0.11 0.12  0.15     7281     2823    1
+#> pred[CLEAR: IXE_Q2W, PASI75]  0.94 0.01 0.92 0.93 0.94 0.95  0.96     5425     3102    1
+#> pred[CLEAR: IXE_Q2W, PASI90]  0.81 0.02 0.76 0.80 0.81 0.83  0.86     5686     3102    1
+#> pred[CLEAR: IXE_Q2W, PASI100] 0.52 0.04 0.45 0.50 0.52 0.55  0.60     6050     3334    1
+#> pred[CLEAR: IXE_Q4W, PASI75]  0.91 0.02 0.88 0.90 0.91 0.92  0.94     5650     3038    1
+#> pred[CLEAR: IXE_Q4W, PASI90]  0.75 0.03 0.69 0.73 0.75 0.77  0.81     5883     2991    1
+#> pred[CLEAR: IXE_Q4W, PASI100] 0.44 0.04 0.37 0.41 0.44 0.46  0.51     6236     2898    1
+#> pred[CLEAR: SEC_150, PASI75]  0.80 0.02 0.76 0.79 0.80 0.82  0.85     6974     3030    1
+#> pred[CLEAR: SEC_150, PASI90]  0.57 0.03 0.51 0.55 0.57 0.59  0.63     7522     2931    1
+#> pred[CLEAR: SEC_150, PASI100] 0.26 0.03 0.21 0.24 0.26 0.28  0.31     7795     3102    1
+#> pred[CLEAR: SEC_300, PASI75]  0.90 0.01 0.87 0.89 0.90 0.90  0.92     7070     3340    1
+#> pred[CLEAR: SEC_300, PASI90]  0.72 0.02 0.68 0.71 0.72 0.73  0.76     8084     3407    1
+#> pred[CLEAR: SEC_300, PASI100] 0.40 0.02 0.36 0.39 0.40 0.42  0.45     9002     3557    1
+#> pred[CLEAR: UST, PASI75]      0.78 0.02 0.75 0.77 0.78 0.80  0.82     6525     3460    1
+#> pred[CLEAR: UST, PASI90]      0.55 0.02 0.51 0.54 0.55 0.57  0.59     7217     2959    1
+#> pred[CLEAR: UST, PASI100]     0.25 0.02 0.21 0.23 0.25 0.26  0.28     6991     3323    1
+#> 
+#> ---------------------------------------------------------------- Study: ERASURE ---- 
+#> 
+#>                                 mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> pred[ERASURE: PBO, PASI75]      0.05 0.01 0.03 0.04 0.05 0.05  0.06     2649     2638    1
+#> pred[ERASURE: PBO, PASI90]      0.01 0.00 0.01 0.01 0.01 0.01  0.01     2816     2731    1
+#> pred[ERASURE: PBO, PASI100]     0.00 0.00 0.00 0.00 0.00 0.00  0.00     3172     2552    1
+#> pred[ERASURE: ETN, PASI75]      0.45 0.03 0.40 0.43 0.45 0.47  0.51     5025     2755    1
+#> pred[ERASURE: ETN, PASI90]      0.22 0.02 0.18 0.20 0.22 0.23  0.27     4758     3003    1
+#> pred[ERASURE: ETN, PASI100]     0.06 0.01 0.04 0.05 0.06 0.06  0.08     5151     3063    1
+#> pred[ERASURE: IXE_Q2W, PASI75]  0.88 0.02 0.85 0.87 0.88 0.89  0.91     4393     3184    1
+#> pred[ERASURE: IXE_Q2W, PASI90]  0.70 0.03 0.64 0.68 0.70 0.72  0.75     4403     3212    1
+#> pred[ERASURE: IXE_Q2W, PASI100] 0.38 0.03 0.32 0.36 0.38 0.40  0.44     4520     3034    1
+#> pred[ERASURE: IXE_Q4W, PASI75]  0.83 0.02 0.79 0.82 0.84 0.85  0.87     4583     3113    1
+#> pred[ERASURE: IXE_Q4W, PASI90]  0.62 0.03 0.55 0.60 0.62 0.64  0.68     4622     3175    1
+#> pred[ERASURE: IXE_Q4W, PASI100] 0.30 0.03 0.24 0.28 0.30 0.32  0.36     4734     3180    1
+#> pred[ERASURE: SEC_150, PASI75]  0.68 0.02 0.65 0.67 0.69 0.70  0.72     6563     2962    1
+#> pred[ERASURE: SEC_150, PASI90]  0.42 0.02 0.38 0.41 0.42 0.44  0.47     7123     3203    1
+#> pred[ERASURE: SEC_150, PASI100] 0.15 0.01 0.13 0.14 0.15 0.16  0.18     6746     3046    1
+#> pred[ERASURE: SEC_300, PASI75]  0.81 0.02 0.78 0.80 0.81 0.82  0.84     5243     2986    1
+#> pred[ERASURE: SEC_300, PASI90]  0.58 0.02 0.54 0.57 0.58 0.60  0.62     5377     2999    1
+#> pred[ERASURE: SEC_300, PASI100] 0.27 0.02 0.23 0.25 0.27 0.28  0.31     5602     2968    1
+#> pred[ERASURE: UST, PASI75]      0.66 0.04 0.58 0.63 0.66 0.68  0.73     7153     2959    1
+#> pred[ERASURE: UST, PASI90]      0.40 0.04 0.33 0.38 0.40 0.43  0.48     6931     3035    1
+#> pred[ERASURE: UST, PASI100]     0.15 0.02 0.11 0.13 0.15 0.16  0.20     6275     3460    1
+#> 
+#> ---------------------------------------------------------------- Study: FEATURE ---- 
+#> 
+#>                                 mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> pred[FEATURE: PBO, PASI75]      0.05 0.01 0.03 0.04 0.05 0.06  0.08     3528     3111    1
+#> pred[FEATURE: PBO, PASI90]      0.01 0.00 0.01 0.01 0.01 0.01  0.02     3573     2996    1
+#> pred[FEATURE: PBO, PASI100]     0.00 0.00 0.00 0.00 0.00 0.00  0.00     3744     3288    1
+#> pred[FEATURE: ETN, PASI75]      0.45 0.04 0.37 0.42 0.45 0.48  0.54     4758     2641    1
+#> pred[FEATURE: ETN, PASI90]      0.22 0.03 0.16 0.20 0.22 0.24  0.29     4716     2394    1
+#> pred[FEATURE: ETN, PASI100]     0.06 0.01 0.04 0.05 0.06 0.06  0.08     4908     2778    1
+#> pred[FEATURE: IXE_Q2W, PASI75]  0.88 0.02 0.83 0.86 0.88 0.90  0.92     4349     2947    1
+#> pred[FEATURE: IXE_Q2W, PASI90]  0.69 0.04 0.61 0.67 0.69 0.72  0.77     4378     2871    1
+#> pred[FEATURE: IXE_Q2W, PASI100] 0.38 0.04 0.29 0.34 0.37 0.41  0.47     4556     2931    1
+#> pred[FEATURE: IXE_Q4W, PASI75]  0.83 0.03 0.77 0.81 0.83 0.85  0.89     4688     3086    1
+#> pred[FEATURE: IXE_Q4W, PASI90]  0.62 0.05 0.53 0.59 0.62 0.65  0.70     4720     3044    1
+#> pred[FEATURE: IXE_Q4W, PASI100] 0.30 0.04 0.22 0.27 0.30 0.33  0.38     4944     3268    1
+#> pred[FEATURE: SEC_150, PASI75]  0.68 0.03 0.61 0.66 0.68 0.71  0.75     5407     3219    1
+#> pred[FEATURE: SEC_150, PASI90]  0.42 0.04 0.35 0.40 0.42 0.45  0.50     5530     3094    1
+#> pred[FEATURE: SEC_150, PASI100] 0.15 0.02 0.11 0.14 0.15 0.17  0.20     5714     3379    1
+#> pred[FEATURE: SEC_300, PASI75]  0.81 0.03 0.75 0.79 0.81 0.83  0.86     5144     2976    1
+#> pred[FEATURE: SEC_300, PASI90]  0.58 0.04 0.51 0.55 0.58 0.61  0.65     5230     2987    1
+#> pred[FEATURE: SEC_300, PASI100] 0.27 0.03 0.21 0.24 0.27 0.29  0.33     5420     3102    1
+#> pred[FEATURE: UST, PASI75]      0.66 0.04 0.58 0.63 0.66 0.70  0.75     6147     3316    1
+#> pred[FEATURE: UST, PASI90]      0.41 0.05 0.32 0.38 0.41 0.44  0.50     5953     3395    1
+#> pred[FEATURE: UST, PASI100]     0.15 0.03 0.10 0.13 0.15 0.17  0.21     5912     3341    1
+#> 
+#> ---------------------------------------------------------------- Study: FIXTURE ---- 
+#> 
+#>                                 mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> pred[FIXTURE: PBO, PASI75]      0.04 0.01 0.03 0.03 0.04 0.04  0.05     2405     2526    1
+#> pred[FIXTURE: PBO, PASI90]      0.01 0.00 0.00 0.01 0.01 0.01  0.01     2573     2779    1
+#> pred[FIXTURE: PBO, PASI100]     0.00 0.00 0.00 0.00 0.00 0.00  0.00     2939     2784    1
+#> pred[FIXTURE: ETN, PASI75]      0.44 0.02 0.40 0.43 0.44 0.46  0.49     5779     2950    1
+#> pred[FIXTURE: ETN, PASI90]      0.21 0.02 0.18 0.20 0.21 0.22  0.24     5838     3063    1
+#> pred[FIXTURE: ETN, PASI100]     0.05 0.01 0.04 0.05 0.05 0.06  0.07     6526     3466    1
+#> pred[FIXTURE: IXE_Q2W, PASI75]  0.87 0.02 0.84 0.86 0.87 0.88  0.90     4706     3270    1
+#> pred[FIXTURE: IXE_Q2W, PASI90]  0.68 0.03 0.63 0.66 0.68 0.70  0.73     4756     3306    1
+#> pred[FIXTURE: IXE_Q2W, PASI100] 0.36 0.03 0.31 0.34 0.36 0.37  0.41     5019     3429    1
+#> pred[FIXTURE: IXE_Q4W, PASI75]  0.82 0.02 0.78 0.81 0.82 0.84  0.86     4960     3445    1
+#> pred[FIXTURE: IXE_Q4W, PASI90]  0.60 0.03 0.54 0.58 0.60 0.62  0.65     5125     3367    1
+#> pred[FIXTURE: IXE_Q4W, PASI100] 0.28 0.03 0.23 0.26 0.28 0.30  0.33     5495     3586    1
+#> pred[FIXTURE: SEC_150, PASI75]  0.67 0.02 0.63 0.65 0.67 0.68  0.70     6709     2896    1
+#> pred[FIXTURE: SEC_150, PASI90]  0.40 0.02 0.36 0.39 0.40 0.42  0.44     7792     2801    1
+#> pred[FIXTURE: SEC_150, PASI100] 0.14 0.01 0.12 0.13 0.14 0.15  0.16     7645     2984    1
+#> pred[FIXTURE: SEC_300, PASI75]  0.80 0.01 0.77 0.79 0.80 0.81  0.82     7048     3072    1
+#> pred[FIXTURE: SEC_300, PASI90]  0.56 0.02 0.52 0.55 0.56 0.58  0.60     8080     2971    1
+#> pred[FIXTURE: SEC_300, PASI100] 0.25 0.02 0.22 0.24 0.25 0.26  0.28     8438     2901    1
+#> pred[FIXTURE: UST, PASI75]      0.64 0.03 0.57 0.61 0.64 0.66  0.70     8702     3157    1
+#> pred[FIXTURE: UST, PASI90]      0.38 0.03 0.31 0.36 0.38 0.40  0.45     8574     3069    1
+#> pred[FIXTURE: UST, PASI100]     0.13 0.02 0.10 0.12 0.13 0.14  0.17     7713     3267    1
+#> 
+#> ---------------------------------------------------------------- Study: IXORA-S ---- 
+#> 
+#>                                 mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> pred[IXORA-S: PBO, PASI75]      0.05 0.01 0.03 0.04 0.05 0.05  0.07     3061     3007    1
+#> pred[IXORA-S: PBO, PASI90]      0.01 0.00 0.00 0.01 0.01 0.01  0.02     3191     2842    1
+#> pred[IXORA-S: PBO, PASI100]     0.00 0.00 0.00 0.00 0.00 0.00  0.00     3332     3061    1
+#> pred[IXORA-S: ETN, PASI75]      0.48 0.04 0.41 0.46 0.48 0.51  0.56     5617     3325    1
+#> pred[IXORA-S: ETN, PASI90]      0.24 0.03 0.19 0.22 0.24 0.26  0.30     5603     3080    1
+#> pred[IXORA-S: ETN, PASI100]     0.06 0.01 0.04 0.06 0.06 0.07  0.09     5527     3041    1
+#> pred[IXORA-S: IXE_Q2W, PASI75]  0.89 0.02 0.86 0.88 0.89 0.90  0.92     5451     3254    1
+#> pred[IXORA-S: IXE_Q2W, PASI90]  0.71 0.03 0.65 0.69 0.71 0.73  0.77     5597     3197    1
+#> pred[IXORA-S: IXE_Q2W, PASI100] 0.40 0.03 0.33 0.37 0.40 0.42  0.46     5615     3013    1
+#> pred[IXORA-S: IXE_Q4W, PASI75]  0.85 0.02 0.80 0.83 0.85 0.86  0.89     5613     2964    1
+#> pred[IXORA-S: IXE_Q4W, PASI90]  0.64 0.04 0.57 0.61 0.64 0.66  0.70     5772     2967    1
+#> pred[IXORA-S: IXE_Q4W, PASI100] 0.32 0.03 0.25 0.29 0.32 0.34  0.39     5831     2973    1
+#> pred[IXORA-S: SEC_150, PASI75]  0.70 0.04 0.63 0.68 0.70 0.73  0.77     4994     3394    1
+#> pred[IXORA-S: SEC_150, PASI90]  0.44 0.04 0.36 0.42 0.44 0.47  0.53     5162     3501    1
+#> pred[IXORA-S: SEC_150, PASI100] 0.17 0.03 0.12 0.15 0.16 0.18  0.22     5044     3639    1
+#> pred[IXORA-S: SEC_300, PASI75]  0.82 0.03 0.77 0.81 0.82 0.84  0.87     5587     3690    1
+#> pred[IXORA-S: SEC_300, PASI90]  0.60 0.04 0.53 0.58 0.60 0.63  0.67     5773     3365    1
+#> pred[IXORA-S: SEC_300, PASI100] 0.28 0.03 0.22 0.26 0.28 0.31  0.35     5646     3690    1
+#> pred[IXORA-S: UST, PASI75]      0.71 0.03 0.65 0.69 0.71 0.73  0.76     5639     2992    1
+#> pred[IXORA-S: UST, PASI90]      0.45 0.03 0.39 0.43 0.45 0.47  0.51     5732     2939    1
+#> pred[IXORA-S: UST, PASI100]     0.17 0.02 0.13 0.16 0.17 0.19  0.22     5739     3114    1
+#> 
+#> --------------------------------------------------------------- Study: JUNCTURE ---- 
+#> 
+#>                                  mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> pred[JUNCTURE: PBO, PASI75]      0.06 0.01 0.03 0.05 0.05 0.06  0.08     4273     3268    1
+#> pred[JUNCTURE: PBO, PASI90]      0.01 0.00 0.01 0.01 0.01 0.01  0.02     4356     3124    1
+#> pred[JUNCTURE: PBO, PASI100]     0.00 0.00 0.00 0.00 0.00 0.00  0.00     4530     3119    1
+#> pred[JUNCTURE: ETN, PASI75]      0.45 0.04 0.37 0.42 0.45 0.48  0.54     5721     3097    1
+#> pred[JUNCTURE: ETN, PASI90]      0.22 0.03 0.16 0.20 0.22 0.24  0.29     5719     3291    1
+#> pred[JUNCTURE: ETN, PASI100]     0.06 0.01 0.03 0.05 0.06 0.06  0.09     5795     3200    1
+#> pred[JUNCTURE: IXE_Q2W, PASI75]  0.88 0.02 0.83 0.87 0.88 0.90  0.92     5095     3287    1
+#> pred[JUNCTURE: IXE_Q2W, PASI90]  0.70 0.04 0.61 0.67 0.70 0.72  0.77     5150     3371    1
+#> pred[JUNCTURE: IXE_Q2W, PASI100] 0.38 0.04 0.29 0.35 0.38 0.41  0.47     5350     3448    1
+#> pred[JUNCTURE: IXE_Q4W, PASI75]  0.83 0.03 0.77 0.81 0.84 0.85  0.88     5341     3326    1
+#> pred[JUNCTURE: IXE_Q4W, PASI90]  0.62 0.04 0.53 0.59 0.62 0.65  0.70     5399     3365    1
+#> pred[JUNCTURE: IXE_Q4W, PASI100] 0.30 0.04 0.22 0.27 0.30 0.33  0.39     5618     3134    1
+#> pred[JUNCTURE: SEC_150, PASI75]  0.68 0.03 0.61 0.66 0.68 0.71  0.75     5890     3193    1
+#> pred[JUNCTURE: SEC_150, PASI90]  0.42 0.04 0.35 0.40 0.42 0.45  0.50     6104     3324    1
+#> pred[JUNCTURE: SEC_150, PASI100] 0.16 0.02 0.11 0.14 0.15 0.17  0.20     6257     3386    1
+#> pred[JUNCTURE: SEC_300, PASI75]  0.81 0.03 0.75 0.79 0.81 0.83  0.86     6201     3114    1
+#> pred[JUNCTURE: SEC_300, PASI90]  0.58 0.04 0.51 0.56 0.58 0.61  0.65     6395     3145    1
+#> pred[JUNCTURE: SEC_300, PASI100] 0.27 0.03 0.21 0.25 0.27 0.29  0.33     6578     2844    1
+#> pred[JUNCTURE: UST, PASI75]      0.65 0.05 0.54 0.61 0.65 0.68  0.75     6638     3078    1
+#> pred[JUNCTURE: UST, PASI90]      0.39 0.05 0.29 0.36 0.39 0.43  0.50     6572     3031    1
+#> pred[JUNCTURE: UST, PASI100]     0.14 0.03 0.09 0.12 0.14 0.16  0.21     6285     3384    1
+#> 
+#> -------------------------------------------------------------- Study: UNCOVER-1 ---- 
+#> 
+#>                                   mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> pred[UNCOVER-1: PBO, PASI75]      0.06 0.01 0.04 0.05 0.06 0.06  0.07     2932     2882    1
+#> pred[UNCOVER-1: PBO, PASI90]      0.01 0.00 0.01 0.01 0.01 0.01  0.02     3181     2654    1
+#> pred[UNCOVER-1: PBO, PASI100]     0.00 0.00 0.00 0.00 0.00 0.00  0.00     3470     2886    1
+#> pred[UNCOVER-1: ETN, PASI75]      0.47 0.02 0.42 0.45 0.47 0.48  0.51     4589     2900    1
+#> pred[UNCOVER-1: ETN, PASI90]      0.23 0.02 0.20 0.22 0.23 0.24  0.26     4645     3166    1
+#> pred[UNCOVER-1: ETN, PASI100]     0.06 0.01 0.05 0.06 0.06 0.06  0.08     4571     2859    1
+#> pred[UNCOVER-1: IXE_Q2W, PASI75]  0.89 0.01 0.87 0.88 0.89 0.90  0.91     6322     3068    1
+#> pred[UNCOVER-1: IXE_Q2W, PASI90]  0.71 0.01 0.68 0.70 0.71 0.72  0.74     7204     3180    1
+#> pred[UNCOVER-1: IXE_Q2W, PASI100] 0.39 0.02 0.36 0.38 0.39 0.40  0.43     7586     3358    1
+#> pred[UNCOVER-1: IXE_Q4W, PASI75]  0.84 0.01 0.82 0.84 0.84 0.85  0.86     6326     3169    1
+#> pred[UNCOVER-1: IXE_Q4W, PASI90]  0.63 0.02 0.60 0.62 0.63 0.65  0.66     7231     3067    1
+#> pred[UNCOVER-1: IXE_Q4W, PASI100] 0.31 0.02 0.28 0.30 0.31 0.33  0.35     7674     3322    1
+#> pred[UNCOVER-1: SEC_150, PASI75]  0.70 0.03 0.64 0.68 0.70 0.72  0.75     4573     2962    1
+#> pred[UNCOVER-1: SEC_150, PASI90]  0.44 0.03 0.37 0.42 0.44 0.46  0.51     4631     3137    1
+#> pred[UNCOVER-1: SEC_150, PASI100] 0.17 0.02 0.13 0.15 0.16 0.18  0.21     4574     2811    1
+#> pred[UNCOVER-1: SEC_300, PASI75]  0.82 0.02 0.78 0.81 0.82 0.84  0.86     4833     3200    1
+#> pred[UNCOVER-1: SEC_300, PASI90]  0.60 0.03 0.54 0.58 0.60 0.62  0.66     4991     3389    1
+#> pred[UNCOVER-1: SEC_300, PASI100] 0.28 0.03 0.23 0.26 0.28 0.30  0.34     4873     3424    1
+#> pred[UNCOVER-1: UST, PASI75]      0.68 0.04 0.60 0.66 0.68 0.71  0.76     5260     3088    1
+#> pred[UNCOVER-1: UST, PASI90]      0.43 0.04 0.35 0.40 0.43 0.46  0.51     5378     3504    1
+#> pred[UNCOVER-1: UST, PASI100]     0.16 0.03 0.12 0.14 0.16 0.18  0.22     5219     3385    1
+#> 
+#> -------------------------------------------------------------- Study: UNCOVER-2 ---- 
+#> 
+#>                                   mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> pred[UNCOVER-2: PBO, PASI75]      0.05 0.01 0.04 0.05 0.05 0.06  0.06     3122     2522    1
+#> pred[UNCOVER-2: PBO, PASI90]      0.01 0.00 0.01 0.01 0.01 0.01  0.01     3356     2912    1
+#> pred[UNCOVER-2: PBO, PASI100]     0.00 0.00 0.00 0.00 0.00 0.00  0.00     3626     3266    1
+#> pred[UNCOVER-2: ETN, PASI75]      0.44 0.02 0.40 0.43 0.44 0.45  0.48     4685     3191    1
+#> pred[UNCOVER-2: ETN, PASI90]      0.21 0.01 0.18 0.20 0.21 0.22  0.24     5049     3053    1
+#> pred[UNCOVER-2: ETN, PASI100]     0.05 0.01 0.04 0.05 0.05 0.06  0.06     5048     3316    1
+#> pred[UNCOVER-2: IXE_Q2W, PASI75]  0.88 0.01 0.86 0.87 0.88 0.88  0.90     5035     2716    1
+#> pred[UNCOVER-2: IXE_Q2W, PASI90]  0.69 0.02 0.66 0.68 0.69 0.70  0.72     5739     2934    1
+#> pred[UNCOVER-2: IXE_Q2W, PASI100] 0.37 0.02 0.34 0.36 0.37 0.38  0.40     6147     3060    1
+#> pred[UNCOVER-2: IXE_Q4W, PASI75]  0.83 0.01 0.81 0.82 0.83 0.84  0.85     5474     2962    1
+#> pred[UNCOVER-2: IXE_Q4W, PASI90]  0.61 0.02 0.58 0.60 0.61 0.62  0.64     6371     3437    1
+#> pred[UNCOVER-2: IXE_Q4W, PASI100] 0.29 0.02 0.26 0.28 0.29 0.30  0.32     6973     3554    1
+#> pred[UNCOVER-2: SEC_150, PASI75]  0.68 0.03 0.61 0.66 0.68 0.70  0.73     5016     3385    1
+#> pred[UNCOVER-2: SEC_150, PASI90]  0.41 0.03 0.35 0.39 0.41 0.44  0.48     5125     3421    1
+#> pred[UNCOVER-2: SEC_150, PASI100] 0.15 0.02 0.11 0.13 0.15 0.16  0.19     5019     3539    1
+#> pred[UNCOVER-2: SEC_300, PASI75]  0.80 0.02 0.76 0.79 0.81 0.82  0.84     5077     3048    1
+#> pred[UNCOVER-2: SEC_300, PASI90]  0.57 0.03 0.51 0.55 0.57 0.60  0.63     5322     2906    1
+#> pred[UNCOVER-2: SEC_300, PASI100] 0.26 0.03 0.21 0.24 0.26 0.28  0.31     5359     3285    1
+#> pred[UNCOVER-2: UST, PASI75]      0.65 0.04 0.56 0.62 0.65 0.68  0.73     5584     3209    1
+#> pred[UNCOVER-2: UST, PASI90]      0.39 0.04 0.31 0.36 0.39 0.42  0.48     5564     3136    1
+#> pred[UNCOVER-2: UST, PASI100]     0.14 0.02 0.10 0.12 0.14 0.16  0.19     5238     3227    1
+#> 
+#> -------------------------------------------------------------- Study: UNCOVER-3 ---- 
+#> 
+#>                                   mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> pred[UNCOVER-3: PBO, PASI75]      0.07 0.01 0.05 0.06 0.07 0.07  0.09     3408     2896    1
+#> pred[UNCOVER-3: PBO, PASI90]      0.02 0.00 0.01 0.01 0.01 0.02  0.02     3699     2795    1
+#> pred[UNCOVER-3: PBO, PASI100]     0.00 0.00 0.00 0.00 0.00 0.00  0.00     4199     3282    1
+#> pred[UNCOVER-3: ETN, PASI75]      0.51 0.02 0.47 0.49 0.51 0.52  0.54     5141     3015    1
+#> pred[UNCOVER-3: ETN, PASI90]      0.26 0.01 0.23 0.25 0.26 0.27  0.29     5478     3035    1
+#> pred[UNCOVER-3: ETN, PASI100]     0.07 0.01 0.06 0.07 0.07 0.08  0.09     5733     3307    1
+#> pred[UNCOVER-3: IXE_Q2W, PASI75]  0.91 0.01 0.89 0.90 0.91 0.91  0.92     4495     3217    1
+#> pred[UNCOVER-3: IXE_Q2W, PASI90]  0.74 0.01 0.71 0.73 0.74 0.75  0.77     5272     2943    1
+#> pred[UNCOVER-3: IXE_Q2W, PASI100] 0.43 0.02 0.40 0.42 0.43 0.44  0.46     5853     2938    1
+#> pred[UNCOVER-3: IXE_Q4W, PASI75]  0.87 0.01 0.85 0.86 0.87 0.87  0.88     5666     3558    1
+#> pred[UNCOVER-3: IXE_Q4W, PASI90]  0.67 0.02 0.64 0.66 0.67 0.68  0.70     6671     3608    1
+#> pred[UNCOVER-3: IXE_Q4W, PASI100] 0.35 0.02 0.32 0.34 0.35 0.36  0.38     8120     3670    1
+#> pred[UNCOVER-3: SEC_150, PASI75]  0.73 0.03 0.67 0.71 0.73 0.75  0.78     5136     3029    1
+#> pred[UNCOVER-3: SEC_150, PASI90]  0.48 0.03 0.41 0.46 0.48 0.50  0.54     5367     2968    1
+#> pred[UNCOVER-3: SEC_150, PASI100] 0.19 0.02 0.15 0.17 0.19 0.20  0.23     5276     2947    1
+#> pred[UNCOVER-3: SEC_300, PASI75]  0.84 0.02 0.80 0.83 0.84 0.86  0.88     5481     3182    1
+#> pred[UNCOVER-3: SEC_300, PASI90]  0.63 0.03 0.57 0.61 0.63 0.65  0.69     5782     2938    1
+#> pred[UNCOVER-3: SEC_300, PASI100] 0.31 0.03 0.26 0.29 0.31 0.33  0.37     5694     3154    1
+#> pred[UNCOVER-3: UST, PASI75]      0.70 0.04 0.62 0.67 0.70 0.73  0.77     5694     3534    1
+#> pred[UNCOVER-3: UST, PASI90]      0.45 0.04 0.37 0.42 0.45 0.48  0.53     5692     3345    1
+#> pred[UNCOVER-3: UST, PASI100]     0.17 0.03 0.13 0.16 0.17 0.19  0.23     5399     3632    1

Again, these can be plotted using the plot() function.

-
plot(pso_pred_FE, ref_line = c(0, 1))
-

plot of chunk pso-full-pred

+
plot(pso_pred_FE, ref_line = c(0, 1))
+

plot of chunk pso-full-pred

External target populations

@@ -2078,99 +2424,98 @@

External target populations

(Chiricozzi et al. 2019) cohort studies. First of all, we need the covariate means and standard deviations in each of these populations:

-
new_agd_means <- tibble::tribble(
-             ~study, ~covariate,  ~mean,   ~sd,
-          "PsoBest",      "bsa",     24,  20.5,
-          "PsoBest",  "durnpso",   18.2,  14.1,
-          "PsoBest",  "prevsys",   0.54,    NA,
-          "PsoBest",      "psa",  0.207,    NA,
-          "PsoBest",   "weight",     85,  19.1,
-         "PROSPECT",      "bsa",   18.7,  18.4,
-         "PROSPECT",  "durnpso",   19.6,  13.5,
-         "PROSPECT",  "prevsys", 0.9095,    NA,
-         "PROSPECT",      "psa",  0.202,    NA,
-         "PROSPECT",   "weight",   87.5,  20.3,
-  "Chiricozzi 2019",      "bsa",     23, 16.79,
-  "Chiricozzi 2019",  "durnpso",  16.93, 10.82,
-  "Chiricozzi 2019",  "prevsys", 0.9061,    NA,
-  "Chiricozzi 2019",      "psa", 0.2152,    NA,
-  "Chiricozzi 2019",   "weight",   78.3, 15.87
-  ) %>%
-  # Tidy up
-  pivot_wider(id_cols = study, 
-              names_from = covariate, 
-              values_from = c(mean, sd),
-              names_glue = "{covariate}_{.value}") %>% 
-  # Rescale as per analysis
-  transmute(study,
-            bsa_mean = bsa_mean / 100, 
-            bsa_sd = bsa_sd / 100,
-            weight_mean = weight_mean / 10,
-            weight_sd = weight_sd / 10,
-            durnpso_mean = durnpso_mean / 10,
-            durnpso_sd = durnpso_sd / 10,
-            prevsys = prevsys_mean,
-            psa = psa_mean)
+
new_agd_means <- tibble::tribble(
+             ~study, ~covariate,  ~mean,   ~sd,
+          "PsoBest",      "bsa",     24,  20.5,
+          "PsoBest",  "durnpso",   18.2,  14.1,
+          "PsoBest",  "prevsys",   0.54,    NA,
+          "PsoBest",      "psa",  0.207,    NA,
+          "PsoBest",   "weight",     85,  19.1,
+         "PROSPECT",      "bsa",   18.7,  18.4,
+         "PROSPECT",  "durnpso",   19.6,  13.5,
+         "PROSPECT",  "prevsys", 0.9095,    NA,
+         "PROSPECT",      "psa",  0.202,    NA,
+         "PROSPECT",   "weight",   87.5,  20.3,
+  "Chiricozzi 2019",      "bsa",     23, 16.79,
+  "Chiricozzi 2019",  "durnpso",  16.93, 10.82,
+  "Chiricozzi 2019",  "prevsys", 0.9061,    NA,
+  "Chiricozzi 2019",      "psa", 0.2152,    NA,
+  "Chiricozzi 2019",   "weight",   78.3, 15.87
+  ) %>%
+  # Tidy up
+  pivot_wider(id_cols = study, 
+              names_from = covariate, 
+              values_from = c(mean, sd),
+              names_glue = "{covariate}_{.value}") %>% 
+  # Rescale as per analysis
+  transmute(study,
+            bsa_mean = bsa_mean / 100, 
+            bsa_sd = bsa_sd / 100,
+            weight_mean = weight_mean / 10,
+            weight_sd = weight_sd / 10,
+            durnpso_mean = durnpso_mean / 10,
+            durnpso_sd = durnpso_sd / 10,
+            prevsys = prevsys_mean,
+            psa = psa_mean)

To produce estimates of population-average treatment effects, we use the relative_effects() function with the data frame of covariate means in the target populations as the newdata argument. We only need the covariate means, with variable names matching those in the regression.

-
(pso_releff_FE_new <- relative_effects(pso_fit_FE, 
-                                       newdata = transmute(new_agd_means,
-                                                           study,
-                                                           bsa = bsa_mean,
-                                                           weight = weight_mean,
-                                                           durnpso = durnpso_mean,
-                                                           prevsys,
-                                                           psa),
-                                       study = study))
-
#> -------------------------------------------------------- Study: Chiricozzi 2019 ---- 
-#> 
-#> Covariate values:
-#>  durnpso prevsys  bsa weight  psa
-#>     1.69    0.91 0.23   7.83 0.22
-#> 
-#>                             mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> d[Chiricozzi 2019: ETN]     1.79 0.11 1.58 1.71 1.79 1.86  2.01     1618     2360    1
-#> d[Chiricozzi 2019: IXE_Q2W] 3.07 0.10 2.87 3.00 3.07 3.14  3.28     1623     2630    1
-#> d[Chiricozzi 2019: IXE_Q4W] 2.85 0.10 2.65 2.78 2.85 2.92  3.06     1782     2447    1
-#> d[Chiricozzi 2019: SEC_150] 2.35 0.11 2.13 2.28 2.35 2.43  2.58     2248     2749    1
-#> d[Chiricozzi 2019: SEC_300] 2.76 0.11 2.55 2.69 2.76 2.84  2.98     1883     2739    1
-#> d[Chiricozzi 2019: UST]     2.30 0.15 2.02 2.20 2.30 2.40  2.58     2569     2878    1
-#> 
-#> --------------------------------------------------------------- Study: PROSPECT ---- 
-#> 
-#> Covariate values:
-#>  durnpso prevsys  bsa weight psa
-#>     1.96    0.91 0.19   8.75 0.2
-#> 
-#>                      mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> d[PROSPECT: ETN]     1.62 0.11 1.42 1.55 1.62 1.70  1.84     2215     2573    1
-#> d[PROSPECT: IXE_Q2W] 2.94 0.10 2.74 2.87 2.93 3.00  3.13     2128     2844    1
-#> d[PROSPECT: IXE_Q4W] 2.72 0.10 2.52 2.65 2.72 2.78  2.92     2329     2929    1
-#> d[PROSPECT: SEC_150] 2.22 0.11 2.00 2.14 2.22 2.29  2.44     2719     3321    1
-#> d[PROSPECT: SEC_300] 2.63 0.11 2.41 2.55 2.63 2.70  2.85     2295     3224    1
-#> d[PROSPECT: UST]     2.18 0.15 1.89 2.08 2.18 2.28  2.47     3205     3089    1
-#> 
-#> ---------------------------------------------------------------- Study: PsoBest ---- 
-#> 
-#> Covariate values:
-#>  durnpso prevsys  bsa weight  psa
-#>     1.82    0.54 0.24    8.5 0.21
-#> 
-#>                     mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> d[PsoBest: ETN]     1.61 0.08 1.46 1.56 1.61 1.66  1.77     2021     2876    1
-#> d[PsoBest: IXE_Q2W] 2.93 0.08 2.78 2.87 2.93 2.98  3.08     1857     2249    1
-#> d[PsoBest: IXE_Q4W] 2.71 0.08 2.56 2.66 2.71 2.76  2.86     2164     2259    1
-#> d[PsoBest: SEC_150] 2.21 0.09 2.04 2.15 2.21 2.27  2.39     2451     2706    1
-#> d[PsoBest: SEC_300] 2.62 0.09 2.45 2.56 2.62 2.67  2.79     2016     2919    1
-#> d[PsoBest: UST]     2.08 0.13 1.82 1.99 2.08 2.17  2.34     2852     3123    1
-#> 
+
(pso_releff_FE_new <- relative_effects(pso_fit_FE, 
+                                       newdata = transmute(new_agd_means,
+                                                           study,
+                                                           bsa = bsa_mean,
+                                                           weight = weight_mean,
+                                                           durnpso = durnpso_mean,
+                                                           prevsys,
+                                                           psa),
+                                       study = study))
+
#> -------------------------------------------------------- Study: Chiricozzi 2019 ---- 
+#> 
+#> Covariate values:
+#>  durnpso prevsys  bsa weight  psa
+#>     1.69    0.91 0.23   7.83 0.22
+#> 
+#>                             mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> d[Chiricozzi 2019: ETN]     1.79 0.11 1.59 1.72 1.79 1.86  2.01     2269     2766    1
+#> d[Chiricozzi 2019: IXE_Q2W] 3.08 0.10 2.88 3.01 3.08 3.15  3.28     2520     2614    1
+#> d[Chiricozzi 2019: IXE_Q4W] 2.86 0.10 2.65 2.79 2.86 2.93  3.07     2693     2604    1
+#> d[Chiricozzi 2019: SEC_150] 2.36 0.11 2.14 2.28 2.36 2.43  2.58     2435     2679    1
+#> d[Chiricozzi 2019: SEC_300] 2.77 0.11 2.55 2.69 2.77 2.84  2.99     2479     2858    1
+#> d[Chiricozzi 2019: UST]     2.31 0.15 2.02 2.21 2.31 2.41  2.60     3003     2920    1
+#> 
+#> --------------------------------------------------------------- Study: PROSPECT ---- 
+#> 
+#> Covariate values:
+#>  durnpso prevsys  bsa weight psa
+#>     1.96    0.91 0.19   8.75 0.2
+#> 
+#>                      mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> d[PROSPECT: ETN]     1.63 0.11 1.42 1.56 1.63 1.70  1.84     2256     2690    1
+#> d[PROSPECT: IXE_Q2W] 2.94 0.10 2.74 2.87 2.94 3.01  3.14     2650     2950    1
+#> d[PROSPECT: IXE_Q4W] 2.72 0.10 2.53 2.66 2.72 2.79  2.92     2829     2750    1
+#> d[PROSPECT: SEC_150] 2.22 0.11 2.00 2.14 2.22 2.29  2.44     2590     3014    1
+#> d[PROSPECT: SEC_300] 2.63 0.11 2.41 2.55 2.63 2.70  2.85     2679     2654    1
+#> d[PROSPECT: UST]     2.18 0.15 1.90 2.08 2.18 2.29  2.48     3181     3182    1
+#> 
+#> ---------------------------------------------------------------- Study: PsoBest ---- 
+#> 
+#> Covariate values:
+#>  durnpso prevsys  bsa weight  psa
+#>     1.82    0.54 0.24    8.5 0.21
+#> 
+#>                     mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> d[PsoBest: ETN]     1.61 0.08 1.46 1.56 1.61 1.66  1.77     2455     2879    1
+#> d[PsoBest: IXE_Q2W] 2.93 0.08 2.78 2.88 2.93 2.98  3.09     2824     2943    1
+#> d[PsoBest: IXE_Q4W] 2.71 0.08 2.56 2.66 2.71 2.77  2.87     3100     2982    1
+#> d[PsoBest: SEC_150] 2.21 0.09 2.04 2.15 2.21 2.27  2.38     2533     2357    1
+#> d[PsoBest: SEC_300] 2.62 0.09 2.45 2.56 2.62 2.67  2.79     2647     2672    1
+#> d[PsoBest: UST]     2.08 0.14 1.82 1.99 2.08 2.17  2.35     3616     3150    1

These estimates are plotted using the plot() function.

-
plot(pso_releff_FE_new, ref_line = 0) + facet_wrap("Study")
-

plot of chunk pso-full-releff-new

+
plot(pso_releff_FE_new, ref_line = 0) + facet_wrap("Study")
+

plot of chunk pso-full-releff-new

Estimates of average event probabilities are produced by integrating predictions over the joint covariate distribution in each population. Since we have marginal summary statistics available, rather than full @@ -2180,14 +2525,14 @@

External target populations

same forms of the marginal distributions that we used when specifying integration points for the AgD studies in the network, and the weighted correlation matrix from the IPD studies.

-
new_agd_int <- add_integration(filter(new_agd_means, study != "PsoBest"),
-                               durnpso = distr(qgamma, mean = durnpso_mean, sd = durnpso_sd),
-                               prevsys = distr(qbern, prob = prevsys),
-                               bsa = distr(qlogitnorm, mean = bsa_mean, sd = bsa_sd),
-                               weight = distr(qgamma, mean = weight_mean, sd = weight_sd),
-                               psa = distr(qbern, prob = psa),
-                               n_int = 64,
-                               cor = pso_net$int_cor)
+
new_agd_int <- add_integration(filter(new_agd_means, study != "PsoBest"),
+                               durnpso = distr(qgamma, mean = durnpso_mean, sd = durnpso_sd),
+                               prevsys = distr(qbern, prob = prevsys),
+                               bsa = distr(qlogitnorm, mean = bsa_mean, sd = bsa_sd),
+                               weight = distr(qgamma, mean = weight_mean, sd = weight_sd),
+                               psa = distr(qbern, prob = psa),
+                               n_int = 64,
+                               cor = pso_net$int_cor)

We then use the predict() function to produce the average event probabilities (type = "response", and level = "aggregate" which is the default) in each of the @@ -2204,71 +2549,71 @@

External target populations

rather than transformed probit probabilities). No information on baseline response was available from PsoBest, so no predictions of absolute response rates could be made.

-
(pso_pred_FE_new <- predict(pso_fit_FE, 
-        type = "response", 
-        newdata = new_agd_int,
-        study = study,
-        baseline = list(PROSPECT = distr(qbeta, 1156, 1509-1156),
-                        "Chiricozzi 2019" = distr(qbeta, 243, 330-243)),
-        baseline_type = "response",
-        baseline_level = "aggregate",
-        trt_ref = "SEC_300"))
-
#> -------------------------------------------------------- Study: Chiricozzi 2019 ---- 
-#> 
-#>                                         mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> pred[Chiricozzi 2019: PBO, PASI75]      0.02 0.01 0.01 0.01 0.02 0.02  0.03     2564     3595    1
-#> pred[Chiricozzi 2019: PBO, PASI90]      0.00 0.00 0.00 0.00 0.00 0.00  0.01     2643     3414    1
-#> pred[Chiricozzi 2019: PBO, PASI100]     0.00 0.00 0.00 0.00 0.00 0.00  0.00     2763     3690    1
-#> pred[Chiricozzi 2019: ETN, PASI75]      0.37 0.04 0.30 0.34 0.37 0.40  0.46     4758     3892    1
-#> pred[Chiricozzi 2019: ETN, PASI90]      0.16 0.03 0.11 0.14 0.16 0.18  0.22     4762     3997    1
-#> pred[Chiricozzi 2019: ETN, PASI100]     0.03 0.01 0.02 0.03 0.03 0.04  0.05     4701     3931    1
-#> pred[Chiricozzi 2019: IXE_Q2W, PASI75]  0.83 0.03 0.77 0.81 0.83 0.84  0.88     4481     3929    1
-#> pred[Chiricozzi 2019: IXE_Q2W, PASI90]  0.60 0.04 0.52 0.57 0.60 0.63  0.68     4458     4057    1
-#> pred[Chiricozzi 2019: IXE_Q2W, PASI100] 0.28 0.04 0.21 0.26 0.28 0.31  0.36     4418     4016    1
-#> pred[Chiricozzi 2019: IXE_Q4W, PASI75]  0.76 0.03 0.70 0.74 0.77 0.79  0.83     4476     3773    1
-#> pred[Chiricozzi 2019: IXE_Q4W, PASI90]  0.52 0.04 0.43 0.49 0.52 0.55  0.60     4444     3737    1
-#> pred[Chiricozzi 2019: IXE_Q4W, PASI100] 0.22 0.03 0.16 0.19 0.21 0.24  0.28     4393     3701    1
-#> pred[Chiricozzi 2019: SEC_150, PASI75]  0.59 0.04 0.52 0.57 0.59 0.62  0.66     4949     3965    1
-#> pred[Chiricozzi 2019: SEC_150, PASI90]  0.33 0.03 0.26 0.30 0.33 0.35  0.40     4810     3887    1
-#> pred[Chiricozzi 2019: SEC_150, PASI100] 0.10 0.02 0.07 0.09 0.10 0.11  0.14     4741     3846    1
-#> pred[Chiricozzi 2019: SEC_300, PASI75]  0.74 0.02 0.69 0.72 0.74 0.75  0.78     3923     3931    1
-#> pred[Chiricozzi 2019: SEC_300, PASI90]  0.48 0.03 0.42 0.46 0.48 0.50  0.54     3912     3974    1
-#> pred[Chiricozzi 2019: SEC_300, PASI100] 0.19 0.02 0.15 0.17 0.19 0.20  0.23     3885     3933    1
-#> pred[Chiricozzi 2019: UST, PASI75]      0.57 0.05 0.47 0.53 0.57 0.60  0.67     5538     3835    1
-#> pred[Chiricozzi 2019: UST, PASI90]      0.31 0.05 0.22 0.28 0.31 0.34  0.41     5591     3798    1
-#> pred[Chiricozzi 2019: UST, PASI100]     0.10 0.02 0.06 0.08 0.09 0.11  0.15     5462     3920    1
-#> 
-#> --------------------------------------------------------------- Study: PROSPECT ---- 
-#> 
-#>                                  mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> pred[PROSPECT: PBO, PASI75]      0.03 0.01 0.02 0.03 0.03 0.04  0.05     2902     3561    1
-#> pred[PROSPECT: PBO, PASI90]      0.01 0.00 0.00 0.00 0.01 0.01  0.01     3098     3528    1
-#> pred[PROSPECT: PBO, PASI100]     0.00 0.00 0.00 0.00 0.00 0.00  0.00     3269     3415    1
-#> pred[PROSPECT: ETN, PASI75]      0.40 0.03 0.33 0.38 0.40 0.42  0.47     5199     3240    1
-#> pred[PROSPECT: ETN, PASI90]      0.18 0.02 0.14 0.16 0.18 0.20  0.23     5147     3365    1
-#> pred[PROSPECT: ETN, PASI100]     0.04 0.01 0.03 0.04 0.04 0.05  0.06     4967     3490    1
-#> pred[PROSPECT: IXE_Q2W, PASI75]  0.85 0.02 0.81 0.84 0.85 0.86  0.88     5001     3224    1
-#> pred[PROSPECT: IXE_Q2W, PASI90]  0.64 0.03 0.57 0.62 0.64 0.66  0.70     4949     3615    1
-#> pred[PROSPECT: IXE_Q2W, PASI100] 0.32 0.03 0.26 0.30 0.32 0.34  0.38     4883     3727    1
-#> pred[PROSPECT: IXE_Q4W, PASI75]  0.79 0.02 0.74 0.78 0.79 0.81  0.84     5310     3627    1
-#> pred[PROSPECT: IXE_Q4W, PASI90]  0.56 0.03 0.49 0.53 0.56 0.58  0.62     5152     3587    1
-#> pred[PROSPECT: IXE_Q4W, PASI100] 0.25 0.03 0.19 0.23 0.24 0.26  0.30     4930     3584    1
-#> pred[PROSPECT: SEC_150, PASI75]  0.63 0.03 0.58 0.61 0.63 0.65  0.68     5720     3577    1
-#> pred[PROSPECT: SEC_150, PASI90]  0.36 0.03 0.31 0.35 0.36 0.38  0.42     5332     3598    1
-#> pred[PROSPECT: SEC_150, PASI100] 0.12 0.01 0.09 0.11 0.12 0.13  0.15     5036     3554    1
-#> pred[PROSPECT: SEC_300, PASI75]  0.77 0.01 0.74 0.76 0.77 0.77  0.79     3785     4056    1
-#> pred[PROSPECT: SEC_300, PASI90]  0.52 0.02 0.49 0.51 0.52 0.53  0.55     3560     3888    1
-#> pred[PROSPECT: SEC_300, PASI100] 0.22 0.01 0.19 0.21 0.22 0.23  0.24     3510     3811    1
-#> pred[PROSPECT: UST, PASI75]      0.61 0.05 0.52 0.58 0.61 0.64  0.70     5992     3337    1
-#> pred[PROSPECT: UST, PASI90]      0.35 0.04 0.27 0.32 0.35 0.38  0.44     6096     3471    1
-#> pred[PROSPECT: UST, PASI100]     0.12 0.02 0.08 0.10 0.11 0.13  0.17     5841     3581    1
+
(pso_pred_FE_new <- predict(pso_fit_FE, 
+        type = "response", 
+        newdata = new_agd_int,
+        study = study,
+        baseline = list(PROSPECT = distr(qbeta, 1156, 1509-1156),
+                        "Chiricozzi 2019" = distr(qbeta, 243, 330-243)),
+        baseline_type = "response",
+        baseline_level = "aggregate",
+        trt_ref = "SEC_300"))
+
#> -------------------------------------------------------- Study: Chiricozzi 2019 ---- 
+#> 
+#>                                         mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> pred[Chiricozzi 2019: PBO, PASI75]      0.02 0.01 0.01 0.01 0.02 0.02  0.03     2774     2898    1
+#> pred[Chiricozzi 2019: PBO, PASI90]      0.00 0.00 0.00 0.00 0.00 0.00  0.01     2838     3324    1
+#> pred[Chiricozzi 2019: PBO, PASI100]     0.00 0.00 0.00 0.00 0.00 0.00  0.00     2893     3086    1
+#> pred[Chiricozzi 2019: ETN, PASI75]      0.37 0.04 0.29 0.35 0.37 0.40  0.46     4735     3515    1
+#> pred[Chiricozzi 2019: ETN, PASI90]      0.16 0.03 0.11 0.14 0.16 0.18  0.22     4671     3820    1
+#> pred[Chiricozzi 2019: ETN, PASI100]     0.03 0.01 0.02 0.03 0.03 0.04  0.05     4874     3910    1
+#> pred[Chiricozzi 2019: IXE_Q2W, PASI75]  0.83 0.03 0.77 0.81 0.83 0.85  0.88     3937     4088    1
+#> pred[Chiricozzi 2019: IXE_Q2W, PASI90]  0.60 0.04 0.52 0.57 0.60 0.63  0.69     3975     3974    1
+#> pred[Chiricozzi 2019: IXE_Q2W, PASI100] 0.28 0.04 0.21 0.26 0.28 0.31  0.36     4029     3977    1
+#> pred[Chiricozzi 2019: IXE_Q4W, PASI75]  0.77 0.03 0.69 0.74 0.77 0.79  0.83     4139     3729    1
+#> pred[Chiricozzi 2019: IXE_Q4W, PASI90]  0.52 0.05 0.43 0.49 0.52 0.55  0.61     4171     4113    1
+#> pred[Chiricozzi 2019: IXE_Q4W, PASI100] 0.22 0.03 0.16 0.19 0.22 0.24  0.29     4273     4046    1
+#> pred[Chiricozzi 2019: SEC_150, PASI75]  0.59 0.04 0.51 0.57 0.59 0.62  0.66     4475     4038    1
+#> pred[Chiricozzi 2019: SEC_150, PASI90]  0.33 0.04 0.26 0.30 0.33 0.35  0.40     4604     4025    1
+#> pred[Chiricozzi 2019: SEC_150, PASI100] 0.10 0.02 0.07 0.09 0.10 0.11  0.14     4509     3701    1
+#> pred[Chiricozzi 2019: SEC_300, PASI75]  0.74 0.02 0.68 0.72 0.74 0.75  0.78     3565     3798    1
+#> pred[Chiricozzi 2019: SEC_300, PASI90]  0.48 0.03 0.42 0.46 0.48 0.50  0.54     3838     3636    1
+#> pred[Chiricozzi 2019: SEC_300, PASI100] 0.19 0.02 0.15 0.17 0.19 0.20  0.23     3745     3395    1
+#> pred[Chiricozzi 2019: UST, PASI75]      0.57 0.05 0.47 0.54 0.57 0.61  0.68     4619     3313    1
+#> pred[Chiricozzi 2019: UST, PASI90]      0.32 0.05 0.23 0.28 0.32 0.35  0.42     4616     3415    1
+#> pred[Chiricozzi 2019: UST, PASI100]     0.10 0.02 0.06 0.08 0.10 0.11  0.15     4635     3362    1
+#> 
+#> --------------------------------------------------------------- Study: PROSPECT ---- 
+#> 
+#>                                  mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> pred[PROSPECT: PBO, PASI75]      0.03 0.01 0.02 0.03 0.03 0.04  0.05     2934     2914    1
+#> pred[PROSPECT: PBO, PASI90]      0.01 0.00 0.00 0.00 0.01 0.01  0.01     2952     2943    1
+#> pred[PROSPECT: PBO, PASI100]     0.00 0.00 0.00 0.00 0.00 0.00  0.00     3041     3053    1
+#> pred[PROSPECT: ETN, PASI75]      0.40 0.04 0.33 0.38 0.40 0.43  0.47     5801     3330    1
+#> pred[PROSPECT: ETN, PASI90]      0.18 0.02 0.14 0.16 0.18 0.20  0.23     5572     3383    1
+#> pred[PROSPECT: ETN, PASI100]     0.04 0.01 0.03 0.04 0.04 0.05  0.06     5504     3323    1
+#> pred[PROSPECT: IXE_Q2W, PASI75]  0.85 0.02 0.81 0.84 0.85 0.86  0.89     5040     3313    1
+#> pred[PROSPECT: IXE_Q2W, PASI90]  0.64 0.03 0.57 0.62 0.64 0.66  0.70     5008     3529    1
+#> pred[PROSPECT: IXE_Q2W, PASI100] 0.32 0.03 0.26 0.30 0.32 0.34  0.38     5095     3461    1
+#> pred[PROSPECT: IXE_Q4W, PASI75]  0.79 0.03 0.74 0.78 0.79 0.81  0.84     5273     3203    1
+#> pred[PROSPECT: IXE_Q4W, PASI90]  0.56 0.04 0.49 0.53 0.56 0.58  0.63     5255     3293    1
+#> pred[PROSPECT: IXE_Q4W, PASI100] 0.25 0.03 0.19 0.23 0.24 0.27  0.31     5121     3195    1
+#> pred[PROSPECT: SEC_150, PASI75]  0.63 0.03 0.57 0.61 0.63 0.64  0.68     6002     3692    1
+#> pred[PROSPECT: SEC_150, PASI90]  0.36 0.03 0.31 0.34 0.36 0.38  0.42     5902     3841    1
+#> pred[PROSPECT: SEC_150, PASI100] 0.12 0.01 0.09 0.11 0.12 0.13  0.15     5461     3642    1
+#> pred[PROSPECT: SEC_300, PASI75]  0.77 0.01 0.74 0.76 0.77 0.77  0.79     3985     3918    1
+#> pred[PROSPECT: SEC_300, PASI90]  0.52 0.02 0.49 0.51 0.52 0.53  0.55     4033     3889    1
+#> pred[PROSPECT: SEC_300, PASI100] 0.22 0.01 0.19 0.21 0.22 0.22  0.24     3920     3878    1
+#> pred[PROSPECT: UST, PASI75]      0.61 0.05 0.52 0.58 0.62 0.65  0.70     5757     3516    1
+#> pred[PROSPECT: UST, PASI90]      0.36 0.05 0.27 0.32 0.35 0.39  0.45     5644     3496    1
+#> pred[PROSPECT: UST, PASI100]     0.12 0.02 0.07 0.10 0.12 0.13  0.17     5586     3549    1

Again, we then plot these estimates using the plot() function, here with some customisation using ggplot syntax.

-
plot(pso_pred_FE_new, ref_line = c(0, 1)) + 
-  facet_grid(rows = "Study") + 
-  aes(colour = Category) +
-  scale_colour_brewer(palette = "Blues")
-

plot of chunk pso-full-pred-new

+
plot(pso_pred_FE_new, ref_line = c(0, 1)) + 
+  facet_grid(rows = "Study") + 
+  aes(colour = Category) +
+  scale_colour_brewer(palette = "Blues")
+

plot of chunk pso-full-pred-new

diff --git a/vignettes/example_smoking.html b/vignettes/example_smoking.html index 788457a2b..8db770ed5 100644 --- a/vignettes/example_smoking.html +++ b/vignettes/example_smoking.html @@ -456,11 +456,11 @@

Random effects NMA

#> post-warmup draws per chain=1000, total post-warmup draws=4000. #> #> mean se_mean sd 2.5% 25% 50% 75% 97.5% n_eff -#> d[Group counselling] 1.11 0.01 0.44 0.26 0.81 1.10 1.39 2.04 1999 -#> d[Individual counselling] 0.85 0.01 0.24 0.40 0.70 0.85 1.00 1.35 1117 -#> d[Self-help] 0.49 0.01 0.41 -0.29 0.23 0.49 0.75 1.30 1825 -#> lp__ -5767.45 0.20 6.47 -5780.99 -5771.63 -5767.16 -5762.87 -5755.51 1018 -#> tau 0.85 0.01 0.19 0.56 0.72 0.83 0.96 1.29 1106 +#> d[Group counselling] 1.11 0.01 0.44 0.27 0.81 1.09 1.40 2.01 1998 +#> d[Individual counselling] 0.84 0.01 0.25 0.39 0.67 0.83 0.99 1.36 1206 +#> d[Self-help] 0.50 0.01 0.40 -0.27 0.24 0.48 0.75 1.31 1916 +#> lp__ -5919.72 0.20 6.50 -5933.29 -5923.82 -5919.41 -5915.14 -5907.86 1012 +#> tau 0.84 0.01 0.19 0.54 0.70 0.82 0.95 1.28 918 #> Rhat #> d[Group counselling] 1 #> d[Individual counselling] 1 @@ -468,7 +468,7 @@

Random effects NMA

#> lp__ 1 #> tau 1 #> -#> Samples were drawn using NUTS(diag_e) at Fri Jun 16 15:38:29 2023. +#> Samples were drawn using NUTS(diag_e) at Tue Jan 9 17:49:33 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). @@ -480,22 +480,22 @@

Random effects NMA

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

plot_prior_posterior(smkfit)
-

+

By default, this displays all model parameters given prior distributions (in this case \(d_k\), \(\mu_j\), and \(\tau\)), but this may be changed using the prior argument:

plot_prior_posterior(smkfit, prior = "het")
-

+

Model fit can be checked using the dic() function

(dic_consistency <- dic(smkfit))
-#> Residual deviance: 53.4 (on 50 data points)
-#>                pD: 43.3
-#>               DIC: 96.7
+#> Residual deviance: 54 (on 50 data points) +#> pD: 43.7 +#> DIC: 97.7

and the residual deviance contributions examined with the corresponding plot() method

plot(dic_consistency)
-

+

Overall model fit seems to be adequate, with almost all points showing good fit (mean residual deviance contribution of 1). The only two points with higher residual deviance (i.e. worse fit) correspond to @@ -537,37 +537,37 @@

Unrelated mean effects

#> post-warmup draws per chain=1000, total post-warmup draws=4000. #> #> mean se_mean sd 2.5% 25% 50% -#> d[Group counselling vs. No intervention] 1.11 0.02 0.78 -0.33 0.58 1.08 -#> d[Individual counselling vs. No intervention] 0.90 0.01 0.27 0.38 0.72 0.89 -#> d[Self-help vs. No intervention] 0.34 0.01 0.57 -0.79 -0.02 0.34 -#> d[Individual counselling vs. Group counselling] -0.30 0.01 0.60 -1.48 -0.68 -0.30 -#> d[Self-help vs. Group counselling] -0.61 0.01 0.70 -2.01 -1.04 -0.60 -#> d[Self-help vs. Individual counselling] 0.13 0.02 1.07 -1.98 -0.58 0.13 -#> lp__ -5765.19 0.18 6.08 -5777.94 -5769.10 -5764.85 -#> tau 0.93 0.01 0.22 0.59 0.78 0.90 +#> d[Group counselling vs. No intervention] 1.15 0.02 0.81 -0.35 0.62 1.11 +#> d[Individual counselling vs. No intervention] 0.92 0.01 0.27 0.41 0.75 0.91 +#> d[Self-help vs. No intervention] 0.33 0.01 0.59 -0.83 -0.04 0.33 +#> d[Individual counselling vs. Group counselling] -0.26 0.01 0.60 -1.46 -0.65 -0.26 +#> d[Self-help vs. Group counselling] -0.61 0.01 0.71 -2.02 -1.05 -0.61 +#> d[Self-help vs. Individual counselling] 0.15 0.02 1.07 -2.02 -0.52 0.15 +#> lp__ -5933.38 0.20 6.27 -5946.38 -5937.54 -5933.05 +#> tau 0.94 0.01 0.23 0.59 0.78 0.91 #> 75% 97.5% n_eff Rhat -#> d[Group counselling vs. No intervention] 1.60 2.72 2543 1 -#> d[Individual counselling vs. No intervention] 1.07 1.49 1276 1 -#> d[Self-help vs. No intervention] 0.70 1.48 2087 1 -#> d[Individual counselling vs. Group counselling] 0.09 0.92 2796 1 -#> d[Self-help vs. Group counselling] -0.15 0.79 2593 1 -#> d[Self-help vs. Individual counselling] 0.83 2.25 3816 1 -#> lp__ -5760.92 -5754.45 1152 1 -#> tau 1.05 1.42 1330 1 +#> d[Group counselling vs. No intervention] 1.64 2.93 2470 1.00 +#> d[Individual counselling vs. No intervention] 1.09 1.51 1094 1.00 +#> d[Self-help vs. No intervention] 0.70 1.55 2000 1.00 +#> d[Individual counselling vs. Group counselling] 0.13 0.93 2775 1.00 +#> d[Self-help vs. Group counselling] -0.16 0.81 2530 1.00 +#> d[Self-help vs. Individual counselling] 0.82 2.27 3983 1.00 +#> lp__ -5928.99 -5921.69 1025 1.01 +#> tau 1.07 1.47 1203 1.00 #> -#> Samples were drawn using NUTS(diag_e) at Fri Jun 16 15:39:06 2023. +#> Samples were drawn using NUTS(diag_e) at Tue Jan 9 17:49:53 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).

Comparing the model fit statistics

dic_consistency
-#> Residual deviance: 53.4 (on 50 data points)
-#>                pD: 43.3
-#>               DIC: 96.7
+#> Residual deviance: 54 (on 50 data points)
+#>                pD: 43.7
+#>               DIC: 97.7
 (dic_ume <- dic(smkfit_ume))
 #> Residual deviance: 53.5 (on 50 data points)
-#>                pD: 44.7
-#>               DIC: 98.3
+#> pD: 45 +#> DIC: 98.5

We see that there is little to choose between the two models. However, it is also important to examine the individual contributions to model fit of each data point under the two models (a so-called “dev-dev” @@ -575,7 +575,7 @@

Unrelated mean effects

dic() function to the plot() method produces this dev-dev plot:

plot(dic_consistency, dic_ume, point_alpha = 0.5, interval_alpha = 0.2)
-

+

All points lie roughly on the line of equality, so there is no evidence for inconsistency here.

@@ -620,98 +620,98 @@

Node-splitting

#> ------------------------------ Node-split Group counselling vs. No intervention ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> d_net 1.11 0.44 0.30 0.82 1.10 1.38 2.04 2008 2358 1 -#> d_dir 1.06 0.74 -0.31 0.56 1.04 1.54 2.59 3392 2601 1 -#> d_ind 1.17 0.54 0.14 0.81 1.16 1.51 2.28 1762 2482 1 -#> omega -0.11 0.91 -1.87 -0.70 -0.13 0.47 1.75 2566 2491 1 -#> tau 0.86 0.20 0.56 0.72 0.83 0.97 1.33 1264 2103 1 -#> tau_consistency 0.83 0.19 0.55 0.70 0.81 0.94 1.27 1081 2205 1 +#> d_net 1.09 0.44 0.28 0.79 1.07 1.37 1.97 1793 2275 1 +#> d_dir 1.06 0.75 -0.36 0.55 1.03 1.54 2.63 3096 2875 1 +#> d_ind 1.12 0.55 -0.01 0.76 1.12 1.48 2.19 1517 1709 1 +#> omega -0.05 0.91 -1.81 -0.66 -0.08 0.54 1.82 2295 2580 1 +#> tau 0.87 0.20 0.56 0.73 0.84 0.98 1.32 1342 1858 1 +#> tau_consistency 0.84 0.19 0.55 0.71 0.82 0.94 1.29 1092 1786 1 #> -#> Residual deviance: 54.1 (on 50 data points) -#> pD: 44 -#> DIC: 98.1 +#> Residual deviance: 53.9 (on 50 data points) +#> pD: 44.1 +#> DIC: 98 #> -#> Bayesian p-value: 0.88 +#> Bayesian p-value: 0.93 #> #> ------------------------- Node-split Individual counselling vs. No intervention ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> d_net 0.84 0.24 0.39 0.68 0.83 0.99 1.34 879 1656 1.01 -#> d_dir 0.88 0.25 0.38 0.72 0.88 1.04 1.39 1960 2307 1.00 -#> d_ind 0.55 0.64 -0.67 0.12 0.54 0.95 1.82 1814 2238 1.00 -#> omega 0.33 0.66 -1.00 -0.09 0.34 0.76 1.65 1864 2220 1.00 -#> tau 0.85 0.19 0.55 0.72 0.83 0.96 1.30 1432 1937 1.00 -#> tau_consistency 0.83 0.19 0.55 0.70 0.81 0.94 1.27 1081 2205 1.00 +#> d_net 0.84 0.24 0.38 0.68 0.83 0.99 1.36 1176 1770 1.00 +#> d_dir 0.89 0.26 0.40 0.72 0.88 1.05 1.42 1218 1860 1.00 +#> d_ind 0.56 0.68 -0.74 0.12 0.55 0.98 1.99 1165 1674 1.00 +#> omega 0.33 0.70 -1.08 -0.10 0.35 0.79 1.65 1163 1632 1.00 +#> tau 0.86 0.19 0.55 0.72 0.83 0.97 1.28 1118 2046 1.01 +#> tau_consistency 0.84 0.19 0.55 0.71 0.82 0.94 1.29 1092 1786 1.00 #> -#> Residual deviance: 54.7 (on 50 data points) -#> pD: 44.4 -#> DIC: 99.1 +#> Residual deviance: 54.2 (on 50 data points) +#> pD: 44.1 +#> DIC: 98.3 #> #> Bayesian p-value: 0.6 #> #> -------------------------------------- Node-split Self-help vs. No intervention ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> d_net 0.48 0.41 -0.31 0.22 0.48 0.74 1.33 1958 2017 1 -#> d_dir 0.35 0.55 -0.73 -0.02 0.33 0.69 1.43 3522 2309 1 -#> d_ind 0.70 0.63 -0.50 0.28 0.69 1.11 1.97 1922 1900 1 -#> omega -0.36 0.85 -2.04 -0.90 -0.36 0.19 1.32 2109 2201 1 -#> tau 0.88 0.20 0.56 0.73 0.85 0.99 1.34 1101 1512 1 -#> tau_consistency 0.83 0.19 0.55 0.70 0.81 0.94 1.27 1081 2205 1 +#> d_net 0.48 0.40 -0.28 0.21 0.48 0.73 1.28 1698 1876 1 +#> d_dir 0.33 0.54 -0.71 -0.01 0.33 0.68 1.41 3339 2529 1 +#> d_ind 0.70 0.65 -0.58 0.28 0.69 1.11 2.03 2165 2405 1 +#> omega -0.36 0.83 -2.09 -0.88 -0.35 0.17 1.26 2351 2589 1 +#> tau 0.87 0.19 0.56 0.73 0.84 0.98 1.31 1311 2303 1 +#> tau_consistency 0.84 0.19 0.55 0.71 0.82 0.94 1.29 1092 1786 1 #> -#> Residual deviance: 53.9 (on 50 data points) -#> pD: 44.3 -#> DIC: 98.2 +#> Residual deviance: 53.7 (on 50 data points) +#> pD: 44.1 +#> DIC: 97.8 #> -#> Bayesian p-value: 0.66 +#> Bayesian p-value: 0.64 #> #> ----------------------- Node-split Individual counselling vs. Group counselling ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> d_net -0.27 0.42 -1.12 -0.53 -0.26 0.00 0.53 2845 2815 1.00 -#> d_dir -0.10 0.47 -1.02 -0.41 -0.10 0.21 0.82 3807 3243 1.00 -#> d_ind -0.55 0.60 -1.76 -0.93 -0.55 -0.16 0.64 1505 1847 1.01 -#> omega 0.46 0.66 -0.86 0.03 0.45 0.88 1.79 1647 1992 1.00 -#> tau 0.86 0.19 0.55 0.72 0.83 0.97 1.30 1245 1909 1.00 -#> tau_consistency 0.83 0.19 0.55 0.70 0.81 0.94 1.27 1081 2205 1.00 +#> d_net -0.25 0.41 -1.06 -0.52 -0.24 0.03 0.55 2718 2818 1 +#> d_dir -0.10 0.51 -1.09 -0.43 -0.10 0.23 0.90 4213 3127 1 +#> d_ind -0.53 0.61 -1.76 -0.92 -0.51 -0.14 0.67 1866 2406 1 +#> omega 0.43 0.68 -0.88 -0.02 0.42 0.86 1.78 1934 1802 1 +#> tau 0.87 0.20 0.56 0.73 0.84 0.98 1.35 1341 1985 1 +#> tau_consistency 0.84 0.19 0.55 0.71 0.82 0.94 1.29 1092 1786 1 #> -#> Residual deviance: 54.6 (on 50 data points) -#> pD: 44.8 -#> DIC: 99.4 +#> Residual deviance: 54 (on 50 data points) +#> pD: 44.4 +#> DIC: 98.5 #> -#> Bayesian p-value: 0.47 +#> Bayesian p-value: 0.52 #> #> ------------------------------------ Node-split Self-help vs. Group counselling ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> d_net -0.62 0.49 -1.60 -0.94 -0.63 -0.30 0.36 3280 2834 1 -#> d_dir -0.62 0.66 -1.92 -1.05 -0.60 -0.17 0.68 2893 3150 1 -#> d_ind -0.61 0.67 -1.90 -1.05 -0.61 -0.17 0.72 1491 1655 1 -#> omega 0.00 0.89 -1.77 -0.58 -0.02 0.58 1.73 1700 2259 1 -#> tau 0.88 0.20 0.56 0.73 0.85 0.99 1.34 1196 1949 1 -#> tau_consistency 0.83 0.19 0.55 0.70 0.81 0.94 1.27 1081 2205 1 +#> d_net -0.61 0.49 -1.58 -0.93 -0.61 -0.30 0.36 2737 2551 1 +#> d_dir -0.63 0.66 -1.98 -1.05 -0.63 -0.21 0.68 3657 3014 1 +#> d_ind -0.62 0.67 -2.05 -1.04 -0.61 -0.18 0.70 2132 2344 1 +#> omega -0.02 0.88 -1.75 -0.58 -0.02 0.56 1.72 2421 2701 1 +#> tau 0.86 0.19 0.57 0.72 0.84 0.97 1.29 1013 1808 1 +#> tau_consistency 0.84 0.19 0.55 0.71 0.82 0.94 1.29 1092 1786 1 #> -#> Residual deviance: 54.1 (on 50 data points) -#> pD: 44.5 -#> DIC: 98.6 +#> Residual deviance: 54 (on 50 data points) +#> pD: 44.2 +#> DIC: 98.2 #> #> Bayesian p-value: 0.99 #> #> ------------------------------- Node-split Self-help vs. Individual counselling ---- #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> d_net -0.36 0.42 -1.17 -0.63 -0.36 -0.09 0.47 2508 2445 1 -#> d_dir 0.07 0.65 -1.21 -0.37 0.07 0.48 1.37 3361 2968 1 -#> d_ind -0.60 0.53 -1.67 -0.94 -0.60 -0.27 0.44 1877 2100 1 -#> omega 0.67 0.83 -0.93 0.13 0.65 1.20 2.34 2330 2460 1 -#> tau 0.85 0.20 0.55 0.72 0.83 0.96 1.33 954 1469 1 -#> tau_consistency 0.83 0.19 0.55 0.70 0.81 0.94 1.27 1081 2205 1 +#> d_net -0.36 0.40 -1.15 -0.62 -0.37 -0.11 0.45 2188 2043 1.00 +#> d_dir 0.06 0.65 -1.24 -0.36 0.06 0.50 1.35 3068 2587 1.00 +#> d_ind -0.61 0.51 -1.62 -0.94 -0.61 -0.28 0.38 1883 2496 1.00 +#> omega 0.68 0.80 -0.91 0.15 0.67 1.20 2.27 2164 2423 1.00 +#> tau 0.86 0.19 0.56 0.72 0.83 0.96 1.30 1066 1156 1.01 +#> tau_consistency 0.84 0.19 0.55 0.71 0.82 0.94 1.29 1092 1786 1.00 #> -#> Residual deviance: 53.7 (on 50 data points) -#> pD: 44 -#> DIC: 97.8 +#> Residual deviance: 53.8 (on 50 data points) +#> pD: 44.1 +#> DIC: 97.9 #> -#> Bayesian p-value: 0.39 +#> Bayesian p-value: 0.38

The DIC of each inconsistency model is unchanged from the consistency model, no node-splits result in reduced heterogeneity standard deviation \(\tau\) compared to the consistency @@ -726,7 +726,7 @@

Node-splitting

direct estimate for this comparison.

plot(smk_nodesplit) +
   ggplot2::theme(legend.position = "bottom", legend.direct = "horizontal")
-

+

@@ -735,48 +735,48 @@

Further results

all_contrasts = TRUE.

(smk_releff <- relative_effects(smkfit, all_contrasts = TRUE))
 #>                                                  mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS
-#> d[Group counselling vs. No intervention]         1.11 0.44  0.26  0.81  1.10  1.39  2.04     2043
-#> d[Individual counselling vs. No intervention]    0.85 0.24  0.40  0.70  0.85  1.00  1.35     1159
-#> d[Self-help vs. No intervention]                 0.49 0.41 -0.29  0.23  0.49  0.75  1.30     1841
-#> d[Individual counselling vs. Group counselling] -0.26 0.42 -1.10 -0.53 -0.24  0.02  0.57     2649
-#> d[Self-help vs. Group counselling]              -0.62 0.49 -1.62 -0.94 -0.61 -0.28  0.33     2775
-#> d[Self-help vs. Individual counselling]         -0.36 0.41 -1.22 -0.63 -0.35 -0.08  0.45     2040
+#> d[Group counselling vs. No intervention]         1.11 0.44  0.27  0.81  1.09  1.40  2.01     2031
+#> d[Individual counselling vs. No intervention]    0.84 0.25  0.39  0.67  0.83  0.99  1.36     1221
+#> d[Self-help vs. No intervention]                 0.50 0.40 -0.27  0.24  0.48  0.75  1.31     1930
+#> d[Individual counselling vs. Group counselling] -0.27 0.42 -1.13 -0.54 -0.27  0.01  0.54     2773
+#> d[Self-help vs. Group counselling]              -0.61 0.50 -1.58 -0.92 -0.61 -0.29  0.37     2816
+#> d[Self-help vs. Individual counselling]         -0.34 0.41 -1.15 -0.61 -0.35 -0.08  0.47     2229
 #>                                                 Tail_ESS Rhat
-#> d[Group counselling vs. No intervention]            2365    1
-#> d[Individual counselling vs. No intervention]       1560    1
-#> d[Self-help vs. No intervention]                    2351    1
-#> d[Individual counselling vs. Group counselling]     2539    1
-#> d[Self-help vs. Group counselling]                  2857    1
-#> d[Self-help vs. Individual counselling]             2526    1
+#> d[Group counselling vs. No intervention]            2307    1
+#> d[Individual counselling vs. No intervention]       1875    1
+#> d[Self-help vs. No intervention]                    2362    1
+#> d[Individual counselling vs. Group counselling]     2754    1
+#> d[Self-help vs. Group counselling]                  2787    1
+#> d[Self-help vs. Individual counselling]             2425    1
 plot(smk_releff, ref_line = 0)
-

+

Treatment rankings, rank probabilities, and cumulative rank probabilities. We set lower_better = FALSE since a higher log odds of cessation is better (the outcome is positive).

(smk_ranks <- posterior_ranks(smkfit, lower_better = FALSE))
 #>                              mean   sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> rank[No intervention]        3.89 0.32    3   4   4   4     4     2446       NA    1
-#> rank[Group counselling]      1.37 0.63    1   1   1   2     3     3090     3067    1
-#> rank[Individual counselling] 1.92 0.63    1   2   2   2     3     2464     2870    1
-#> rank[Self-help]              2.82 0.68    1   3   3   3     4     2631       NA    1
+#> rank[No intervention]        3.90 0.31    3   4   4   4     4     2465       NA    1
+#> rank[Group counselling]      1.36 0.63    1   1   1   2     3     2834     2832    1
+#> rank[Individual counselling] 1.94 0.63    1   2   2   2     3     2409     2647    1
+#> rank[Self-help]              2.80 0.69    1   3   3   3     4     2581       NA    1
 plot(smk_ranks)

(smk_rankprobs <- posterior_rank_probs(smkfit, lower_better = FALSE))
 #>                           p_rank[1] p_rank[2] p_rank[3] p_rank[4]
-#> d[No intervention]             0.00      0.00      0.11      0.89
-#> d[Group counselling]           0.71      0.22      0.06      0.00
-#> d[Individual counselling]      0.24      0.60      0.16      0.00
-#> d[Self-help]                   0.05      0.18      0.66      0.11
+#> d[No intervention]             0.00      0.00      0.10       0.9
+#> d[Group counselling]           0.71      0.22      0.07       0.0
+#> d[Individual counselling]      0.23      0.60      0.17       0.0
+#> d[Self-help]                   0.06      0.18      0.67       0.1
 plot(smk_rankprobs)
-

+

(smk_cumrankprobs <- posterior_rank_probs(smkfit, lower_better = FALSE, cumulative = TRUE))
 #>                           p_rank[1] p_rank[2] p_rank[3] p_rank[4]
-#> d[No intervention]             0.00      0.00      0.11         1
-#> d[Group counselling]           0.71      0.93      1.00         1
-#> d[Individual counselling]      0.24      0.84      1.00         1
-#> d[Self-help]                   0.05      0.23      0.89         1
+#> d[No intervention]             0.00      0.00       0.1         1
+#> d[Group counselling]           0.71      0.93       1.0         1
+#> d[Individual counselling]      0.23      0.83       1.0         1
+#> d[Self-help]                   0.06      0.24       0.9         1
 plot(smk_cumrankprobs)
-

+

References

diff --git a/vignettes/example_statins.html b/vignettes/example_statins.html index afa59a985..7bc2a3747 100644 --- a/vignettes/example_statins.html +++ b/vignettes/example_statins.html @@ -459,15 +459,15 @@

Fixed effect meta-regression

#> post-warmup draws per chain=1000, total post-warmup draws=4000. #> #> mean se_mean sd 2.5% 25% 50% 75% -#> beta[.trtStatin:preventionSecondary] -0.21 0.00 0.11 -0.43 -0.28 -0.20 -0.13 -#> d[Statin] -0.10 0.00 0.10 -0.29 -0.17 -0.11 -0.04 -#> lp__ -7246.71 0.08 3.37 -7254.09 -7248.79 -7246.33 -7244.26 +#> beta[.trtStatin:preventionSecondary] -0.21 0.00 0.12 -0.43 -0.29 -0.21 -0.13 +#> d[Statin] -0.11 0.00 0.10 -0.30 -0.17 -0.10 -0.04 +#> lp__ -7362.70 0.09 3.40 -7370.33 -7364.79 -7362.33 -7360.23 #> 97.5% n_eff Rhat -#> beta[.trtStatin:preventionSecondary] 0.01 2413 1 -#> d[Statin] 0.09 2380 1 -#> lp__ -7241.16 1588 1 +#> beta[.trtStatin:preventionSecondary] 0.02 2549 1 +#> d[Statin] 0.09 2508 1 +#> lp__ -7357.14 1318 1 #> -#> Samples were drawn using NUTS(diag_e) at Fri Jun 16 15:56:46 2023. +#> Samples were drawn using NUTS(diag_e) at Tue Jan 9 17:59: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).
@@ -478,7 +478,7 @@

Fixed effect meta-regression

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

plot_prior_posterior(statin_fit_FE, prior = c("trt", "reg"))
-

+

Random effects meta-regression

@@ -521,17 +521,17 @@

Random effects meta-regression

#> post-warmup draws per chain=1000, total post-warmup draws=4000. #> #> mean se_mean sd 2.5% 25% 50% 75% -#> beta[.trtStatin:preventionSecondary] -0.32 0.01 0.27 -0.93 -0.45 -0.29 -0.16 -#> d[Statin] -0.06 0.01 0.22 -0.46 -0.17 -0.07 0.05 -#> lp__ -7255.85 0.17 5.29 -7266.65 -7259.26 -7255.71 -7252.18 -#> tau 0.25 0.01 0.21 0.01 0.09 0.20 0.35 +#> beta[.trtStatin:preventionSecondary] -0.30 0.01 0.26 -0.89 -0.43 -0.29 -0.15 +#> d[Statin] -0.07 0.01 0.21 -0.44 -0.17 -0.07 0.04 +#> lp__ -7374.60 0.18 5.25 -7385.64 -7378.03 -7374.25 -7370.94 +#> tau 0.24 0.01 0.20 0.01 0.09 0.19 0.33 #> 97.5% n_eff Rhat -#> beta[.trtStatin:preventionSecondary] 0.18 1088 1 -#> d[Statin] 0.44 1047 1 -#> lp__ -7245.76 949 1 -#> tau 0.79 672 1 +#> beta[.trtStatin:preventionSecondary] 0.17 1383 1 +#> d[Statin] 0.38 1372 1 +#> lp__ -7365.16 820 1 +#> tau 0.75 687 1 #> -#> Samples were drawn using NUTS(diag_e) at Fri Jun 16 15:57:12 2023. +#> Samples were drawn using NUTS(diag_e) at Tue Jan 9 18:00:13 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).
@@ -543,7 +543,7 @@

Random effects meta-regression

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

plot_prior_posterior(statin_fit_RE, prior = c("trt", "reg", "het"))
-

+

@@ -551,12 +551,12 @@

Model fit and comparison

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

(statin_dic_FE <- dic(statin_fit_FE))
 #> Residual deviance: 46 (on 38 data points)
-#>                pD: 21.8
-#>               DIC: 67.8
+#> pD: 21.7 +#> DIC: 67.7
(statin_dic_RE <- dic(statin_fit_RE))
-#> Residual deviance: 42.6 (on 38 data points)
-#>                pD: 25.3
-#>               DIC: 67.9
+#> Residual deviance: 42.8 (on 38 data points) +#> pD: 25.2 +#> DIC: 68

The DIC is very similar between FE and RE models, so we might choose the FE model based on parsimony. The residual deviance statistics are larger than the number of data points, suggesting that some data points @@ -564,9 +564,9 @@

Model fit and comparison

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

plot(statin_dic_FE)
-

+

plot(statin_dic_RE)
-

+

There are a number of studies which are not fit well under either model, having posterior mean residual deviance contributions greater than 1, and should be investigated to see if there are further @@ -592,8 +592,8 @@

Further results

#> prevention #> Primary #> -#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> d[Primary: Statin] -0.1 0.1 -0.29 -0.17 -0.11 -0.04 0.09 2379 2990 1 +#> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat +#> d[Primary: Statin] -0.11 0.1 -0.3 -0.17 -0.1 -0.04 0.09 2512 2798 1 #> #> -------------------------------------------------------------- Study: Secondary ---- #> @@ -602,19 +602,19 @@

Further results

#> Secondary #> #> mean sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat -#> d[Secondary: Statin] -0.31 0.05 -0.42 -0.35 -0.31 -0.28 -0.21 4140 2923 1 +#> d[Secondary: Statin] -0.31 0.05 -0.42 -0.35 -0.31 -0.28 -0.21 4740 3086 1

The plot() method may be used to visually compare these estimates:

plot(statin_releff_FE, 
      ref_line = 0)
-

+

Model parameters may be plotted with the corresponding plot() method:

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

+

Whilst the 95% Credible Interval includes zero, there is a suggestion that statins are more effective for secondary prevention.

diff --git a/vignettes/example_thrombolytics.html b/vignettes/example_thrombolytics.html index ded939403..4283aef4f 100644 --- a/vignettes/example_thrombolytics.html +++ b/vignettes/example_thrombolytics.html @@ -452,17 +452,17 @@

Fixed effects NMA

#> 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 2879 1 -#> d[ASPAC] 0.02 0.00 0.04 -0.05 -0.01 0.02 0.04 0.08 4992 1 -#> d[PTCA] -0.48 0.00 0.10 -0.67 -0.54 -0.48 -0.41 -0.28 4761 1 -#> d[r-PA] -0.12 0.00 0.06 -0.24 -0.16 -0.12 -0.08 0.00 3743 1 -#> d[SK + t-PA] -0.05 0.00 0.05 -0.14 -0.08 -0.05 -0.02 0.04 5199 1 -#> d[t-PA] 0.00 0.00 0.03 -0.06 -0.02 0.00 0.02 0.06 4588 1 -#> d[TNK] -0.17 0.00 0.08 -0.33 -0.23 -0.17 -0.11 -0.02 3345 1 -#> d[UK] -0.20 0.00 0.22 -0.63 -0.35 -0.20 -0.06 0.23 5340 1 -#> lp__ -43043.09 0.15 5.43 -43054.41 -43046.55 -43042.81 -43039.24 -43033.33 1353 1 +#> 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 Fri Jun 16 15:42:59 2023. +#> 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). @@ -473,16 +473,16 @@

Fixed effects NMA

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_consistency <- dic(thrombo_fit))
-#> Residual deviance: 106.4 (on 102 data points)
-#>                pD: 59.2
-#>               DIC: 165.5
+#> 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.

@@ -520,52 +520,52 @@

Unrelated mean effects model

#> #> mean se_mean sd 2.5% 25% 50% 75% 97.5% #> d[Acc t-PA vs. SK] -0.16 0.00 0.05 -0.25 -0.19 -0.16 -0.13 -0.06 -#> d[ASPAC vs. SK] 0.00 0.00 0.04 -0.07 -0.02 0.00 0.03 0.08 -#> d[PTCA vs. SK] -0.66 0.00 0.18 -1.03 -0.78 -0.66 -0.54 -0.31 +#> d[ASPAC vs. SK] 0.01 0.00 0.04 -0.07 -0.02 0.01 0.03 0.08 +#> d[PTCA vs. SK] -0.66 0.00 0.19 -1.05 -0.79 -0.66 -0.53 -0.30 #> d[r-PA vs. SK] -0.06 0.00 0.09 -0.23 -0.12 -0.06 0.00 0.11 -#> d[SK + t-PA vs. SK] -0.04 0.00 0.05 -0.13 -0.08 -0.04 -0.01 0.05 -#> d[t-PA vs. SK] 0.00 0.00 0.03 -0.06 -0.02 -0.01 0.02 0.06 -#> d[UK vs. SK] -0.36 0.01 0.51 -1.42 -0.70 -0.36 -0.02 0.60 -#> d[ASPAC vs. Acc t-PA] 1.41 0.01 0.42 0.61 1.12 1.39 1.68 2.27 -#> d[PTCA vs. Acc t-PA] -0.21 0.00 0.12 -0.45 -0.29 -0.21 -0.13 0.03 -#> d[r-PA vs. Acc t-PA] 0.02 0.00 0.07 -0.11 -0.02 0.02 0.06 0.15 -#> d[TNK vs. Acc t-PA] 0.01 0.00 0.07 -0.12 -0.04 0.01 0.05 0.14 -#> d[UK vs. Acc t-PA] 0.15 0.01 0.36 -0.54 -0.09 0.14 0.38 0.86 -#> d[t-PA vs. ASPAC] 0.30 0.01 0.36 -0.40 0.06 0.29 0.53 1.04 -#> d[t-PA vs. PTCA] 0.54 0.01 0.43 -0.27 0.25 0.54 0.83 1.37 -#> d[UK vs. t-PA] -0.30 0.01 0.35 -1.00 -0.54 -0.29 -0.07 0.37 -#> lp__ -43039.63 0.14 5.80 -43051.66 -43043.33 -43039.28 -43035.54 -43029.31 +#> d[SK + t-PA vs. SK] -0.04 0.00 0.05 -0.13 -0.07 -0.04 -0.01 0.05 +#> d[t-PA vs. SK] 0.00 0.00 0.03 -0.06 -0.02 0.00 0.02 0.06 +#> d[UK vs. SK] -0.38 0.01 0.52 -1.46 -0.71 -0.36 -0.03 0.61 +#> d[ASPAC vs. Acc t-PA] 1.40 0.01 0.41 0.63 1.13 1.39 1.66 2.26 +#> d[PTCA vs. Acc t-PA] -0.21 0.00 0.12 -0.44 -0.29 -0.21 -0.13 0.00 +#> d[r-PA vs. Acc t-PA] 0.02 0.00 0.07 -0.11 -0.03 0.02 0.06 0.15 +#> d[TNK vs. Acc t-PA] 0.01 0.00 0.06 -0.11 -0.03 0.00 0.05 0.13 +#> d[UK vs. Acc t-PA] 0.15 0.01 0.35 -0.52 -0.09 0.14 0.38 0.86 +#> d[t-PA vs. ASPAC] 0.29 0.01 0.36 -0.41 0.04 0.29 0.53 0.99 +#> d[t-PA vs. PTCA] 0.55 0.01 0.42 -0.26 0.26 0.55 0.83 1.39 +#> d[UK vs. t-PA] -0.30 0.00 0.35 -0.99 -0.53 -0.30 -0.06 0.35 +#> lp__ -43398.57 0.15 5.66 -43410.36 -43402.09 -43398.22 -43394.67 -43388.36 #> n_eff Rhat -#> d[Acc t-PA vs. SK] 7201 1 -#> d[ASPAC vs. SK] 5056 1 -#> d[PTCA vs. SK] 5029 1 -#> d[r-PA vs. SK] 4507 1 -#> d[SK + t-PA vs. SK] 5854 1 -#> d[t-PA vs. SK] 4203 1 -#> d[UK vs. SK] 5167 1 -#> d[ASPAC vs. Acc t-PA] 3680 1 -#> d[PTCA vs. Acc t-PA] 4824 1 -#> d[r-PA vs. Acc t-PA] 5225 1 -#> d[TNK vs. Acc t-PA] 5350 1 -#> d[UK vs. Acc t-PA] 4355 1 -#> d[t-PA vs. ASPAC] 3901 1 -#> d[t-PA vs. PTCA] 4013 1 -#> d[UK vs. t-PA] 4903 1 -#> lp__ 1605 1 +#> d[Acc t-PA vs. SK] 6371 1 +#> d[ASPAC vs. SK] 5128 1 +#> d[PTCA vs. SK] 6178 1 +#> d[r-PA vs. SK] 5639 1 +#> d[SK + t-PA vs. SK] 6335 1 +#> d[t-PA vs. SK] 4381 1 +#> d[UK vs. SK] 6049 1 +#> d[ASPAC vs. Acc t-PA] 3523 1 +#> d[PTCA vs. Acc t-PA] 5434 1 +#> d[r-PA vs. Acc t-PA] 4181 1 +#> d[TNK vs. Acc t-PA] 5208 1 +#> d[UK vs. Acc t-PA] 4806 1 +#> d[t-PA vs. ASPAC] 3952 1 +#> d[t-PA vs. PTCA] 4330 1 +#> d[UK vs. t-PA] 5413 1 +#> lp__ 1501 1 #> -#> Samples were drawn using NUTS(diag_e) at Fri Jun 16 15:43:25 2023. +#> Samples were drawn using NUTS(diag_e) at Tue Jan 9 17:52:14 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).

Comparing the model fit statistics

dic_consistency
-#> Residual deviance: 106.4 (on 102 data points)
-#>                pD: 59.2
-#>               DIC: 165.5
+#> Residual deviance: 105.9 (on 102 data points)
+#>                pD: 58.7
+#>               DIC: 164.6
 (dic_ume <- dic(thrombo_fit_ume))
-#> Residual deviance: 99.4 (on 102 data points)
-#>                pD: 65.7
-#>               DIC: 165.1
+#> Residual deviance: 99.2 (on 102 data points) +#> pD: 65.4 +#> DIC: 164.6

Whilst the UME model fits the data better, having a lower residual deviance, the additional parameters in the UME model mean that the DIC is very similar between both models. However, it is also important to @@ -574,7 +574,7 @@

Unrelated mean effects model

nma_dic objects produced by the dic() function to the plot() method produces this dev-dev plot:

plot(dic_consistency, dic_ume, show_uncertainty = FALSE)
-

+

The four points lying in the lower right corner of the plot have much lower posterior mean residual deviance under the UME model, indicating that these data are potentially inconsistent. These points correspond to @@ -645,198 +645,198 @@

Node-splitting

#> ---------------------------------------------------- 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 1975 2938 1 -#> d_dir -0.16 0.05 -0.25 -0.19 -0.16 -0.12 -0.06 3832 3672 1 -#> d_ind -0.24 0.09 -0.42 -0.31 -0.24 -0.18 -0.07 564 1278 1 -#> omega 0.09 0.10 -0.11 0.01 0.08 0.16 0.29 692 1665 1 +#> 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 (on 102 data points) -#> pD: 59.6 -#> DIC: 165.6 +#> Residual deviance: 106.3 (on 102 data points) +#> pD: 59.8 +#> DIC: 166.2 #> -#> Bayesian p-value: 0.42 +#> 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.06 -0.01 0.02 0.04 0.09 5295 3152 1 -#> d_dir 0.01 0.04 -0.06 -0.02 0.01 0.03 0.08 4497 3337 1 -#> d_ind 0.43 0.25 -0.06 0.25 0.42 0.59 0.92 2707 2773 1 -#> omega -0.42 0.25 -0.92 -0.59 -0.41 -0.25 0.07 2749 3015 1 +#> 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.1 (on 102 data points) -#> pD: 59.6 -#> DIC: 163.7 +#> Residual deviance: 104.3 (on 102 data points) +#> pD: 59.8 +#> DIC: 164.1 #> -#> Bayesian p-value: 0.098 +#> 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.48 0.10 -0.68 -0.55 -0.48 -0.41 -0.28 3757 3583 1 -#> d_dir -0.66 0.18 -1.03 -0.79 -0.66 -0.54 -0.30 5717 3314 1 -#> d_ind -0.40 0.12 -0.64 -0.48 -0.40 -0.31 -0.17 3432 2963 1 -#> omega -0.27 0.22 -0.69 -0.41 -0.26 -0.11 0.16 4536 3066 1 +#> 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.5 (on 102 data points) -#> pD: 59.7 -#> DIC: 165.2 +#> 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.00 4588 3237 1 -#> d_dir -0.06 0.09 -0.24 -0.12 -0.06 0.00 0.11 5063 3327 1 -#> d_ind -0.18 0.08 -0.33 -0.23 -0.18 -0.12 -0.02 2097 2464 1 -#> omega 0.12 0.12 -0.12 0.04 0.11 0.20 0.35 2623 2886 1 +#> 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.9 (on 102 data points) -#> pD: 59.6 -#> DIC: 165.5 +#> Residual deviance: 105.5 (on 102 data points) +#> pD: 59.3 +#> DIC: 164.8 #> -#> Bayesian p-value: 0.32 +#> 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.00 0.03 -0.06 -0.02 0.00 0.02 0.06 4110 3352 1 -#> d_dir 0.00 0.03 -0.06 -0.02 0.00 0.02 0.06 4400 3582 1 -#> d_ind 0.19 0.23 -0.26 0.03 0.18 0.35 0.66 1641 2370 1 -#> omega -0.19 0.24 -0.66 -0.35 -0.18 -0.03 0.26 1642 2185 1 +#> 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.8 +#> pD: 59.7 #> DIC: 166 #> -#> Bayesian p-value: 0.43 +#> 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.64 -0.35 -0.21 -0.05 0.23 4462 3395 1 -#> d_dir -0.37 0.53 -1.42 -0.72 -0.37 0.00 0.64 6208 3358 1 -#> d_ind -0.17 0.25 -0.65 -0.33 -0.17 0.00 0.33 4494 3590 1 -#> omega -0.20 0.58 -1.36 -0.59 -0.20 0.19 0.88 5390 3122 1 +#> 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: 106.9 (on 102 data points) -#> pD: 59.8 -#> DIC: 166.7 +#> Residual deviance: 107.1 (on 102 data points) +#> pD: 60 +#> DIC: 167 #> -#> Bayesian p-value: 0.74 +#> 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.30 3042 3509 1 -#> d_dir 1.40 0.41 0.62 1.12 1.38 1.66 2.24 3641 2650 1 -#> d_ind 0.17 0.06 0.05 0.13 0.17 0.21 0.28 2773 3091 1 -#> omega 1.23 0.42 0.44 0.94 1.21 1.50 2.06 3469 2687 1 +#> 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: 96.3 (on 102 data points) -#> pD: 59.2 -#> DIC: 155.4 +#> 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.37 -0.30 -0.23 -0.11 5419 3459 1 -#> d_dir -0.21 0.12 -0.45 -0.30 -0.21 -0.13 0.03 3989 3763 1 -#> d_ind -0.48 0.17 -0.82 -0.59 -0.47 -0.36 -0.14 3142 2925 1 -#> omega 0.26 0.21 -0.13 0.12 0.26 0.40 0.69 2748 3329 1 +#> 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: 106 (on 102 data points) -#> pD: 60.3 -#> DIC: 166.2 +#> Residual deviance: 105.4 (on 102 data points) +#> pD: 59.7 +#> DIC: 165.2 #> -#> Bayesian p-value: 0.19 +#> 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.06 0.06 -0.06 0.02 0.05 0.09 0.17 5435 3393 1 -#> d_dir 0.02 0.07 -0.11 -0.02 0.02 0.07 0.15 4620 3496 1 -#> d_ind 0.14 0.10 -0.06 0.07 0.14 0.20 0.33 2172 2572 1 -#> omega -0.11 0.12 -0.36 -0.20 -0.11 -0.03 0.13 2132 2530 1 +#> 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.9 (on 102 data points) -#> pD: 59.7 -#> DIC: 165.6 +#> 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.06 0.02 0.09 0.13 0.17 0.24 4380 3014 1 -#> d_dir 0.13 0.05 0.02 0.09 0.13 0.16 0.23 3520 2744 1 -#> d_ind 0.61 0.68 -0.71 0.15 0.60 1.06 1.97 3028 2819 1 -#> omega -0.48 0.68 -1.84 -0.94 -0.48 -0.03 0.84 3010 2524 1 +#> 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.6 (on 102 data points) -#> pD: 59.9 -#> DIC: 166.5 +#> Residual deviance: 106.4 (on 102 data points) +#> pD: 59.7 +#> DIC: 166.2 #> -#> Bayesian p-value: 0.48 +#> 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.03 0.22 -0.46 -0.18 -0.03 0.13 0.41 4789 3306 1 -#> d_dir 0.15 0.35 -0.53 -0.09 0.15 0.38 0.85 4453 3451 1 -#> d_ind -0.14 0.29 -0.71 -0.34 -0.14 0.05 0.40 4301 3182 1 -#> omega 0.29 0.46 -0.57 -0.02 0.29 0.61 1.19 3343 3082 1 +#> 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: 107.1 (on 102 data points) -#> pD: 60.3 -#> DIC: 167.3 +#> 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.08 -0.04 -0.01 0.01 0.06 6469 2959 1 -#> d_dir -0.02 0.04 -0.10 -0.05 -0.02 0.00 0.05 4277 3165 1 -#> d_ind 0.03 0.06 -0.10 -0.01 0.03 0.07 0.15 3278 2993 1 -#> omega -0.05 0.06 -0.17 -0.09 -0.05 -0.01 0.07 3229 3261 1 +#> 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.42 +#> 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.28 0.41 0.48 0.55 0.69 3960 3195 1 -#> d_dir 0.54 0.41 -0.24 0.26 0.53 0.81 1.37 5194 3544 1 -#> d_ind 0.48 0.11 0.27 0.40 0.47 0.55 0.69 3811 3329 1 -#> omega 0.06 0.43 -0.74 -0.23 0.06 0.35 0.92 4508 3412 1 +#> 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: 106.8 (on 102 data points) -#> pD: 59.6 -#> DIC: 166.5 +#> Residual deviance: 107.1 (on 102 data points) +#> pD: 59.9 +#> DIC: 167 #> -#> Bayesian p-value: 0.89 +#> 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.21 0.22 -0.64 -0.36 -0.21 -0.06 0.23 4589 3412 1 -#> d_dir -0.30 0.35 -0.99 -0.53 -0.29 -0.06 0.37 5020 3240 1 -#> d_ind -0.14 0.29 -0.71 -0.33 -0.14 0.06 0.43 3953 3210 1 -#> omega -0.16 0.45 -1.06 -0.47 -0.16 0.15 0.73 4008 3779 1 +#> 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: 167 +#> DIC: 166.9 #> -#> Bayesian p-value: 0.72 +#> 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 @@ -847,7 +847,7 @@

Node-splitting

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 @@ -856,7 +856,7 @@

Node-splitting

plot(thrombo_nodesplit, pars = "omega", stat = "halfeye", ref_line = 0) +
   ggplot2::aes(y = comparison) +
   ggplot2::facet_null()
-

+

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 @@ -870,93 +870,93 @@

Further results

all_contrasts = TRUE.

(thrombo_releff <- relative_effects(thrombo_fit, all_contrasts = TRUE))
 #>                            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     2894     3135    1
-#> d[ASPAC vs. SK]            0.02 0.04 -0.05 -0.01  0.02  0.04  0.08     4955     3613    1
-#> d[PTCA vs. SK]            -0.48 0.10 -0.67 -0.54 -0.48 -0.41 -0.28     4782     3440    1
-#> d[r-PA vs. SK]            -0.12 0.06 -0.24 -0.16 -0.12 -0.08  0.00     3766     3378    1
-#> d[SK + t-PA vs. SK]       -0.05 0.05 -0.14 -0.08 -0.05 -0.02  0.04     5220     3142    1
-#> d[t-PA vs. SK]             0.00 0.03 -0.06 -0.02  0.00  0.02  0.06     4632     3578    1
-#> d[TNK vs. SK]             -0.17 0.08 -0.33 -0.23 -0.17 -0.11 -0.02     3493     3037    1
-#> d[UK vs. SK]              -0.20 0.22 -0.63 -0.35 -0.20 -0.06  0.23     5348     3652    1
-#> d[ASPAC vs. Acc t-PA]      0.19 0.06  0.08  0.15  0.19  0.23  0.30     3489     3081    1
-#> d[PTCA vs. Acc t-PA]      -0.30 0.10 -0.50 -0.37 -0.30 -0.23 -0.10     6087     3391    1
-#> d[r-PA vs. Acc t-PA]       0.05 0.05 -0.05  0.02  0.05  0.09  0.16     5661     3446    1
-#> d[SK + t-PA vs. Acc t-PA]  0.13 0.05  0.02  0.09  0.13  0.16  0.23     6219     3655    1
-#> d[t-PA vs. Acc t-PA]       0.18 0.05  0.08  0.14  0.18  0.21  0.28     3346     3284    1
-#> d[TNK vs. Acc t-PA]        0.01 0.07 -0.12 -0.04  0.00  0.05  0.13     4998     3696    1
-#> d[UK vs. Acc t-PA]        -0.02 0.22 -0.46 -0.17 -0.02  0.12  0.41     5393     3587    1
-#> d[PTCA vs. ASPAC]         -0.49 0.11 -0.70 -0.57 -0.49 -0.42 -0.28     4861     3287    1
-#> d[r-PA vs. ASPAC]         -0.14 0.07 -0.27 -0.18 -0.14 -0.09  0.00     4126     3008    1
-#> d[SK + t-PA vs. ASPAC]    -0.06 0.06 -0.18 -0.10 -0.06 -0.03  0.05     5063     3310    1
-#> d[t-PA vs. ASPAC]         -0.01 0.04 -0.09 -0.04 -0.01  0.01  0.06     6386     3419    1
-#> d[TNK vs. ASPAC]          -0.19 0.09 -0.36 -0.24 -0.19 -0.13 -0.02     3847     2815    1
-#> d[UK vs. ASPAC]           -0.22 0.22 -0.65 -0.36 -0.22 -0.07  0.21     5459     3775    1
-#> d[r-PA vs. PTCA]           0.35 0.11  0.14  0.28  0.35  0.43  0.58     6068     3357    1
-#> d[SK + t-PA vs. PTCA]      0.43 0.11  0.21  0.35  0.43  0.50  0.64     5857     3328    1
-#> d[t-PA vs. PTCA]           0.48 0.11  0.27  0.41  0.48  0.55  0.69     4819     3411    1
-#> d[TNK vs. PTCA]            0.31 0.12  0.07  0.22  0.30  0.39  0.54     6912     2622    1
-#> d[UK vs. PTCA]             0.28 0.24 -0.19  0.12  0.28  0.44  0.74     5376     3815    1
-#> d[SK + t-PA vs. r-PA]      0.07 0.07 -0.06  0.03  0.07  0.12  0.21     6230     3317    1
-#> d[t-PA vs. r-PA]           0.12 0.07 -0.01  0.08  0.13  0.17  0.25     4073     3417    1
-#> d[TNK vs. r-PA]           -0.05 0.09 -0.22 -0.11 -0.05  0.01  0.12     6713     3246    1
-#> d[UK vs. r-PA]            -0.08 0.22 -0.52 -0.22 -0.08  0.07  0.37     5358     3571    1
-#> d[t-PA vs. SK + t-PA]      0.05 0.05 -0.05  0.01  0.05  0.09  0.16     5078     3305    1
-#> d[TNK vs. SK + t-PA]      -0.12 0.09 -0.29 -0.18 -0.12 -0.06  0.05     5838     2758    1
-#> d[UK vs. SK + t-PA]       -0.15 0.22 -0.59 -0.30 -0.15  0.00  0.28     5473     3738    1
-#> d[TNK vs. t-PA]           -0.17 0.08 -0.34 -0.23 -0.17 -0.12 -0.01     3693     2872    1
-#> d[UK vs. t-PA]            -0.20 0.22 -0.64 -0.35 -0.20 -0.06  0.23     5502     3655    1
-#> d[UK vs. TNK]             -0.03 0.23 -0.49 -0.18 -0.03  0.12  0.43     5327     3585    1
+#> 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.

(thrombo_ranks <- posterior_ranks(thrombo_fit))
 #>                 mean   sd 2.5% 25% 50% 75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> rank[SK]        7.47 0.97    6   7   7   8     9     3552       NA    1
-#> rank[Acc t-PA]  3.19 0.80    2   3   3   4     5     4144     3648    1
-#> rank[ASPAC]     7.97 1.14    5   7   8   9     9     4905       NA    1
-#> rank[PTCA]      1.13 0.36    1   1   1   1     2     3843     3838    1
-#> rank[r-PA]      4.41 1.16    2   4   4   5     7     4675     3579    1
-#> rank[SK + t-PA] 5.97 1.22    4   5   6   6     9     4448       NA    1
-#> rank[t-PA]      7.48 1.10    5   7   8   8     9     4977       NA    1
-#> rank[TNK]       3.49 1.30    2   3   3   4     6     4315     2780    1
-#> rank[UK]        3.88 2.67    1   2   3   5     9     4966       NA    1
+#> 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)
-

+

(thrombo_rankprobs <- posterior_rank_probs(thrombo_fit))
 #>              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.13      0.39      0.31
-#> d[Acc t-PA]       0.00      0.20      0.45      0.31      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.26
-#> d[PTCA]           0.87      0.13      0.00      0.00      0.00      0.00      0.00      0.00
-#> d[r-PA]           0.00      0.06      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.26      0.45      0.10      0.07
-#> d[t-PA]           0.00      0.00      0.00      0.01      0.03      0.15      0.29      0.33
-#> d[TNK]            0.00      0.25      0.32      0.22      0.15      0.04      0.01      0.01
-#> d[UK]             0.12      0.37      0.07      0.08      0.10      0.06      0.02      0.02
+#> 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.16
+#> d[SK]             0.15
 #> d[Acc t-PA]       0.00
-#> d[ASPAC]          0.43
+#> d[ASPAC]          0.44
 #> d[PTCA]           0.00
 #> d[r-PA]           0.01
-#> d[SK + t-PA]      0.05
-#> d[t-PA]           0.19
-#> d[TNK]            0.01
+#> d[SK + t-PA]      0.06
+#> d[t-PA]           0.21
+#> d[TNK]            0.00
 #> d[UK]             0.14
 plot(thrombo_rankprobs)
-

+

(thrombo_cumrankprobs <- posterior_rank_probs(thrombo_fit, cumulative = TRUE))
 #>              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.53      0.84
-#> d[Acc t-PA]       0.00      0.20      0.65      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.30      0.57
+#> 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.06      0.19      0.51      0.89      0.97      0.99      0.99
-#> d[SK + t-PA]      0.00      0.00      0.01      0.07      0.33      0.78      0.88      0.95
-#> d[t-PA]           0.00      0.00      0.00      0.01      0.04      0.19      0.48      0.81
-#> d[TNK]            0.00      0.25      0.57      0.79      0.94      0.98      0.99      0.99
-#> d[UK]             0.12      0.50      0.57      0.66      0.76      0.81      0.83      0.86
+#> 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
@@ -968,7 +968,7 @@ 

Further results

#> d[TNK] 1 #> d[UK] 1 plot(thrombo_cumrankprobs)
-

+

References

diff --git a/vignettes/example_transfusion.html b/vignettes/example_transfusion.html index 087f06be5..8bb26bdb6 100644 --- a/vignettes/example_transfusion.html +++ b/vignettes/example_transfusion.html @@ -443,43 +443,39 @@

Random effects meta-analysis with non-informative heterogeneity prior_intercept = normal(scale = 100), prior_trt = normal(scale = 100), prior_het = half_normal(scale = 5))

-
#> Warning: There were 2 divergent transitions after warmup. See
-#> https://mc-stan.org/misc/warnings.html#divergent-transitions-after-warmup
-#> to find out why this is a problem and how to eliminate them.
-#> Warning: Examine the pairs() plot to diagnose sampling problems

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

-
tr_fit_RE_noninf
-#> 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%     75%   97.5% n_eff Rhat
-#> d[Transfusion]   -1.24    0.05 1.15   -3.96   -1.72   -1.11   -0.58    0.65   484 1.01
-#> lp__           -134.31    0.09 3.06 -141.16 -136.14 -133.93 -132.12 -129.34  1231 1.00
-#> tau               1.93    0.03 1.09    0.56    1.19    1.66    2.41    4.81  1035 1.00
-#> 
-#> Samples were drawn using NUTS(diag_e) at Fri Jun 16 15:54:26 2023.
-#> 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).
+
tr_fit_RE_noninf
+#> 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%     75%   97.5% n_eff Rhat
+#> d[Transfusion]   -1.12    0.03 0.98   -3.33   -1.65   -1.07   -0.55    0.67  1331    1
+#> lp__           -175.58    0.10 3.17 -182.65 -177.47 -175.23 -173.33 -170.44  1004    1
+#> tau               1.87    0.03 1.03    0.55    1.16    1.64    2.29    4.57  1373    1
+#> 
+#> Samples were drawn using NUTS(diag_e) at Tue Jan  9 17:58:39 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(tr_fit_RE_noninf, pars = c("d", "mu", "delta"))
+
# Not run
+print(tr_fit_RE_noninf, pars = c("d", "mu", "delta"))

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

-
plot_prior_posterior(tr_fit_RE_noninf, prior = "het")
-

+
plot_prior_posterior(tr_fit_RE_noninf, prior = "het")
+

The posterior distribution for the heterogeneity variance \(\tau^2\) is summarised by

-
noninf_tau <- as.array(tr_fit_RE_noninf, pars = "tau")
-noninf_tausq <- noninf_tau^2
-names(noninf_tausq) <- "tausq"
-summary(noninf_tausq)
-#>       mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> tausq 4.93 6.61 0.32 1.43 2.77 5.81 23.09     1286      834    1
+
noninf_tau <- as.array(tr_fit_RE_noninf, pars = "tau")
+noninf_tausq <- noninf_tau^2
+names(noninf_tausq) <- "tausq"
+summary(noninf_tausq)
+#>       mean  sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> tausq 4.55 5.9  0.3 1.35 2.68 5.25 20.91     1252     1957    1

Random effects meta-analysis with informative heterogeneity @@ -489,58 +485,58 @@

Random effects meta-analysis with informative heterogeneity 1.51^2)\) prior for the heterogeneity variance \(\tau^2\). We can examine the range of parameter values implied by this prior distribution with the summary() method:

-
summary(log_normal(-3.93, 1.51))
-#> A log-Normal prior distribution: location = -3.93, scale = 1.51.
-#> 50% of the prior density lies between 0.01 and 0.05.
-#> 95% of the prior density lies between 0 and 0.38.
+
summary(log_normal(-3.93, 1.51))
+#> A log-Normal prior distribution: location = -3.93, scale = 1.51.
+#> 50% of the prior density lies between 0.01 and 0.05.
+#> 95% of the prior density lies between 0 and 0.38.

Fitting the RE model, we specify the log_normal prior distribution in the prior_het argument, and set prior_het_type = "var" to indicate that this prior distribution is on the variance scale (instead of the standard deviation, the default).

-
tr_fit_RE_inf <- nma(tr_net, 
-                     trt_effects = "random",
-                     prior_intercept = normal(scale = 100),
-                     prior_trt = normal(scale = 100),
-                     prior_het = log_normal(-3.93, 1.51),
-                     prior_het_type = "var")
+
tr_fit_RE_inf <- nma(tr_net, 
+                     trt_effects = "random",
+                     prior_intercept = normal(scale = 100),
+                     prior_trt = normal(scale = 100),
+                     prior_het = log_normal(-3.93, 1.51),
+                     prior_het_type = "var")

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

-
tr_fit_RE_inf
-#> 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%     75%   97.5% n_eff Rhat
-#> d[Transfusion]   -0.77    0.01 0.44   -1.75   -1.02   -0.74   -0.48    0.00  1817    1
-#> lp__           -141.10    0.07 2.80 -147.30 -142.85 -140.80 -139.08 -136.60  1454    1
-#> tau               0.49    0.01 0.35    0.05    0.21    0.43    0.68    1.34  1264    1
-#> 
-#> Samples were drawn using NUTS(diag_e) at Fri Jun 16 15:54:38 2023.
-#> 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).
+
tr_fit_RE_inf
+#> 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%     75%   97.5% n_eff Rhat
+#> d[Transfusion]   -0.77    0.01 0.44   -1.73   -1.03   -0.75   -0.48    0.03  1572    1
+#> lp__           -180.21    0.07 2.86 -186.58 -181.99 -179.88 -178.17 -175.60  1601    1
+#> tau               0.49    0.01 0.35    0.05    0.21    0.42    0.68    1.30  1449    1
+#> 
+#> Samples were drawn using NUTS(diag_e) at Tue Jan  9 17:58:47 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(tr_fit_RE_inf, pars = c("d", "mu", "delta"))
+
# Not run
+print(tr_fit_RE_inf, pars = c("d", "mu", "delta"))

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

-
plot_prior_posterior(tr_fit_RE_inf, prior = "het")
-

+
plot_prior_posterior(tr_fit_RE_inf, prior = "het")
+

Note: The heterogeneity variance \(\tau^2\) is plotted here since the prior was specified on \(\tau^2\).

The posterior distribution for the heterogeneity variance \(\tau^2\) is summarised by

-
inf_tau <- as.array(tr_fit_RE_inf, pars = "tau")
-inf_tausq <- inf_tau^2
-names(inf_tausq) <- "tausq"
-summary(inf_tausq)
-#>       mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
-#> tausq 0.36 0.51    0 0.04 0.18 0.47  1.79     1187     2369    1
+
inf_tau <- as.array(tr_fit_RE_inf, pars = "tau")
+inf_tausq <- inf_tau^2
+names(inf_tausq) <- "tausq"
+summary(inf_tausq)
+#>       mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS Rhat
+#> tausq 0.36 0.56    0 0.04 0.18 0.47   1.7     1324     2629    1

From 5592c63129f940bfd30d7c1c2d31f7c54a53e232 Mon Sep 17 00:00:00 2001 From: David Phillippo Date: Wed, 10 Jan 2024 09:24:27 +0000 Subject: [PATCH 8/8] Update news, bump dev version --- DESCRIPTION | 2 +- NEWS.md | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 58a926901..aa59507dd 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: multinma Title: Bayesian Network Meta-Analysis of Individual and Aggregate Data -Version: 0.5.1.9006 +Version: 0.5.1.9007 Authors@R: person(given = c("David", "M."), family = "Phillippo", diff --git a/NEWS.md b/NEWS.md index baff999db..528f0ffe0 100644 --- a/NEWS.md +++ b/NEWS.md @@ -72,6 +72,8 @@ a data frame of layout coordinates) now works as expected when `nudge > 0`. * Fix: Documentation corrections (PR #24). * Fix: Added missing `as.tibble.stan_nma()` and `as_tibble.stan_nma()` methods, to complement the existing `as.data.frame.stan_nma()`. +* Fix: Bug in ordered multinomial models where data in studies with missing +categories could be assigned the wrong category (#28). # multinma 0.5.1