discomb: Additive network meta-analysis for combinations of treatments...

View source: R/discomb.R

discombR Documentation

Additive network meta-analysis for combinations of treatments (disconnected networks)

Description

Some treatments in a network meta-analysis may be combinations of other treatments or have common components. The influence of individual components can be evaluated in an additive network meta-analysis model assuming that the effect of treatment combinations is the sum of the effects of its components. This function implements this additive model in a frequentist way and is particularly intended for disconnected networks.

Usage

discomb(
  TE,
  seTE,
  treat1,
  treat2,
  studlab,
  data = NULL,
  subset = NULL,
  inactive = NULL,
  sep.comps = "+",
  C.matrix,
  sm,
  level = gs("level"),
  level.ma = gs("level.ma"),
  common = gs("common"),
  random = gs("random") | !is.null(tau.preset),
  reference.group,
  baseline.reference = TRUE,
  seq = NULL,
  tau.preset = NULL,
  tol.multiarm = 0.001,
  tol.multiarm.se = NULL,
  details.chkmultiarm = FALSE,
  details.chkident = FALSE,
  sep.trts = ":",
  nchar.comps = 666,
  func.inverse = invmat,
  backtransf = gs("backtransf"),
  title = "",
  warn = TRUE,
  warn.deprecated = gs("warn.deprecated"),
  nchar.trts = nchar.comps,
  ...
)

Arguments

TE

Estimate of treatment effect, i.e. difference between first and second treatment (e.g. log odds ratio, mean difference, or log hazard ratio). Or an R object created with pairwise.

seTE

Standard error of treatment estimate.

treat1

Label/Number for first treatment.

treat2

Label/Number for second treatment.

studlab

An optional - but important! - vector with study labels (see netmeta).

data

An optional data frame containing the study information.

subset

An optional vector specifying a subset of studies to be used.

inactive

A character string defining the inactive treatment component (see Details).

sep.comps

A single character to define separator between treatment components.

C.matrix

C matrix (see Details).

sm

A character string indicating underlying summary measure, e.g., "RD", "RR", "OR", "ASD", "HR", "MD", "SMD", or "ROM".

level

The level used to calculate confidence intervals for individual comparisons.

level.ma

The level used to calculate confidence intervals for network estimates.

common

A logical indicating whether a common effects / common effects network meta-analysis should be conducted.

random

A logical indicating whether a random effects network meta-analysis should be conducted.

reference.group

Reference treatment (first treatment is used if argument is missing).

baseline.reference

A logical indicating whether results should be expressed as comparisons of other treatments versus the reference treatment (default) or vice versa. This argument is only considered if reference.group has been specified.

seq

A character or numerical vector specifying the sequence of treatments in printouts.

tau.preset

An optional value for the square-root of the between-study variance \tau^2.

tol.multiarm

A numeric for the tolerance for consistency of treatment estimates in multi-arm studies which are consistent by design.

tol.multiarm.se

A numeric for the tolerance for consistency of standard errors in multi-arm studies which are consistent by design. This check is not conducted if the argument is NULL.

details.chkmultiarm

A logical indicating whether treatment estimates and / or variances of multi-arm studies with inconsistent results or negative multi-arm variances should be printed.

details.chkident

A logical indicating whether details on unidentifiable components should be printed.

sep.trts

A character used in comparison names as separator between treatment labels.

nchar.comps

A numeric defining the minimum number of characters used to create unique names for components (see Details).

func.inverse

R function used to calculate the pseudoinverse of the Laplacian matrix L (see netmeta).

backtransf

A logical indicating whether results should be back transformed in printouts and forest plots. If backtransf = TRUE, results for sm = "OR" are presented as odds ratios rather than log odds ratios, for example.

title

Title of meta-analysis / systematic review.

warn

A logical indicating whether warnings should be printed (e.g., if studies are excluded from meta-analysis due to zero standard errors).

warn.deprecated

A logical indicating whether warnings should be printed if deprecated arguments are used.

nchar.trts

Deprecated argument (replaced by nchar.comps).

...

Additional arguments (to catch deprecated arguments).

Details

Treatments in network meta-analysis (NMA) can be complex interventions. Some treatments may be combinations of others or have common components. The standard analysis provided by netmeta is a NMA where all existing (single or combined) treatments are considered as different nodes in the network. Exploiting the fact that some treatments are combinations of common components, an additive component network meta-analysis (CNMA) model can be used to evaluate the influence of individual components. This model assumes that the effect of a treatment combination is the sum of the effects of its components which implies that common components cancel out in comparisons.

This R function can be used for disconnected networks. Use netmeta and netcomb for connected networks.

The additive CNMA model has been implemented using Bayesian methods (Mills et al., 2012; Welton et al., 2013). This function implements the additive model in a frequentist way (Rücker et al., 2020).

The underlying multivariate model is given by

\bold{\delta} = \bold{B} \bold{\theta}, \bold{\theta} = \bold{C} \bold{\beta}

with

\bold{\delta}

vector of true treatment effects (differences) from individual studies,

\bold{B}

design matrix describing the structure of the network,

\bold{\theta}

parameter vector that represents the existing combined treatments,

\bold{C}

matrix describing how the treatments are composed,

\bold{\beta}

parameter vector representing the treatment components.

All parameters are estimated using weighted least squares regression.

Argument inactive can be used to specify a single component that does not have any therapeutic value. Accordingly, it is assumed that the treatment effect of the combination of this component with an additional treatment component is equal to the treatment effect of the additional component alone.

Argument sep.comps can be used to specify the separator between individual components. By default, the matrix C is calculated internally from treatment names. However, it is possible to specify a different matrix using argument C.matrix.

By default, component names are not abbreviated in printouts. However, in order to get more concise printouts, argument nchar.comps can be used to define the minimum number of characters for abbreviated component names (see abbreviate, argument minlength). R function treats is utilised internally to create abbreviated component names.

Value

An object of classes discomb and netcomb with corresponding print, summary, and forest functions. The object is a list containing the following components:

studlab

Study labels.

treat1

Label/Number for first treatment.

treat2

Label/Number for second treatment.

TE

Estimate of treatment effect, i.e. difference between first and second treatment.

seTE

Standard error of treatment estimate.

seTE.adj.common, seTE.adj.random

Standard error of treatment estimate, adjusted for multi-arm studies.

event1

Number of events in first treatment group.

event2

Number of events in second treatment group.

n1

Number of observations in first treatment group.

n2

Number of observations in second treatment group.

k

Total number of studies.

m

Total number of pairwise comparisons.

n

Total number of treatments.

d

Total number of designs (corresponding to the unique set of treatments compared within studies).

c

Total number of components.

trts

Treatments included in network meta-analysis.

comps

Unique list of components present in the network.

TE.cnma.common, TE.cnma.random

A vector of length m of consistent treatment effects estimated by the additive (common and random effects) model.

seTE.cnma.common, seTE.cnma.random

A vector of length m with standard errors estimated by the additive (common and random effects) model.

lower.cnma.common, lower.cnma.random

A vector of length m of lower confidence interval limits for consistent treatment effects estimated by the additive (common and random effects) model.

upper.cnma.common, upper.cnma.random

A vector of length m of upper confidence interval limits for consistent treatment effects estimated by the additive (common and random effects) model.

statistic.cnma.common, statistic.cnma.random

A vector of length m of z-values for the test of an overall effect estimated by the additive (common and random effects) model.

pval.cnma.common, pval.cnma.random

A vector of length m of p-values for the test of an overall effect estimated by the additive (common and random effects) model.

TE.common, TE.random

nxn matrix with overall treatment effects estimated by the additive (common and random effects) model.

seTE.common, seTE.random

nxn matrix with standard errors estimated by the additive (common and random effects) model.

lower.common, upper.common, lower.random, upper.random

nxn matrices with lower and upper confidence interval limits estimated by the additive (common and random effects) model.

statistic.common, pval.common, statistic.random, pval.random

nxn matrices with z-values and p-values for test of overall effect estimated by the additive (common and random effects) model.

Comp.common, Comp.random

A vector of component effects (common and random effects model).

seComp.common, seComp.random

A vector with corresponding standard errors (common and random effects model).

lower.Comp.common, lower.Comp.random

A vector with lower confidence limits for components (common and random effects model).

upper.Comp.common, upper.Comp.random

A vector with upper confidence limits for components (common and random effects model).

statistic.Comp.common, statistic.Comp.random

A vector with z-values for the overall effect of components (common and random effects model).

pval.Comp.common, pval.Comp.random

A vector with p-values for the overall effect of components (common and random effects model).

Comb.common, Comb.random

A vector of combination effects (common and random effects model).

seComb.common, seComb.random

A vector with corresponding standard errors (common and random effects model).

lower.Comb.common, lower.Comb.random

A vector with lower confidence limits for combinations (common and random effects model).

upper.Comb.common, upper.Comb.random

A vector with upper confidence limits for combinations (common and random effects model).

statistic.Comb.common, statistic.Comb.random

A vector with z-values for the overall effect of combinations (common and random effects model).

pval.Comb.common, pval.Comb.random

A vector with p-values for the overall effect of combinations (common and random effects model).

Q.additive

Overall heterogeneity / inconsistency statistic (additive model).

df.Q.additive

Degrees of freedom for test of heterogeneity / inconsistency (additive model).

pval.Q.additive

P-value for test of heterogeneity / inconsistency (additive model).

tau

Square-root of between-study variance (additive model).

I2

I-squared (additive model).

Q.standard

Overall heterogeneity / inconsistency statistic (standard model).

df.Q.standard

Degrees of freedom for test of heterogeneity / inconsistency (standard model).

pval.Q.standard

P-value for test of heterogeneity / inconsistency (standard model).

Q.diff

Test statistic for difference in goodness of fit between standard and additive model.

df.Q.diff

Degrees of freedom for difference in goodness of fit between standard and additive model.

pval.Q.diff

P-value for difference in goodness of fit between standard and additive model.

X.matrix

Design matrix (mxn).

B.matrix

Edge-vertex incidence matrix (mxn).

C.matrix

As defined above.

sm

Summary measure.

level.ma

Level for confidence intervals.

common, random, tau.preset

As defined above.

sep.trts

A character used in comparison names as separator between treatment labels.

nchar.comps

A numeric defining the minimum number of characters used to create unique component names.

inactive, sep.comps

As defined above.

backtransf

A logical indicating whether results should be back transformed in printouts and forest plots.

title

Title of meta-analysis / systematic review.

x

As defined above.

call

Function call.

version

Version of R package netmeta used to create object.

Note

This function calculates effects for individual components and complex interventions present in the network.

R function netcomplex can be used to calculate the effect for arbitrary complex interventions in a component network meta-analysis. Furthermore, R function netcomparison can be used to calculate the effect for comparisons of two arbitrary complex intervention in a component network meta-analysis.

Author(s)

Gerta Rücker gerta.ruecker@uniklinik-freiburg.de, Guido Schwarzer guido.schwarzer@uniklinik-freiburg.de

References

König J, Krahn U, Binder H (2013): Visualizing the flow of evidence in network meta-analysis and characterizing mixed treatment comparisons. Statistics in Medicine, 32, 5414–29

Mills EJ, Thorlund K, Ioannidis JP (2012): Calculating additive treatment effects from multiple randomized trials provides useful estimates of combination therapies. Journal of Clinical Epidemiology, 65, 1282–8

Rücker G, Petropoulou M, Schwarzer G (2020): Network meta-analysis of multicomponent interventions. Biometrical Journal, 62, 808–21

Welton NJ, Caldwell DM, Adamopoulos E, Vedhara K (2009): Mixed treatment comparison meta-analysis of complex interventions: psychological interventions in coronary heart disease. American Journal of Epidemiology, 169: 1158–65

See Also

netcomb, forest.netcomb, summary.netcomb, netmeta, netconnection, netcomplex, netcomparison

Examples

# Artificial dataset
#
t1 <- c("A + B", "A + C", "A"    , "A"    , "D", "D", "E")
t2 <- c("C"    , "B"    , "B + C", "A + D", "E", "F", "F")
#
mean    <- c(4.1, 2.05, 0, 0, 0.1, 0.1, 0.05)
se.mean <- rep(0.1, 7)
#
study <- paste("study", c(1:4, 5, 5, 5))
#
dat <- data.frame(mean, se.mean, t1, t2, study,
  stringsAsFactors = FALSE)
#
trts <- c("A", "A + B", "A + C", "A + D",
  "B", "B + C", "C", "D", "E", "F")
#
comps <- LETTERS[1:6]

# Use netconnection() to display network information
#
netconnection(t1, t2, study)

dc1 <- discomb(mean, se.mean, t1, t2, study, seq = trts)
dc1

forest(dc1, ref = "F")

# Define C matrix manually (which will produce the same results)
#
C <- rbind(c(1, 0, 0, 0, 0, 0),  # A
  c(1, 1, 0, 0, 0, 0),  # A + B
  c(1, 0, 1, 0, 0, 0),  # A + C
  c(1, 0, 0, 1, 0, 0),  # A + D
  c(0, 1, 0, 0, 0, 0),  # B
  c(0, 1, 1, 0, 0, 0),  # B + C
  c(0, 0, 1, 0, 0, 0),  # C
  c(0, 0, 0, 1, 0, 0),  # D
  c(0, 0, 0, 0, 1, 0),  # E
  c(0, 0, 0, 0, 0, 1))  # F
#                  
colnames(C) <- comps
rownames(C) <- trts
#
dc2 <- discomb(mean, se.mean, t1, t2, study, seq = trts,
  C.matrix = C)
#
# Compare C matrices
#
all.equal(dc1$C.matrix, dc2$C.matrix)


netmeta documentation built on June 23, 2024, 9:06 a.m.