gpt4 book ai didi

r - 从数据框中手动创建 ROC 曲线

转载 作者:行者123 更新时间:2023-12-04 16:23:52 31 4
gpt4 key购买 nike

我有以下概念问题,我无法理解。

以下是调查数据示例,其中我有一个时间列,指示某人需要多长时间才能回答某个问题。

现在,我感兴趣的是清洁量将如何根据此阈值发生变化,即如果我增加阈值会发生什么,如果我降低它会发生什么。

所以我的想法是创建一条 ROC 曲线(或其他模型指标),以获得关于潜在阈值的视觉提示。问题是我没有类似机器学习的模型来给我分类概率。所以我想知道是否有任何方法可以使用这种类型的数据创建 ROC 曲线。我的想法是在大约 100 个不同的阈值处循环遍历我的数据,计算每个阈值的假阳性率和真阳性率,然后做一个简单的线图,但我希望有一个更优雅的解决方案,不需要我循环.

有什么想法吗?

示例数据:

  • time 列表示每个案例所需的时间
  • truth 列表示我想要比较的当前决定
  • predicted 列表示我是否会在 2.5 秒 的时间阈值处切割时的清洁决定。这是我需要更改/循环的内容。

set.seed(3)
df <- data.frame(time = c(2.5 + rnorm(5), 3.5 + rnorm(5)),
truth = rep(c("cleaned", "final"), each = 5)) %>%
mutate(predicted = if_else(time < 2.5, "cleaned", "final"))

最佳答案

您也可以为此使用 ROCR

library(ROCR)

set.seed(3)
df <- data.frame(time = c(2.5 + rnorm(5), 3.5 + rnorm(5)),
truth = rep(c("cleaned", "final"), each = 5)) %>%
mutate(predicted = if_else(time < 2.5, "cleaned", "final"))

pred <- prediction(df$time, df$truth)
perf <- performance(pred,"tpr","fpr")
plot(perf,colorize=TRUE)

ROC Curve

您也可以查看AUC值:

auc <- performance(pred, measure = "auc")
auc@y.values[[1]]

[1] 0.92

pROC

交叉检查AUC值
library(pROC)

roc(df$truth, df$time)

Call:
roc.default(response = df$truth, predictor = df$time)

Data: df$time in 5 controls (df$truth cleaned) < 5 cases (df$truth final).
Area under the curve: 0.92

这两种情况都是一样的!

关于r - 从数据框中手动创建 ROC 曲线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69172944/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com