pROC 1.13.0 was just released with bug fixes and a new feature.
Infinite values in predictor
Following the release of pROC 1.12, it quickly became clear with issue #30 that infinite values were handled differently by the different algorithms of pROC. The problem with these values is that they cannot be thresholded. An
Inf will always be greater than any value. This means that in some cases, it may not be possible to reach 0 or 100% specificity or sensitivity. This also revealed that threshold-agnostic algorithms such as
algorithm="2" or the DeLong theta calculations would happily reach 0 or 100% specificity or sensitivity in those case, although those values are unattainable.
Starting with 1.13.0, when pROC's
roc function finds any infinite value in the
predictor argument, or in
cases, it will return
NaN (not a number).
The handling of near ties close to + or - Infinity or 0 has been improved by calculating the threshold (which is the mean between two consecutive values) differently depending on the mean value itself. This allows preserving as much precision close to 0 without maxing out large absolute values.
New argument for ggroc
ggroc can now take a new value for the
aes="group". Consistent with ggplot2, it allows to curves with identical aesthetics to be split in different groups. This is especially useful for instance in facetted plots.
library(pROC) data(aSAH) roc.list <- roc(outcome ~ s100b + ndka + wfns, data = aSAH) g.list <- ggroc(roc.list) g.group <- ggroc(roc.list, aes="group") g.group + facet_grid(.~name)
Facetting of 3 ROC curves with ggroc.
Getting the update
The update has just been accepted on CRAN and should be online soon. Once it is out, update your installation by simply typing:
The full changelog is:
NaNwhen predictor contains infinite values ( issue #30).
- Better handling of near-ties near +-Infinity and 0.
aes="group"to allow curves with identical aesthetics.