Bonjour,
Dans le but de tracer une courbe ROC j'ai créé des modèles logistiques sous R et des fonctions prédictives mais cela ne fonctionne pas comme cela devrait ... Voilà mon code:
Avec urine$r = la présence de cristaux dans l'urine (factor) => 0 ou 1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 #Réponse simple levels(urine$r)=c("sain","cas" ) urine$r=factor(urine$r) modele.logistique.simple=glm(u rine$r~urine$ph,data=urine,fam ily=binomial(logit)) summary(modele.logistique.simp le) tableau.simple=data.frame(exp( coef(modele.logistique.simple) )) #Odds ratio head(tableau.simple)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 #Analyse multifactorielle modele.logistique.complet=glm( urine$r~.,data=urine,family=bi nomial(logit)) summary(modele.logistique.comp let) tableau.complet=data.frame(exp (coef(modele.logistique.comple t))) head(tableau.complet)
Plusieurs erreurs/ phénomènes observés:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 #Représentation de la courbe ROC prediction.cristaux1=predict(m odele.logistique.complet,urine ,type="response") head(prediction.cristaux1) prediction.cristaux2=predict(m odele.logistique.simple,urine, type="response") head(prediction.cristaux2) prevision=prediction.cristaux1 >0 cas=urine$r == "cas" table(prevision,cas) library(pROC) roc1=roc(urine$r,prediction.cr istaux1,plot=F,levels=c("sain" ,"cas"),direction="<") roc2=roc(urine$r,prediction.cr istaux2,plot=F,levels=c("sain" ,"cas"),direction="<",add=T )
Ici ce qui me parait étrange c'est qu'aucune des valeurs prédictives ne soient supérieurs à 1, que ce soit pour le modèle simple ou complet qu'en pensez-vous ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 1 2 3 4 5 6 NA 0.24944260 0.07230467 0.09192321 0.04960820 0.48561495 #Prédiction du modèle complet 1 2 3 4 5 6 0.5191161 0.4522606 0.3400575 0.4707175 0.3909223 0.4900618 #Prédiction du modèle simple
cas
prevision FALSE
TRUE 77
Ici je devrais avoir la matrice de confusion au delà du seuil 0 pour urine$r or ça ne marche pas du tout ... je devrais avoir 2 colonnes et 2 lignes ...
Ma courbe de ROC ne s'affiche pas avec la fonction pROC() mais avec ROCR() je l’obtiens, seulement j'aimerai que ça marche avec pROC().Error in roc.default(urine$r, cristaux1, plot = F, levels = c("sain", : No control observation.
Pourriez-vous me dire ce que vous en pensez ? / M'aider là où j'ai fait des erreurs parce que j'ai beau retourner le problème dans tous les sens je ne vois pas...
Partager