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.
#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)
```
```{r}
#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)
```
```{r}
#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 )
Plusieurs erreurs/ phénomènes observés:
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
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 ?
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 ...
Error in roc.default(urine$r, cristaux1, plot = F, levels = c("sain", : No control observation.
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().
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...
-----