该ROCR库R提供了绘制平均 ROC 曲线的能力(来自ROCR 参考手册):
library(ROCR)
library(ROCR)
data(ROCR.xval)
# plot ROC curves for several cross-validation runs (dotted
# in grey), overlaid by the vertical average curve and boxplots
# showing the vertical spread around the average.
data(ROCR.xval)
pred <- prediction(ROCR.xval$predictions, ROCR.xval$labels)
perf <- performance(pred,"tpr","fpr")
plot(perf,col="grey82",lty=3)
plot(perf,lwd=3,avg="vertical",spread.estimate="boxplot",add=TRUE)
Run Code Online (Sandbox Code Playgroud)
迷人的。不幸的是,似乎无法将平均 ROC 曲线本身作为对象/数据帧/等获取。用于进一步的统计测试(例如,使用 pROC)。我确实做了一些研究(尽管可能是在事实之后),我发现了这篇文章:
我查看了 ROCR 的代码,发现以下几行用于将结果传递给绘图:
performance_plots.R,(从第 451 行开始)
## compute average curve
perf.avg <- perf.sampled
perf.avg@x.values <- list( rowMeans( data.frame( perf.avg@x.values)))
perf.avg@y.values <- list(rowMeans( data.frame( perf.avg@y.values)))
perf.avg@alpha.values <- list( alpha.values )
Run Code Online (Sandbox Code Playgroud)
因此,使用trace我在此处查找的函数(在 R 中进行调试的一般建议):
trace(.performance.plot.horizontal.avg, edit=TRUE)
Run Code Online (Sandbox Code Playgroud)
我在performance_plots.R上面列出的行之后添加了以下行:
perf.rocr.avg <<- perf.avg # note the double `<<`
Run Code Online (Sandbox Code Playgroud)
一个可怕的黑客,但它可以正常工作,因为我可以perf.rocr.avg毫无问题地进行绘图。不幸的是,当使用 时pROC,我无法比较我的平均 ROC 曲线,因为它需要一个pROC roc对象。这很好,但问题是pROC roc对象需要原始预测和参考数据才能创建。据我所知,ROCR是平均 ROC 曲线本身而不是预测,所以似乎我无法从ROCR.
有没有办法从由创建的平均 ROC 曲线中逆向工程预测ROCR?
小智 0
我遇到了和你一样的问题。在我看来,ROCR包生成的平均ROC只是分配了数值,而缺乏其他统计属性(例如置信区间)。这意味着平均 ROC 的统计可能没有意义,这就是为什么不能通过 PRoc 包中的 (tpr, fpr) 列表生成 roc 对象。不过,我找到了一篇论文来解决这个问题,即平均ROC之间的比较。标题是“相关接收者操作特征曲线下的平均面积:基于广义双样本 Wilcoxon 统计的非参数方法”。我希望这有帮助。
| 归档时间: |
|
| 查看次数: |
3746 次 |
| 最近记录: |