Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中创建没有包的roc曲线?_R_Roc - Fatal编程技术网

如何在R中创建没有包的roc曲线?

如何在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无论哪种方式,都是一步一步: 种子

我想了解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无论哪种方式,都是一步一步:


种子集(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')