построить несколько кривых ROC для модели логистической регрессии в R

У меня есть модель логистической регрессии (с использованием R) как

fit6 <- glm(formula = survived ~ ascore + gini + failed, data=records, family = binomial)
summary(fit6)

Я использую пакет pROC, чтобы нарисовать кривые ROC и вычислить AUC для 6 моделей от fit1 до fit6.

Я подошел таким образом к заговорам одной ОКР.

prob6=predict(fit6,type=c("response"))
records$prob6 = prob6
g6 <- roc(survived~prob6, data=records)
plot(g6)

Но есть ли способ объединить ROC для всех 6 кривых на одном графике и отобразить AUC для всех из них, а также, если возможно, доверительные интервалы.


person rk567    schedule 20.12.2014    source источник


Ответы (1)


Вы можете использовать аргумент add = TRUE функции построения графика для построения нескольких кривых ROC.

Придумайте фальшивые данные

library(pROC)
a=rbinom(100, 1, 0.25)
b=runif(100)
c=rnorm(100)

Подобрать подходящую модель

fit1=glm(a~b+c, family='binomial')
fit2=glm(a~c, family='binomial')

Делайте прогнозы на тех же данных, на которых вы тренировали модель (или держите некоторые для проверки, если хотите)

preds=predict(fit1)
roc1=roc(a ~ preds)

preds2=predict(fit2)
roc2=roc(a ~ preds2)

Постройте это.

plot(roc1)
plot(roc2, add=TRUE, col='red')

Это дает разные совпадения на одном и том же участке. Вы можете получить AUC кривой ROC с помощью roc1$auc и добавить его либо с помощью функции text() в базовом построении R, либо, возможно, просто добавить его в легенду.

Я не знаю, как количественно определить доверительные интервалы ... или если это вообще то, что вы можете сделать с кривыми ROC. Кто-то другой должен будет заполнить детали по этому поводу. Извините. Надеюсь, остальное помогло.

person Tad Dallas    schedule 20.12.2014
comment
Вы можете использовать lines(roc2, col='red') для того же эффекта, что и plot с add=TRUE. - person Calimo; 21.12.2014