Skip to contents

Generate (population-average) relative treatment effects. If a ML-NMR or meta-regression model was fitted, these are specific to each study population.

Usage

relative_effects(
  x,
  newdata = NULL,
  study = NULL,
  all_contrasts = FALSE,
  trt_ref = NULL,
  probs = c(0.025, 0.25, 0.5, 0.75, 0.975),
  predictive_distribution = FALSE,
  summary = TRUE
)

Arguments

x

A stan_nma object created by nma()

newdata

Only used if a regression model is fitted. A data frame of study details, one row per study, giving the covariate values at which to produce relative effects. Column names must match variables in the regression model. If NULL, relative effects are produced for all studies in the network.

study

Column of newdata which specifies study names, otherwise studies will be labelled by row number.

all_contrasts

Logical, generate estimates for all contrasts (TRUE), or just the "basic" contrasts against the network reference treatment (FALSE)? Default FALSE.

trt_ref

Reference treatment to construct relative effects against, if all_contrasts = FALSE. By default, relative effects will be against the network reference treatment. Coerced to character string.

probs

Numeric vector of quantiles of interest to present in computed summary, default c(0.025, 0.25, 0.5, 0.75, 0.975)

predictive_distribution

Logical, when a random effects model has been fitted, should the predictive distribution for relative effects in a new study be returned? Default FALSE.

summary

Logical, calculate posterior summaries? Default TRUE.

Value

A nma_summary object if summary = TRUE, otherwise a list containing a 3D MCMC array of samples and (for regression models) a data frame of study information.

See also

plot.nma_summary() for plotting the relative effects.

Examples

## Smoking cessation
# \donttest{
# Run smoking RE NMA example if not already available
if (!exists("smk_fit_RE")) example("example_smk_re", run.donttest = TRUE)
# }
# \donttest{
# Produce relative effects
smk_releff_RE <- relative_effects(smk_fit_RE)
smk_releff_RE
#>                           mean   sd  2.5%  25%  50%  75% 97.5% Bulk_ESS
#> d[Group counselling]      1.11 0.44  0.28 0.81 1.10 1.39  1.99     2276
#> d[Individual counselling] 0.85 0.24  0.38 0.69 0.84 1.00  1.34     1454
#> d[Self-help]              0.48 0.40 -0.29 0.23 0.48 0.74  1.24     2017
#>                           Tail_ESS Rhat
#> d[Group counselling]          2783    1
#> d[Individual counselling]     2018    1
#> d[Self-help]                  2344    1
plot(smk_releff_RE, ref_line = 0)


# Relative effects for all pairwise comparisons
relative_effects(smk_fit_RE, all_contrasts = TRUE)
#>                                                  mean   sd  2.5%   25%   50%
#> d[Group counselling vs. No intervention]         1.11 0.44  0.28  0.81  1.10
#> d[Individual counselling vs. No intervention]    0.85 0.24  0.38  0.69  0.84
#> d[Self-help vs. No intervention]                 0.48 0.40 -0.29  0.23  0.48
#> d[Individual counselling vs. Group counselling] -0.26 0.42 -1.09 -0.53 -0.26
#> d[Self-help vs. Group counselling]              -0.62 0.49 -1.62 -0.93 -0.62
#> d[Self-help vs. Individual counselling]         -0.37 0.41 -1.21 -0.62 -0.36
#>                                                   75% 97.5% Bulk_ESS Tail_ESS
#> d[Group counselling vs. No intervention]         1.39  1.99     2276     2783
#> d[Individual counselling vs. No intervention]    1.00  1.34     1454     2018
#> d[Self-help vs. No intervention]                 0.74  1.24     2017     2344
#> d[Individual counselling vs. Group counselling]  0.02  0.54     2804     2901
#> d[Self-help vs. Group counselling]              -0.30  0.33     2901     2223
#> d[Self-help vs. Individual counselling]         -0.10  0.42     2369     2658
#>                                                 Rhat
#> d[Group counselling vs. No intervention]           1
#> d[Individual counselling vs. No intervention]      1
#> d[Self-help vs. No intervention]                   1
#> d[Individual counselling vs. Group counselling]    1
#> d[Self-help vs. Group counselling]                 1
#> d[Self-help vs. Individual counselling]            1

# Relative effects against a different reference treatment
relative_effects(smk_fit_RE, trt_ref = "Self-help")
#>                            mean   sd  2.5%   25%   50%   75% 97.5% Bulk_ESS
#> d[No intervention]        -0.48 0.40 -1.24 -0.74 -0.48 -0.23  0.29     2017
#> d[Group counselling]       0.62 0.49 -0.33  0.30  0.62  0.93  1.62     2901
#> d[Individual counselling]  0.37 0.41 -0.42  0.10  0.36  0.62  1.21     2369
#>                           Tail_ESS Rhat
#> d[No intervention]            2344    1
#> d[Group counselling]          2223    1
#> d[Individual counselling]     2658    1

# Transforming to odds ratios
# We work with the array of relative effects samples
LOR_array <- as.array(smk_releff_RE)
OR_array <- exp(LOR_array)

# mcmc_array objects can be summarised to produce a nma_summary object
smk_OR_RE <- summary(OR_array)

# This can then be printed or plotted
smk_OR_RE
#>                           mean   sd 2.5%  25%  50%  75% 97.5% Bulk_ESS Tail_ESS
#> d[Group counselling]      3.33 1.60 1.32 2.25 3.00 4.00  7.33     2276     2783
#> d[Individual counselling] 2.40 0.60 1.46 1.99 2.33 2.73  3.80     1454     2018
#> d[Self-help]              1.75 0.73 0.75 1.25 1.61 2.10  3.46     2017     2344
#>                           Rhat
#> d[Group counselling]         1
#> d[Individual counselling]    1
#> d[Self-help]                 1
plot(smk_OR_RE, ref_line = 1)

# }

## Plaque psoriasis ML-NMR
# \donttest{
# Run plaque psoriasis ML-NMR example if not already available
if (!exists("pso_fit")) example("example_pso_mlnmr", run.donttest = TRUE)
# }
# \donttest{
# Produce population-adjusted relative effects for all study populations in
# the network
pso_releff <- relative_effects(pso_fit)
pso_releff
#> ---------------------------------------------------------------- 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.66 0.09 1.49 1.60 1.66 1.72  1.84     4126     3465    1
#> d[FIXTURE: IXE_Q2W] 3.03 0.10 2.84 2.96 3.03 3.10  3.22     4743     3161    1
#> d[FIXTURE: IXE_Q4W] 2.62 0.09 2.44 2.55 2.62 2.68  2.81     4789     3156    1
#> d[FIXTURE: SEC_150] 2.22 0.12 1.99 2.14 2.22 2.30  2.45     4515     3651    1
#> d[FIXTURE: SEC_300] 2.52 0.12 2.29 2.44 2.52 2.61  2.76     5273     3387    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
#> d[UNCOVER-1: ETN]     1.51 0.09 1.34 1.45 1.51 1.56  1.68     4385     3251
#> d[UNCOVER-1: IXE_Q2W] 2.93 0.08 2.76 2.87 2.93 2.98  3.10     4976     3293
#> d[UNCOVER-1: IXE_Q4W] 2.51 0.08 2.36 2.46 2.51 2.57  2.68     4906     3423
#> d[UNCOVER-1: SEC_150] 2.11 0.12 1.89 2.03 2.11 2.20  2.35     5221     3546
#> d[UNCOVER-1: SEC_300] 2.42 0.12 2.18 2.34 2.42 2.50  2.66     6081     3687
#>                       Rhat
#> d[UNCOVER-1: ETN]        1
#> d[UNCOVER-1: IXE_Q2W]    1
#> d[UNCOVER-1: IXE_Q4W]    1
#> d[UNCOVER-1: SEC_150]    1
#> d[UNCOVER-1: SEC_300]    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
#> d[UNCOVER-2: ETN]     1.51 0.08 1.35 1.45 1.51 1.56  1.67     4393     3154
#> d[UNCOVER-2: IXE_Q2W] 2.92 0.08 2.77 2.87 2.92 2.98  3.09     5093     3454
#> d[UNCOVER-2: IXE_Q4W] 2.51 0.08 2.36 2.46 2.51 2.56  2.67     5009     3328
#> d[UNCOVER-2: SEC_150] 2.11 0.12 1.89 2.03 2.12 2.19  2.35     5263     3449
#> d[UNCOVER-2: SEC_300] 2.42 0.12 2.18 2.34 2.42 2.50  2.65     6168     3723
#>                       Rhat
#> d[UNCOVER-2: ETN]        1
#> d[UNCOVER-2: IXE_Q2W]    1
#> d[UNCOVER-2: IXE_Q4W]    1
#> d[UNCOVER-2: SEC_150]    1
#> d[UNCOVER-2: SEC_300]    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
#> d[UNCOVER-3: ETN]     1.53 0.08 1.37 1.48 1.53 1.58  1.69     4312     3328
#> d[UNCOVER-3: IXE_Q2W] 2.94 0.08 2.78 2.89 2.94 3.00  3.11     5021     3515
#> d[UNCOVER-3: IXE_Q4W] 2.53 0.08 2.37 2.48 2.53 2.58  2.69     5014     3420
#> d[UNCOVER-3: SEC_150] 2.13 0.11 1.91 2.05 2.13 2.21  2.36     5137     3554
#> d[UNCOVER-3: SEC_300] 2.44 0.12 2.21 2.36 2.43 2.51  2.67     6070     3595
#>                       Rhat
#> d[UNCOVER-3: ETN]        1
#> d[UNCOVER-3: IXE_Q2W]    1
#> d[UNCOVER-3: IXE_Q4W]    1
#> d[UNCOVER-3: SEC_150]    1
#> d[UNCOVER-3: SEC_300]    1
#> 
plot(pso_releff, ref_line = 0)


# Produce population-adjusted relative effects for a different target
# population
new_agd_means <- data.frame(
  bsa = 0.6,
  prevsys = 0.1,
  psa = 0.2,
  weight = 10,
  durnpso = 3)

relative_effects(pso_fit, newdata = new_agd_means)
#> ------------------------------------------------------------------ Study: New 1 ---- 
#> 
#> Covariate values:
#>  durnpso prevsys bsa weight psa
#>        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.22 0.81 1.10 1.25 1.40  1.71     7016     2903    1
#> d[New 1: IXE_Q2W] 2.89 0.22 2.47 2.74 2.89 3.04  3.33     7537     3302    1
#> d[New 1: IXE_Q4W] 2.48 0.22 2.05 2.33 2.47 2.62  2.90     7736     3098    1
#> d[New 1: SEC_150] 2.08 0.23 1.64 1.92 2.08 2.23  2.53     7796     2943    1
#> d[New 1: SEC_300] 2.38 0.23 1.94 2.23 2.38 2.53  2.84     7727     2935    1
#> 
# }