После многих поисков я не смог найти ответ на свою проблему. Я хотел бы генерировать ROC-кривую с pKK-pakkage, используя цикл for или sapply.Создайте кривую ROC с помощью цикла или sapply
Моя база данных выглядит следующим образом (только с 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')
Для 'автоматический' Я пробовал:
Первая Рух кривая всегда 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')
Добавить другие кривые (данные $ 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')
}
Я проверил столбцы и все они числовые , Может, что-то пойдет не так с классом в моем скрипте?
редактировать свой вопрос, чтобы иметь код отображается правильно. Вы можете найти конкретные варианты в верхней части окна редактирования –