netmeta: Network meta-analysis using graph-theoretical method

Description Usage Arguments Details Value Author(s) References See Also Examples

View source: R/netmeta.R

Description

Network meta-analysis is a generalisation of pairwise meta-analysis that compares all pairs of treatments within a number of treatments for the same condition. The graph-theoretical approach for network meta-analysis uses methods that were originally developed in electrical network theory. It has been found to be equivalent to the frequentist approach to network meta-analysis which is based on weighted least squares regression (Rücker, 2012).

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
netmeta(
  TE,
  seTE,
  treat1,
  treat2,
  studlab,
  data = NULL,
  subset = NULL,
  sm,
  level = gs("level"),
  level.comb = gs("level.comb"),
  comb.fixed = gs("comb.fixed"),
  comb.random = gs("comb.random") | !is.null(tau.preset),
  prediction = FALSE,
  level.predict = gs("level.predict"),
  reference.group = "",
  baseline.reference = TRUE,
  all.treatments = NULL,
  seq = NULL,
  tau.preset = NULL,
  tol.multiarm = 0.001,
  tol.multiarm.se = tol.multiarm,
  details.chkmultiarm = FALSE,
  sep.trts = ":",
  nchar.trts = 666,
  n1 = NULL,
  n2 = NULL,
  event1 = NULL,
  event2 = NULL,
  backtransf = gs("backtransf"),
  title = "",
  keepdata = gs("keepdata"),
  warn = TRUE
)

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).

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 Details).

data

An optional data frame containing the study information.

subset

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

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.comb

The level used to calculate confidence intervals for pooled estimates.

comb.fixed

A logical indicating whether a fixed effects (common effects) network meta-analysis should be conducted.

comb.random

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

prediction

A logical indicating whether prediction intervals should be printed.

level.predict

The level used to calculate prediction intervals for a new study.

reference.group

Reference treatment.

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.

all.treatments

A logical or "NULL". If TRUE, matrices with all treatment effects, and confidence limits will be printed.

seq

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

tau.preset

An optional value for manually setting the square-root of the between-study variance τ^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.

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.

sep.trts

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

nchar.trts

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

n1

Number of observations in first treatment group.

n2

Number of observations in second treatment group.

event1

Number of events in first treatment group.

event2

Number of events in second treatment group.

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.

keepdata

A logical indicating whether original data (set) should be kept in netmeta object.

warn

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

Details

Network meta-analysis using R package netmeta is described in detail in Schwarzer et al. (2015), Chapter 8.

Let n be the number of different treatments (nodes, vertices) in a network and let m be the number of existing comparisons (edges) between the treatments. If there are only two-arm studies, m is the number of studies. Let TE and seTE be the vectors of observed effects and their standard errors. Let W be the mxm diagonal matrix that contains the inverse variance 1 / seTE^2.

The given comparisons define the network structure. Therefrom an mxn design matrix X (edge-vertex incidence matrix) is formed; for more precise information, see Rücker (2012). Moreover, the nxn Laplacian matrix L and its Moore-Penrose pseudoinverse L+ are calculated (both matrices play an important role in graph theory and electrical network theory). Using these matrices, the variances based on both direct and indirect comparisons can be estimated. Moreover, the hat matrix H can be estimated by H = XL+X^tW = X(X^t W X)^+X^tW and finally consistent treatment effects can be estimated by applying the hat matrix to the observed (potentially inconsistent) effects. H is a projection matrix which maps the observed effects onto the consistent (n-1)-dimensional subspace. This is the Aitken estimator (Senn et al., 2013). As in pairwise meta-analysis, the Q statistic measures the deviation from consistency. Q can be separated into parts for each pairwise meta-analysis and a part for remaining inconsistency between comparisons.

Often multi-arm studies are included in a network meta-analysis. In multi-arm studies, the treatment effects on different comparisons are not independent, but correlated. This is accounted for by reweighting all comparisons of each multi-arm study. The method is described in Rücker (2012) and Rücker and Schwarzer (2014).

Comparisons belonging to multi-arm studies are identified by identical study labels (argument studlab). It is therefore important to use identical study labels for all comparisons belonging to the same multi-arm study, e.g., study label "Willms1999" for the three-arm study in the data example (Senn et al., 2013). The function netmeta then automatically accounts for within-study correlation by reweighting all comparisons of each multi-arm study.

Data entry for this function is in contrast-based format, that is, data are given as contrasts (differences) between two treatments (argument TE) with standard error (argument seTE). In principle, meta-analysis functions from R package meta, e.g. metabin for binary outcomes or metacont for continuous outcomes, can be used to calculate treatment effects separately for each treatment comparison which is a rather tedious enterprise. If data are provided in arm-based format, that is, data are given for each treatment arm separately (e.g. number of events and participants for binary outcomes), a much more convenient way to transform data into contrast-based form is available. Function pairwise can automatically transform data with binary outcomes (using the metabin function from R package meta), continuous outcomes (metacont function), incidence rates (metainc function), and generic outcomes (metagen function). Additional arguments of these functions can be provided, e.g., to calculate Hedges' g or Cohen's d for continuous outcomes (see help page of function pairwise).

Note, all pairwise comparisons must be provided for a multi-arm study. Consider a multi-arm study of p treatments with known variances. For this study, treatment effects and standard errors must be provided for each of p(p - 1) / 2 possible comparisons. For instance, a three-arm study contributes three pairwise comparisons, a four-arm study even six pairwise comparisons. Function pairwise automatically calculates all pairwise comparisons for multi-arm studies.

A simple random effects model assuming that a constant heterogeneity variance is added to each comparison of the network can be defined via a generalised methods of moments estimate of the between-studies variance τ^2 (Jackson et al., 2012). This is added to the observed sampling variance seTE^2 of each comparison in the network (before appropriate adjustment for multi-arm studies). Then, as in standard pairwise meta-analysis, the procedure is repeated with the resulting enlarged standard errors.

For the random-effects model, the direct treatment estimates are based on the common between-study variance τ^2 from the network meta-analysis.

Internally, both fixed effects and random effects models are calculated regardless of values choosen for arguments comb.fixed and comb.random. Accordingly, the network estimates for the random effects model can be extracted from component TE.random of an object of class "netmeta" even if argument comb.random = FALSE. However, all functions in R package netmeta will adequately consider the values for comb.fixed and comb.random. E.g. function print.summary.netmeta will not print results for the random effects model if comb.random = FALSE.

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

Names of treatment comparisons are created by concatenating treatment labels of pairwise comparisons using sep.trts as separator (see paste). These comparison names are used in the covariance matrices Cov.fixed and Cov.random and in some R functions, e.g, decomp.design. By default, a colon is used as the separator. If any treatment label contains a colon the following characters are used as separator (in consecutive order): "-", "_", "/", "+", ".", "|", and "*". If all of these characters are used in treatment labels, a corresponding error message is printed asking the user to specify a different separator.

Value

An object of class netmeta with corresponding print, summary, forest, and netrank functions. The object is a list containing the following components:

studlab, treat1, treat2, TE, seTE

As defined above.

seTE.adj

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

n1, n2, event1, event2

As defined above.

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).

trts

Treatments included in network meta-analysis.

k.trts

Number of studies evaluating a treatment.

n.trts

Number of observations receiving a treatment (if arguments n1 and n2 are provided).

events.trts

Number of events observed for a treatment (if arguments event1 and event2 are provided).

multiarm

Logical vector to identify pairwise comparisons from multi-arm studies.

n.arms

Number of treatment arms in study providing pairwise comparison.

studies

Vector with unique study labels.

narms

Number of arms for each study.

designs

Vector with unique designs present in the network. A design corresponds to the set of treatments compared within a study.

TE.nma.fixed, TE.nma.random

A vector of length m of consistent treatment effects estimated by network meta-analysis (nma) (fixed effects / random effects model).

seTE.nma.fixed, seTE.nma.random

A vector of length m of effective standard errors estimated by network meta-analysis (fixed effects / random effects model).

lower.nma.fixed, lower.nma.random

A vector of length m of lower confidence interval limits for consistent treatment effects estimated by network meta-analysis (fixed effects / random effects model).

upper.nma.fixed, upper.nma.random

A vector of length m of upper confidence interval limits for the consistent treatment effects estimated by network meta-analysis (fixed effects / random effects model).

zval.nma.fixed, zval.nma.random

A vector of length m of z-values for test of treatment effect for individual comparisons (fixed effects / random effects model).

pval.nma.fixed, pval.nma.random

A vector of length m of p-values for test of treatment effect for individual comparisons (fixed effects / random effects model).

leverage.fixed

A vector of length m of leverages, interpretable as factors by which variances are reduced using information from the whole network.

w.fixed, w.random

A vector of length m of weights of individual studies (fixed effects / random effects model).

Q.fixed

A vector of length m of contributions to total heterogeneity / inconsistency statistic.

TE.fixed, TE.random

nxn matrix with estimated overall treatment effects (fixed effects / random effects model).

seTE.fixed, seTE.random

nxn matrix with standard errors (fixed effects / random effects model).

lower.fixed, upper.fixed, lower.random, upper.random

nxn matrices with lower and upper confidence interval limits (fixed effects / random effects model).

zval.fixed, pval.fixed, zval.random, pval.random

nxn matrices with z-value and p-value for test of overall treatment effect (fixed effects / random effects model).

seTE.predict

nxn matrix with standard errors for prediction intervals.

lower.predict, upper.predict

nxn matrices with lower and upper prediction interval limits.

prop.direct.fixed, prop.direct.random

A named vector of the direct evidence proportion of each network estimate. (fixed effects / random effects model).

TE.direct.fixed, TE.direct.random

nxn matrix with estimated treatment effects from direct evidence (fixed effects / random effects model).

seTE.direct.fixed, seTE.direct.random

nxn matrix with estimated standard errors from direct evidence (fixed effects / random effects model).

lower.direct.fixed, upper.direct.fixed, lower.direct.random,

nxn matrices with lower and upper confidence interval limits from direct evidence (fixed effects / random effects model).

upper.direct.random

nxn matrices with lower and upper confidence interval limits from direct evidence (fixed effects / random effects model).

zval.direct.fixed, pval.direct.fixed, zval.direct.random,

nxn matrices with z-value and p-value for test of overall treatment effect from direct evidence (fixed effects / random effects model).

pval.direct.random

nxn matrices with z-value and p-value for test of overall treatment effect from direct evidence (fixed effects / random effects model).

TE.indirect.fixed, TE.indirect.random

nxn matrix with estimated treatment effects from indirect evidence (fixed effects / random effects model).

seTE.indirect.fixed, seTE.indirect.random

nxn matrix with estimated standard errors from indirect evidence (fixed effects / random effects model).

lower.indirect.fixed, upper.indirect.fixed, lower.indirect.random,

nxn matrices with lower and upper confidence interval limits from indirect evidence (fixed effects / random effects model).

upper.indirect.random

nxn matrices with lower and upper confidence interval limits from indirect evidence (fixed effects / random effects model).

zval.indirect.fixed, pval.indirect.fixed, zval.indirect.random,

nxn matrices with z-value and p-value for test of overall treatment effect from indirect evidence (fixed effects / random effects model).

pval.indirect.random

nxn matrices with z-value and p-value for test of overall treatment effect from indirect evidence (fixed effects / random effects model).

Q

Overall heterogeneity / inconsistency statistic.

df.Q

Degrees of freedom for test of heterogeneity / inconsistency.

pval.Q

P-value for test of heterogeneity / inconsistency.

I2, lower.I2, upper.I2

I-squared, lower and upper confidence limits.

tau

Square-root of between-study variance.

Q.heterogeneity

Overall heterogeneity statistic.

df.Q.heterogeneity

Degrees of freedom for test of overall heterogeneity.

pval.Q.heterogeneity

P-value for test of overall heterogeneity.

Q.inconsistency

Overall inconsistency statistic.

df.Q.inconsistency

Degrees of freedom for test of overall inconsistency.

pval.Q.inconsistency

P-value for test of overall inconsistency.

Q.decomp

Data frame with columns 'treat1', 'treat2', 'Q', 'df' and 'pval.Q', providing heterogeneity statistics for each pairwise meta-analysis of direct comparisons.

A.matrix

Adjacency matrix (nxn).

X.matrix

Design matrix (mxn).

B.matrix

Edge-vertex incidence matrix (mxn).

L.matrix

Laplacian matrix (nxn).

Lplus.matrix

Moore-Penrose pseudoinverse of the Laplacian matrix (nxn).

Q.matrix

Matrix of heterogeneity statistics for pairwise meta-analyses, where direct comparisons exist (nxn).

G.matrix

Matrix with variances and covariances of comparisons (mxm). G is defined as BL+B^t.

H.matrix

Hat matrix (mxm), defined as H = GW = BL+B^tW.

n.matrix

nxn matrix with number of observations in direct comparisons (if arguments n1 and n2 are provided).

events.matrix

nxn matrix with number of events in direct comparisons (if arguments event1 and event2 are provided).

P.fixed, P.random

nxn matrix with direct evidence proportions (fixed effects / random effects model).

Cov.fixed

Variance-covariance matrix (fixed effects model)

Cov.random

Variance-covariance matrix (random effects model)

sm, level, level.comb

As defined above.

comb.fixed, comb.random

As defined above.

prediction, level.predict

As defined above.

reference.group, baseline.reference, all.treatments

As defined above.

seq, tau.preset, tol.multiarm, tol.multiarm.se

As defined above.

details.chkmultiarm, sep.trts, nchar.trts

As defined above.

backtransf, title, warn

As defined above.

call

Function call.

version

Version of R package netmeta used to create object.

Author(s)

Gerta Rücker ruecker@imbi.uni-freiburg.de, Guido Schwarzer sc@imbi.uni-freiburg.de

References

Jackson D, White IR, Riley RD (2012): Quantifying the impact of between-study heterogeneity in multivariate meta-analyses. Statistics in Medicine, 31, 3805–20

Rücker G (2012): Network meta-analysis, electrical networks and graph theory. Research Synthesis Methods, 3, 312–24

Rücker G, Schwarzer G (2014): Reduce dimension or reduce weights? Comparing two approaches to multi-arm studies in network meta-analysis. Statistics in Medicine, 33, 4353–69

Schwarzer G, Carpenter JR, Rücker G (2015): Meta-Analysis with R (Use-R!). Springer International Publishing, Switzerland

Senn S, Gavini F, Magrez D, Scheen A (2013): Issues in performing a network meta-analysis. Statistical Methods in Medical Research, 22, 169–89

See Also

pairwise, forest.netmeta, netrank, metagen

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
data(Senn2013)

# Conduct fixed effects network meta-analysis
#
net1 <- netmeta(TE, seTE, treat1, treat2, studlab,
                data = Senn2013, sm = "MD",
                comb.random = FALSE)
net1
net1$Q.decomp

# Comparison with reference group
#
print(net1, reference = "plac")

## Not run: 
# Conduct random effects network meta-analysis
#
net2 <- netmeta(TE, seTE, treat1, treat2, studlab,
                data = Senn2013, sm = "MD",
                comb.fixed = FALSE)
net2

# Change printing order of treatments with placebo last and use
# long treatment names
#
trts <- c("acar", "benf", "metf", "migl", "piog",
          "rosi", "sita", "sulf", "vild", "plac")
net3 <- netmeta(TE, seTE, treat1.long, treat2.long, studlab,
                data = Senn2013, sm = "MD", comb.fixed = FALSE,
                seq = trts, reference = "Placebo")
print(summary(net3), digits = 2)

## End(Not run)

netmeta documentation built on April 17, 2020, 1:26 a.m.