2017-01-08 1 views
-1

Je veux calculer la courbe de Roc puis l'AUC à partir du modèle discriminant linéaire. Sais-tu comment je peux faire ça? ici il y a le code:Courbe de Roc dans l'analyse discriminante linéaire avec 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 J'ai essayé ce code: > rocplot = function (pred, vérité, ...) { + predob = prédiction (préd, vérité) + perf = performance (predob, "tpr", "fpr") + intrigue (perf, ...) +} > yhat.opt = prévoir (lda.fit , testSparse, décision. values ​​= TRUE) > fitted.opt = attributs (yhat.opt) $ decision.values ​​ > par (mfrow = c (1, 2)) > rocplot (ajusté.opt, testSparse ["Négatif"], principal = "Training Data"), mais il apparaît alors cette erreur: Erreur de prédiction (pred, truth): Le format des prédictions est invalide. –

+0

Possible copie de [Comment calculer AUC avec le paquet ROCR] (http://stackoverflow.com/questions/41523761/how-to-compute-auc-with-rocr-package) –

Répondre

1

Essayez simplement ceci:

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

merci beaucoup !! Savez-vous comment puis-je voir le nombre de facteurs à sélectionner? Et une autre chose, quand je fais correspondre le modèle lda, il apparaît cet avertissement: lda.fit = lda (négatif ~.-Positif, trainSparse) Message d'avertissement: Dans lda.default (x, grouping, ...): les variables sont colinéaire. Est-ce un problème? @sandipan –

+0

@macgionny Je pense que votre première question est de savoir comment connaître le bon niveau de facteur pour sélectionner lda.pred $ postérieur, non? disons que votre niveau de facteur positif dans votre variable de réponse est 'Y', alors 'prediction()' attendra deux arguments, pour chaque ligne de données, le premier étant la probabilité prédite par le modèle est 'Y' et le second argument est le vrai label pour cette instance. La réponse à la deuxième question est que vos prédicteurs sont linéairement dépendants, donc c'est un problème de multi-colinéarité qui est la raison de l'avertissement, vous devriez faire un test VIF et abandonner certaines variables. –

+0

Si votre modèle a une précision et un rappel élevés, la courbe ROC tracée est probablement de la forme ci-dessus. –