Modele GLM avec intéractions

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

colombet murielle
Messages : 12
Enregistré le : 10 Sep 2006, 12:46

Modele GLM avec intéractions

Messagepar colombet murielle » 08 Avr 2009, 15:31

Bonjour,

Et merci par avance à ceux qui pourront m'éclairer.

Je souhaite modéliser un taux suivant les années en prenant en compte l'age. C'est à dire que
log(Taux(i,T))=A(i)+B(i)*T avec T : année et i le groupe d'age


C'est un modèle sans doute très simple mais je viens de faire quelques découvertes qui me font douter de ma syntaxe dans R.
J'ai 2 sortes de modèles donnant les mêmes résultats pour une estimation pour 2006 mais avec une matrice de variance et covariance légèrement différente.
En effet le premier fut d'abord avec * :

Code : Tout sélectionner

>   DataModele
   Period Age  Cas    Popu         Taux
1    1999   1  991 1963751 0.0005046465
2    1999   2 1651 1563790 0.0010557684
3    1999   3 2642 1402788 0.0018833922
4    2000   1  979 1998324 0.0004899105
5    2000   2 1729 1608675 0.0010747976
6    2000   3 2640 1417415 0.0018625455
7    2001   1  975 1993161 0.0004891727
8    2001   2 1655 1673297 0.0009890653
9    2001   3 2587 1429781 0.0018093680
10   2002   1  861 1955062 0.0004403952
11   2002   2 1722 1753497 0.0009820376
12   2002   3 2561 1440646 0.0017776747
13   2003   1  820 1899445 0.0004317051
14   2003   2 1677 1835100 0.0009138467
15   2003   3 2488 1455457 0.0017094287
16   2004   1  852 1848726 0.0004608579
17   2004   2 1783 1898680 0.0009390735
18   2004   3 2550 1481763 0.0017209230
19   2005   1  810 1819239 0.0004452411
20   2005   2 1706 1931126 0.0008834224
21   2005   3 2609 1523993 0.0017119501

>   glm1<-glm(Cas~-1+as.factor(Age)*Period,family=poisson(log),offset=log(Popu),data=DataModele)
>   glm1$coefficients
       as.factor(Age)1        as.factor(Age)2        as.factor(Age)3                 Period as.factor(Age)2:Period as.factor(Age)3:Period
          38.013149929           56.225732213           29.496287647           -0.022820043           -0.008727877            0.004924545
>   Coeff1<-as.data.frame(matrix(glm1$coefficients,nrow=3,ncol=2))
>   names(Coeff1)<-c("CoeffAge","CoeffPeriode")
>   Coeff1
  CoeffAge CoeffPeriode
1 38.01315 -0.022820043
2 56.22573 -0.008727877
3 29.49629  0.004924545
>   TauxTheo1<-exp(Coeff1$CoeffAge+((Coeff1$CoeffPeriode)+c(0,rep(Coeff1$CoeffPeriode[1],2)))*2006)
>   TauxTheo1
[1] 0.0004248148 0.0008592968 0.0016581004
>   MatriceVarCov1<-summary(glm1)$cov.scaled
>   MatriceVarCov1
                       as.factor(Age)1 as.factor(Age)2 as.factor(Age)3        Period
as.factor(Age)1           1.617469e+02   -1.221027e-14   -3.171075e-15 -8.079868e-02
as.factor(Age)2          -1.221027e-14    8.431341e+01    1.022853e-15  7.264603e-18
as.factor(Age)3          -3.171075e-15    1.022853e-15    5.515717e+01  1.135024e-19
Period                   -8.079868e-02    7.264603e-18    1.135024e-19  4.036204e-05
as.factor(Age)2:Period    8.079868e-02   -4.211403e-02   -1.135024e-19 -4.036204e-05
as.factor(Age)3:Period    8.079868e-02   -7.751582e-18   -2.755129e-02 -4.036204e-05
                       as.factor(Age)2:Period as.factor(Age)3:Period
as.factor(Age)1                  8.079868e-02           8.079868e-02
as.factor(Age)2                 -4.211403e-02          -7.751582e-18
as.factor(Age)3                 -1.135024e-19          -2.755129e-02
Period                          -4.036204e-05          -4.036204e-05
as.factor(Age)2:Period           6.139775e-05           4.036204e-05
as.factor(Age)3:Period           4.036204e-05           5.412406e-05


En prenant un autre modele j'ai les résultats suivants:

Code : Tout sélectionner

>   glm2<-glm(Cas~-1+as.factor(Age)/Period,family=poisson(log),offset=log(Popu),data=DataModele)
>   glm2$coefficients
       as.factor(Age)1        as.factor(Age)2        as.factor(Age)3 as.factor(Age)1:Period as.factor(Age)2:Period as.factor(Age)3:Period
           38.01314993            56.22573221            29.49628765            -0.02282004            -0.03154792            -0.01789550
>   Coeff2<-as.data.frame(matrix(glm2$coefficients,nrow=3,ncol=2))
>   names(Coeff2)<-c("CoeffAge","CoeffPeriode")
>   Coeff2
  CoeffAge CoeffPeriode
1 38.01315  -0.02282004
2 56.22573  -0.03154792
3 29.49629  -0.01789550
>   TauxTheo2<-exp(Coeff2$CoeffAge+Coeff2$CoeffPeriode*2006)
>   TauxTheo2
[1] 0.0004248148 0.0008592968 0.0016581004
>   MatriceVarCov2<-summary(glm2)$cov.scaled
>   MatriceVarCov2
                       as.factor(Age)1 as.factor(Age)2 as.factor(Age)3 as.factor(Age)1:Period as.factor(Age)2:Period
as.factor(Age)1           161.74689024      0.00000000      0.00000000          -8.079868e-02           0.000000e+00
as.factor(Age)2             0.00000000     84.31341242      0.00000000           0.000000e+00          -4.211403e-02
as.factor(Age)3             0.00000000      0.00000000     55.15717086           0.000000e+00           0.000000e+00
as.factor(Age)1:Period     -0.08079868      0.00000000      0.00000000           4.036204e-05           0.000000e+00
as.factor(Age)2:Period      0.00000000     -0.04211403      0.00000000           0.000000e+00           2.103572e-05
as.factor(Age)3:Period      0.00000000      0.00000000     -0.02755129           0.000000e+00           0.000000e+00
                       as.factor(Age)3:Period
as.factor(Age)1                  0.000000e+00
as.factor(Age)2                  0.000000e+00
as.factor(Age)3                 -2.755129e-02
as.factor(Age)1:Period           0.000000e+00
as.factor(Age)2:Period           0.000000e+00
as.factor(Age)3:Period           1.376203e-05


Dans le second modele j'ai juste l'intéraction age : periode et l'age alors que dans le second j'ai en plus la période.
Les matrice de variance et covariance sont différentes car dans le premier les B(i) sont en fait égal à la somme des coefficients as.factor(Age)(i):Period et Period donc si je prend le premier modèle je dois recalculer ma matrice de covariance mais ce que je ne comprend pas c'est pourquoi les covariance entre les A(i) sont nulles dans le second mais pas dans le premier (même si elles tendent vers 0 quand même)

Je ne sais pas quel modèle s'adapte le mieux à mon cas, etant donné que je dois me servir de la matrice de variance et covariance j'opterais pour le second (cela m'eviterait de recalculer une matrice de variance covariance) mais est ce que je perds de l'information ou est-ce qu'au final les 2 modèles sont les mêmes et que les différence sont dues à des arrondissements dans les calculs...je suis un peu perdue

Désolée pour la longueur du message je voulais être claire avec un jeu de données.

Merci

Murielle

Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Bing [Bot], Hervieu Benoît et 2 invités