Compute the Area Under the ROC Curve (AUC) of a predictor and possibly its 95% confidence interval.

AUC(pred, target, digits = NULL)

AUCBoot(pred, target, nboot = 10000, seed = NA, digits = NULL)

Arguments

pred Vector of predictions. Vector of true labels (must have exactly two levels, no missing values). See round. Default doesn't use rounding. Number of bootstrap samples used to evaluate the 95% CI. Default is 1e4. See set.seed. Use it for reproducibility. Default doesn't set any seed.

Value

The AUC, a probability, and possibly its 2.5% and 97.5% quantiles (95% CI).

Details

Other packages provide ways to compute the AUC (see this answer). I chose to compute the AUC through its statistical definition as a probability: $$P(score(x_{case}) > score(x_{control})).$$ Note that I consider equality between scores as a 50%-probability of one being greater than the other.

Examples

set.seed(1) AUC(c(0, 0), 0:1) # Equality of scores
#>  0.5
AUC(c(0.2, 0.1, 1), c(0, 0, 1)) # Perfect AUC
#>  1
x <- rnorm(100) z <- rnorm(length(x), x, abs(x)) y <- as.numeric(z > 0) print(AUC(x, y))
#>  0.7926731
print(AUCBoot(x, y))
#> Mean 2.5% 97.5% Sd #> 0.79333279 0.69267707 0.88535292 0.04971805
# Partial AUC pAUC <- function(pred, target, p = 0.1) { val.min <- min(target) q <- quantile(pred[target == val.min], probs = 1 - p) ind <- (target != val.min) | (pred > q) bigstatsr::AUC(pred[ind], target[ind]) * p } pAUC(x, y)
#>  0.008148148
pAUC(x, y, 0.2)
#>  0.05473251