Created
October 22, 2014 01:38
-
-
Save joaovissoci/82b0cfb5e48b5daed9ef to your computer and use it in GitHub Desktop.
beautiful_roc_curve.R
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
library(pROC) | |
data(aSAH) | |
#Initial ROC analysis | |
roc(aSAH$outcome, aSAH$s100b) #first argument = outcome; second = predictor | |
roc(outcome ~ s100b, aSAH) #formula mode with dataset in the end | |
roc(outcome ~ s100b, aSAH, smooth=TRUE) #applying smoothing | |
#CI and Plotting | |
roc1 <- roc(aSAH$outcome, | |
aSAH$s100b, percent=TRUE, | |
# arguments for auc | |
partial.auc=c(100, 90), partial.auc.correct=TRUE, | |
partial.auc.focus="sens", | |
# arguments for ci | |
ci=TRUE, boot.n=100, ci.alpha=0.9, stratified=FALSE, | |
# arguments for plot | |
plot=TRUE, auc.polygon=TRUE, max.auc.polygon=TRUE, grid=TRUE, | |
print.auc=TRUE, show.thres=TRUE) | |
# Add to an existing plot. Beware of 'percent' specification! | |
roc2 <- roc(aSAH$outcome, aSAH$wfns, | |
plot=TRUE, add=TRUE, percent=roc1$percent) | |
#Coordinates of the curve | |
coords(roc1, "best", ret=c("threshold", "specificity", "1-npv")) | |
coords(roc2, "local maximas", ret=c("threshold", "sens", "spec", "ppv", "npv")) | |
# Of the AUC | |
ci(roc2) | |
# Of the curve | |
sens.ci <- ci.se(roc1, specificities=seq(0, 100, 5)) | |
plot(sens.ci, type="shape", col="lightblue") | |
plot(sens.ci, type="bars") | |
# need to re-add roc2 over the shape | |
plot(roc2, add=TRUE) | |
# CI of thresholds | |
plot(ci.thresholds(roc2)) | |
# Test on the whole AUC | |
roc.test(roc1, roc2, reuse.auc=FALSE) | |
# Test on a portion of the whole AUC | |
roc.test(roc1, roc2, reuse.auc=FALSE, partial.auc=c(100, 90), | |
partial.auc.focus="se", partial.auc.correct=TRUE) | |
# With modified bootstrap parameters | |
roc.test(roc1, roc2, reuse.auc=FALSE, partial.auc=c(100, 90), | |
partial.auc.correct=TRUE, boot.n=1000, boot.stratified=FALSE) | |
# Two ROC curves | |
power.roc.test(roc1, roc2, reuse.auc=FALSE) | |
power.roc.test(roc1, roc2, power=0.9, reuse.auc=FALSE) | |
# One ROC curve | |
power.roc.test(auc=0.8, ncases=41, ncontrols=72) | |
power.roc.test(auc=0.8, power=0.9) | |
power.roc.test(auc=0.8, ncases=41, ncontrols=72, sig.level=0.01) | |
power.roc.test(ncases=41, ncontrols=72, power=0.9) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment