如何在R中创建没有包的roc曲线?
我想了解ROC曲线。我需要创建ROC曲线,而不使用R中的任何包 我有一个包含两个组的数据集如何在R中创建没有包的roc曲线?,r,roc,R,Roc,我想了解ROC曲线。我需要创建ROC曲线,而不使用R中的任何包 我有一个包含两个组的数据集 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) k无论哪种方式,都是一步一步: 种子集(100) k无论哪种方式,都是一步一步: 种子
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)
k无论哪种方式,都是一步一步:
种子集(100)
k无论哪种方式,都是一步一步:
种子集(100)
k你永远不会看到二元预测结果的曲线。在本例中,您需要的是$posterior
,这就是有用的数字所在的位置。您将永远不会使用该曲线查看二进制预测结果。在本例中,你需要的是后验码,这就是有用的数字所在。这段代码当然可以被浓缩为遗忘,但关键是要一步一步地清晰地理解它。从预测图(plot true class vs predicted)开始,想象一条红线从图中升起。对于它穿过的每个点,需要计算Tpr/Fpr组合。ROC曲线所依赖的参数是什么?如果我想更改阈值怎么办?我该怎么做呢?ROC曲线和你预测的班级成员数是一致的,那不是一个整数。它不会查看单个阈值,而是所有可能的阈值,而不是单个阈值。你可以采取两种方法:ROC曲线的形状和它下面的面积AUC。如何设置最佳阈值完全是另一回事。你需要在这个问题上权衡什么对你最重要。ROC曲线只在一个方面显示了你的测试与其他模型相比有多好。例如,如果你正在筛查疾病,你希望处于左下角。你不想用假阴性呼叫把某人送回家。这意味着左下角很重要,可能会牺牲Tpr来实现可接受的Fpr。这段代码肯定会被忽略,但重点是一步一步地清晰地执行。从预测图(plot true class vs predicted)开始,想象一条红线从图中升起。对于它穿过的每个点,需要计算Tpr/Fpr组合。ROC曲线所依赖的参数是什么?如果我想更改阈值怎么办?我该怎么做呢?ROC曲线和你预测的班级成员数是一致的,那不是一个整数。它不会查看单个阈值,而是所有可能的阈值,而不是单个阈值。你可以采取两种方法:ROC曲线的形状和它下面的面积AUC。如何设置最佳阈值完全是另一回事。你需要在这个问题上权衡什么对你最重要。ROC曲线只在一个方面显示了你的测试与其他模型相比有多好。例如,如果你正在筛查疾病,你希望处于左下角。你不想用假阴性呼叫把某人送回家。这意味着左下角很重要,可以牺牲Tpr来实现可接受的Fpr。
library(MASS)
md <- lda(k~., data = df)
df$pred <- predict(md, df)$class
true_pos <- (sum(df$k==1 & df$pred==1)-cumsum(df$k==1 & df$pred==1))/sum(df$k==1)
ts <- df$pred == 1 & df$k==1
t_pos <- (sum(ts)-cumsum(ts))/sum(df$k==1)
fs <- df$pred == 1 & df$k == 0
f_pos <- (sum(fs)-cumsum(fs))/sum(df$k==0)
plot(f_pos, t_pos, type = 'l')