2017-01-08 16 views
-1

Я хочу вычислить кривую Roc, а затем AUC из линейной дискриминантной модели. Вы знаете, как я могу это сделать? здесь есть код:Кривая Roc в линейном дискриминантном анализе с R

##LDA 
require(MASS) 
library(MASS) 
lda.fit = lda(Negative ~., trainSparse) 
lda.fit 
plot(lda.fit) 
###prediction on the test set 
lda.pred=predict(lda.fit,testSparse) 
table(testSparse$Negative,lda.pred$class) 
+0

@calimo Я попробовал этот код: > rocplot = функция (пред, правда, ...) { + predob = предсказание (pred, правда) + perf = performance (predob, "tpr", "fpr") + plot (perf, ...) +} > yhat.opt = pred (lda.fit , testSparse, решение. значения = TRUE) > installed.opt = attributes (yhat.opt) $ decision.values ​​ > par (mfrow = c (1, 2)) > rocplot (installed.opt, testSparse ["Negative"], main = «Данные обучения»), но затем появляется такая ошибка: Ошибка в предсказании (пред, истина): Формат предсказаний недействителен. –

+0

Возможный дубликат [Как вычислить AUC с пакетом ROCR] (http://stackoverflow.com/questions/41523761/how-to-compute-auc-with-rocr-package) –

ответ

1

Просто попробуйте это:

library(ROCR) 
# choose the posterior probability column carefully, it may be 
# lda.pred$posterior[,1] or lda.pred$posterior[,2], depending on your factor levels 
pred <- prediction(lda.pred$posterior[,2], testSparse$Negative) 
perf <- performance(pred,"tpr","fpr") 
plot(perf,colorize=TRUE) 

enter image description here

+0

большое спасибо !! Вы знаете, как я могу увидеть количество факторов, которые нужно выбрать? И еще одно, когда я подхожу к модели lda, появляется это предупреждение: lda.fit = lda (Negative ~.-Positive, trainSparse) Предупреждающее сообщение: В lda.default (x, grouping, ...): переменные являются коллинеарны. Это проблема? @sandipan –

+0

@macgionny Я думаю, что ваш первый вопрос заключается в том, как узнать правильный факторный уровень, чтобы выбрать из lda.pred $ posterior, правильно? скажем, ваш положительный коэффициент в вашей переменной ответа равен «Y», тогда «прогнозирование()» будет ожидать два аргумента для каждого кортежа данных, первым из которых является вероятность, предсказанная моделью, - «Y», а второй аргумент равен истинный ярлык для этого экземпляра. Ответ на второй вопрос заключается в том, что ваши предсказатели линейно зависимы, поэтому проблема множественной коллинеарности является причиной предупреждения, вам нужно выполнить тест VIF и сбросить некоторые переменные. –

+0

Если ваша модель имеет высокую точность и отзыв, кривая кривой ROC, вероятно, будет иметь указанную выше форму. –