netdose {netdose} | R Documentation |
Network meta-analysis with dose-response relationships
Description
The 'netdose' function performs a dose-response network meta-analysis in a frequentist way. It accepts a dataset with study-level data, constructs a design matrix for the dose-response model, and computes treatment effects under common and/or random effects models. The function supports multiple dose-response relationship modeling approaches, including linear, exponential, quadratic, restricted cubic splines (rcs), and fractional polynomial methods (fp1).
Usage
netdose(
TE,
seTE,
agent1,
dose1,
agent2,
dose2,
studlab,
data = NULL,
subset = NULL,
n1 = NULL,
n2 = NULL,
event1 = NULL,
event2 = NULL,
sm,
common = gs("common"),
random = gs("random") | !is.null(tau.preset),
tau.preset = NULL,
method = "linear",
param = NULL,
reference.group,
common.dose = NULL,
level = gs("level.comb"),
backtransf = gs("backtransf"),
tol.multiarm = 0.001,
tol.multiarm.se = NULL,
details.chkmultiarm = FALSE,
func.inverse = invmat,
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). Or an R object created with
|
seTE |
Standard error of treatment estimate. |
agent1 |
Agents corresponding to the first treatment in each comparison. |
dose1 |
Doses for the first treatment in each comparison. |
agent2 |
Agents corresponding to the second treatment in each comparison. |
dose2 |
Doses for the second treatment in each comparison. |
studlab |
An optional - but important! - vector with study labels. |
data |
An optional data frame containing the study information. |
subset |
An optional vector specifying a subset of studies to be used. The default is 'NULL'. |
n1 |
Numeric. Optional. Sample sizes for the first treatment in each comparison. |
n2 |
Numeric. Optional. Sample sizes for the second treatment in each comparison. |
event1 |
Numeric. Optional. Number of events for the first treatment in each comparison. |
event2 |
Numeric. Optional. Number of events for the second treatment in each comparison. |
sm |
A character string indicating underlying summary measure,
e.g., |
common |
A logical indicating whether a common effects dose-response network meta-analysis should be conducted. The default is 'TRUE'. |
random |
A logical indicating whether a random effects dose-response network meta-analysis should be conducted. The default is 'TRUE'. |
tau.preset |
An optional value for the square-root of the
between-study variance |
method |
An optional character string specifying the method to be used for the dose-response relationship. Either, "linear", "exponential", "quadratic", "rcs", "fp1", or "fp2", can be abbreviated (see Details). |
param |
A numeric vector specifying the parameters for some dose-response functions (see Details). |
reference.group |
Reference agent (first agent with dose 0 is used if argument is missing). |
common.dose |
A named vector with the common dose for each agent in the network (see Examples). The median dose is used for each agent if this argument is not provided. |
level |
The level used to calculate confidence intervals for individual comparisons. |
backtransf |
A logical indicating whether results should be
back transformed in printouts and forest plots. If
|
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. |
func.inverse |
R function used to calculate the pseudoinverse of the Laplacian matrix L. |
keepdata |
A logical indicating whether original data(set) should be kept in netdose object. |
warn |
A logical indicating whether warnings should be printed (e.g., if studies are excluded from network meta-analysis due to zero standard errors). |
... |
Additional arguments (to catch deprecated arguments). |
Details
The dose-response network meta-analysis (DR-NMA) has been implemented by modelling different dose-response functions, as described by Mandema et al. 2005 and Mawdsley et al. 2016 and by using restricted cubic splines (Hamza et al. 2020) in Bayesian framework.
The function netdose
conducts a dose-response network meta-analysis
with a variety of dose-response functions (such as the linear, exponential,
fractional polynomials and restricted cubic splines) in a frequentist way
as described in Petropoulou et al. (2025).
The following dose-response functions are available:
Linear dose-response relationship (
method = "linear"
)Exponential dose-response relationship (
method = "exponential"
)Quadratic polynomial dose-response relationship (
method = "quadratic"
)Restricted cubic splines (
method = "rcs"
)Fractional polynomial (order 1) (
method = "fp1"
)Fractional polynomial (order 2) (
method = "fp2"
)
By default, a linear dose-response relationship is assumed.
The parameters for the selected dose-response function can be specified
using argument param
: a numeric vector specifying the percentiles to
set the knots for the restricted cubic splines (default: knots at the 10th,
50th, and 90th percentile), a single numeric specifying the power of the
fractional polynomial with order 1 (default: -0.5), or a numeric vector of
length 2 specifying the first and second power of a fractional polynomial
with order 2 (default: -0.5 and -0.5). The input for argument param
is ignored for a linear, exponential or quadratic polynomial dose-response
relationship.
Value
An object of class netdose
; a list containing the
following components:
studlab |
Study labels. |
agent1 |
Label/Agents corresponding to the first treatment in each comparison.. |
agent2 |
Label/Agents corresponding to the second treatment in each comparison.. |
dose1 |
Doses for the first treatment in each comparison. |
dose2 |
Doses for the second treatment in each comparison. |
treat1 |
Label/First treatment in each comparison. |
treat2 |
Label/Second treatment in each comparison. |
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. |
k |
Total number of studies. |
m |
Total number of pairwise comparisons. |
a |
Total number of agents. |
n |
Total number of treatments. |
trts |
Treatments included in the dataset in alphabetic order. |
agents |
Agents included in dose-response network meta-analysis in alphabetic order. |
inactive |
Identifier for the reference group or inactive treatment. |
common.dose |
Common dose value used in the analysis, if specified. |
#' **Common/Random effects model results:**
TE.common , TE.random |
Matrix with overall treatment effects estimated by the dose-response (common and random effects) model. |
seTE.common , seTE.random |
Matrix with standard errors estimated by the dose-response (common and random effects) model. |
lower.common , upper.common , lower.random , upper.random |
Matrices with lower and upper confidence interval limits estimated by the dose-response (common and random effects) model. |
statistic.common , pval.common , statistic.random , pval.random |
Matrices with z-values and p-values for test of overall effect estimated by the dose-response (common and random effects) model. |
TE.drnma.common |
A vector of dose-response effects (common and random effects model). |
seTE.drnma.common , seTE.drnma.random |
A vector with corresponding standard errors (common and random effects model). |
lower.drnma.common , lower.drnma.random |
A vector with lower confidence limits for dose-response treatment estimates (common and random effects model). |
upper.drnma.common , upper.drnma.random |
A vector with upper confidence limits for dose-response treatment estimates (common and random effects model). |
statistic.drnma.common , statistic.drnma.random |
A vector with z-values for the overall dose-response effects (common and random effects model). |
pval.drnma.common , pval.drnma.random |
A vector with p-values for the overall dose-response effects (common and random effects model). |
**Heterogeneity and goodness-of-fit statistics:**
Q.dose |
Overall heterogeneity / inconsistency statistic for dose-response network meta-analysis. |
df.Q.dose |
Degrees of freedom for test of heterogeneity / inconsistency for dose-response network meta-analysis. |
pval.Q.dose |
P-value for test of heterogeneity / inconsistency for dose-response network meta-analysis. |
tau |
Square-root of between-study variance with DerSimonian and Laird method for dose-response network meta-analysis. |
tauml |
Square-root of between-study variance with Maximum likelihood method for dose-response network meta-analysis. |
I2 , lower.I2 , upper.I2 |
I-squared, lower and upper confidence limits. |
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 dose-response model. |
df.Q.diff |
Degrees of freedom for difference in goodness of fit between standard and dose-response model. |
pval.Q.diff |
P-value for difference in goodness of fit between standard and additive model. |
Xd |
Design matrix for dose-response network meta-analysis. |
sm |
Summary measure used in the analysis. |
level |
Level used to calculate confidence intervals for individual comparisons. |
common |
A logical indicating whether a common effects dose-response network meta-analysis should be conducted. |
random |
A logical indicating whether a random effects dose-response network meta-analysis should be conducted. |
method |
Method used for the dose-response relationship. |
reference.group |
Reference agent. |
Q.to.df.ratio |
Q to df ratio, i.e, Q.dose/df.Q.dose. |
func.inverse |
Function used to calculate the pseudoinverse of the Laplacian matrix L. |
backtransf |
A logical indicating whether results should be back transformed in printouts and forest plots. |
data |
Data frame containing the study information. |
Author(s)
Maria Petropoulou <maria.petropoulou@uniklinik-freiburg.de>, Guido Schwarzer <guido.schwarzer@uniklinik-freiburg.de>
References
Mandema JW, Cox EJ (2005): Therapeutic benefit of eletriptan compared to sumatriptan for the acute relief of migraine pain–results of a model-based meta-analysis that accounts for encapsulation. Cephalalgia, 25, 715-725
Mawdsley D, Bennetts M, Dias S, Boucher M, Welton N (2016): Model-Based Network Meta-Analysis: A Framework for Evidence Synthesis of Clinical Trial Data. PT Pharmacometrics & Systems Pharmacology, 5, 393-401
Hamza T, Furukawa TA, Orsin N, Cipriani A, Iglesias C, Salanti G (2022): A dose-effect network meta-analysis model: an application in antidepressants. Statistical Methods in Medical Research
Petropoulou et al. (2025): Network meta-analysis with dose-response relationships.
Examples
# Load anesthesia data
data(anesthesia)
# Use a subset of 5 studies
anesthesia_subset <- subset(anesthesia, study %in% unique(anesthesia$study)[1:5])
# Prepare data for DR-NMA
dat <- meta::pairwise(
agent = list(agent1, agent2, agent3),
event = list(event1, event2, event3),
n = list(n1, n2, n3),
dose = list(dose1, dose2, dose3),
data = anesthesia_subset,
studlab = study,
append = FALSE,
sm = "RR"
)
# Perform DR-NMA with a linear dose-response function
dr1 <- netdose(
TE, seTE, agent1, dose1, agent2,
dose2, studlab,
data = dat
)
# DR-NMA with FP1 dose-response function with p = -0.5
FP1 <- netdose(TE, seTE, agent1, dose1, agent2,
dose2, studlab,
data = dat,
method = "fp1"
)
# DR-NMA with FP1 dose-response function with p = 0.5
FP1_p0.5 <- netdose(TE, seTE, agent1, dose1, agent2,
dose2, studlab,
data = dat,
method = "fp1", param = 0.5
)
# DR-NMA with RCS dose-response function with knots at 10th, 50th and 90th percentiles
dr_rcs <- netdose(TE, seTE, agent1, dose1, agent2,
dose2, studlab,
data = dat,
method = "rcs"
)
# DR-NMA with RCS dose-response function with knots at 25th, 50th and 100th percentiles
dr_rcs2 <- netdose(TE, seTE, agent1, dose1, agent2,
dose2, studlab,
data = dat,
method = "rcs", p = c(0.25, 0.50, 1),
)