【问题标题】:R: pROC package: plot ROC curve across specific range?R:pROC 包:在特定范围内绘制 ROC 曲线?
【发布时间】:2019-11-02 14:11:13
【问题描述】:

我想在 x 值的特定范围内绘制 ROC 曲线的一部分,而不是绘制整个曲线。我不想改变 x 轴本身的范围。我只想在我指定的 x 值范围内绘制 ROC 曲线的一部分。

library(pROC)
data(aSAH)
rocobj <- roc(aSAH$outcome, aSAH$wfns)
plot(rocobj)

该代码绘制了整个 ROC 曲线。假设我只想绘制从 x=1 到 x=.5 的曲线。我怎么能那样做?谢谢。

【问题讨论】:

  • 你想通过绘制它来实现什么?一种方法是使用1-rocobj$specificitiesrocobj$sensitivities
  • 我有形成经验 ROC 的数据,应该只扩展到数据中存在的最小特异性。但是 pROC 将 ROC 曲线沿对角线向上延伸。我有这个:link 但我希望它不绘制正确的部分。我认为 Dylan 解决方案的一个变体会起作用。
  • 任何数据集中存在的最小特异性为 0。您始终可以在 -infinity 处设置一个阈值,并将所有否定分类为误报。

标签: r roc proc-r-package


【解决方案1】:

roc 对象的默认绘图函数将 rocobj$ 灵敏度绘制为 rocobj$specificities 的函数。

所以

plot(rocobj$specificities,rocobj$sensitivities,type="l",xlim=c(1.5,-0.5))
abline(1,-1)

达到与

相同的效果
plot(rocobj)

plot(rocobj$specificities[2:6],rocobj$sensitivities[2:6],type="l",xlim=c(1.5,-0.5),ylim=c(0,1))
abline(1,-1)

接近我认为你所追求的(从 0.514 到 1.0 的图)。我对包了解得不够多,不知道是否可以在特定范围内计算灵敏度或特异性分辨率。

【讨论】:

  • 谢谢!这种方法的一些变体最终应该会起作用。但是,使用 xlim=c(1,0)。直接绘制特异性和敏感性本身是突破;按照你的建议,我可以只选择其中的一部分来使用。
【解决方案2】:

pROC 的 plot 函数使用通常的 R 语义进行绘图,因此您可以像处理任何其他绘图一样使用 xlim 参数:

plot(rocobj, xlim = c(1, .5))

【讨论】:

  • 谢谢。但是,这会改变 x 轴的范围,这不是我想要做的。我仍然希望 x 轴显示从 0 到 1。但我只想绘制 ROC 曲线的一部分。
猜你喜欢
  • 2017-09-07
  • 1970-01-01
  • 2016-02-04
  • 2013-08-10
  • 2017-09-11
  • 2016-12-26
  • 2016-02-05
  • 1970-01-01
  • 2019-02-27
相关资源
最近更新 更多