diagmeta {diagmeta} | R Documentation |
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. Here we assume that higher values of the biomarker indicate a greater probability for the target condition (e.g., a disease); otherwise, the poling must be changed by multiplying all values of the biomarker by -1. 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,
log.cutoff = FALSE,
method.weights = "invvar",
level = 0.95,
incr = 0.5,
n.iter.max = 1000,
tol = 1e-08,
silent = TRUE,
...
)
Arguments
TP , FP , TN , FN |
Numeric vectors giving the number of true positives, false positives, true negatives and 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 sensitivity (such that specificity receives weight 1 - lambda) |
log.cutoff |
A logical indicating whether the cutoffs should be log-transformed |
method.weights |
A character indicating the method for
weighting the studies: |
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.
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
).
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 |
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 |
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 gerta.ruecker@uniklinik-freiburg.de, Susanne Steinhauser susanne.steinhauser@uni-koeln.de, Srinath Kolampally kolampal@imbi.uni-freiburg.de, Guido Schwarzer guido.schwarzer@uniklinik-freiburg.de
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)