【问题标题】:Using pROC to make a ROC curve from existing data使用 pROC 从现有数据制作 ROC 曲线
【发布时间】:2023-03-10 10:05:01
【问题描述】:

我已经创建了一个分类器,并在模型上运行了 3 折交叉验证,并使用几个随机种子重新生成。我以 0.1 的间隔使用阈值,并且已经计算了每个阈值的敏感性和特异性。我来自一颗种子的数据如下所示:

Index  Seed Threshold           Fold        Sn       1-Sp
1         0       0.0              1 1.0000000 1.00000000
2         0       0.0              2 1.0000000 1.00000000
3         0       0.0              3 1.0000000 1.00000000
4         0       0.1              1 1.0000000 1.00000000
5         0       0.1              2 1.0000000 1.00000000
6         0       0.1              3 1.0000000 1.00000000
7         0       0.2              1 1.0000000 1.00000000
8         0       0.2              2 1.0000000 1.00000000
9         0       0.2              3 1.0000000 1.00000000
10        0       0.3              1 1.0000000 1.00000000
11        0       0.3              2 1.0000000 1.00000000
12        0       0.3              3 1.0000000 1.00000000
13        0       0.4              1 1.0000000 0.97435897
14        0       0.4              2 1.0000000 1.00000000
15        0       0.4              3 1.0000000 1.00000000
16        0       0.5              1 0.9523810 0.89743590
17        0       0.5              2 0.9523810 1.00000000
18        0       0.5              3 1.0000000 0.89743590
19        0       0.6              1 0.9523810 0.79487180
20        0       0.6              2 0.9047619 0.67500000
21        0       0.6              3 1.0000000 0.58974359
22        0       0.7              1 0.8571429 0.56410256
23        0       0.7              2 0.8095238 0.35000000
24        0       0.7              3 0.9523810 0.17948718
25        0       0.8              1 0.8571429 0.12820513
26        0       0.8              2 0.7142857 0.20000000
27        0       0.8              3 0.8571429 0.02564103
28        0       0.9              1 0.8571429 0.10256410
29        0       0.9              2 0.6666667 0.07500000
30        0       0.9              3 0.7619048 0.02564103
31        0       1.0              1 0.8571429 0.10256410
32        0       1.0              2 0.6666667 0.05000000
33        0       1.0              3 0.7619048 0.02564103

我想我会使用带有 R 的 pROC 从数据中生成 ROC 曲线并计算 AUC。我一直在查看很多示例,但没有找到可以让roc 过程使用已计算的数据的示例。可能吗?

如果有人有建议,我愿意接受 R 或 Python 中的其他解决方案/包。

【问题讨论】:

  • 我不相信pROC 有固定的方法来做到这一点。但是,如果您已经计算了敏感性和特异性,想必您也有实际观察值和预测值?如果是这样,这就是pROC 所期望的
  • @duckmayr 我认为你是对的,这就是我应该去的方向。我在大型关系数据库上使用 SSAS。生成交叉验证表很容易,但我想我会尝试更深入地挖掘以找到实际数据和预测数据。感谢您的反馈!

标签: r statistics cross-validation


【解决方案1】:

老实说,我对 ROC 分析不是很熟悉,所以你的数据对我来说不是很清楚。但是,我们可以复制pROC::plot.roc 使用基本 R 图形功能生成的图。您可能想查看 pROC:::plot.roc.roc 方法以了解它的作用。

使用pROC 包附带的示例数据。

library(pROC)
data(aSAH)
## calculate ROC
rr <- roc(aSAH$outcome, aSAH$s100b, ci=TRUE, plot=FALSE)

## plot ROC curve with package function
plot.roc(rr)

要复制我们计算为 x 值 1 - specificities 的图,反转 x 轴,使用 y 轴的灵敏度并使用 x=c(-1, 0), y=c(0, 1) 坐标绘制一条线。

with(rr, plot(-specificities, sensitivities, type="l", xaxt="n",
              xlab="", ylab="", main="My ROC curve", lwd=2,
              xlim=c(0, 1), ylim=c(0, 1)))
axis(1, axTicks(1), labels=F)
mtext(-(axTicks(1)), 1, 2, at=axTicks(1))
mtext("Specifycity", 1, 3)
mtext("Sensitivity", 2, 3)
lines(c(-1, 0), c(0, 1), col="grey")

和我一模一样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-10
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    • 2020-11-07
    • 2020-08-15
    相关资源
    最近更新 更多