如何解决如何在R中创建没有包的roc曲线?
我想了解 ROC 曲线。我需要在不使用 R 中的任何包的情况下创建 ROC 曲线 我有一个包含两组的数据集
v1
我正在使用线性判别分析进行预测
checkout@v1
我需要做的是生成不同的阈值来确定真阳性和假阴性如何变成 ROC 曲线。这就是我试图做的:
k <- c(rep(0,23),rep(1,23))
x1 <- rnorm(46,0.963,0.26)
x2 <- rnorm(46,-0.006957,0.12)
x3 <- rnorm(46,2.033,1)
df <- data.frame(x1,x2,x3,k)
这并没有给我我需要的东西。上图就是我想要的。
解决方法
不管怎样,一步一步来:
set.seed( 100 )
k <- c(rep(0,23),rep(1,23))
x1 <- rnorm(46,0.963,0.26)
x2 <- rnorm(46,-0.006957,0.12)
x3 <- rnorm(46,2.033,1)
x3[1:23] <- x3[1:23]*0.8 ## give it something to work with!!
df <- data.frame(x1,x2,x3,k)
library(MASS)
md <- lda(k~.,data = df)
df$pred <- predict(md,df)$posterior[,2]
df.pos <- df %>% filter( k == 1 )
df.neg <- df %>% filter( k == 0 )
fpr <- function( threshold ) {
sum( df.neg$pred > threshold ) / nrow(df.neg)
}
tpr <- function( threshold ) {
sum( df.pos$pred > threshold ) / nrow(df.pos)
}
all.predictions <- c( 0,sort( df$pred ),1 )
perf <- sapply( all.predictions,function(threshold) {
c( fpr(threshold),tpr(threshold) )
})
perf <- t(perf)
plot( NA,type="n",xlim=c(0,1),ylim=c(0,xlab="Fpr",ylab="Tpr",main="Manual Labor Builds Character" )
lines( perf )
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。