1

我正在尝试使用具有以下 2 列的 pROC 制作 ROC 曲线:(列表继续超过 300 个条目)

实际_调查结果_% Predicted_Finding_Prob
0.23 0.6
0.48 0.3
0.26 0.62
0.23 0.6
0.48 0.3
0.47 0.3
0.23 0.6
0.6868 0.25
0.77 0.15
0.31 0.55

我尝试使用的代码是:

roccurve<- plot(roc(response = data$Actual_Findings_% <0.4, predictor = data$Predicted_Finding_Prob >0.5),
                legacy.axes = TRUE, print.auc=TRUE, main = "ROC Curve", col = colors)

阳性结果的阈值为 Actual_Findings_% <0.4 AND Predicted_Finding_Prob >0.5(即为 TRUE POSITIVE,actual_finding_% 将小于 0.4,且 predict_finding_prob 将大于 0.5)

但是当我尝试绘制这条 roc 曲线时,我得到了错误:

"Setting levels: control = FALSE, case = TRUE
Error in h(simpleError(msg, call)) : 
  error in evaluating the argument 'x' in selecting a method for function 'plot': Predictor must be numeric or ordered."

任何帮助将非常感激!

4

1 回答 1

1

这应该有效:


data <- read.table( text=
"Actual_Findings_%  Predicted_Finding_Prob
0.23    0.6
0.48    0.3
0.26    0.62
0.23    0.6
0.48    0.3
0.47    0.3
0.23    0.6
0.6868  0.25
0.77    0.15
0.31    0.55
", header=TRUE, check.names=FALSE )

library(pROC)

roccurve <- plot(
    roc(
        response = data$"Actual_Findings_%" <0.4,
        predictor = data$"Predicted_Finding_Prob"
    ),
    legacy.axes = TRUE, print.auc=TRUE, main = "ROC Curve"
)

现在重要的是 - roc 曲线可以向您展示当您改变分类阈值时会发生什么。所以你做错的一件事就是去执行一个,通过设置预测 < 0.5

然而,这确实提供了完美的分离,我猜这很好。(虽然不利于教育目的。)

于 2021-04-11T10:28:27.433 回答