ROC 函数错误 "Predictor must be numeric or ordered."

标签 r roc proc-r-package

我无法使 ROC 函数工作,出现错误“预测器必须是数字或有序”。

我浏览了其他帖子,但没有解决我的问题。任何帮助都受到高度赞赏。

"Get data"
flying=dget("https://www.math.ntnu.no/emner/TMA4268/2019v/data/flying.dd")
ctrain=flying$ctrain
ctest=flying$ctest


library(MASS)
fly_qda=qda(diabetes~., data=ctrain)


#Test error is given below:
predict_qda=predict(fly_qda, newdata=ctest, probability=TRUE)
table_qda<-table(ctest$diabetes, predict_qda$class)
error_qda<-1-sum(diag(table_qda))/sum(table_qda)
error_qda

"ROC curve and AUC"
predict_qdatrain<-predict(fly_qda, newdata=ctrain)
roc_qda=roc(response=ctrain$diabetes, predictor= predict_qdatrain$class, plot=TRUE)
plot(roc_qda, col="red", lwd=3, main="ROC curve QDA")
auc_qda<-auc(roc_qda)

我想要绘制的 ROC 曲线和 AUC

最佳答案

正如 Ollie Perkins 在他的回答中所解释的那样,您得到的错误表明您传递的内容不是可排序的,因此不能用于 ROC 分析。
predict.qda 的情况下, class item 是 1 的一个因素s 和 0 s 表示类(class)。

与其将类转换为有序预测器,不如使用后验概率。让我们使用属于类 1 的概率:

roc_qda <- roc(response = ctrain$diabetes, predictor = predict_qdatrain$posterior[,"1"])
plot(roc_qda, col="red", lwd=3, main="ROC curve QDA")
auc(roc_qda)

这将为您提供更平滑的曲线和更多可供选择的分类阈值。

ROC curve QDA

关于ROC 函数错误 "Predictor must be numeric or ordered.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55760669/

相关文章:

r - 使用 pROC 包计算 AUC 问题

r - 使用 parse_date_time 解析 dmy 和 dmY 格式的日期

linux - 在没有 root 权限的情况下在 linux/Unix 中安装 R?

r - 比较多个向量

r - 如何做 R 包括

r - 使用 for 循环和 pROC 包在 R 中计算多条 ROC 曲线。在预测字段中使用什么变量?

R 插入符保留样本和测试集 ROC

python - 如何获得遗传算法分类器绘制 ROC 曲线的分数?

R 中多类分类的 ROC 曲线

r - R 中的支持向量机 : "Predictor must be numeric or ordered."