Compute the confidence interval of the AUC
ci.auc.RdThis function computes the confidence interval (CI) of an area under the curve (AUC).
Usage
# ci.auc(...)
# S3 method for class 'roc'
ci.auc(roc, conf.level=0.95, method=c("delong",
"bootstrap"), boot.n = 2000, boot.stratified = TRUE, reuse.auc=TRUE,
progress = NULL, parallel=FALSE, ...)
# S3 method for class 'smooth.roc'
ci.auc(smooth.roc, conf.level=0.95, boot.n=2000,
boot.stratified=TRUE, reuse.auc=TRUE,
progress = NULL, parallel=FALSE, ...)
# S3 method for class 'auc'
ci.auc(auc, ...)
# S3 method for class 'multiclass.roc'
ci.auc(multiclass.roc, ...)
# S3 method for class 'multiclass.auc'
ci.auc(multiclass.auc, ...)
# S3 method for class 'auc'
ci.auc(auc, ...)
# S3 method for class 'formula'
ci.auc(formula, data, ...)
# Default S3 method
ci.auc(response, predictor, ...)Arguments
- roc, smooth.roc
a “roc” object from the
rocfunction, or a “smooth.roc” object from thesmoothfunction.- auc
an “auc” object from the
aucfunction.- multiclass.roc, multiclass.auc
not implemented.
- response, predictor
arguments for the
rocfunction.- formula, data
a formula (and possibly a data object) of type response~predictor for the
rocfunction.- conf.level
the width of the confidence interval as [0,1], never in percent. Default: 0.95, resulting in a 95% CI.
- method
the method to use, either “delong” or “bootstrap”. The first letter is sufficient. If omitted, the appropriate method is selected as explained in details.
- boot.n
the number of bootstrap replicates. Default: 2000.
- boot.stratified
should the bootstrap be stratified (default, same number of cases/controls in each replicate than in the original sample) or not.
- reuse.auc
if
TRUE(default) and the “roc” object contains an “auc” field, re-use these specifications for the test. If false, use optional...arguments toauc. See details.- progress
DEPRECATED. A value other than
NULLwill produce a warning. The argument will be removed in a future version.- parallel
DEPRECATED. A value other than
FALSEwill produce a warning. The argument will be removed in a future version.- ...
further arguments passed to or from other methods, especially arguments for
rocandroc.test.rocwhen callingroc.test.defaultorroc.test.formula. Arguments foraucandtxtProgressBar(onlycharandstyle) if applicable.
Details
This function computes the CI of an AUC. Two methods are available:
“delong” and “bootstrap” with the parameters defined in “roc$auc” to
compute a CI. When it is called with two vectors (response, predictor)
or a formula (response~predictor) arguments, the roc
function is called to build the ROC curve first.
The default is to use the “delong” method, except for comparison of
partial AUC and smoothed curves, where bootstrap is used. Using
“delong” for partial AUC and smoothed ROCs is not supported.
With method="bootstrap", the function calls auc
boot.n times. For more details about the bootstrap, see the Bootstrap section in
this package's documentation.
For smoothed ROC curves, smoothing is performed again at each
bootstrap replicate with the parameters originally provided.
If a density smoothing was performed with user-provided
density.cases or density.controls the bootstrap cannot
be performed and an error is issued.
With method="delong", the variance of the AUC is computed as
defined by DeLong et al. (1988) using the algorithm by Sun and Xu (2014)
and the CI is deduced with qnorm.
CI of multiclass ROC curves and AUC is not implemented yet. Attempting to call these methods returns an error.
AUC specification
The comparison of the CI needs a specification of the AUC. This allows to compute the CI for full or partial AUCs. The specification is defined by:
the “auc” field in the “roc” object if
reuse.aucis set toTRUE(default). It is naturally inherited from any call torocand fits most cases.passing the specification to
aucwith ... (argumentspartial.auc,partial.auc.correctandpartial.auc.focus). In this case, you must ensure either that therocobject do not contain anaucfield (if you calledrocwithauc=FALSE), or setreuse.auc=FALSE.
If reuse.auc=FALSE the auc function will always
be called with ... to determine the specification, even if
the “roc” object do contain an auc field.
As well if the “roc” object do not contain an auc
field, the auc function will always be called with
... to determine the specification.
Warning: if the roc object passed to ci contains an auc
field and reuse.auc=TRUE, auc is not called and
arguments such as partial.auc are silently ignored.
Warnings
If method="delong" and the AUC specification specifies a
partial AUC, the warning “Using DeLong's test for partial AUC is
not supported. Using bootstrap test instead.” is issued. The
method argument is ignored and “bootstrap” is used
instead.
If boot.stratified=FALSE and the sample has a large imbalance between
cases and controls, it could happen that one or more of the replicates
contains no case or control observation, or that there are not enough
points for smoothing, producing a NA area.
The warning “NA value(s) produced during bootstrap were ignored.”
will be issued and the observation will be ignored. If you have a large
imbalance in your sample, it could be safer to keep
boot.stratified=TRUE.
Errors
If density.cases and density.controls were provided
for smoothing, the error “Cannot compute the statistic on ROC
curves smoothed with density.controls and density.cases.” is issued.
Value
A numeric vector of length 3 and class “ci.auc”, “ci” and “numeric” (in this order), with the lower bound, the median and the upper bound of the CI, and the following attributes:
- conf.level
the width of the CI, in fraction.
- method
the method employed.
- boot.n
the number of bootstrap replicates.
- boot.stratified
whether or not the bootstrapping was stratified.
- auc
an object of class “auc” stored for reference about the compued AUC details (partial, percent, ...)
The aucs item is not included in this list since version 1.2 for
consistency reasons.
References
James Carpenter and John Bithell (2000) “Bootstrap condence intervals: when, which, what? A practical guide for medical statisticians”. Statistics in Medicine 19, 1141–1164. DOI: doi:10.1002/(SICI)1097-0258(20000515)19:9<1141::AID-SIM479>3.0.CO;2-F .
Elisabeth R. DeLong, David M. DeLong and Daniel L. Clarke-Pearson (1988) “Comparing the areas under two or more correlated receiver operating characteristic curves: a nonparametric approach”. Biometrics 44, 837–845.
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: doi:10.1109/LSP.2014.2337313 .
Xavier Robin, Natacha Turck, Alexandre Hainard, et al. (2011) “pROC: an open-source package for R and S+ to analyze and compare ROC curves”. BMC Bioinformatics, 7, 77. DOI: doi:10.1186/1471-2105-12-77 .
Hadley Wickham (2011) “The Split-Apply-Combine Strategy for Data Analysis”. Journal of Statistical Software, 40, 1–29. URL: doi:10.18637/jss.v040.i01 .