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 :

Analyse résultats rég logistique [Coeff Incohérent]


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 Analyse résultats rég logistique [Coeff Incohérent]
    Bonjour tout le monde,

    Je fais actuellement une régression logistique - qui se prête bien à mes données.
    Après une étude préliminaire (enlever les variables trop corrélées entre elles, centrer et normaliser mes données de mes variables quantitatives, etc.) je fais ma petite régression logistique et un paramètre me fait "tiquer".

    En effet un de mes paramètres estimés est négatif alors que toutes mes données sont des entiers positifs (et strictement supérieur à 0).
    Du coup je fais une régression logistique uniquement sur la variable concernée pour comprendre un petit peu et j'obtiens cela en sortie :

    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
    summary(modele_TxAchat)
     
    Call:
    glm(formula = Porteur ~ TauxdAchat, family = binomial, data = donnees)
     
    Deviance Residuals: 
        Min       1Q   Median       3Q      Max  
    -0.6115  -0.5506  -0.5120  -0.4670   3.5380  
     
    Coefficients:
                   Estimate Std. Error z value Pr(>|z|)    
    (Intercept)    -1.57579    0.06043 -26.078  < 2e-16 ***
    TauxdAchat -1.17027    0.16717  -7.001 2.55e-12 ***
    ---
    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
     
    (Dispersion parameter for binomial family taken to be 1)
     
        Null deviance: 5687.2  on 7567  degrees of freedom
    Residual deviance: 5626.4  on 7566  degrees of freedom
    AIC: 5630.4
     
    Number of Fisher Scoring iterations: 5
    Bon déjà quelque chose de négatif me parait bizarre (surtout que j'ai bien vérifié qu'il n'y avait pas d'erreur dans mes données) mais je me dis qu'après tout c'est un "odd-ratio" qu'on a en sortie donc au final peut être que ça s'ajuste à mes données.

    Après avoir fait un "predict" sur le même jeu de données j'obtiens bien entendu un 100% de non porteur ... puisque c'est censé être porteur quand la probabilité estimée dépasse 0.5 ... ce qui arrive quand mon taux d'achats (ma variable explicative) est inférieur à -0.3

    Si quelqu'un pouvait m'expliquer d'où peut venir le problème.

    Idem comment être certain qu'on cherche bien la probabilité d'être "porteur" sachant les variables explicatives plutôt que la probabilité d'être "non porteur" sachant les variables explicatives (c'est censé être la même chose à contrario puisqu'une binomiale m'enfin ...).

    Bien cdlt,

    Hollow

  2. #2
    Inactif  
    Profil pro
    " "
    Inscrit en
    Janvier 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : " "

    Informations forums :
    Inscription : Janvier 2008
    Messages : 330
    Points : 254
    Points
    254
    Par défaut
    Bonjour,

    Je fais actuellement une régression logistique - qui se prête bien à mes données.
    Qu'est ce que tu as comme variables et combien tu en as?

    En effet un de mes paramètres estimés est négatif alors que toutes mes données sont des entiers positifs (et strictement supérieur à 0).
    C'est quoi l'anomalie?

    Après avoir fait un "predict" sur le même jeu de données
    On ne peut pas faire de la prédiction avec le même jeux de ayant servi à estimer les paramètres d'un modèle.
    - si tu as beaucoup de données, tu les divise en deux échantillon: échantillon d'apprentissage (60 à 70% detes donées) pour estimes tes paramètres et le reste de tes données (échantillon test)te servira pour évaluer ton modèle
    (prediction,...)
    - si tes données ne sont pas assez, tu poura utiliser les techniques de échantillonnage ( bootstrap, leave-one-out, ...)


    BC

  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
    Citation Envoyé par arm3366 Voir le message
    Bonjour,



    Qu'est ce que tu as comme variables et combien tu en as?



    C'est quoi l'anomalie?



    On ne peut pas faire de la prédiction avec le même jeux de ayant servi à estimer les paramètres d'un modèle.
    - si tu as beaucoup de données, tu les divise en deux échantillon: échantillon d'apprentissage (60 à 70% detes donées) pour estimes tes paramètres et le reste de tes données (échantillon test)te servira pour évaluer ton modèle
    (prediction,...)
    - si tes données ne sont pas assez, tu poura utiliser les techniques de échantillonnage ( bootstrap, leave-one-out, ...)


    BC
    Bonjour,

    J'ai 6 variables explicatives (5 quanti. et 1 quali.) et 1 variable à prédire (qualitative à 2 modalités).

    J'ai bien entendu 2 échantillons, un d'apprentissage et un de test, les deux suffisamment grand pour ne pas à avoir à faire du bootstrap ou autre technique de ré-échantillonnage.

    L'anomalie (qui ne doit pas en être une) est que j'ai une variable explicative contenant uniquement des réels positifs et lorsque je fais une régression logistique uniquement sur cette variable j'ai des coefficients négatifs (la constante et celle pour ma variable explicative).
    Déjà d'un point de vue interprétation c'est pas top mais bon il ne faut pas oublier que c'est une régression logistique et non une régression linéaire (donc pas la même interprétation à faire par rapport à la variable à prédire).

    En gros après avoir fait cette régression logistique (qui me donne donc 2 paramètres négatifs - cf code au dessus - ) je relance avec "predict" sur le même jeu de données (ce qui devrait me donner quelque chose d'optimiste en terme d'erreur de modélisation) et j'obtiens que des "NON" pour ma variable à prédire car le résultat de mon modèle me dit que l'on attribue la valeur "OUI" à ma variable à prédire lorsque ma probabilité est > seuil ... ce qui se passe lorsque ma variable explicative a des valeurs négatives ... ce qui n'arrive jamais puisque ma variable explicative ne prend que des valeurs positives (strictement).

    Bien sur je l'ai fait sur le jeu de test et j'ai le même résultat.
    Ce que je voulais c'était comprendre ce qui se passe mais là je n'y comprends rien.

    Encore merci,

    Hollow

  4. #4
    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
    Citation Envoyé par hollowdeadoss Voir le message
    Bonjour,
    En gros après avoir fait cette régression logistique (qui me donne donc 2 paramètres négatifs - cf code au dessus - ) je relance avec "predict" sur le même jeu de données (ce qui devrait me donner quelque chose d'optimiste en terme d'erreur de modélisation) et j'obtiens que des "NON" pour ma variable à

    ...

    Est-ce dû au "seuil": si proba > 0.5 alors "OUI"? Y'a t'il un moyen - sous R - de changer cette probabilité d'acceptation ?
    Hollow
    Bonjour,

    Quelle est la proportion de porteurs (Oui) et de non porteurs (Non) de ta variable à expliquer?
    Si il y a très peu de "Oui", alors prédire presque que des "Non" avec un seuil à 0.5 est tout à fait normal.

    Tu dois faire une étude du nombre de bons et de mauvais classés dans chacun des cas "Oui" et "Non" basés sur les probabilités prédites par ta regression logistique et sur les seuils choisis.

    En clair, il n'y a pas de "bon" seuil à choisir, c'est toi qui prend ce que tu veux (accorde tu plus d'importance à prédire à coup sur les "Oui" quitte à à avoir des faux positifs, ou l'inverse?)
    Je t'invite à te renseigner sur les les techniques de scoring, et en particulier sur les "matrices de confusion" et les "courbes ROC" qui permettent de bien comprendre comment appréhender le problème (mais tout ca relève de la statistique et plus trop de R).

    Comment faire ca en R?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     predict(object, newdata, type =  "response")
    renvoit la probabilité d'avoir Oui (et pas une prédiction binaire "Oui", "Non").
    Une fois que tu as la probabilité, tu peux faire une fonction qui dépend du seuil que tu choisis, qui prends en input les probabilités, et qui te renvoit la matrice de confusion.
    Codée à l'arrache pour te donner un point de départ, ca ressemble à:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     Confusion<-function(s=seuil,p=probabilites,d=ton vecteur de valeurs "Oui" "Non" reelles)
    {
    Vrai.Positif<-length(p[d=="Oui" & p>s])
    Faux.Positif<-length(p[d=="Non" & p>s])
    Vrai.Negatif<-length(p[d=="Non" & p<s])
    Faux.Negatif<-length(p[d=="Oui" & p<s])
     
    return(list(Vrai.Positif,Faux.positif,etc...))
    }
    Tu peux aussi diviser chacun de ses effectifs par le nombre total d'individus, ou par le nombre de positifs.. etc pour interpréter en taux d'erreur sur tes deux classes.

    A la vue de ta matrice de confusion, tu pourras choisir un seuil approprié ou découper ton score en différentes classes de risques comme il est d'usage en scoring.

  5. #5
    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
    Citation Envoyé par Sengar Voir le message
    Bonjour,

    Quelle est la proportion de porteurs (Oui) et de non porteurs (Non) de ta variable à expliquer?
    Si il y a très peu de "Oui", alors prédire presque que des "Non" avec un seuil à 0.5 est tout à fait normal.

    Tu dois faire une étude du nombre de bons et de mauvais classés dans chacun des cas "Oui" et "Non" basés sur les probabilités prédites par ta regression logistique et sur les seuils choisis.

    En clair, il n'y a pas de "bon" seuil à choisir, c'est toi qui prend ce que tu veux (accorde tu plus d'importance à prédire à coup sur les "Oui" quitte à à avoir des faux positifs, ou l'inverse?)
    Je t'invite à te renseigner sur les les techniques de scoring, et en particulier sur les "matrices de confusion" et les "courbes ROC" qui permettent de bien comprendre comment appréhender le problème (mais tout ca relève de la statistique et plus trop de R).

    Comment faire ca en R?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     predict(object, newdata, type =  "response")
    renvoit la probabilité d'avoir Oui (et pas une prédiction binaire "Oui", "Non").
    Une fois que tu as la probabilité, tu peux faire une fonction qui dépend du seuil que tu choisis, qui prends en input les probabilités, et qui te renvoit la matrice de confusion.
    Codée à l'arrache pour te donner un point de départ, ca ressemble à:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     Confusion<-function(s=seuil,p=probabilites,d=ton vecteur de valeurs "Oui" "Non" reelles)
    {
    Vrai.Positif<-length(p[d=="Oui" & p>s])
    Faux.Positif<-length(p[d=="Non" & p>s])
    Vrai.Negatif<-length(p[d=="Non" & p<s])
    Faux.Negatif<-length(p[d=="Oui" & p<s])
     
    return(list(Vrai.Positif,Faux.positif,etc...))
    }
    Tu peux aussi diviser chacun de ses effectifs par le nombre total d'individus, ou par le nombre de positifs.. etc pour interpréter en taux d'erreur sur tes deux classes.

    A la vue de ta matrice de confusion, tu pourras choisir un seuil approprié ou découper ton score en différentes classes de risques comme il est d'usage en scoring.
    Bonjour Sengar,

    Merci pour cette réponse. En fait je me rends compte que j'ai (encore) pas été complet

    La effectivement ma matrice de confusion varie suivant mon seuil choisit (je vais regarder du côté des courbes ROC je pense) et je suis d'accord sur le fait que le seuil dépendra de ce que je veux faire derrière.

    Mais je suis "surpris" d'avoir un coefficient négatif pour mon paramètre en sortie de ma commande R, en gros surpris d'avoir la courbe que je mets en lien.

    Là j'ai "choisi" un seuil de 0.5 (je suis parti du principe qu'ayant une variable binaire ... un 0.5 paraissait classique) mais j'aurai pu prendre ma proportion de "Porteur", i.e. 0.12 à la place de 0.5.

    Etant assez novice sur les données catégorielles et particulièrement méthode de régression logistique et scoring (que j'aimerai voir après) avez vous des références de livre là dessus?

    J'ai vu un livre d'Alan Agresti sur les données catégorielles mais je ne sais pas ce qu'il vaut.
    [i.e. effectivement ça ressemble plus à des stats et pas du R ... pour le moment ]

    Encore merci pour votre aide,

    Cdlt,

    Hollow
    Images attachées Images attachées

Discussions similaires

  1. Analyse Résultats Proc Compare
    Par TobTob dans le forum SAS Base
    Réponses: 4
    Dernier message: 22/08/2012, 21h39
  2. Résultat incohérent en utilisant NLS_DATE_LANGUAGE
    Par Liberte Outremer dans le forum SQL
    Réponses: 2
    Dernier message: 25/06/2007, 17h16
  3. Résultat requête incohérent avec DAO
    Par ajuveneton dans le forum VBA Access
    Réponses: 2
    Dernier message: 01/06/2007, 17h02
  4. Réponses: 5
    Dernier message: 23/04/2007, 16h59
  5. Résultat incohérent de pow, sqrt
    Par PierrotY dans le forum C++
    Réponses: 15
    Dernier message: 16/03/2005, 12h07

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