Plot the Ruecker-Schumacher (2010) SROC curve

Share:

Description

Assuming that a weighted Youden index is maximized in all primary studies, the Ruecker-Schumacher approach estimates individual ROC curves and then averages them.

Usage

1
2
3
4
5
6
rsSROC(data = NULL, subset=NULL,
  TP="TP", FN="FN", FP="FP", TN="TN", 
  lambda = "from_bivariate",                  
  fpr = NULL, extrapolate = FALSE, plotstudies = FALSE,
  correction = 0.5, correction.control = "all",
  add = FALSE, lty = 1, lwd = 1, col = 1, ...)

Arguments

data

any object that can be converted to a data frame with integer variables for observed frequencies of true positives, false negatives, false positives and true negatives. The names of the variables are provided by the arguments TP, FN, FP and TN (see their defaults). Alternatively the data can be a matrix with column names including TP, FN, FP and TN. If no data is specified, the function will check the TP, FN, FP and TN arguments.

TP

character or integer: name for vector of integers that is a variable of data or a vector of integers. If data is not NULL, names are expected, otherwise integers are.

FN

character or integer: name for vector of integers that is a variable of data or a vector of integers. If data is not NULL, names are expected, otherwise integers are.

FP

character or integer: name for vector of integers that is a variable of data or a vector of integers. If data is not NULL, names are expected, otherwise integers are.

TN

character or integer: name for vector of integers that is a variable of data or a vector of integers. If data is not NULL, names are expected, otherwise integers are.

subset

the rows of data to be used as a subset in all calculations. If NULL (the default) then the complete data is considered.

lambda

numeric or "from_bivariate", the weight of the weighted Youden index. Must be between 0 and 1. If set to "from_bivariate", the reitsma function is used to calculate lambda from the data.

fpr

Points between 0 and 1 on which to draw the SROC curve. Should be tightly spaced. If set to NULL, the default, it will be the vector of numbers 0.01, 0.02, ..., 0.99 and is truncated if the extrapolate argument is FALSE.

extrapolate

logical, should the SROC curve be extrapolated beyond the region where false positive rates are observed?

plotstudies

logical, should the ROC curves for the individual studies be added to the plot? The plot will become crowded if set to TRUE.

correction

numeric, continuity correction applied if zero cells

correction.control

character, if set to "all" (the default) the continuity correction is added to the whole data if only one cell in one study is zero. If set to "single" the correction is only applied to rows of the data which have a zero.

add

logical, should the SROC curve be added to an existing plot?

lty

line type, see lines.

lwd

line width, see lines.

col

color of SROC, see lines.

...

arguments to be passed on to plotting functions.

Details

Details are found in the paper of Ruecker and Schumacher (2010).

Value

Besides plotting the SROC, an invisible list is returned which contains the parameters of the SROC.

Author(s)

Philipp Doebler <philipp.doebler@googlemail.com> Original code kindly supplied by G. Ruecker.

References

Ruecker G., & Schumacher M. (2010) “Summary ROC curve based on a weighted Youden index for selecting an optimal cutpoint in meta-analysis of diagnostic accuracy.” Statistics in Medicine, 29, 3069–3078.

See Also

reitsma-class, talpha, SummaryPts

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
## First Example
data(Dementia)
ROCellipse(Dementia)
rsSROC(Dementia, add = TRUE) # Add the RS-SROC to this plot

## Second Example
# Make a crowded plot and look at the coefficients
rs_Dementia <- rsSROC(Dementia, col = 3, lwd = 3, lty = 3, 
                      plotstudies = TRUE)
rs_Dementia$lambda
rs_Dementia$aa # intercepts of primary studies on logit ROC space
rs_Dementia$bb # slopes