ROCR
中的R
库提供了绘制平均ROC曲线的能力(从ROCR reference manual开始):
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)
可爱。不幸的是,似乎没有能力将平均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 )
所以,使用我在这里查找的trace
函数(General suggestions for debugging in R):
trace(.performance.plot.horizontal.avg, edit=TRUE)
我在上面列出的行后面的performance_plots.R
添加了以下行:
perf.rocr.avg <<- perf.avg # note the double `<<`
一个可怕的黑客,但它可以正常,因为我可以毫无问题地绘制perf.rocr.avg
。不幸的是,在使用pROC
时,我无法比较我的平均ROC曲线,因为它需要pROC
roc
个对象。这很好,但问题是pROC
roc
对象需要创建原始预测和参考数据。据我所知,ROCR
是对ROC曲线本身进行平均而不是预测,所以我似乎无法从ROCR
得到我想要的东西。
有没有办法根据ROCR
创建的平均ROC曲线对预测进行逆向工程?
答案 0 :(得分:0)
我遇到了与您相同的问题。在我看来,ROCR软件包生成的平均ROC只是分配了数值,而缺少其他统计属性(例如置信区间)。这意味着使用平均ROC进行统计可能没有意义,这就是为什么roc对象无法通过PRoc包中的(tpr,fpr)列表生成的原因。但是,我找到了一篇论文来解决这个问题,即平均ROC之间的比较。标题为“相关接收机工作特性曲线下的平均面积:基于广义两样本Wilcoxon统计的非参数方法”。希望对您有所帮助。