如何使用r中的ROCR软件包绘制ROC曲线*仅带有分类列联表*

刘威廉

如何仅使用分类列联表在r中使用ROCR软件包绘制ROC曲线

我有一个列联表,可以计算出真阳性,假阳性等所有额定值。我有500个副本,因此有500个表。但是,我无法生成表示估计概率和真相的每种情况的预测数据。没有单独的数据如何获得曲线。以下是使用的包装说明。

## computing a simple ROC curve (x-axis: fpr, y-axis: tpr)
library(ROCR)
data(ROCR.simple)
pred <- prediction( ROCR.simple$predictions, ROCR.simple$labels)
perf <- performance(pred,"tpr","fpr")
plot(perf)    
乔斯利伯

您无法使用单个列联表生成完整的ROC曲线,因为列联表仅提供一个敏感性/特异性对(对于用于生成列联表的任何预测截止值)。

如果您有许多用不同的截止值生成的列联表,则可以估算ROC曲线(基本上,这是列联表中灵敏度/特异性值之间的线性插值)。例如,让我们考虑使用逻辑回归预测虹膜数据集中的花朵是否为杂色:

iris$isv <- as.numeric(iris$Species == "versicolor")
mod <- glm(isv~Sepal.Length+Sepal.Width, data=iris, family="binomial")

我们可以使用标准ROCR代码来计算该模型的ROC曲线:

library(ROCR)
pred1 <- prediction(predict(mod), iris$isv)
perf1 <- performance(pred1,"tpr","fpr")
plot(perf1)

在此处输入图片说明

现在,让我们假设不是列mod突表,而是具有许多用于预测的临界值的列联表:

tables <- lapply(seq(0, 1, .1), function(x) table(iris$isv, factor(predict(mod, type="response") >= x, levels=c(F, T))))

# Predict TRUE if predicted probability at least 0
tables[[1]]
#     FALSE TRUE
#   0     0  100
#   1     0   50

# Predict TRUE if predicted probability at least 0.5
tables[[6]]
#     FALSE TRUE
#   0    86   14
#   1    29   21

# Predict TRUE if predicted probability at least 1
tables[[11]]
#     FALSE TRUE
#   0   100    0
#   1    50    0

从一个表到下一个表,由于截止值的增加,一些预测从TRUE变为FALSE,并且通过比较连续表的第1列,我们可以确定其中哪些表示真实的否定预测和错误的否定预测。通过按顺序排列的列联表,我们可以创建假的预测值/结果对,然后将其传递给ROCR,以确保我们匹配每个列联表的敏感性/特异性。

fake.info <- do.call(rbind, lapply(1:(length(tables)-1), function(idx) {
  true.neg <- tables[[idx+1]][1,1] - tables[[idx]][1,1]
  false.neg <- tables[[idx+1]][2,1] - tables[[idx]][2,1]
  if (true.neg <= 0 & false.neg <= 0) {
    return(NULL)
  } else {
    return(data.frame(fake.pred=idx,
                      outcome=rep(c(0, 1), times=c(true.neg, false.neg))))
  }
}))

现在,我们可以像往常一样将伪造的预测传递给ROCR:

pred2 <- prediction(fake.info$fake.pred, fake.info$outcome)
perf2 <- performance(pred2,"tpr","fpr")
plot(perf2)

在此处输入图片说明

基本上,我们所做的是对ROC曲线上的点进行线性插值。如果您有很多截止值的列联表,则可以更接近真实的ROC曲线。如果您没有很多截止值,那么您就无法希望准确地再现完整的ROC曲线。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用pROC或ROCR包从R中的预测类概率计算ROC曲线下的面积?

来自分类Dev

使用R中的ROCR软件包计算精度

来自分类Dev

R:pROC软件包:在特定范围内绘制ROC曲线?

来自分类Dev

如何更改使用“ precintcon” R软件包绘制的洛伦兹曲线的标题?

来自分类Dev

使用for循环和pROC软件包计算R中的多个ROC曲线。在预测变量字段中使用什么变量?

来自分类Dev

使用Caret软件包的测试集的ROC曲线

来自分类Dev

如何从R中的列联表中获取带有案例的data.frame?

来自分类Dev

如何使用自己构建的带有堆栈的软件包?

来自分类Dev

在R中,如何使用gtsummary(或任何其他r包)制作具有五个二进制因子的列联表

来自分类Dev

如何使用Keras神经网络分类器在KFold交叉验证中绘制每个折叠的ROC_AUC曲线

来自分类Dev

如何处理R(pROC软件包)中的多类ROC分析?

来自分类Dev

如何在R中使用e1071软件包的“ svm”执行多类分类

来自分类Dev

如何使用matplotlib / python绘制ROC曲线

来自分类Dev

如何使用matplotlib / python绘制ROC曲线

来自分类Dev

如何使用 AUC 绘制 ROC 曲线?

来自分类Dev

如何知道我的R脚本中没有使用哪些软件包?

来自分类Dev

完美贴标的 ROC 曲线由 ROCR 包颠倒产生

来自分类Dev

如何将带有LIWC格式的字典与R软件包Quanteda一起使用?

来自分类Dev

在scikit中绘制ROC曲线仅产生3个点

来自分类Dev

R软件包:Debian中带有gdb的C函数的断点设置(测试)

来自分类Dev

如何安装带有文档的Python软件包?

来自分类Dev

如何在rails-assets.org中包含带有的软件包。在名字里?

来自分类Dev

如何确定AlpineLinux中是否存在带有某些命令的软件包?

来自分类Dev

如何查询带有特定使用标志的已安装软件包?

来自分类Dev

如何通过带有配置脚本的公司代理使用 pip 安装软件包?

来自分类Dev

如何在R中创建列联表?

来自分类Dev

如何制作列联表以结合R中的几对变量?

来自分类Dev

如何在R中创建“逻辑AND”列联表?

来自分类Dev

如何在R中创建列联表?

Related 相关文章

  1. 1

    如何使用pROC或ROCR包从R中的预测类概率计算ROC曲线下的面积?

  2. 2

    使用R中的ROCR软件包计算精度

  3. 3

    R:pROC软件包:在特定范围内绘制ROC曲线?

  4. 4

    如何更改使用“ precintcon” R软件包绘制的洛伦兹曲线的标题?

  5. 5

    使用for循环和pROC软件包计算R中的多个ROC曲线。在预测变量字段中使用什么变量?

  6. 6

    使用Caret软件包的测试集的ROC曲线

  7. 7

    如何从R中的列联表中获取带有案例的data.frame?

  8. 8

    如何使用自己构建的带有堆栈的软件包?

  9. 9

    在R中,如何使用gtsummary(或任何其他r包)制作具有五个二进制因子的列联表

  10. 10

    如何使用Keras神经网络分类器在KFold交叉验证中绘制每个折叠的ROC_AUC曲线

  11. 11

    如何处理R(pROC软件包)中的多类ROC分析?

  12. 12

    如何在R中使用e1071软件包的“ svm”执行多类分类

  13. 13

    如何使用matplotlib / python绘制ROC曲线

  14. 14

    如何使用matplotlib / python绘制ROC曲线

  15. 15

    如何使用 AUC 绘制 ROC 曲线?

  16. 16

    如何知道我的R脚本中没有使用哪些软件包?

  17. 17

    完美贴标的 ROC 曲线由 ROCR 包颠倒产生

  18. 18

    如何将带有LIWC格式的字典与R软件包Quanteda一起使用?

  19. 19

    在scikit中绘制ROC曲线仅产生3个点

  20. 20

    R软件包:Debian中带有gdb的C函数的断点设置(测试)

  21. 21

    如何安装带有文档的Python软件包?

  22. 22

    如何在rails-assets.org中包含带有的软件包。在名字里?

  23. 23

    如何确定AlpineLinux中是否存在带有某些命令的软件包?

  24. 24

    如何查询带有特定使用标志的已安装软件包?

  25. 25

    如何通过带有配置脚本的公司代理使用 pip 安装软件包?

  26. 26

    如何在R中创建列联表?

  27. 27

    如何制作列联表以结合R中的几对变量?

  28. 28

    如何在R中创建“逻辑AND”列联表?

  29. 29

    如何在R中创建列联表?

热门标签

归档