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

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., "RD", "RR", "OR", "ASD", "HR", "MD", "SMD", or "ROM".

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 \tau^2.

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 backtransf = TRUE, results for sm = "OR" are presented as odds ratios rather than log odds ratios, for example.

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.

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:

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



[Package netdose version 0.6-0 Index]