pROC: display and analyze ROC curves in R and S+

pROC is a set of tools to visualize, smooth and compare receiver operating characteristic (ROC curves). (Partial) area under the curve (AUC) can be compared with statistical tests based on U-statistics or bootstrap. Confidence intervals can be computed for (p)AUC or ROC curves.

Screenshots montage
More screenshots and examples…

Find us on:
RSS Facebook Twitter Google+ LinkedIn GitHub

If you use pROC in published research, please cite the following paper:

Xavier Robin, Natacha Turck, Alexandre Hainard, Natalia Tiberti, Frédérique Lisacek, Jean-Charles Sanchez and Markus Müller (2011). pROC: an open-source package for R and S+ to analyze and compare ROC curves. BMC Bioinformatics, 12, p. 77. DOI: 10.1186/1471-2105-12-77.

Xavier Robin, Natacha Turck, Alexandre Hainard, Natalia Tiberti, Frédérique Lisacek, Jean-Charles Sanchez and Markus Müller
Xavier Robin

pROC comes in two flavours: a command line version for the R statistical software environment, and a graphical user interface (GUI) for S+.



This version is intended to be employed through the R command line.


There is no need to download the package. The installation can be done in one command directly from R:


The package must then be loaded with:


To get help, enter the following in the R prompt:



Any of the following commands will update pROC if possible:

update.packages() # will install updates to all your packages

This version is intended to be employed with the TIBCO Spotfire S+ program. It has a graphical user interface (GUI), but the command line is also available.


In the S+ command prompt (in Windows, you can open it from S+ Window menu, Commands Window item), type:


Then open the File menu, item Find packages…, and select pROC in the list.

After loading from the File menu, item Load Library…, a new ROC curves menu is available in the Statistics menu. You can also load it with the command


More details about installation…


Open the File menu, item Update packages… menu.

You can also repeat the installation to get the latest version of pROC, or type in the command line:


More details about update…


1.5.3 (2011-08-31) (R, release notes)
AUC specification was lost when roc.test, cov or var was passed an auc' object.
Correct computation of "accuracy" in coords (thanks to Kosuke Yoshihara for the report).
1.5.1 (2011-03-09) (R, release notes)
Faster loading of the package (thanks to Prof Brian Ripley and Glenn Lawyer for the report).
1.5 (2011-12-12) (R, release notes)
New cov and var functions.
coords accepts new ret values: "accuracy", "tn", "tp", "fn", "fp", "npv", "ppv", "1-specificity", "1-sensitivity", "1-npv", "1-ppv", "npe" and "ppe".
New legacy.axes argument to plot 1-specificity rather than specificity.
New axes argument to turn off the plotting of the axis.
New logcondens and logcondens.smooth (Univariate Log-Concave Density Estimation) smoothing methods.
New function has.partial.auc to determine if an AUC is full or partial.
New argument drop for coords.
auc and multiclass.auc objects now also have secondary class numeric.
Updated load call.
Delong's CI reversed in ROC curves with direction=">".
Delong's CI AUC returned values > 1 or < 0 in some rare cases.
Minor improvements in documentation.
1.4.4 (2011-08-10) (R, S+, release notes)
Fixed alternative for one-tailed tests.
Removed COPYING file to fix a warning in r-devel.
1.4.3 (2011-03-18) (R, S+, release notes)
Updated citation.
1.4.2 (2011-03-03) (R, S+, release notes)
Fixed bootstrap roc.test generating NAs when smooth.rocs were used with reuse.auc=FALSE (thanks to Buddy for the report).
Documented a warning that was missing in roc.test.
Updated citation.
1.4.1 (2011-01-27) (R, S+, release notes)
Venkatraman's test for unpaired ROC curves.
1.4 (2011-01-21) (R, S+, release notes)
'smooth' does not apply on ordered factors anymore.
Multi-class AUC support (R only).
Can choose how best thresold is determined (best.method and best.weights in coords and and in plot.roc).
Minor fixes in documentation (R and S+) and citation (S+ only).
print now prints the response instead of response and more informative data in htests.
Bootstrap with ci.auc consumes much less memory.
Unpaired bootstrap and DeLong's test.
Specificity and sensitivity tests (in roc.test).
1.3.2 (2010-08-24) (R, S+, release notes)
print.auc printed incorrect CI in plot.roc (thanks to Alexander B. Leichtle for the report).
Failed to detect local maximas in coords when 2 or less points were selected.
Don't consider ROC extremities (+-Inf at 1.0/0.0 SE<->SP) as local maximas.
1.3.1 (2010-08-18) (R, release notes)
Sensitivity and specificity were inverted in coords when results were reported as list.
Faster checks with \dontrun{} in roc.test.
1.3 (2010-08-13) (R, S+, release notes)
CI is not re-computed by default in smooth.roc. You can still turn it on with
New function are.paired.
Local maximas could be incorrectly detected in coords (and plot.roc) with predictors containing more than 2 levels.
New method venkatraman for roc.test.
MASS and tcltk packages are now only suggested instead of required (R only).
... not passed correctly in with type="bars" resulting in an error (R only).
1.2.1 (2010-05-11) (R, S+, release notes)
Handle method arguments for smooth.roc and ci.auc separately in roc.default (R-only).
Added auc.polygon.* and max.auc.polygon.* arguments for polygon in plot.roc.
1.2 (2010-05-09) (R, release notes)
Added DeLong method in ci.auc (with a GUI, S+ only).
Return value of ci.auc does not contain an "aucs" item anymore.
Put most examples with bootstrap within \dontrun{} blocks for faster (but less useful) checks execution.
1.1 (2010-05-05) (R, S+, release notes)
Added lines.roc functions for ROC.
Added type argument for both lines.roc and plot.roc.
Added print.auc.col argument to plot.roc.
Fixed a warning in roc.test.default when the class of predictor1 had several elements.
Fixed an encoding failure during the checks on MacOS X (R only).
1.0.1 (2010-04-28) (R, release notes)
Reduced examples execution time. Added low boot.n in the slowest examples and reuse.auc and arguments in smooth.roc.roc.
1.0 (2010-04-27) (R, S+, release notes)
First public release.

Known bugs

Please report any bug you may encounter to Xavier Robin.