discomb {netmeta} | R 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
|
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 |
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., |
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 |
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 |
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
|
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 |
backtransf |
A logical indicating whether results should be
back transformed in printouts and forest plots. If
|
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
|
... |
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)