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 :

GLM probabilités ajustées à 0 ou 1


Sujet :

R

  1. #1
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 127
    Points : 58
    Points
    58
    Par défaut GLM probabilités ajustées à 0 ou 1
    Bonjour tout le monde,

    Encore un petit souci de compréhension d'un warning en utilisant la fonction glm pour faire une régression logistique.

    Voici le message d'avis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Message d'avis :
    glm.fit: des probabilités ont été ajustées numériquement à 0 ou 1
    Voici le code rentré :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    modele.test<-glm(VarCible~., data = datafit[,-c(4)],family = binomial)
    et lorsque je fais le résumé de la sortie du modèle :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    summary(modele.test)
     
    Call:
    glm(formula = VarCible ~ ., family = binomial, data = datafit[, 
        -c(4)])
     
    Deviance Residuals: 
        Min       1Q   Median       3Q      Max  
    -2.2726  -0.1211  -0.0531  -0.0247   4.1806  
     
    Coefficients:
                           Estimate Std. Error z value Pr(>|z|)    
    (Intercept)          -1.543e+01  1.394e+02  -0.111   0.9119    
    X1-1A   9.706e+00  1.394e+02   0.070   0.9445    
    X1+1A   7.614e+00  1.394e+02   0.055   0.9565    
    X1-1J   1.316e+01  1.394e+02   0.094   0.9248    
    X1-1M   1.213e+01  1.394e+02   0.087   0.9307    
    X1-1S   1.295e+01  1.394e+02   0.093   0.9260    
    X1-2M   1.197e+01  1.394e+02   0.086   0.9316    
    X1-2S   1.273e+01  1.394e+02   0.091   0.9273    
    X1-3J   1.293e+01  1.394e+02   0.093   0.9261    
    X1-5J   1.265e+01  1.394e+02   0.091   0.9277    
    X1-6M   1.099e+01  1.394e+02   0.079   0.9372    
    X2          1.195e-03  2.766e-04   4.320 1.56e-05 ***
    X3         2.728e-03  3.685e-04   7.404 1.33e-13 ***
    X4   -1.655e-02  8.084e-03  -2.047   0.0407 *  
    X5      -3.679e-01  8.473e-02  -4.342 1.41e-05 ***
    X6+1an           7.515e-03  8.318e-02   0.090   0.9280    
    X6-3mois         2.238e-01  1.051e-01   2.129   0.0332 *  
    X6-6mois         1.580e-01  9.632e-02   1.640   0.1010    
    X6-9mois         1.361e-01  9.796e-02   1.389   0.1647    
    X7    4.710e-01  2.294e-02  20.537  < 2e-16 ***
    X8      -4.080e-01  6.410e-02  -6.365 1.95e-10 ***
    X9          -8.374e-04  1.185e-04  -7.069 1.56e-12 ***
    X10        -2.845e-04  3.374e-04  -0.843   0.3991    
    X11        1.491e-01  2.931e-02   5.085 3.67e-07 ***
    X12    6.372e-02  1.331e-01   0.479   0.6322    
    X13    2.915e-02  4.291e-02   0.679   0.4969    
    X14  1.769e-03  7.032e-03   0.252   0.8014    
    ---
    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
     
    (Dispersion parameter for binomial family taken to be 1)
     
        Null deviance: 17510  on 190429  degrees of freedom
    Residual deviance: 13471  on 190403  degrees of freedom
    AIC: 13525
     
    Number of Fisher Scoring iterations: 14
    où forcément j'ai des probabilités très très proches de 1.

    En faisant la régression logistique sur chacune des variables j'obtiens le même message d'avis quand je le fais par rapport aux variables X8, X9, X10 dont voici le résumé statistique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    summary(datafit[,10:12])
     X8   X9       X10    
     Min.   : 0.250   Min.   :    0.40   Min.   :    0.40  
     1st Qu.: 1.000   1st Qu.:   30.02   1st Qu.:   27.51  
     Median : 1.000   Median :   62.71   Median :   49.90  
     Mean   : 1.423   Mean   :  250.71   Mean   :  117.78  
     3rd Qu.: 1.000   3rd Qu.:  156.26   3rd Qu.:   99.53  
     Max.   :59.000   Max.   :94365.00   Max.   :12305.50
    Qui sont des variables très dispersées ... le problème peut il venir de là?

    Sachant que je ne peux virer les valeurs extrêmes (car pas aberrantes) dois-je découper ces variables en classes? Standardiser?

    Et voici la tête de ma variable cible (qui est bien binomiale):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    levels(VarCible)
    [1] "NON" "OUI"
    Le max ... qui ne marche pas (logique c'est un facteur?)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    max(VarCible)
    Erreur dans Summary.factor(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,  : 
      max ceci n'est pas pertinent pour des variables facteurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    summary(VarCible)
       NON    OUI 
    188931   1499
    Si quelqu'un a une idée ... car là (encore) je bloque niveau interprétation

    Cordialement,

    Hollow

    -- EDIT :
    Après découpage en classes (d'effectifs égaux) je n'ai plus le même problème ... une piste à priori?

  2. #2
    Membre confirmé
    Inscrit en
    Mars 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 208
    Points : 461
    Points
    461
    Par défaut
    Re Bonjour

    Citation Envoyé par hollowdeadoss Voir le message
    Bonjour tout le monde,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Message d'avis :
    glm.fit: des probabilités ont été ajustées numériquement à 0 ou 1
    Ce warning signifie que certaines probabilités prédites sont égales à 1 ou à 0 (ou en tout cas assez proches de ces valeurs pour faire tendre la log vraissemblance vers l'infini et causer des problèmes de calculs).

    Ce n'est pas forcément grave suivant les cas (des fois on a pas assez d'effectifs dans un sous groupe et des croisements un peu abusifs de variables qualitatives peuvent mener à ce type de warnings).

    Mais ici vu que tu utilises des variables prédictives continues ca a l'air d'être à cause d'une ou plusieurs variables explicatives (X8 à X10) qui discriminent parfaitement les deux réponses possibles (et la par contre c'est embetant).


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    summary(modele.test)
    X8      -4.080e-01  6.410e-02  -6.365 1.95e-10 ***
    X9          -8.374e-04  1.185e-04  -7.069 1.56e-12 ***
    X10        -2.845e-04  3.374e-04  -0.843   0.3991    
     
     X8   X9       X10    
     3rd Qu.: 1.000   3rd Qu.:  156.26   3rd Qu.:   99.53  
     Max.   :59.000   Max.   :94365.00   Max.   :12305.50
    Typiquement la il se pourrait bien que tu n'ais que des "Oui" au dessus de genre par exemple 10 pour X8, 10000 pour X9 et X10 (valeurs au pif mais tu vois l'idée).
    Est ce le cas?


    [[1] "NON" "OUI"[/code]
    Le max ... qui ne marche pas (logique c'est un facteur?)
    Qui est l'idiot qui a bien pu te demander le max la dessus ? ()
    (joke)



    EDIT:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    -- EDIT : 
    Après découpage en classes (d'effectifs égaux) je n'ai plus le même problème ... une piste à priori?
    Si dans ton decoupage tu n'as plus de classes qui ne contiennent que des "Oui" ou que des "Non" alors c'est normal que ca ne fasse plus le problème

  3. #3
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 127
    Points : 58
    Points
    58
    Par défaut


    Oui pour le max j'avoue c'était pour toi

    Bon c'est bien ce que je pensais niveau discrimination au dessus (réciproquement en dessous) d'une certaine valeur pour certaines variables continues je devais avoir que des OUI ou que des NON ... ceci à cause des valeurs "extrêmes" que je n'ai pas voulu couper au départ de mon étude pour ne pas "nier" ce côté possible (mais rare) des variables.

    Là j'ai fait un découpage en classes d'effectifs égaux mais je pense que je vais redécouper pour avoir une classe un peu plus "rare" pour conserver ce phénomène (je ne sais pas trop si c'est utile).

    Je précise qu'au départ j'avais fait des tests pour vérifier que certaines variables (explicatives) n'allaient pas être trop liées entre elles et que certaines variables discriminaient suffisamment ma variable à prédire (cf post d'hier sur le test de Kruskal-Wallis).

    Bon la régression logistique c'est sympa mais quand c'est nouveau comme ça on se perd vite

    En tout cas merci Sengar pour tes réponses

    Cdlt,

    Hollow

    PS: as-tu une bonne référence sur l'analyse des résidus en régression logistique car là je n'ai trouvé que l'analyse des résidus de déviance qui doivent se trouver entre -2 et 2 (généralement) et chez moi ils sont entre 0 et 3

  4. #4
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 127
    Points : 58
    Points
    58
    Par défaut
    Juste une petite remarque :

    Ok ça marche avec le découpage en classes mais c'est quand même "nier" de l'information (c'est à dire qu'il existe un séparateur "naturel") que de devoir recourir à cela alors que justement j'ai un hyperplan qui découpe parfaitement mes classes (Oui/Non) à prédire.

    Ce problème de valeurs extrêmes est quand même particulier à traiter et "fausse" un peu le modèle suivant comment on les traite ...

    Voilà c'était juste une petite remarque sur tout ça

Discussions similaires

  1. [Débutant] ajuster une densité de probabilité
    Par Elody73 dans le forum MATLAB
    Réponses: 4
    Dernier message: 18/05/2010, 22h54
  2. Réponses: 0
    Dernier message: 15/09/2008, 13h19
  3. ajuster taille de zone de liste
    Par skunkies dans le forum IHM
    Réponses: 7
    Dernier message: 16/10/2004, 21h13
  4. Ajusté les Axes d'un graphe en fonction des données rentrée!
    Par Ma2thieu dans le forum Composants VCL
    Réponses: 5
    Dernier message: 09/07/2004, 01h34
  5. Ajustement automatique de la taille de la police dans un TLabel
    Par Poisson Rouge dans le forum Composants VCL
    Réponses: 3
    Dernier message: 05/09/2003, 15h13

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