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.
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(),
... )
A list with two components:
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.
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
.
Numerical variable used for prediction.
Logical variable of true status.
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.
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.
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.
Should sensitivity, specificity and predictive values at the optimal cutpoint be given on the ROC plot?
Should the ``optimal cutpoint'' (i.e. where sens+spec is maximal) be indicated on the ROC curve?
Should model summary from the logistic regression model be printed in the plot?
Should the area under the curve (AUC) be printed in the ROC plot?
Numeric or logical. If FALSE no background grid is
drawn. Otherwise a grid is drawn on both axes at grid
percent.
Colour of the grid lines drawn.
Points on the test-scale to be annotated on the ROC-curve.
Thickness of the curves
Data frame in which to interpret the variables.
Additional arguments for the plotting of the
ROC-curve. Passed on to plot
Bendix Carstensen, Steno Diabetes Center Copenhagen, http://bendixcarstensen.com
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
\(\geq x\) as a predictor of
stat
=TRUE.
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