pROC: Screenshots

Partial AUC (pAUC)
library(pROC)
data(aSAH)

plot.roc(aSAH$outcome, aSAH$s100b, # data
         percent=TRUE, # show all values in percent
         partial.auc=c(100, 90), partial.auc.correct=TRUE, # define a partial AUC (pAUC)
         print.auc=TRUE, #display pAUC value on the plot with following options:
         print.auc.pattern="Corrected pAUC (100-90%% SP):\n%.1f%%", print.auc.col="#1c61b6",
         auc.polygon=TRUE, auc.polygon.col="#1c61b6", # show pAUC as a polygon
         max.auc.polygon=TRUE, max.auc.polygon.col="#1c61b622", # also show the 100% polygon
         main="Partial AUC (pAUC)")
plot.roc(aSAH$outcome, aSAH$s100b,
         percent=TRUE, add=TRUE, type="n", # add to plot, but don't re-add the ROC itself (useless)
         partial.auc=c(100, 90), partial.auc.correct=TRUE,
         partial.auc.focus="se", # focus pAUC on the sensitivity
         print.auc=TRUE, print.auc.pattern="Corrected pAUC (100-90%% SE):\n%.1f%%", print.auc.col="#008600",
         print.auc.y=40, # do not print auc over the previous one
         auc.polygon=TRUE, auc.polygon.col="#008600",
         max.auc.polygon=TRUE, max.auc.polygon.col="#00860022")
	
Confidence intervals
library(pROC)
data(aSAH)

rocobj <- plot.roc(aSAH$outcome, aSAH$s100b,
                main="Confidence intervals", percent=TRUE,
                ci=TRUE, # compute AUC (of AUC by default)
                print.auc=TRUE) # print the AUC (will contain the CI)
ciobj <- ci.se(rocobj, # CI of sensitivity
               specificities=seq(0, 100, 5)) # over a select set of specificities
plot(ciobj, type="shape", col="#1c61b6AA") # plot as a blue shape
plot(ci(rocobj, of="thresholds", thresholds="best")) # add one threshold
	
Smoothing
library(pROC)
data(aSAH)

rocobj <- plot.roc(aSAH$outcome, aSAH$s100b, percent = TRUE, main="Smoothing")
lines(smooth(rocobj), # smoothing (default: binormal)
      col = "#1c61b6")
lines(smooth(rocobj, method = "density"), # density smoothing
      col = "#008600")
lines(smooth(rocobj, method = "fitdistr", # fit a distribution
             density = "lognormal"), # let the distribution be log-normal
      col = "#840000")
legend("bottomright", legend = c("Empirical", "Binormal", "Density", "Fitdistr\n(Log-normal)"), col = c("black", "#1c61b6", "#008600", "#840000"),lwd = 2)
	
Confidence intervals of specificity/sensitivity
library(pROC)
data(aSAH)

rocobj <- plot.roc(aSAH$outcome, aSAH$s100b,
                   main="Confidence intervals of specificity/sensitivity", percent=TRUE,
                   ci=TRUE, of="se", # ci of sensitivity
                   specificities=seq(0, 100, 5), # on a select set of specificities
                   ci.type="shape", ci.col="#1c61b6AA") # plot the CI as a blue shape
plot(ci.sp(rocobj, sensitivities=seq(0, 100, 5)), # ci of specificity
     type="bars") # print this one as bars
	
Confidence interval of a threshold
library(pROC)
data(aSAH)

plot.roc(aSAH$outcome, aSAH$s100b,
         main="Confidence interval of a threshold", percent=TRUE,
         ci=TRUE, of="thresholds", # compute AUC (of threshold)
         thresholds="best", # select the (best) threshold
         print.thres="best") # also highlight this threshold on the plot
	
Comparison
library(pROC)
data(aSAH)

rocobj1 <- plot.roc(aSAH$outcome, aSAH$s100,
                    main="Statistical comparison", percent=TRUE, col="#1c61b6")
rocobj2 <- lines.roc(aSAH$outcome, aSAH$ndka, percent=TRUE, col="#008600")
testobj <- roc.test(rocobj1, rocobj2)
text(50, 50, labels=paste("p-value =", format.pval(testobj$p.value)), adj=c(0, .5))
legend("bottomright", legend=c("S100B", "NDKA"), col=c("#1c61b6", "#008600"), lwd=2)