IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

Modele logistique correct ?


Sujet :

R

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 10
    Points : 10
    Points
    10
    Par défaut Modele logistique correct ?
    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)

    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 )
    Plusieurs erreurs/ phénomènes observés:

    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
    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...

  2. #2
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    Les valeurs renvoyées par predict(..., type="response") sont des probabilités que l'évènement survienne. Donc c'est logique qu'elles soient entre 0 et 1. C'est pour ça que ta condition > 0 renvoie TRUE tout le temps.
    Bon courage.
    Olivier

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/11/2016, 09h26
  2. Réponses: 1
    Dernier message: 13/01/2016, 12h15
  3. Régression logistique : descending et validity of model
    Par salmabarik dans le forum SAS STAT
    Réponses: 3
    Dernier message: 28/05/2014, 10h26
  4. [Regression logistique]Variable MODEL avec 3 modalités
    Par cococmoi dans le forum SAS STAT
    Réponses: 0
    Dernier message: 21/08/2012, 13h23
  5. Réponses: 2
    Dernier message: 07/06/2012, 16h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo