require(tidyverse)
Loading required package: tidyverse
Loading tidyverse: ggplot2
Loading tidyverse: tibble
Loading tidyverse: tidyr
Loading tidyverse: readr
Loading tidyverse: purrr
Loading tidyverse: dplyr
Conflicts with tidy packages -----------------------------------
filter(): dplyr, stats
lag(): dplyr, stats
roc <- iris %>%
gather(Metric, Value, -Species) %>%
mutate(Positive = Species == "virginica") %>%
group_by(Metric, Value) %>%
summarise(Positive = sum(Positive),
Negative = n() - sum(Positive)) %>%
arrange(-Value) %>%
mutate(TPR = cumsum(Positive) / sum(Positive),
FPR = cumsum(Negative) / sum(Negative))
roc %>%
group_by(Metric) %>%
summarise(AUC = sum(diff(FPR) + na.omit(lead(TPR) + TPR)) / 2)
roc %>%
ggplot(aes( x= FPR, y = TPR, color = Metric)) +
geom_line() +
geom_abline(lty = 2) +
xlab("False positive rate (1-specificity)") +
ylab("True positive rate (sensitivity)") +
ggtitle("ROC at predicting Virginica iris species")

LS0tCnRpdGxlOiAiUk9DIEN1cnZlcyB3aXRoIGRwbHlyIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgpgYGB7cn0KcmVxdWlyZSh0aWR5dmVyc2UpCmBgYApgYGB7cn0Kcm9jIDwtIGlyaXMgJT4lIAogIGdhdGhlcihNZXRyaWMsIFZhbHVlLCAtU3BlY2llcykgJT4lIAogIG11dGF0ZShQb3NpdGl2ZSA9IFNwZWNpZXMgPT0gInZpcmdpbmljYSIpICU+JSAKICBncm91cF9ieShNZXRyaWMsIFZhbHVlKSAlPiUgCiAgc3VtbWFyaXNlKFBvc2l0aXZlID0gc3VtKFBvc2l0aXZlKSwgCiAgICAgICAgICAgIE5lZ2F0aXZlID0gbigpIC0gc3VtKFBvc2l0aXZlKSkgJT4lIAogIGFycmFuZ2UoLVZhbHVlKSAlPiUgCiAgbXV0YXRlKFRQUiA9IGN1bXN1bShQb3NpdGl2ZSkgLyBzdW0oUG9zaXRpdmUpLCAKICAgICAgICAgRlBSID0gY3Vtc3VtKE5lZ2F0aXZlKSAvIHN1bShOZWdhdGl2ZSkpCmBgYAoKYGBge3J9CnJvYyAlPiUgCiAgZ3JvdXBfYnkoTWV0cmljKSAlPiUgCiAgc3VtbWFyaXNlKEFVQyA9IHN1bShkaWZmKEZQUikgKyBuYS5vbWl0KGxlYWQoVFBSKSArIFRQUikpIC8gMikKYGBgCmBgYHtyfQpyb2MgJT4lIAogIGdncGxvdChhZXMoIHg9IEZQUiwgeSA9IFRQUiwgY29sb3IgPSBNZXRyaWMpKSArCiAgZ2VvbV9saW5lKCkgKwogIGdlb21fYWJsaW5lKGx0eSA9IDIpICsKICB4bGFiKCJGYWxzZSBwb3NpdGl2ZSByYXRlICgxLXNwZWNpZmljaXR5KSIpICsgCiAgeWxhYigiVHJ1ZSBwb3NpdGl2ZSByYXRlIChzZW5zaXRpdml0eSkiKSArCiAgZ2d0aXRsZSgiUk9DIGF0IHByZWRpY3RpbmcgVmlyZ2luaWNhIGlyaXMgc3BlY2llcyIpCmBgYAoK