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