В команде roc в R первый аргумент - это реальный наблюдаемый ответ, а второй - оценка вашей модели. Чтобы нарисовать ROC-кривую, проще всего применить кривую roc и сохранить результаты в некоторой другой переменной - назовем ее анализ. Затем необходимо извлечь чувствительность и 1-специфичность из переменной анализ, потому что это то, что вам нужно для кривой ROC. Это может быть сделано в участке команды:
plot(1-analysis$specificities,analysis$sensitivities,type="l")
Пожалуйста, посмотрите на картину и как результат может выглядеть в R. Ниже на картинке, вы можете найти R-код для этой кривой и применить это к вашей проблеме. Обратите внимание, что вначале я моделировал данные.
rm(list = ls()) # clear work space
##Simulate Data
set.seed(123456)
n <- 10000
q <- 0.8
#Simulate predictions
Real <- c(sample(c(0,1), n/2, replace = TRUE, prob = c(1-q,q)),
sample(c(0,1), n/2, replace = TRUE, prob = c(0.7,0.3)))
#Simulate Response
p <- c(rep(seq(0.4,0.9, length=100), 50),
rep(seq(0.2,0.6, length=100), 50))
p <- data.frame(cbind(Real, p))
#install and load package
install.packages("pROC")
library(pROC)
#apply roc function
analysis <- roc(response=p$Real, predictor=p$p)
#Plot ROC Curve
plot(1-analysis$specificities,analysis$sensitivities,type="l",
ylab="Sensitiviy",xlab="1-Specificity",col="black",lwd=2,
main = "ROC Curve for Simulated Data")
abline(a=0,b=1)
abline(v = opt_t) #add optimal t to ROC curve
Рух не может оценить модель, только числовые предсказания ... используйте 'predict' функцию! – Calimo