Les posteurs les plus actifs de la semaine
Aucun utilisateur |
Sujets les plus vus
regression binaire
3 participants
Page 1 sur 1
regression binaire
Bonsoir,
j'ai effectué une regression logistique binaire sous R mais ça m'affiche un message d'erreur
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
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
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
Re: regression binaire
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.
HTH, Eric.
Eric Wajnberg- Nombre de messages : 1237
Date d'inscription : 14/09/2012
Re: regression binaire
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 ?
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
Re: regression binaire
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.
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.
Tape régression logistique et tu trouveras pas mal d'information sur la question sur le net.
cdlt
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))
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
Tape régression logistique et tu trouveras pas mal d'information sur la question sur le net.
cdlt
droopy- Nombre de messages : 1156
Date d'inscription : 04/09/2009
Re: regression binaire
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.
Eric Wajnberg- Nombre de messages : 1237
Date d'inscription : 14/09/2012
Re: regression binaire
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
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
droopy- Nombre de messages : 1156
Date d'inscription : 04/09/2009
Re: regression binaire
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: https://statistiques.forumpro.fr/t6303-interpreter-une-reg-logistique-lorsque-p0-0-et-ou-p1-0 .
Eric.
Eric.
Eric Wajnberg- Nombre de messages : 1237
Date d'inscription : 14/09/2012
Re: regression binaire
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.
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.
droopy- Nombre de messages : 1156
Date d'inscription : 04/09/2009
Re: regression binaire
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.
Eric.
Eric Wajnberg- Nombre de messages : 1237
Date d'inscription : 14/09/2012
Re: regression binaire
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
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
droopy- Nombre de messages : 1156
Date d'inscription : 04/09/2009
Re: regression binaire
Donc si j'essaie le package brglm ça va résoudre le problème ?
Cordialement
Cordialement
toussaZK- Nombre de messages : 81
Date d'inscription : 02/06/2014
Re: regression binaire
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
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
droopy- Nombre de messages : 1156
Date d'inscription : 04/09/2009
Re: regression binaire
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
Re: regression binaire
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
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
Re: regression binaire
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.
Eric.
Eric Wajnberg- Nombre de messages : 1237
Date d'inscription : 14/09/2012
Sujets similaires
» regression logistique binaire
» regression logistique binaire
» Aide sur variable binaire
» Anova avec y=continue et x= binaire
» Kruskall-Wallis et variable qualitative binaire
» regression logistique binaire
» Aide sur variable binaire
» Anova avec y=continue et x= binaire
» Kruskall-Wallis et variable qualitative binaire
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|