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
andna.action
arguments now handled properly inroc.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
andylim
gracefully inplot.roc
. - Improved validation of input class
levels
anddirection
; A message can be printed when auto-detecting, use thequiet
argument to turn on. - Removed extraneous
name
attribute on thep.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(N2).
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