【问题标题】:pROC R package with customized cutoff values?具有自定义截止值的 pROC R 包?
【发布时间】:2014-09-08 14:11:03
【问题描述】:

我可以使用一些预先指定的截止值(阈值)来绘制带有pROC 包的 ROC 曲线吗?例如,我可以输入控制/案例值和我自己的阈值点来计算相应的敏感性和特异性吗?

【问题讨论】:

  • 从您在我的回答中留下的 cmets 来看,您所要求的似乎不是 ROC 曲线。 ROC 曲线超过所有阈值。如果您限制阈值,您的曲线就不再是 ROC。所以请改写你的问题。
  • 另外,你为什么要这么做对我来说没有任何意义,可能是因为你的问题太具体了。如果您告诉我们更多关于您选择这样做的原因,可能会出现更好的答案。

标签: r roc proc-r-package


【解决方案1】:

看看?plot.roc

假设你有:

my.cutoff <- 0.6

那么你可以这样做:

library(pROC)
data(aSAH)
plot.roc(aSAH$outcome, aSAH$s100b, print.thres = my.cutoff)

【讨论】:

  • 非常感谢您的回复。但我想要一些与此不同的东西。我不知道 pROC 如何选择阈值来计算敏感性和特异性。但是,我想以自己指定的阈值计算它们。例如, roc(case=mycases, control=mycontrols, ...);在这里有没有办法指定我自己的阈值?
  • @Vish 我用的是 0.6,但你可以在 my.cutoff 中指定任何你想要的截止值,你也可以传递一个截止值向量。
  • @Vish 还有什么我可以帮忙的吗?
  • 再次感谢您的关注。但是,我想使用自己的阈值来生成 ROC 曲线。例如,roc(case=mycases, control=mycontrols, Thresholds = c(0.6, 1, 1.5, 1.8)。然后该函数仅考虑那些指定的阈值来生成 ROC 曲线和 AUC。我想这对于 pROC 包是不可能的。是吗?非常感谢。
  • @Vish 您无法生成只有几个阈值的 ROC 曲线:它不再是 ROC。
【解决方案2】:

这不再是 ROC 曲线

要在我的其他答案中解决您的 cmets(但不回答您的问题,正如我上面评论的那样无法回答),我可以为您提供一种方法来做您想做的事情。请不要在任何情况下将此称为 ROC 曲线:它不是!请根据本练习的目的(您从未解释过)自己想出一个描述性名称。

你可以用pROC间接地做你想做的事:你计算所有阈值的ROC,提取你想要的坐标:然后使用梯形函数完成。

library(pROC)
data(aSAH)
my.cutoff <- c(0.6, 1, 1.5, 1.8)
roc.obj <- roc(aSAH$outcome, aSAH$s100b)
like.coordinates <- coords(roc.obj, c(-Inf, sort(my.cutoff), Inf), input="threshold", ret=c("specificity", "sensitivity"))

现在您可以将结果绘制为:

plot(like.coordinates$specificity, like.coordinates$sensitivity, xlim=c(1, 0), type="l")

并计算AUC,例如使用包caTools中的trapz函数:

library(caTools)
trapz(like.coordinates$specificity, like.coordinates$sensitivity)

再一次,您没有绘制 ROC 曲线,并且您计算的 AUC 不是 ROC 曲线的。

【讨论】:

    猜你喜欢
    • 2019-12-02
    • 2019-07-28
    • 1970-01-01
    • 2018-03-31
    • 1970-01-01
    • 2020-12-17
    • 2016-06-06
    • 1970-01-01
    • 2015-12-31
    相关资源
    最近更新 更多