{"word_count": 1059, "character_count": 9522}
Petit complément par rapport au cours de mardi. On avait évoqué tout d'abord la lecture des sorties lorsque l'on régresse sur des variables catégorielles (des facteurs). Commençons par supprimer la constante de la régression&#62; reg0=glm(nbre~0+zone,offset=log(exposition),data=base, + family=poisson(link="log"))&#62; summary(reg0)Call:glm(formula = nbre ~ 0 + zone, family = poisson(link = "log"),     data = base, offset = log(exposition))Deviance Residuals:     Min       1Q   Median       3Q      Max  -0.5717  -0.3968  -0.2996  -0.1547  12.6722  Coefficients:      Estimate Std. Error z value Pr(&#62;|z|)    zoneB -2.54187    0.06287  -40.43   &#60;2e-16 ***zoneA -2.54912    0.05285  -48.23   &#60;2e-16 ***zoneC -2.38525    0.03753  -63.56   &#60;2e-16 ***zoneD -2.13454    0.03878  -55.05   &#60;2e-16 ***zoneE -2.00204    0.03965  -50.49   &#60;2e-16 ***zoneF -2.06932    0.11547  -17.92   &#60;2e-16 ***---Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 (Dispersion parameter for poisson family taken to be 1)    Null deviance: 50966  on 50000  degrees of freedomResidual deviance: 15692  on 49994  degrees of freedomAIC: 20800Number of Fisher Scoring iterations: 6&#62; predict(reg0,newdata=data.frame(+ zone=c("A","B","C","D","E"),exposition=rep(1,5)))        1         2         3         4         5 -2.549120 -2.541870 -2.385253 -2.134543 -2.002044On voit que toutes les modalités sont présentes, et toutes sont significatives. Si on régresse sur la constante, il faudra supprimer une modalité pour rendre le modèle identifiable. On peut forcer pour que la modalité de référence soit la seconde,&#62; base$zone=relevel(base$zone,"B")&#62; regB=glm(nbre~zone,offset=log(exposition),data=base,+ family=poisson(link="log"))&#62; summary(regB)Call:glm(formula = nbre ~ zone, family = poisson(link = "log"), data = base,offset = log(exposition))Deviance Residuals:Min       1Q   Median       3Q      Max-0.5717  -0.3968  -0.2996  -0.1547  12.6722Coefficients:Estimate Std. Error z value Pr(&#62;|z|)(Intercept) -2.54187    0.06287 -40.431  &#60; 2e-16 ***zoneA       -0.00725    0.08213  -0.088 0.929661zoneC        0.15662    0.07322   2.139 0.032432 *zoneD        0.40733    0.07387   5.514 3.50e-08 ***zoneE        0.53983    0.07433   7.263 3.80e-13 ***zoneF        0.47255    0.13148   3.594 0.000325 ***---Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1(Dispersion parameter for poisson family taken to be 1)Null deviance: 15809  on 49999  degrees of freedomResidual deviance: 15692  on 49994  degrees of freedomAIC: 20800Number of Fisher Scoring iterations: 6&#62; predict(regB,newdata=data.frame(+ zone=c("A","B","C","D","E"),exposition=rep(1,5)))1         2         3         4         5-2.549120 -2.541870 -2.385253 -2.134543 -2.002044On notera que les prédictions ne changent pas. On peut aussi choisir la première comme modalité de référence,&#62; base$zone=relevel(base$zone,"A")&#62; reg=glm(nbre~zone,offset=log(exposition),&#62; data=base,family=poisson(link="log"))&#62; summary(reg)Call:glm(formula = nbre ~ zone, family = poisson(link = "log"), data = base,offset = log(exposition))Deviance Residuals:Min       1Q   Median       3Q      Max-0.5717  -0.3968  -0.2996  -0.1547  12.6722Coefficients:Estimate Std. Error z value Pr(&#62;|z|)(Intercept) -2.54912    0.05285 -48.232  &#60; 2e-16 ***zoneB        0.00725    0.08213   0.088 0.929661zoneC        0.16387    0.06482   2.528 0.011471 *zoneD        0.41458    0.06555   6.324 2.54e-10 ***zoneE        0.54708    0.06607   8.280  &#60; 2e-16 ***zoneF        0.47980    0.12699   3.778 0.000158 ***---Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1(Dispersion parameter for poisson family taken to be 1)Null deviance: 15809  on 49999  degrees of freedomResidual deviance: 15692  on 49994  degrees of freedomAIC: 20800Number of Fisher Scoring iterations: 6Le fait que la seconde modalité ne soit pas significative se lit par rapport à la modalité de référence (en l’occurrence la première): non significatif signifie alors non significativement différente. Autrement dit, on peut regrouper les modalités en une seule.&#62; base$zonesimple=base$zone&#62; base$zonesimple[base$zone%in%c("A","B")]="A"&#62; reg=glm(nbre~zonesimple,offset=log(exposition),+ data=base,family=poisson(link="log"))&#62; summary(reg)Call:glm(formula = nbre ~ zonesimple, family = poisson(link = "log"),data = base, offset = log(exposition))Deviance Residuals:Min       1Q   Median       3Q      Max-0.5717  -0.3959  -0.2989  -0.1547  12.6722Coefficients:Estimate Std. Error z value Pr(&#62;|z|)(Intercept) -2.54612    0.04046 -62.937  &#60; 2e-16 ***zonesimpleC  0.16087    0.05518   2.915  0.00355 **zonesimpleD  0.41158    0.05604   7.345 2.06e-13 ***zonesimpleE  0.54408    0.05665   9.605  &#60; 2e-16 ***zonesimpleF  0.47681    0.12235   3.897 9.74e-05 ***---Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1(Dispersion parameter for poisson family taken to be 1)Null deviance: 15809  on 49999  degrees of freedomResidual deviance: 15692  on 49995  degrees of freedomAIC: 20798Number of Fisher Scoring iterations: 6On note qu'avec ce regroupement, les autres modalités sont sensiblement différentes. On peut aussi retenir la troisième comme modalité de référence&#62; base$zonesimple=relevel(base$zonesimple,"C")&#62; reg=glm(nbre~zonesimple,offset=log(exposition),+ data=base,family=poisson(link="log"))&#62; summary(reg)Call:glm(formula = nbre ~ zonesimple, family = poisson(link = "log"),data = base, offset = log(exposition))Deviance Residuals:Min       1Q   Median       3Q      Max-0.5717  -0.3959  -0.2989  -0.1547  12.6722Coefficients:Estimate Std. Error z value Pr(&#62;|z|)(Intercept) -2.38525    0.03753 -63.557  &#60; 2e-16 ***zonesimpleA -0.16087    0.05518  -2.915  0.00355 **zonesimpleD  0.25071    0.05396   4.646 3.39e-06 ***zonesimpleE  0.38321    0.05460   7.019 2.24e-12 ***zonesimpleF  0.31593    0.12142   2.602  0.00927 **---Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1(Dispersion parameter for poisson family taken to be 1)Null deviance: 15809  on 49999  degrees of freedomResidual deviance: 15692  on 49995  degrees of freedomAIC: 20798Number of Fisher Scoring iterations: 6Comme toutes les modalités semblent significatives, on peut tenter de prendre comme modalité de référence une des dernières (dont les estimations des coefficients donnent des résultats très proches)&#62; base$zonesimple=relevel(base$zonesimple,"F")&#62; reg=glm(nbre~zonesimple,offset=log(exposition),+ data=base,family=poisson(link="log"))&#62; summary(reg)Call:glm(formula = nbre ~ zonesimple, family = poisson(link = "log"),data = base, offset = log(exposition))Deviance Residuals:Min       1Q   Median       3Q      Max-0.5717  -0.3959  -0.2989  -0.1547  12.6722Coefficients:Estimate Std. Error z value Pr(&#62;|z|)(Intercept) -2.06932    0.11547 -17.921  &#60; 2e-16 ***zonesimpleC -0.31593    0.12142  -2.602  0.00927 **zonesimpleA -0.47681    0.12235  -3.897 9.74e-05 ***zonesimpleD -0.06522    0.12181  -0.535  0.59232zonesimpleE  0.06727    0.12209   0.551  0.58161---Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1(Dispersion parameter for poisson family taken to be 1)Null deviance: 15809  on 49999  degrees of freedomResidual deviance: 15692  on 49995  degrees of freedomAIC: 20798Number of Fisher Scoring iterations: 6Au vue de cette dernière sortie, on peut tenter de fusionner toutes les dernières classes ensembles&#62; base$zonesimple[base$zone%in%c("D","E","F")]="F"&#62; reg=glm(nbre~zonesimple,offset=log(exposition),+ data=base,family=poisson(link="log"))&#62; summary(reg)Call:glm(formula = nbre ~ zonesimple, family = poisson(link = "log"),data = base, offset = log(exposition))Deviance Residuals:Min       1Q   Median       3Q      Max-0.5660  -0.3959  -0.3004  -0.1547  12.5929Coefficients:Estimate Std. Error z value Pr(&#62;|z|)(Intercept) -2.07182    0.02696 -76.853  &#60; 2e-16 ***zonesimpleC -0.31344    0.04621  -6.783 1.18e-11 ***zonesimpleA -0.47431    0.04861  -9.757  &#60; 2e-16 ***---Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1(Dispersion parameter for poisson family taken to be 1)Null deviance: 15809  on 49999  degrees of freedomResidual deviance: 15698  on 49997  degrees of freedomAIC: 20800Number of Fisher Scoring iterations: 6Bon, formellement, regrouper deux modalités (i.e. décréter que deux variables sont non significatives simultanément) demande un peu plus qu'un test de Student, ou que deux tests de Student.... Si on remonte un peu en arrière, on aurait pu faire un test multiple avant de fusionner les trois modalités (un test de type Fisher, ou une ANOVA)&#62; base$zonesimple=relevel(base$zonesimple,"F")&#62; reg=glm(nbre~zonesimple,offset=log(exposition),+ data=base,family=poisson(link="log"))&#62; library(car)&#62; linearHypothesis(reg,c("zonesimpleD=0","zonesimpleE=0"))Linear hypothesis testHypothesis:zonesimpleD = 0zonesimpleE = 0Model 1: restricted modelModel 2: nbre ~ zonesimpleRes.Df Df  Chisq Pr(&#62;Chisq)1  499972  49995  2 5.7073    0.05763 .---Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Manifestement, on peut accepter l'hypothèse que ces trois catégories n'en font qu'une. La zone géographique peut alors se découper en trois grandes zones, et pas en six. On notera que cela correspond à ce que propose un arbre de régression&#62; library(tree)&#62; arbre=tree(nbre~zone+offset(log(exposition)),+ data=base,split="gini")&#62; plot(arbre)&#62; text(arbre)