[R] help on ROC analysis

Frank E Harrell Jr f.harrell at vanderbilt.edu
Mon Dec 31 16:38:33 CET 2007

zhijie zhang wrote:
> Dear all,
>   Some functions like 'ROC(Epi)' can be used to perform ROC analyssi, but it
> needs us to specify the fitting model in the argument. Now i have got the
> predicted p-values (0,1) for the 0/1 response variable using some other
> approach, see the following example dataset:
> id   mark  predict.pvalue
> 1      1       0.927
> 2      0       0.928
> 3      1       0.928
> ..................
> *mark* is the true classes, *predict.pvalue* is the predicted p-values,
> which was used to determine the predicted classes. So i need to specify some
> cut points for *predict.pvalue*, and then compare it with *mark*class,
> generate the 2*2 tables, and then calculate some sensitivity,
> specifity....statistcs, and ROC curve.
>  I have searched some functions, such as roc(analogue),'ROC(Epi),etc. They
> may need to specify the fitting model in the codes or group varibles,
> and may be not appropriate for my condition. I think that it should
> have been performed in some package for ROC analysis.
>   Anybody can tell me which function is for this case?
>   Thanks very much.

Forming the ROC curve can lead to bad statistical practice, e.g., use of 
non-pre-specified cutpoints and use of cutpoints in general.  The area 
under the ROC curve is a valid measure of predictive discrimination 
though (even though it cannot be used to compare 2 models as it is not 
sensitive enough).  To get the ROC area you can use the simple somers2 
function in the Hmisc package.


Frank E Harrell Jr   Professor and Chair           School of Medicine
                      Department of Biostatistics   Vanderbilt University

More information about the R-help mailing list