Les posteurs les plus actifs de la semaine
zezima
 
Bx33
 
Eric Wajnberg
 
kris007
 
Yuurei007
 
Sem87
 
Charlinem41
 
orsen
 
YEDIDIA
 
droopy
 

Mots-clés

groupe  moyenne  intéractions  


regression binaire

Voir le sujet précédent Voir le sujet suivant Aller en bas

regression binaire

Message par toussaZK le Jeu 19 Jan 2017 - 16:02

Bonsoir,
j'ai effectué une regression logistique binaire sous R mais ça m'affiche un message d'erreur
Code:

 msv<-glm(dtcsv$DiagVSP.sv~ dtcsv$DTC+dtcsv$Ptio2,family="binomial")
Warning messages:
1: glm.fit: algorithm did not converge
2: glm.fit: fitted probabilities numerically 0 or 1 occurred
> msv

Call:  glm(formula = dtcsv$DiagVSP.sv ~ dtcsv$DTC + dtcsv$Ptio2, family = "binomial")

Coefficients:
(Intercept)    dtcsv$DTC  dtcsv$Ptio2  
    32.513       -5.877        5.548  

Degrees of Freedom: 51 Total (i.e. Null);  49 Residual
 (17 observations deleted due to missingness)
Null Deviance:    71.39
Residual Deviance: 1.474e-08 AIC: 6
> summary(msv)

Call:
glm(formula = dtcsv$DiagVSP.sv ~ dtcsv$DTC + dtcsv$Ptio2, family = "binomial")

Deviance Residuals:
      Min          1Q      Median          3Q         Max  
-8.843e-05  -2.100e-08   2.100e-08   1.415e-06   7.531e-05  

Coefficients:
             Estimate Std. Error z value Pr(>|z|)
(Intercept)     32.513 101989.517   0.000    1.000
dtcsv$DTC       -5.877   2137.253  -0.003    0.998
dtcsv$Ptio2      5.548   3048.609   0.002    0.999

(Dispersion parameter for binomial family taken to be 1)

   Null deviance: 7.1393e+01  on 51  degrees of freedom
Residual deviance: 1.4743e-08  on 49  degrees of freedom
 (17 observations deleted due to missingness)
AIC: 6

toussaZK

Nombre de messages : 81
Date d'inscription : 02/06/2014

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: regression binaire

Message par Eric Wajnberg le Jeu 19 Jan 2017 - 17:05

Les SE (std. Error) des coefficients sont énormes. La raison est que vous avez des valeurs dans dtcsv$DiagVSP.sv qui sont à 0.0 ou 1.0. Dans ce cas, le lien logit est à moins ou plus l'infini et l'algorithme ne s'en sort pas. Il y a plusieurs solutions pour échapper à ceci. L'idée est généralement d'utiliser une régression dite "quasi-logistique" qui utilise un lien logit sensiblement modifié. Il y a des liens sur le web. Et je me suis exprimé dans ce forum sur ce sujet de manière (assez) détaillée.

HTH, Eric.
avatar
Eric Wajnberg

Nombre de messages : 598
Date d'inscription : 14/09/2012

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: regression binaire

Message par toussaZK le Jeu 19 Jan 2017 - 20:32

Je vous remercie pour votre réponse.
En effectuant une rechecrhe sur Internet je ne trouve pas des documents sur ce type de regression. Avez vous des liens ?

toussaZK

Nombre de messages : 81
Date d'inscription : 02/06/2014

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: regression binaire

Message par droopy le Jeu 19 Jan 2017 - 21:09

Bonjour,

Ce n'est pas un problème de 0 ou de 1 sur les données initiales. On peut très bien faire une régression logistiques sur une variable binaire (0 ou 1), par exemple sur de la présence-absence d'une espèce.

Ici le premier problème est que l'algorithme n'arrive pas à converger : "1: glm.fit: algorithm did not converge", ce qui veut dire qu'on arrive pas à estimer les coefficients du modèle. Une solution est d'augmenter le nombre d'itérations, ça se fait en rajoutant l'argument control = list(maxit = 1000) après family.
Code:
glm(DiagVSP.sv ~ DTC +Ptio2, data = dtcsv, family = "bionomial", control = list(maxit = 1000))
Je pense que le problème est surtout indiqué par le deuxième message d'erreur. Il semblerait que tu ais une discrimination parfaite de tes données, c'est à a dire qu'avec les valeurs de DTC et de Ptio2 on peut déterminer sans erreur si tu vas avoir un 1 ou un 0 pour DiagVSP.sv. Ce qui me fait penser à ça c'est le deuxième warning que tu as et le fait que la déviance du modèle soit presque de 0 (1.4e-Cool.

Par exemple tu as une variable explicative (DTC) qui varie entre -2 et 1 et ta variable binaire que tu cherches a expliquer DiagVSP.sv vaut 0 quand DTC est égal à -2 et 1 sinon. Dans ce cas là tu sais que dès que tu dépasses -2 pour DTC, alors DiagVSP.sv vaudra 1. Ici les paramètres de la régression logistique sont très difficile à estimer parce que tu n'as qu'une seule fois la valeur 0 pour ta variable réponse. Tu ne sais pas vraiment ce qui ce passe pour des valeurs de DTC < -2, peut-être que ton 0 est un artéfact et que si tu avais plus d'observations alors tu verrais que les chances d'obtenir un 1 pour DiagVSP.sv commencent pour des valeurs biens plus faibles de DTC. Le désiquilibre entre les 0 et les 1 rend instable l'estimation des paramètres de la régression.
Code:
x <- seq(-2, 1, le = 50)
y <- rep(c(0, 1), c(1, 49))
plot(y~x)
summary(glm(y~x, family = binomial()))

Call:
glm(formula = y ~ x, family = binomial())

Deviance Residuals:
       Min          1Q      Median          3Q         Max  
-2.323e-04   2.100e-08   2.100e-08   2.100e-08   2.824e-04  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)
(Intercept)   1108.5   153360.3   0.007    0.994
x              562.9    78096.9   0.007    0.994

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 9.8039e+00  on 49  degrees of freedom
Residual deviance: 1.3369e-07  on 48  degrees of freedom
AIC: 4

Number of Fisher Scoring iterations: 25

Warning messages:
1: glm.fit: algorithm did not converge
2: glm.fit: fitted probabilities numerically 0 or 1 occurred
On retombe bien sur les mêmes problèmes que toi.

Tape régression logistique et tu trouveras pas mal d'information sur la question sur le net.

cdlt
avatar
droopy

Nombre de messages : 1052
Date d'inscription : 04/09/2009

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: regression binaire

Message par Eric Wajnberg le Ven 20 Jan 2017 - 8:56

droopy a écrit:Ce n'est pas un problème de 0 ou de 1 sur les données initiales. On peut très bien faire une régression logistiques sur une variable binaire (0 ou 1), par exemple sur de la présence-absence d'une espèce.

Je réponds à ce commentaire. Ma remarque est valide lorsque le modèle comprends une ou plusieurs variables explicatives qui sont quantitatives. Je me rends compte à présent que ce n'est pas le cas dans la question posée ici, donc la remarque de droopy est valide ici. Evidement, on peut ajuster une régression logistique sur variable binaire, c'est même à cela que ça sert. Ma remarque concerne la présence de valeur à 0.0 ou 1.0 au sein d'une entière modalité de variables explicatives qualitatives (ce qui n'est donc pas le cas ici).

Je voulais expliquer ma position.

Cordialement, Eric.
avatar
Eric Wajnberg

Nombre de messages : 598
Date d'inscription : 14/09/2012

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: regression binaire

Message par droopy le Ven 20 Jan 2017 - 10:14

re,

j'avoue ne pas trop comprendre ta remarque. Que les variables soient quantitatives ou qualitatives ne changent rien au problème à mon sens. Le problème est qu'on puisse ou non estimer un odds-ratio. Quand tu n'as que des 0 ou que des 1 pour une combinaison de variables ou pour une modalité de variables explicatives, le souci n'est pas que la variable expliquée soit en 0 ou 1 mais que tu ne puisses pas estimer d'odds ratio parce qu'avec ta modalité tu discrimines parfaitement la variable réponse et que donc on ne peut pas estimer de rapport des chances. Ce n'est pas le fait que la variable prenne des 0 ou des 1 mais que la probabilité prédite soit effectivement égale à 0 ou 1 et que dans ce cas il n'est pas possible de calculer un logit.
Donc je maintiens que le problème n'est pas sur le fait que la variable expliquée soit en 0 ou 1 ou de la nature de(s) variable(s) explicatives, mais que le jeu de données amène à des probabilités prédites qui soit de 0 ou 1 (une discrimination parfaite), c'est à dire comme tu l'as dit qu'on peut se retrouver dans des cas avec que des 0 ou 1 pour la variable expliquée pour certains "covariate patterns". Mais peut-être que je pinaille un peu trop :-)

cdlt
avatar
droopy

Nombre de messages : 1052
Date d'inscription : 04/09/2009

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: regression binaire

Message par Eric Wajnberg le Ven 20 Jan 2017 - 12:38

Le problème dont je parle est abordé dans le bouquin original de McCullagh et Nelder sur le modèle linéaire généralisé. A cet égard je fais référence à ce qu'on appelle une régression quasi-logistique qui est construite sur une fonction de lien (dite quasi-logit) légèrement modifiée par rapport à la fonction logit habituelle et qui évite justement que la proba prédite puisse s'envoler à + ou - l'infini. Je me suis exprimé abondamment là-dessus dans un autre threat de ce forum il y a pas mal de temps, ici: http://statistiques.forumpro.fr/t6303-interpreter-une-reg-logistique-lorsque-p0-0-et-ou-p1-0 .

Eric.
avatar
Eric Wajnberg

Nombre de messages : 598
Date d'inscription : 14/09/2012

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: regression binaire

Message par droopy le Ven 20 Jan 2017 - 13:15

Le problème dont je parle fait partie de ce que Hosmer and Lemeshow ont appelés les "numerical problems", qui se trouvent entre les pages et 141 et 145 de leur livre (de la seconde édition) : Applied logistic regression: "A second type of problem occurs when a collection of the covariates completely separate the outcome groups or, in the terminology of discriminant analysis, the covariates discriminate perfectly". Plus loin dans le paragraphe on trouve : "The net result is that the maximum likelihood estimates do not exist. In order to have estimates we must have some overlap". Ce qui correspond à l'exemple que j'ai donné et qui ce traduit numériquement dans les logiciels le plus souvent par des écart-types très élevés et la non convergence.

Ils évoquent aussi la colinéarité comme possible problème qui peut conduire au même résultat. A toussaZK d'explorer ces données, pour 1) calculer les corrélations entre ces deux variables explicatives et 2) représenter graphiquement le lien entre la variable expliquée et chaque variable explicative pour voir si ça peut venir de là.

Dans le bouquin de McCullagh et Nelder, j'ai surtout vu l'utilisation de la quasi-vraisemblance en lien avec des problèmes de dispersion, variances, mais pas avec des problèmes de covariates patterns comme tu as pu le montrer dans ton lien vers un autre threat.
avatar
droopy

Nombre de messages : 1052
Date d'inscription : 04/09/2009

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: regression binaire

Message par Eric Wajnberg le Ven 20 Jan 2017 - 17:54

Les deux problèmes existent (logit à l'infini lorsque p=0.0 et p=1.0 d'une part, et non séparabilité d'autre part - j'ai également le Hosmer and Lemeshow dans mon bureau). Ces deux problèmes ne sont pas corrélés, et conduisent tout les deux à des SE énormes. Pour le problème dont je parle moi, utiliser une autre fonction de lien qui évite de partir vers l'infini résous tout et l'algo converge alors joliment. Pour la non séparabilité, il n'y a rien à faire (que je sache). Ce sont deux "pathologies" de la régression logistique indépendantes, et qui se traitent différemment.

Eric.
avatar
Eric Wajnberg

Nombre de messages : 598
Date d'inscription : 14/09/2012

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: regression binaire

Message par droopy le Dim 22 Jan 2017 - 13:21

Je comprends bien l'histoire des probas égales à 0 ou 1. Ma seule question est : qu'est-ce qui peut bien les générer ?

Sinon dans la suite de ton autre threat, il existe aussi le package brglm. Par contre je n'ai pas aller très loin, mais dans le cas de mon exemple plus haut, il arrive à estimer les paramètres.

cdlt
avatar
droopy

Nombre de messages : 1052
Date d'inscription : 04/09/2009

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: regression binaire

Message par toussaZK le Dim 22 Jan 2017 - 20:39

Donc si j'essaie le package brglm ça va résoudre le problème ?
Cordialement

toussaZK

Nombre de messages : 81
Date d'inscription : 02/06/2014

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: regression binaire

Message par droopy le Lun 23 Jan 2017 - 9:15

bah ça dépend, il faudrait déjà que tu identifies le problème !

Pour faire suite aux commentaires d'Eric et après avoir lu plus en détails le livre de McCullagh et Nelder ou il est fait référence à 'emperical logistic transformation', ce n'est jamais en lien avec les problèmes qui nous concerne ici. Il est question des emperical logistic transformation pour 'achieve approximate additivity in linear logistic models' et mais la c'est peut-être mon interprétation plutôt dans les cas d'analyse de tables de contingences ou de données groupées ce qui ne semble pas être le cas ici.

Plus loin dans le livre il est fait référence aux problèmes de convergence liée aux problèmes des probabilités estimées qui sont soient 0 ou 1. Il est dit que l'estimation des paramètres et de leurs écart-types ne seront pas correctes et qu'il ne faut pas faire confiance à leurs estimations (contrairement aux probabilités estimées). Dans cette section l'utilisation de l'emprical logistic transformation n'est pas évoquée pour faire face à ce problème.

L'utilisation du + 0.5 sert en général pour l'initialisation du calcul des paramètres de la régression notamment dans le cas des données individuelles en 0 et 1. Dans la family binomial de R il y a une transformation de ce genre pour prendre en compte ce genre données (binomial()$initialize).

cdlt
avatar
droopy

Nombre de messages : 1052
Date d'inscription : 04/09/2009

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: regression binaire

Message par toussaZK le Lun 23 Jan 2017 - 14:43

J'ai trouvé que les deux variables explicatives qui sont quantitative sont liés donc j'ai laissé une seule variable mais j'ai toujours le même message d'erreur

toussaZK

Nombre de messages : 81
Date d'inscription : 02/06/2014

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: regression binaire

Message par toussaZK le Mar 24 Jan 2017 - 8:40

Le cor.test de 2 variables explicatives donne un p_value = 0.0000003 et un coefficient de corrélation égal à 0.59.
Donc il existe une colinéarité et j'ai fait un nouveau modèle en fonction d'une seule variable quantitative et la le modèle converge
Ma démarche est bonne ?
Cordialement

toussaZK

Nombre de messages : 81
Date d'inscription : 02/06/2014

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: regression binaire

Message par Eric Wajnberg le Mar 24 Jan 2017 - 14:54

Si le modèle converge correctement, enfin, oui, la démarche semble bonne. Conserver deux variables quantitatives explicatives fortement corrélées n'a guère de sens effectivement.

Eric.
avatar
Eric Wajnberg

Nombre de messages : 598
Date d'inscription : 14/09/2012

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: regression binaire

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum