我有一些模型,使用ROCR个包对预测的类百分比向量,我有一个性能对象.用规范"tpr"、"fpr"绘制性能对象,可以得到ROC曲线.

我在比较假阳性率(x)的特定阈值下的模型.我希望从性能对象中得到真阳性率(y)的值.更重要的是,我想得到用于生成该点的类百分比阈值.

最接近阈值但不高于阈值的假阳性率(x-value)的指数应给出相应真阳性率(y-value)的指数.我不太确定如何得到那个索引值.

更重要的是,我如何得到用来证明这一点的类概率阈值?

推荐答案

这就是为什么str是我最喜欢的R函数:

library(ROCR)
data(ROCR.simple)
pred <- prediction( ROCR.simple$predictions, ROCR.simple$labels)
perf <- performance(pred,"tpr","fpr")
plot(perf)
> str(perf)
Formal class 'performance' [package "ROCR"] with 6 slots
  ..@ x.name      : chr "False positive rate"
  ..@ y.name      : chr "True positive rate"
  ..@ alpha.name  : chr "Cutoff"
  ..@ x.values    :List of 1
  .. ..$ : num [1:201] 0 0 0 0 0.00935 ...
      ..@ y.values    :List of 1
      .. ..$ : num [1:201] 0 0.0108 0.0215 0.0323 0.0323 ...
  ..@ alpha.values:List of 1
  .. ..$ : num [1:201] Inf 0.991 0.985 0.985 0.983 ...

啊哈!这是一个S4 class,所以我们可以使用@来访问插槽.以下是如何制作data.frame:

cutoffs <- data.frame(cut=perf@alpha.values[[1]], fpr=perf@x.values[[1]], 
                      tpr=perf@y.values[[1]])
> head(cutoffs)
        cut         fpr        tpr
1       Inf 0.000000000 0.00000000
2 0.9910964 0.000000000 0.01075269
3 0.9846673 0.000000000 0.02150538
4 0.9845992 0.000000000 0.03225806
5 0.9834944 0.009345794 0.03225806
6 0.9706413 0.009345794 0.04301075

如果您有一个想要达到的fpr阈值,您可以将其子集为data.frame,以找到低于该fpr阈值的最大tpr:

cutoffs <- cutoffs[order(cutoffs$tpr, decreasing=TRUE),]
> head(subset(cutoffs, fpr < 0.2))
          cut       fpr       tpr
96  0.5014893 0.1495327 0.8494624
97  0.4997881 0.1588785 0.8494624
98  0.4965132 0.1682243 0.8494624
99  0.4925969 0.1775701 0.8494624
100 0.4917356 0.1869159 0.8494624
101 0.4901199 0.1962617 0.8494624

R相关问答推荐

有没有一种方法可以在子包上使用‘library()’中的‘exclub’参数?

无法运行通过R中的Auto.arima获得的ARIMA模型

根据收件箱中的特定值提取列名

寻找图片边缘

为什么st_join(ob1,ob2,left = True)返回具有比ob1更多功能的sf对象?

为什么观察不会被无功值变化触发?

R根据条件进行累积更改

R中插入符号训练函数的中心因子和尺度因子预测

使用较长的查询提取具有部分匹配的列表中的较短目标,

在数组索引上复制矩阵时出错

在ggplot2的框图中绘制所有级别的系数

将二进制数据库转换为频率表

使用R将简单的JSON解析为嵌套框架

我如何使用tidyselect来传递一个符号数组,比如Pivot_Long?

使用函数从R中的列中删除标高

附加中缀操作符

R没有按顺序显示我的有序系数?

R/shiny APP:如何充分利用窗口?

动态统计函数在ShinyApp内部更改

R,将组ID分配给另一个观测ID变量中的值的组合