Package 'diagmeta'

Title: Meta-Analysis of Diagnostic Accuracy Studies with Several Cutpoints
Description: Provides methods by Steinhauser et al. (2016) <DOI:10.1186/s12874-016-0196-1> for meta-analysis of diagnostic accuracy studies with several cutpoints.
Authors: Gerta Rücker [aut] , Susanne Steinhauser [aut], Srinath Kolampally [aut], Guido Schwarzer [aut, cre]
Maintainer: Guido Schwarzer <[email protected]>
License: GPL (>= 2)
Version: 0.6-0
Built: 2024-10-31 06:05:58 UTC
Source: https://github.com/guido-s/diagmeta

Help Index


diagmeta: Brief overview of methods and general hints

Description

R package diagmeta implements the method by Steinhauser et al. (2016) for the meta-analysis of diagnostic test accuracy studies with multiple cutoffs.

Details

Main function of R package diagmeta is the eponymous diagmeta. Corresponding functions for printing and plotting are available: print.diagmeta, plot.diagmeta

Furthermore, a summary function and corresponding print function are available to provide a briefer output: summary.diagmeta, print.summary.diagmeta

Additional functions provided in diagmeta are diagstats to calculate additional statistical measures for the diagnostic test accuracy meta-analysis and ipd2diag to transform individual participant data to the data format required by diagmeta.

Type help(package = "diagmeta") for a listing of R functions and datasets available in diagmeta.

Type citation("diagmeta") for the preferred citation of R package diagmeta.

To report problems and bugs

  • type bug.report(package = "diagmeta") if you do not use RStudio,

  • send an email to Guido Schwarzer [email protected] if you use RStudio.

The development version of diagmeta is available on GitHub https://github.com/guido-s/diagmeta.

Author(s)

Gerta Rücker [email protected], Susanne Steinhauser [email protected], Srinath Kolampally [email protected], Guido Schwarzer [email protected]

References

Steinhauser S, Schumacher M, Rücker G (2016): Modelling multiple thresholds in meta-analysis of diagnostic test accuracy studies. BMC Medical Research Methodology, 16, 97

See Also

Useful links:


Extract data frame from diagmeta objects

Description

Extract data frame from objects of class diagmeta.

Usage

## S3 method for class 'diagmeta'
as.data.frame(x, row.names = NULL, optional = FALSE, ...)

Arguments

x

An object of class diagmeta.

row.names

Argument of R function as.data.frame (ignored).

optional

Argument of R function as.data.frame (ignored).

...

Other arguments.

Value

A data frame is returned by the function as.data.frame.

Author(s)

Guido Schwarzer [email protected]

See Also

diagmeta summary.diagmeta

Examples

# FENO dataset
#
data(Schneider2017)

diag1 <- diagmeta(tpos, fpos, tneg, fneg, cutpoint,
                  studlab = paste(author, year, group),
                  data = Schneider2017,
                  log.cutoff = TRUE)

as.data.frame(diag1)

Meta-analysis of diagnostic test accuracy studies with the multiple cutoffs model

Description

Diagnostic tests may be based on an ordinal or continuous biomarker or an ordinal score together with a cutoff. The decision whether the target condition is present or not (positive or negative test result) depends on whether the observed value is above or below the cutoff.

Sensitivity and specificity of the test depend on the chosen cutoff and vary with the cutoff. In meta-analysis of diagnostic accuracy studies, results are often reported for multiple cutoffs within a study, and the cutoffs may differ between studies. The multiple cutoffs model creates a link between the range of cutoffs and the respective pairs of sensitivity and specificity and thus allows identifying cutoffs at which the test is likely to perform best (Steinhauser et al., 2016).

Usage

diagmeta(
  TP,
  FP,
  TN,
  FN,
  cutoff,
  studlab,
  data = NULL,
  distr = "logistic",
  model = "CICS",
  equalvar = FALSE,
  lambda = 0.5,
  direction,
  log.cutoff = FALSE,
  method.weights = "invvar",
  level = 0.95,
  incr = 0.5,
  n.iter.max = 1000,
  tol = 1e-08,
  silent = TRUE,
  ...
)

Arguments

TP

Numeric vectors giving the number of true positives or and object created with ipd2diag.

FP

Numeric vector giving the number of false positives.

TN

Numeric vector giving the number of true negatives.

FN

Numeric vector giving the number of false negatives.

cutoff

A number vector indicating the cutoff values.

studlab

A numeric or a character vector with study labels.

data

An optional data frame containing the study information.

distr

A character indicating the distribution (see Details).

model

A character indicating the model (see Details).

equalvar

A logical indicating whether the variances of the biomarker in both groups are thought equal (see Details).

lambda

A numeric between 0 and 1 indicating the weight of the population with higher values of the underlying biomarker (such that the group with lower values receives weight 1 - lambda).

direction

A character string specifying whether the probability of the target condition (e.g., a disease) is "increasing" or "decreasing" with higher values of the biomarker, can be abbreviated.

log.cutoff

A logical indicating whether the cutoffs should be log-transformed.

method.weights

A character indicating the method for weighting the studies: invvar (default) means inverse variance weighting, size means weighting by group sample size, equal means that all studies are equally weighted.

level

A numeric indicating the significance level (1 - alpha) for tests (default is 0.95).

incr

A numeric between 0 and 1 that is added as a continuity correction.

n.iter.max

A numeric indicating the maximal number of common point iterations for finding the optimal cutoff.

tol

A numeric indicating the tolerance for convergence of the common point iteration.

silent

A logical indicating whether iterations should be suppressed.

...

Additional arguments.

Details

Each row of the data set provides at least a study label, a cutoff and the numbers of true positives, false positives, true negatives and false negatives. Different studies may contribute a varying number of cutoffs, as well as different sets of cutoffs.

By default (argument direction = "increasing"), we assume that higher values of the biomarker indicate a greater probability for the target condition (e.g., a disease). This association can be reversed setting argument direction = "decreasing". In this case, the following transformation is used internally to reverse the values for the biomarker: min(cutoff) + max(cutoff) - cutoff. In printouts and figures, the original biomarker values are depicted; likewise the optimal cutoff is printed on the original scale.

The multiple cutoffs model is a multi-level random effects model. At the study level, for the group of patients without the target condition (in short disease-free), the specificities at all available cutoffs together provide an estimate of the cumulative distribution function (cdf) of the test results within the disease-free individuals. Likewise, for patients with the target condition (in short diseased), via the observed sensitivities at all observed cutoffs we obtain an estimate of the cdf of the test results within the diseased patients. At the meta-analytic level, the model fits the data for both groups and all available cutoffs over all studies. Based on a parametric model, it provides estimates of the two cdfs for the two groups across all studies, accounting for the between-study heterogeneity and correlation between groups.

Users have the choice between the normal (argument distr="normal") and the logistic distribution (argument distr="logistic" which is the default). In addition, it is possible to log-transform the cutoffs (argument log.cutoff, default is FALSE). For log-transformed cutoffs and argument direction = "decreasing", the following transformation is used internally to reverse the values for the biomarker: min(log(cutoff)) + max(log(cutoff)) - log(cutoff).

The cdf, transformed using the quantile function of the chosen distribution, is modelled by one of eight mixed linear models ("DIDS", "CIDS", "DICS", "CICS", "DS", "CS", "DI", "CI") as described in Steinhauser et al. (2016). The argument equalvar indicates if the variances of the biomarker in both groups are assumed to be equal (equalvar = TRUE) or unequal (equalvar = FALSE).

The pooled sensitivity and specificity values can be obtained at every cutoff; a multiple cutoffs summary ROC (sROC) naturally follows while preserving cutoff information. The optimal cutoff is defined as the cutoff where the maximum of a weighted sum of sensitivity and specificity is obtained: lambda * sensitivity + (1 - lambda) * specificity. The 95% confidence intervals of sensitivities, specificities and the optimal cutoff are estimated using the delta method (Steinhauser et al., 2016).

Value

An object of class "diagmeta" with corresponding print, summary, and plot function. The object is a list containing the following components

TP, FP, TN, FN

As defined above.

cutoff, studlab

As defined above.

Sens

Sensitivity (original data).

Spec

Specificity (original data).

distr, model, equalvar, lambda

As defined above.

log.cutoff, method.weights

As defined above.

level, incr

As defined above.

k

The number of studies in the meta-analysis.

optcut

The optimal cutoff.

lower.optcut, upper.optcut

Corresponding lower and upper confidence limits (for normal distribution).

Sens.optcut

The sensitivity at the optimal cutoff.

lower.Sens.optcut, upper.Sens.optcut

Corresponding lower and upper confidence limits.

Spec.optcut

The specificity at the optimal cutoff.

lower.Spec.optcut, upper.Spec.optcut

Corresponding lower and upper confidence limits.

AUCSens, AUCSpec

Area under the curve (AUC)

AUCSens.lower, AUCSens.upper

Corresponding lower and upper confidence limits (based on the confidence region for the sensitivity, given the specificity)

AUCSpec.lower, AUCSpec.upper

Corresponding lower and upper confidence limits (based on the confidence region for the specificity, given the sensitivity)

var.diseased, var.nondiseased

The within-study variance for the diseased and non-diseased group, respectively.

AIC

The value of the Akaike information criterion of the lmer object.

BIC

The value of the Bayesian information criterion of the lmer object.

data.lmer

A list with elements Study (study labels), Group (group labels (0 or 1)), Cutoff, N (group sizes), Negative (number of negative test results), NN (frequencies of negative test results).

result.lmer

An object of class lmer.

weights

Normalized weights per study, group, and cutoff such that the sum of weights is twice the number of cutoffs over all studies.

regr

A list with point estimates, variances, and covariances from regression parameters of lmer object.

dist

A list containing estimated means, standard deviations, and variances of distributions from diseased (ending with 1) and non-diseased (ending with 0).

Cov.common

Covariance matrix from common effects model.

call

Function call.

version

Version of R package diagmeta used to create object.

Author(s)

Gerta Rücker [email protected], Susanne Steinhauser [email protected], Srinath Kolampally [email protected], Guido Schwarzer [email protected]

References

Steinhauser S, Schumacher M, Rücker G (2016): Modelling multiple thresholds in meta-analysis of diagnostic test accuracy studies. BMC Medical Research Methodology, 16, 97

See Also

plot.diagmeta, summary.diagmeta

Examples

# FENO dataset
#
data(Schneider2017)

diag1 <- diagmeta(tpos, fpos, tneg, fneg, cutpoint,
                  studlab = paste(author, year, group),
                  data = Schneider2017,
                  log.cutoff = TRUE)
                  
summary(diag1)
plot(diag1)

Calculate statistical measures of test performance for objects of class diagmeta

Description

The user can provide cutoffs, sensitivities, and / or specificities to calculate the respective quantities (with confidence intervals). Furthermore, positive predictive values (PPV), negative predictive values (NPV), and probabilities of disease (PD) are calculated if the prevalence is provided.

Usage

diagstats(x, cutoff = x$optcut, sens, spec, prevalence, level = 0.95)

Arguments

x

An object of class diagmeta.

cutoff

A numeric or vector with cutoff value(s).

sens

A numeric or vector with sensitivity value(s).

spec

A numeric or vector with specificity value(s).

prevalence

A numeric or vector with the prevalence(s).

level

The level used to calculate confidence intervals.

Value

A data frame of class "diagstats" with the following variables:

cutoff

Cutoffs provided in argument cutoff and / or model-based cutoff values for given sensitivities / specificities.

Sens

Sensitivities provided in argument sens and / or model-based estimates of the sensitivity for given cutoffs / specificities.

lower.Sens, upper.Sens

Lower and upper confidence limits of the sensitivities.

Spec

Specificities provided in argument spec and / or model-based estimates of the specificity for given cutoffs / sensitivities.

lower.Spec, upper.Spec

Lower and upper confidence limits of the specificities.

prevalence

As defined above.

PPV

Positive predictive value (based on the prevalence).

lower.PPV, upper.PPV

Lower and upper confidence limits of positive predictive values.

NPV

Negative predictive value (based on the prevalence)

lower.NPV, upper.NPV

Lower and upper confidence limits of negative predictive values.

PD

Probability of disease if the given cutoff value was observed as the measurement for an individual.

lower.PD, upper.PD

Lower and upper confidence limits of probabilities of disease.

dens.nondiseased

Value of the model-based density function at the cutoff(s) for non-diseased individuals.

dens.diseased

Value of the model-based density function at the cutoff(s) for diseased individuals.

Author(s)

Gerta Rücker [email protected], Srinath Kolampally [email protected], Guido Schwarzer [email protected]

See Also

diagmeta print.diagstats

Examples

# FENO dataset
#
data(Schneider2017)

diag1 <- diagmeta(tpos, fpos, tneg, fneg, cutpoint,
                  studlab = paste(author, year, group),
                  data = Schneider2017, 
                  log.cutoff = TRUE)

# Results at the optimal cutoff
#
diagstats(diag1)

# Results for cutoffs 25 and 50 (and a prevalence of 10%)
#
diagstats(diag1, c(25, 50), prevalence = 0.10)

# Results for sensitivity and specificity of 0.95
#
diagstats(diag1, sens = 0.95, spec = 0.95)

Individual participant data to enter them into diagmeta

Description

Function to transform individual patient data (IPD) to enter them into diagmeta

Usage

ipd2diag(studlab, value, status, data = NULL, direction = "increasing")

Arguments

studlab

A vector with study labels.

value

A vector with individual patients' measurements of a discrete or continuous variable.

status

A vector with information of the individual's status (0 = non-diseased, 1 = diseased).

data

An optional data frame containing the study information.

direction

A character string specifying whether the probability of the target condition (e.g., a disease) is "increasing" or "decreasing" with higher values of the biomarker, can be abbreviated (see diagmeta).

Value

A data frame with additional class 'ipd2diag' containing the following variables:

studlab

As defined above.

cutoff

Cutoff values.

TP, FP, TN, FN

Number of true positives, false positives, true negatives and false negatives.

Author(s)

Gerta Rücker [email protected], Srinath Kolampally [email protected]

See Also

diagmeta, plot.diagmeta, print.diagmeta, summary.diagmeta

Examples

# Simulate IPD data for three studies, each with 30 patients based
# on normally distributed marker values
#
set.seed(20)
k <- 3
n <- 60
m <- c(20, 23, 26)
d <- 10
s <- 5
studlab <- c(rep(1, n), rep(2, n), rep(3, n))
status <- rep(c(rep(0, n / 2), rep(1, n / 2)), k)
measurement <- c(rnorm(n / 2, m[1], s), rnorm(n/2, m[1] + d, s),
                 rnorm(n / 2, m[2], s), rnorm(n/2, m[2] + d, s), 
                 rnorm(n / 2, m[3], s), rnorm(n/2, m[3] + d, s))
#
IPDdata <- data.frame(studlab, measurement, status)
str(IPDdata)

# Transform these data using ipd2diag()
#
diagdata <- ipd2diag(studlab, value = measurement, status = status)
str(diagdata)

# Run diagmeta()
#
diag1 <- diagmeta(diagdata, distr = "normal")
summary(diag1)
plot(diag1)
par(mfrow = c(1, 2))
plot(diag1, which = "ROC", lines = TRUE)
plot(diag1, which = "SROC", ciSens = TRUE,
  ciSpec = TRUE, lines = TRUE, shading = "hatch")

Plot for meta-analysis of diagnostic test accuracy studies with the multiple cutoffs model

Description

Provides several plots for meta-analysis of diagnostic test accuracy studies with the multiple cutoffs model

Usage

## S3 method for class 'diagmeta'
plot(
  x,
  which = c("regression", "cdf", "sensspec", "youden", "roc", "sroc"),
  xlab = "Threshold",
  main,
  ci = FALSE,
  ciSens = FALSE,
  ciSpec = FALSE,
  mark.optcut = FALSE,
  mark.cutpoints = FALSE,
  points = TRUE,
  lines = FALSE,
  rlines = TRUE,
  line.optcut = TRUE,
  col.points = "rainbow",
  cex = 1,
  pch.points = 16,
  col = "black",
  col.ci = "gray",
  col.optcut = "black",
  cex.marks = 0.7 * cex,
  lwd = 1,
  lwd.ci = lwd,
  lwd.optcut = 2 * lwd,
  lwd.study = lwd,
  shading = "none",
  col.hatching = col.ci,
  lwd.hatching = lwd.ci,
  ellipse = FALSE,
  level = x$level,
  xlim = NULL,
  ylim = NULL,
  ...
)

Arguments

x

An object of class diagmeta.

which

A character vector indicating the type of plot, either "regression" or "cdf" or "survival" or "Youden" or "ROC" or "SROC" or "density" or "sensspec", can be abbreviated.

xlab

An x axis label.

main

A logical indicating title to the plot.

ci

A logical indicating whether confidence intervals should be plotted for "regression", "cdf", "survival", "Youden", and "sensspec".

ciSens

A logical indicating whether confidence intervals should be plotted for sensitivity, given the specificity in "SROC" plot.

ciSpec

A logical indicating whether confidence intervals should be plotted for specificity, given the sensitivity in "SROC" plot.

mark.optcut

A logical indicating whether the optimal cutoff should be marked on "SROC" plot.

mark.cutpoints

A logical indicating whether the given cutoffs should be marked on "SROC" plot.

points

A logical indicating whether points should be plotted in plots "regression", "cdf", "survival", "Youden", "ROC", and "sensspec".

lines

A logical indicating whether polygonal lines connecting points belonging to the same study should be printed in plots "regression", "cdf", "survival", "Youden", and "sensspec".

rlines

A logical indicating whether regression lines or curves should be plotted for plots "regression", "cdf", "survival", "Youden", and "sensspec".

line.optcut

A logical indicating whether a vertical line should be plotted at the optimal cutoff line for plots "cdf", "survival", "Youden", and "density".

col.points

A character string indicating color of points, either "rainbow", "topo", "heat", "terrain", "cm", "grayscale", or any color defined in colours.

cex

A numeric indicating magnification to be used for plotting text and symbols.

pch.points

A numeric indicating plot symbol(s) for points.

col

A character string indicating color of lines.

col.ci

A character string indicating color of confidence lines.

col.optcut

A character string indicating color of optimal cutoff line.

cex.marks

A numeric indicating magnification(s) to be used for marking cutoffs.

lwd

A numeric indicating line width.

lwd.ci

A numeric indicating line width of confidence lines.

lwd.optcut

A numeric indicating line width of optimal cutoff.

lwd.study

A numeric indicating line width of individual studies.

shading

A character indicating shading and hatching confidence region in "SROC" plot, either "none" or "shade" or "hatch".

col.hatching

A character string indicating color used in hatching of the confidence region.

lwd.hatching

A numeric indicating line width used in hatching of the confidence region.

ellipse

A logical indicating whether a confidence ellipse should be drawn around the optimal cutoff.

level

The level used to calculate confidence intervals.

xlim

A character or numerical vector indicating the minimum and maximum value for the horizontal axes.

ylim

A numerical vector indicating the minimum and maximum value for the vertical axes.

...

Additional graphical arguments.

Details

The first argument of the plot function is an object of class "diagmeta".

The second argument which indicates which sort of plot(s) should be shown. For which="regression", a scatter plot of the quantile-transformed proportions of negative test results with two regression lines is shown. Points belonging to the same study are marked with the same colour. For which="cdf", the two cumulative distribution functions are shown, corresponding to the proportions of negative test results. For which="survival", the survival functions are shown, corresponding to the proportions of positive test results. For which="Youden", the (potentially weighted) sum of sensitivity and specificity minus 1 is shown; in case of lambda=0.5 (the default) this is the Youden index. For which="ROC", study-specific ROC curves are shown. For which="SROC", the model-based summary ROC curve is shown. For which="density", the model-based densities of both groups are shown. For which="sensspec", the sensitivity (decreasing with increasing cutoff) and the specificity (increasing with increasing cutoff) are shown. Instead of character strings, a numeric value or vector can be used to specify plots with numbers corresponding to the following order of plots: "regression", "cdf", "survival", "youden", "roc", "sroc", "density", and "sensspec".

Other arguments refer to further plot parameters, such as lines (whether points belonging to the same study should be joined), rlines (whether regression curves should be drawn), ci / ciSens / ciSpec / ellipse (whether confidence regions should be shown), line.optcut / mark.optcut (whether the optimal cutoff should be indicated), and additional plot parameters (see Arguments).

If no further arguments are provided, four standard plots ("survival", "Youden", "ROC", and "SROC") are produced in a 2 x 2 format.

Author(s)

Gerta Rücker [email protected], Susanne Steinhauser [email protected], Srinath Kolampally [email protected], Guido Schwarzer [email protected]

References

Schneider A, Linde K, Reitsma JB, Steinhauser S, Rücker G (2017): A novel statistical model for analyzing data of a systematic review generates optimal cutoff values for fractional exhaled nitric oxide for asthma diagnosis. Journal of Clinical Epidemiology, 92, 69–78

Steinhauser S, Schumacher M, Rücker G (2016): Modelling multiple thresholds in meta-analysis of diagnostic test accuracy studies. BMC Medical Research Methodology, 16, 97

See Also

diagmeta

Examples

# FENO dataset
#
data(Schneider2017)

diag1 <- diagmeta(tpos, fpos, tneg, fneg, cutpoint,
                  studlab = paste(author, year, group),
                  data = Schneider2017,
                  log.cutoff = TRUE)


# Regression plot with confidence intervals
#
plot(diag1, which = "regr", lines = FALSE, ci = TRUE)

# Cumulative distribution plot with optimal cutoff line and
# confidence intervals
#
plot(diag1, which = "cdf", line.optcut = TRUE, ci = TRUE)

# Survival plot with optimal cutoff line and confidence intervals
#
plot(diag1, which = "survival", line.optcut = TRUE, ci = TRUE)

# Youden plot of optimal cutoff line and confidence intervals
#
plot(diag1, which = "youden",
     lines = TRUE, line.optcut = TRUE, ci = TRUE)

# ROC plot of lines connecting points belonging to the same study
#
plot(diag1, which = "ROC", lines = TRUE)

# SROC plot of confidence regions for sensitivity and specificity
# with optimal cutoff mark
#
plot(diag1, which = "SROC",
     ciSens = TRUE, ciSpec = TRUE, mark.optcut = TRUE,
     shading = "hatch")

# Density plot of densities for both groups with optimal cutoff
# line
#
plot(diag1, which = "density", line.optcut = TRUE)

Print method for diagmeta objects

Description

Print method for objects of class diagmeta.

Usage

## S3 method for class 'diagmeta'
print(x, digits = 3, digits.prop = gs("digits.prop"), ...)

Arguments

x

An object of class diagmeta.

digits

Number of significant digits for printing of optimal cutoff.

digits.prop

Number of significant digits for proportions, e.g., sensitivities and specificities.

...

Additional arguments.

Author(s)

Gerta Rücker [email protected], Susanne Steinhauser [email protected], Srinath Kolampally [email protected]

See Also

diagmeta summary.diagmeta

Examples

# FENO dataset
#
data(Schneider2017)

diag1 <- diagmeta(tpos, fpos, tneg, fneg, cutpoint,
                  studlab = paste(author, year, group),
                  data = Schneider2017,
                  log.cutoff = TRUE)

diag1

Print method for diagstats objects

Description

Print method for objects of class diagstats.

Usage

## S3 method for class 'diagstats'
print(
  x,
  sensspec = TRUE,
  predicted = TRUE,
  density = FALSE,
  digits = 3,
  digits.prop = gs("digits.prop"),
  ...
)

Arguments

x

An object of class diagmeta.

sensspec

A logical indicating whether sensitivities and specificies should be printed.

predicted

A logical indicating whether predicted values should be printed.

density

A logical indicating whether values of the model-based density functions should be printed.

digits

Number of significant digits for printing of cutoffs.

digits.prop

Number of significant digits for proportions, e.g., sensitivities and specificities.

...

Additional arguments.

Author(s)

Guido Schwarzer [email protected]

See Also

diagstats diagmeta

Examples

# FENO dataset
#
data(Schneider2017)

diag1 <- diagmeta(tpos, fpos, tneg, fneg, cutpoint,
                  studlab = paste(author, year, group),
                  data = Schneider2017, 
                  log.cutoff = TRUE)

# Values for prevalence 10% at cutoffs 25 and 50
#
ds1 <- diagstats(diag1, c(25, 50), 0.10)
ds1
print(ds1, predicted = FALSE)

Print detailed results for diagmeta objects

Description

Print detailed results for objects of class summary.diagmeta.

Usage

## S3 method for class 'summary.diagmeta'
print(x, digits = 3, ...)

Arguments

x

An object of class summary.diagmeta.

digits

Number of significant digits for printing.

...

Additional arguments.

Author(s)

Gerta Rücker [email protected], Susanne Steinhauser [email protected], Srinath Kolampally [email protected], Guido Schwarzer [email protected]

See Also

diagmeta summary.diagmeta

Examples

# FENO dataset
#
data(Schneider2017)

diag1 <- diagmeta(tpos, fpos, tneg, fneg, cutpoint,
                  studlab = paste(author, year, group),
                  data = Schneider2017,
                  log.cutoff = TRUE)

summary(diag1)
print(summary(diag1), digits.prop = 2)

Meta-analysis of studies of the diagnostic test accuracy of FENO for diagnosis of asthma

Description

Meta-analysis of studies of the diagnostic test accuracy of fractional exhaled nitric oxide (FENO) for diagnosis of asthma.

The data were collected for a systematic review by Karrasch et al. (2017) and are published as a supplement (Appendix 1) to Schneider et al. (2017). They have been preprocessed for use in R package diagmeta.

Format

A data frame with the following columns:

study_id numeric study ID
author first author
year year of publication
group information on subgroup
cutpoint cutpoint (FeNO [ppb])
tpos number of true positives
fneg number of false negatives
fpos number of false positives
tneg number of true negatives

Source

Karrasch S, Linde K, Rücker G, Sommer H, Karsch-Volk M, Kleijnen J, Jörres RA, Schneider A (2017): Accuracy of FENO for diagnosing asthma: a systematic review. Thorax, 72, 109e16

Schneider A, Linde K, Reitsma JB, Steinhauser S, Rücker G (2017): A novel statistical model for analyzing data of a systematic review generates optimal cutoff values for fractional exhaled nitric oxide for asthma diagnosis. Journal of Clinical Epidemiology, 92, 69–78

Examples

# FENO dataset
#
data(Schneider2017)

diag1 <- diagmeta(tpos, fpos, tneg, fneg, cutpoint,
                  studlab = paste(author, year, group),
                  data = Schneider2017,
                  log.cutoff = TRUE)

plot(diag1)

Summary method for diagmeta

Description

Summary method for objects of class diagmeta.

Usage

## S3 method for class 'diagmeta'
summary(object, ...)

Arguments

object

An object of class diagmeta.

...

Additional arguments.

Value

A list with classes 'summary.diagmeta' and 'diagmeta' is returned. The list elements are identical to a diagmeta object.

Author(s)

Srinath Kolampally [email protected], Guido Schwarzer [email protected]

See Also

diagmeta

Examples

# FENO dataset
#
data(Schneider2017)

diag1 <- diagmeta(tpos, fpos, tneg, fneg, cutpoint,
                  studlab = paste(author, year, group),
                  data = Schneider2017,
                  log.cutoff = TRUE)

summary(diag1)