经过大量搜索,我找不到我的问题的答案。我想使用 for 循环或 sapply 使用 pROC 包生成 ROC 曲线。
我的数据库看起来像这样(只有 26 列和 74 行):
PT Bpt PA mnT1G mnT01
1 1 1 2.3 4.5
1 2 0 1.2 3.2
2 1 1 5.4 2.1
我可以“手动”制作 ROC 曲线:
plot.new()
roc1 <- roc(cor.datT$PA, cor.datT$mT1G, percent=TRUE, partial.auc=c(100, 90), partial.auc.correct=TRUE,
partial.auc.focus="sens", ci=TRUE, boot.n=100, ci.alpha=0.9, stratified=FALSE, plot=TRUE, col= 'red')
roc2 <- roc(cor.datT$PA, cor.datT$mT01, plot=TRUE, add=TRUE, percent=roc1$percent, col = 'blue')
对于“自动”,我尝试过:
第一条 roc 曲线总是 mnT1G:
rocT1G <- roc(cor.datT$PA, cor.datT$mnT1G, percent=TRUE, partial.auc=c(100, 90), partial.auc.correct=TRUE, partial.auc.focus="sens", ci=TRUE, boot.n=100, ci.alpha=0.9, stratified=FALSE, plot=TRUE, col= 'red')
添加其他 roc 曲线(data$Img 是来自另一个数据帧的所有图像名称(如 T1G、T01 等))。我知道他们都将是蓝色的:
sapply(unique(data$Img[data$Img != "T1G"]), FUN = function(i) paste("roc",i,sep="") <- roc(cor.datT$PA, cor.datT[paste("mn",i, sep = "")], plot=TRUE, add=TRUE, percent=rocT1G$percent, col = 'blue'), simplify = FALSE)
但我得到这个错误:
roc.default(cor.datT$PA, cor.datT[paste("mn", i, sep = "")], 中的错误:预测器必须是数字或有序的。
for 循环也会发生同样的情况:
for (i in unique(data$Img[data$Img != "T1G"])){
plot.new()
rocT1G <- roc(cor.datT$PA, cor.datT$mnT1G, percent=TRUE, partial.auc=c(100, 90), partial.auc.correct=TRUE, partial.auc.focus="sens", ci=TRUE, boot.n=100, ci.alpha=0.9, stratified=FALSE, plot=TRUE, col= 'red')
paste("roc",i,sep="") <- roc(cor.datT$PA, cor.datT[paste("mn",i, sep = "")], plot=TRUE, add=TRUE, percent=rocT1G$percent, col = 'blue')
}
我检查了这些列,它们都是数字的。所以也许我的脚本中的类出了点问题?