Function to compute and draw ROC-curves.

Share:

Description

Computes sensitivity, specificity and positive and negative predictive values for a test based on dichotomizing along the variable test, for prediction of stat. Plots curves of these and a ROC-curve.

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
ROC( test = NULL,
     stat = NULL,
     form = NULL,
     plot = c("sp", "ROC"),
       PS = is.null(test),
       PV = TRUE,
       MX = TRUE,
       MI = TRUE,
      AUC = TRUE,
     grid = seq(0,100,10),
 col.grid = gray( 0.9 ),
     cuts = NULL,
      lwd = 2,
     data = parent.frame(),
      ... )

Arguments

test

Numerical variable used for prediction.

stat

Logical variable of true status.

form

Formula used in a logistic regression. If this is given, test and stat are ignored. If not given then both test and stat must be supplied.

plot

Character variable. If "sp", the a plot of sensitivity, specificity and predictive values against test is produced, if "ROC" a ROC-curve is plotted. Both may be given.

PS

logical, if TRUE the x-axis in the plot "ps"-plot is the the predicted probability for stat==TRUE, otherwise it is the scale of test if this is given otherwise the scale of the linear predictor from the logistic regression.

PV

Should sensitivity, specificity and predictive values at the optimal cutpoint be given on the ROC plot?

MX

Should the “optimal cutpoint” (i.e. where sens+spec is maximal) be indicated on the ROC curve?

MI

Should model summary from the logistic regression model be printed in the plot?

AUC

Should the area under the curve (AUC) be printed in the ROC plot?

grid

Numeric or logical. If FALSE no background grid is drawn. Otherwise a grid is drawn on both axes at grid percent.

col.grid

Colour of the grid lines drawn.

cuts

Points on the test-scale to be annotated on the ROC-curve.

lwd

Thickness of the curves

data

Data frame in which to interpret the variables.

...

Additional arguments for the plotting of the ROC-curve. Passed on to plot

Details

As an alternative to a test and a status variable, a model formula may given, in which case the the linear predictor is the test variable and the response is taken as the true status variable. The test used to derive sensitivity, specificity, PV+ and PV- as a function of x is test>=x as a predictor of stat=TRUE.

Value

A list with two components:

res

dataframe with variables sens, spec, pvp, pvn and name of the test variable. The latter is the unique values of test or linear predictor from the logistic regression in ascending order with -Inf prepended. Since the sensitivity is defined as P(test>x)|status=TRUE, the first row has sens equal to 1 and spec equal to 0, corresponding to drawing the ROC curve from the upper right to the lower left corner.

lr

glm object with the logistic regression result used for construction of the ROC curve

0, 1 or 2 plots are produced according to the setting of plot.

Author(s)

Bendix Carstensen, Steno Diabetes Center \& University of Copenhagen, http://BendixCarstensen.com

Examples

1
2
3
4
5
6
x <- rnorm( 100 )
z <- rnorm( 100 )
w <- rnorm( 100 )
tigol <- function( x ) 1 - ( 1 + exp( x ) )^(-1)
y <- rbinom( 100, 1, tigol( 0.3 + 3*x + 5*z + 7*w ) )
ROC( form = y ~ x + z, plot="ROC" )

Want to suggest features or report bugs for rdrr.io? Use the GitHub issue tracker.