Learn R Programming

Epi (version 1.1.20)

ROC: Function to compute and draw ROC-curves.

Description

Computes sensitivity, specificity and positive and negative predictive values for a test based on dichotomizing along the variable test, for prediction of stat. Alternatively 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. Plots curves of these and a ROC-curve.

Usage

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 r
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

Value

  • A list with two components:
  • resdataframe with variables sn, sp, pvp, pvn and fv. The latter is the unique values of test (for PS==FALSE ) or linear predictor from the logistic regression
  • lrglm 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.

Examples

Run this code
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" )

Run the code above in your browser using DataLab