glm ([...], family=quasibinomiale)

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Nicolas Péru
Messages : 1408
Enregistré le : 07 Aoû 2006, 08:13

glm ([...], family=quasibinomiale)

Messagepar Nicolas Péru » 26 Nov 2007, 07:59

Bonjour,

La réponse à la question se trouve sans doute plus dans les stats que dans le manuel de R mais néanmoins n'ayant apparemment pas les ressources nécessaires pour la trouver le tente ici (mon statisticien de voisin de bureau, ne sachant pas me répondre :D)
voici les sorties de R concernant un modèle de regression logistique:

Code : Tout sélectionner


#rmcca$her1 est un facteur à 11 niveaux.
S un nombre de succès
S-259 la différence pour obtenir le nombre d'échec
 Le modèle est estimé sur 474 valeurs


> summary(glmS1)

Call:
glm(formula = cbind(S, abs(S - 259)) ~ rmcca$her1, family = binomial)

Deviance Residuals:
   Min      1Q  Median      3Q     Max 
-5.062  -0.958  -0.111   0.744   4.857 

Coefficients:
             Estimate Std. Error z value Pr(>|z|)   
(Intercept)   -1.6197     0.0432  -37.49  < 2e-16 ***
rmcca$her12   -0.5840     0.0533  -10.95  < 2e-16 ***
rmcca$her13    0.1732     0.0558    3.10  0.00193 **
rmcca$her14    0.1197     0.0562    2.13  0.03321 * 
rmcca$her15   -0.0879     0.0454   -1.94  0.05277 . 
rmcca$her16    0.0416     0.0471    0.88  0.37654   
rmcca$her17   -0.1215     0.0485   -2.51  0.01220 * 
rmcca$her18    0.1928     0.0521    3.70  0.00022 ***
rmcca$her110   0.0848     0.0545    1.56  0.11959   
rmcca$her115   0.0941     0.0536    1.75  0.07937 . 
rmcca$her119   0.2542     0.0990    2.57  0.01029 * 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 1517.69  on 473  degrees of freedom
Residual deviance:  967.69  on 463  degrees of freedom
AIC: 3527

Number of Fisher Scoring iterations: 4


L'anova du modèle donne :

Code : Tout sélectionner

> anova(glmS1,test ="Chisq")
Analysis of Deviance Table

Model: binomial, link: logit

Response: cbind(S, abs(S - 259))

Terms added sequentially (first to last)


            Df Deviance Resid. Df Resid. Dev P(>|Chi|)
NULL                          473       1518         
rmcca$her1  10      550       463        968    9e-112


Jusqu'ici tout va bien mais je me pose alors la question de l'éventuelle surdispersion (plus rarement sous-) du modèle. Maintenant je passe en quasi binomiale...transformation ou plutôt bricolage qui consiste à rajouter un facteur correctif pour corriger les variations de variance si je ne me trompe pas. On obtient :

Code : Tout sélectionner

> summary(glm(formula = cbind(S, abs(S - 259)) ~ rmcca$her1, family = quasibinomial))

Call:
glm(formula = cbind(S, abs(S - 259)) ~ rmcca$her1, family = quasibinomial)

Deviance Residuals:
   Min      1Q  Median      3Q     Max 
-5.062  -0.958  -0.111   0.744   4.857 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)   
(Intercept)   -1.6197     0.0624  -25.94   <2e-16 ***
rmcca$her12   -0.5840     0.0771   -7.57    2e-13 ***
rmcca$her13    0.1732     0.0807    2.15    0.032 * 
rmcca$her14    0.1197     0.0813    1.47    0.141   
rmcca$her15   -0.0879     0.0656   -1.34    0.181   
rmcca$her16    0.0416     0.0680    0.61    0.541   
rmcca$her17   -0.1215     0.0701   -1.73    0.084 . 
rmcca$her18    0.1928     0.0754    2.56    0.011 * 
rmcca$her110   0.0848     0.0788    1.08    0.282   
rmcca$her115   0.0941     0.0776    1.21    0.226   
rmcca$her119   0.2542     0.1432    1.77    0.077 . 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for quasibinomial family taken to be 2.09)

    Null deviance: 1517.69  on 473  degrees of freedom
Residual deviance:  967.69  on 463  degrees of freedom
AIC: NA

Number of Fisher Scoring iterations: 4


Code : Tout sélectionner

> anova(glm(formula = cbind(S, abs(S - 259)) ~ rmcca$her1, family = quasibinomial),test="Chisq")
Analysis of Deviance Table

Model: quasibinomial, link: logit

Response: cbind(S, abs(S - 259))

Terms added sequentially (first to last)


            Df Deviance Resid. Df Resid. Dev P(>|Chi|)
NULL                          473       1518         
rmcca$her1  10      550       463        968   9.2e-51


entre les 2 summary :
- les valeurs des estimations des paramètres sont les mêmes (ouf ! :) )
- dans un on parle de z value ,dans l'autre de t value (simple choix du programmeur ou réelle dépendance vis à vis de la loi de distribution suivant la fonction choisie ?)
-en lien avec lepoint précédent, les probas associées ont été modifié (du coup la significativité des différence aussi)
-dans l'anova, les déviances et les ddl sont les même, pourtant je n'ai pas la même proba associé dans le test du chi² ...

si vous avez quelques éclaircissement là dessus je suis preneur mais surtout, j'en arrive au point que je ne comprend vraiment pas :

Pourquoi n'ai je pas de valeur d'AIC pour le modèle quasi-binomiale ?
autre tentative :

Code : Tout sélectionner

 AIC(glm(formula = cbind(S, abs(S - 259)) ~ rmcca$her1, family = quasibinomial))
[1] NA


....plouf....

L'aide de la fonction AIC indique que le calcul nécessite un objet de type "log-likelyhood". Pourquoi avoir "cassé" ce processus dans la family quasi-binomiale (peut être toutes le quasi d'ailleurs...pas testé) ? Le correctif associé rend il ce calcul un peu limite ?

merci d'avance

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Messagepar Logez Maxime » 26 Nov 2007, 08:59

Bonjour,


Je n'ai pas les répones à toutes tes questions Nico, mais le peux que je sais est que l'emploi du t plutôt que du z n'est pas anodin. Il est donc normal que les probas soient modifiées. De plus toutes les analyses de variance que j'ai vu avec l'emploi de la famille quasibinomial sont faites avec un test F et non pas un test de Chi². La moindre variation va donc modifier ta proba. La valeur de AIC n'est pas calculé parce que tu n'as pas une vrai valeur de vraissemblance. Pour ce qui est de la proba je pense que tout vient des arrondis car tu es en queue de distribution quand tu as une valeur de 967.7 pour 463 ddl.

Code : Tout sélectionner

# valeur seuil avec un alpha de 0.1 à 1e-10.
qchisq(1-exp(log(1e-1)*(1:10)),463)
[1] 502.4011 536.7180 562.7617 584.8107 604.4041 622.2981 638.9286 654.5737 669.4230 683.6127


Tu peux te référer au bouquin : Extending the linear model with R. Faraway J.J. 2006. Chapman & Hall/CRC.

Maxime

Nicolas Péru
Messages : 1408
Enregistré le : 07 Aoû 2006, 08:13

Messagepar Nicolas Péru » 26 Nov 2007, 12:28

merci max ;)

Pierre Bady
Messages : 405
Enregistré le : 02 Mai 2006, 07:46

Messagepar Pierre Bady » 26 Nov 2007, 20:38

bonjour

transformation ou plutôt bricolage qui consiste à rajouter un facteur correctif


"bricolage" ... -_-" ... euh ... lire svp !

McCullagh P. & Nelder J.A. (1989) Generalized Linear Models. second edition edn. Chapman & Hall/CRC, London.

Gouriéroux, C, Monfort, A, Trognon, A. Pseudo maximum likelihood methods: theory. Econometrika, 1984;52:681-700

etc ...

Pourquoi n'ai je pas de valeur d'AIC pour le modèle quasi-binomiale ?


c'est comme le chocolat ... pas de vraie vraisemblance, pas de AIC.

L'aide de la fonction AIC indique que le calcul nécessite un objet de type "log-likelyhood". Pourquoi avoir "cassé" ce processus dans la family quasi-binomiale (peut être toutes le quasi d'ailleurs...pas testé) ? Le correctif associé rend il ce calcul un peu limite ?


Tu dois pouvoir utiliser le QIC (utilisé pour les GEEs), quasi-equivalent à l'AIC :)

viewtopic.php?t=171&highlight=qic

Akaike's Information Criterion in Generalized Estimating Equations
Wei Pan, Biometrics, Vol. 57, No. 1 (Mar., 2001), pp. 120-125


@++

pierre
=@===--------¬-------¬------¬-----¬
liens utiles :
http://www.gnurou.org/Writing/SmartQuestionsFr
http://neogrifter.free.fr/welcomeOnInternet.jpg
]<((((*< -------------------------------

Nicolas Péru
Messages : 1408
Enregistré le : 07 Aoû 2006, 08:13

Messagepar Nicolas Péru » 27 Nov 2007, 08:16

"bricolage" ...


j'emploie bien les mots que je veux sur les trucs que je comprends pas :p (humour de biologiste)

c'est comme le chocolat ... pas de vraie vraisemblance, pas de AIC.


et qu'en est il des déviances ??? pas besoin de bras ? :D
Autrement dit...on a une pseudo vraisemblance, donc pas d'AIC ok je prend comme tel (je suis pas stateux après tout) mais si on me dit on a des deviances là ça me pose un problème d'autant plus que les déviances sont les mêmes dans avec une quasi- ou un "vraie" vraisemblance.

et j'avoue que même si le chi² n'est pas adapté au test, avoir les mêmes déviances, les mêmes ddl et pas la même valeur de chi²....je vais en perdre mon latin. :D

mais je continue mon investigation dans le monde des glms :)

Nicolas Péru
Messages : 1408
Enregistré le : 07 Aoû 2006, 08:13

Messagepar Nicolas Péru » 27 Nov 2007, 09:46

autocitation :D a écrit :Autrement dit...on a une pseudo vraisemblance, donc pas d'AIC ok je prend comme tel


la fonction glm.binomial.disp est semble t-il programmée en integrant l'AIC malgré la correction sur la variance de la binomiale.

Code : Tout sélectionner

> glm.binomial.disp(glm(formula = cbind(S, abs(S - 259)) ~ rmcca$her1,family=binomial))

Binomial overdispersed logit model fitting...
Iter.  1  phi: 0.004225
Converged after 1 iterations.
Estimated dispersion parameter: 0.004225

Call:
glm(formula = cbind(S, abs(S - 259)) ~ rmcca$her1, family = binomial,
    weights = disp.weights)

Deviance Residuals:
    Min       1Q   Median       3Q      Max 
-3.5018  -0.6624  -0.0768   0.5149   3.3595 

Coefficients:
             Estimate Std. Error z value Pr(>|z|)   
(Intercept)   -1.6197     0.0624  -25.94  < 2e-16 ***
rmcca$her12   -0.5840     0.0771   -7.57  3.7e-14 ***
rmcca$her13    0.1732     0.0807    2.15    0.032 * 
rmcca$her14    0.1197     0.0813    1.47    0.141   
rmcca$her15   -0.0879     0.0656   -1.34    0.180   
rmcca$her16    0.0416     0.0680    0.61    0.541   
rmcca$her17   -0.1215     0.0701   -1.73    0.083 . 
rmcca$her18    0.1928     0.0754    2.56    0.011 * 
rmcca$her110   0.0848     0.0788    1.08    0.282   
rmcca$her115   0.0941     0.0776    1.21    0.225   
rmcca$her119   0.2542     0.1432    1.77    0.076 . 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 726.17  on 473  degrees of freedom
Residual deviance: 463.01  on 463  degrees of freedom
AIC: 1699

Number of Fisher Scoring iterations: 4


le modèle sans correction de la surdispersion :

Code : Tout sélectionner

> summary(glm(formula = cbind(S, abs(S - 259)) ~ rmcca$her1,family=binomial))

Call:
glm(formula = cbind(S, abs(S - 259)) ~ rmcca$her1, family = binomial)

Deviance Residuals:
   Min      1Q  Median      3Q     Max 
-5.062  -0.958  -0.111   0.744   4.857 

Coefficients:
             Estimate Std. Error z value Pr(>|z|)   
(Intercept)   -1.6197     0.0432  -37.49  < 2e-16 ***
rmcca$her12   -0.5840     0.0533  -10.95  < 2e-16 ***
rmcca$her13    0.1732     0.0558    3.10  0.00193 **
rmcca$her14    0.1197     0.0562    2.13  0.03321 * 
rmcca$her15   -0.0879     0.0454   -1.94  0.05277 . 
rmcca$her16    0.0416     0.0471    0.88  0.37654   
rmcca$her17   -0.1215     0.0485   -2.51  0.01220 * 
rmcca$her18    0.1928     0.0521    3.70  0.00022 ***
rmcca$her110   0.0848     0.0545    1.56  0.11959   
rmcca$her115   0.0941     0.0536    1.75  0.07937 . 
rmcca$her119   0.2542     0.0990    2.57  0.01029 * 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 1517.69  on 473  degrees of freedom
Residual deviance:  967.69  on 463  degrees of freedom
AIC: 3527

Number of Fisher Scoring iterations: 4

Pierre Bady
Messages : 405
Enregistré le : 02 Mai 2006, 07:46

Messagepar Pierre Bady » 27 Nov 2007, 12:31

bonjour,

Autrement dit...on a une pseudo vraisemblance, donc pas d'AIC ok je prend comme tel (je suis pas stateux après tout) mais si on me dit on a des deviances là ça me pose un problème d'autant plus que les déviances sont les mêmes dans avec une quasi- ou un "vraie" vraisemblance.


McCullagh et Nelder utilisent le terme de quasi-deviance. (page 327)

McCullagh P. & Nelder J.A. (1989) Generalized Linear Models. second edition edn. Chapman & Hall/CRC, London.

@++

Pierre

PS: en stat/biostat, le bricolage ... c'est le mal !!! ;)
=@===--------¬-------¬------¬-----¬

liens utiles :

http://www.gnurou.org/Writing/SmartQuestionsFr

http://neogrifter.free.fr/welcomeOnInternet.jpg

]<((((*< -------------------------------

Camille Bordes
Messages : 5
Enregistré le : 04 Sep 2015, 14:39

Re: glm ([...], family=quasibinomiale)

Messagepar Camille Bordes » 24 Nov 2015, 14:11

Bonjour Nicolas,

Tout comme toi je suis une chrysalide dans le monde merveilleux et enchanteur (quand ça marche sans accro) des GLMs et aurais une question (basique je pense) pour tes interlocuteurs :

Les forums et cours online décrivent le ratio

Code : Tout sélectionner

deviance(model)/df.residuals(model)
comme un bon critère pour détecter une surdispersion. Si le ratio est supérieur à 1, alors il y a surdispersion.

Néanmoins, dans les forums R, les utilisateurs ignorent ce paramètre jusqu'à ce qu'il atteigne 1.5. Particularité du logiciel ou convictions personnelles des utilisateurs que j'ai lus ? Des publications sur le sujet ?

Nicolas Péru
Messages : 1408
Enregistré le : 07 Aoû 2006, 08:13

Re: glm ([...], family=quasibinomiale)

Messagepar Nicolas Péru » 24 Nov 2015, 16:19

C'est ce qui s'appelle déterrer un sujet :)
Tu aurais pu attendre 2017...on aurais fêté les 10 ans du sujet.

Je réponds car le sujet est déjà créé mais on est clairement en dehors des objectifs du forum...

La valeur de 1.5 est à mon avis une valeur qui relève de la "rule of thumb" comme disent nos amis anglais. Donc ça mériterais sans doute une investigation plus profonde mais ça reste une valeur indicative d'autant que le ratio que tu évoque n'est qu'un estimateur du "vrai" coefficient de dispersion du modèle.

Pour info, je me suis par la suite désintéressé des modèles quasi-binomiaux en raison des trop faibles développements de ces outils et par ailleurs il existent d'autres outils plus développés permettant de prendre compte voire d'analyser une éventuelle surdispersion des données.


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité