經過大量搜索後,我找不到解決問題的答案。我想使用for循環或sapply生成一個ROC曲線,並使用pROC pakkage。使用for循環或sapply創建ROC曲線
我的數據庫看起來像這樣(只適用於26個colums和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曲線(數據$ 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)
但我得到這個錯誤:
Error in roc.default(cor.datT$PA, cor.datT[paste("mn", i, sep = "")], : Predictor must be numeric or ordered.
情況與此相同的循環:
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')
}
我檢查了列,它們都是數字。所以,我的腳本中的類可能會出現問題?
編輯你的問題有代碼顯示正常。您可以在編輯框頂部找到特定選項 –