# pROC 1.9.1

After nearly two years since the previous release, pROC 1.9.1 is finally available on CRAN. Here is a list of the main changes:

`subset`

and`na.action`

arguments now handled properly in`roc.formula`

. This means you can now do something like this:data(aSAH) roc(outcome ~ s100b, data=aSAH, subset=(gender == "Male")) roc(outcome ~ s100b, data=aSAH, subset=(gender == "Female"))

Thanks Terry Therneau for the report.- Added policies to handle the case where a ROC curve has multiple "best" threshold in
`ci.coords`

. The following policies are available:- "stop" will abort the processing and throw an error (with
`stop`

). This is the default. - "omit" will ignore the sample (as in
`NULL`

). This can lead to a reduced effective number of usable sample in the final statistic. - "random" will select one of the threshold randomly.

data(aSAH) ci.coords(aSAH$outcome, aSAH$s100b, x="best", input = "threshold", ret=c("specificity", "ppv", "tp"), best.policy = "random")

Thanks Nicola Toschi for the report. - "stop" will abort the processing and throw an error (with
- Support
`xlim`

and`ylim`

gracefully in`plot.roc`

. - Improved validation of input class
`levels`

and`direction`

; A message can be printed when auto-detecting, use the`quiet`

argument to turn on. - Removed extraneous
`name`

attribute on the`p.value`

(thanks Paweł Kleka for the report). - Faster DeLong algorithm (code contributed by Stefan Siegert). The code is based on the algorithm by Xu Sun and Weichao Xu (2014) that has an O(N log N) complexity instead of O(N
^{2}).

The DeLong algorithm is now always faster than bootstrapping, even in the previous edge case of ROC curve with large number of samples and few thresholds where bootstrapping used to be faster. Here is a quick example with 200000 data points:library(pROC) n <- 200000 a <- as.numeric(cut(rnorm(n), c(-Inf, -1, 0, 1, Inf))) b <- round(runif(n)) r <- roc(b, a, algorithm = 3) # With Bootstrap > system.time(var(r, method = "b", progress = "none")) utilisateur système écoulé 25.896 0.136 26.027 # With old DeLong algorithm > system.time(var(r, method = "d")) utilisateur système écoulé 47.352 0.008 47.353 # With new DeLong algorithm > system.time(var(r, method = "d")) utilisateur système écoulé 0.016 0.008 0.023

## Obtaining the update

To update your installation, simply type:

install.packages("pROC")

## References

Xu Sun and Weichao Xu (2014) "Fast Implementation of DeLongs Algorithm for Comparing
the Areas Under Correlated Receiver Operating Characteristic Curves". *IEEE Signal
Processing Letters*, **21**, 1389-1393. DOI: 10.1109/LSP.2014.2337313.

Xavier Robin

Published Monday, February 6, 2017 09:08 CET

Permalink: /blog/2017/02/06/proc-1.9.1

Tags:
pROC

Comments: 0