set.seed(12345)

On commence par charger le paquet d’outils.

library(outilscoursglm)

1 Récupération du jeu de données

On commence par charger les données utilisées. Il s’agit d’un jeu de données retraité à partir de vraies données françaises d’assurance, récupérées via le paquet CASdatasets.

load(url("https://irma.math.unistra.fr/~jberard/freMTPLfreq_categ_age_cont")) 

Les données ainsi récupérées se trouvent dans une variable appelée donnees, que l’on examine maintenant très sommairement.

str(donnees)
## 'data.frame':    413169 obs. of  8 variables:
##  $ ClaimNb  : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Exposure : num  0.09 0.84 0.52 0.45 0.15 0.75 0.81 0.05 0.76 0.34 ...
##  $ Power    : Factor w/ 3 levels "1","2","3": 2 2 2 2 2 2 1 1 1 3 ...
##  $ CarAge   : Factor w/ 2 levels "[0,15]","(15,Inf]": 1 1 1 1 1 1 1 1 1 1 ...
##  $ DriverAge: int  46 46 38 38 41 41 27 27 23 44 ...
##  $ Brand    : Factor w/ 2 levels "other","J": 2 2 2 2 2 2 2 2 1 2 ...
##  $ Gas      : Factor w/ 2 levels "Diesel","Regular": 1 1 2 2 1 1 2 2 2 2 ...
##  $ Density  : Factor w/ 5 levels "[0,40]","(40,200]",..: 2 2 4 4 2 2 4 4 5 5 ...

Le jeu de données se présente sous la forme d’un tableau (data frame) comportant 413169 lignes et 8 colonnes.

Chaque ligne représente une observation (correspondant à une police d’assurance), chaque colonne représente une variable. On a donc 413169 observations combinées des 8 variables :

  • ClaimNB : nombre de sinistres enregistrés sur la période d’observation
  • Exposure : exposition (en années)
  • Power : classe de puissance du véhicule, 3 catégories
  • CarAge : âge du véhicule, 2 catégories
  • DriverAge : âge du conducteur (en années entières)
  • Brand : marque du véhicule, 2 catégories
  • Gas : type de motorisation, 2 catégories
  • Density : densité de population, 5 catégories

On note que les variables catégorielles sont codées sous forme de facteurs. On note que l’âge du conducteur est ici une variable numérique.

Il conviendrait d’examiner en détail la distribution des différentes variables dans le jeu de données, ce qui sera fait sur d’autres exemples. Ici, on se contente de passer directement à l’ajustement du modèle GLM.

2 Ajustement d’un modèle GLM log-Poisson pour la fréquence de sinistres

Dans cette partie, on va examiner différentes possibilités pour traiter la variable explicative numérique DriverAge, les autres variables explicatives, toutes catégorielles, étant traitées via l’encodage standard. L’exposition est prise en compte en ajoutant le logarithme de l’exposition en offset.

On commence par intégrer directement DriverAge sans plus de réflexion : en tant que variable numérique, un unique coefficient sera ajusté pour rendre compte de son effet sur la réponse, avec donc un effet purement linéaire de cette variable sur la composante systématique du modèle, de la forme \(\beta \cdot DriverAge\). Rien ne garantit que cette manière de procéder soit pertinente en général, et il existe de nombreuses situations (y compris la situation présente, voir ci-après) où elle se révèle inappropriée.

ajustement_1 <-
  glm(formula = ClaimNb ~ DriverAge + CarAge + Density + Brand + Power + Gas + offset(log(Exposure)),
      family = poisson(link = "log"),
      data = donnees)
summary(ajustement_1)
## 
## Call:
## glm(formula = ClaimNb ~ DriverAge + CarAge + Density + Brand + 
##     Power + Gas + offset(log(Exposure)), family = poisson(link = "log"), 
##     data = donnees)
## 
## Coefficients:
##                        Estimate Std. Error z value Pr(>|z|)    
## (Intercept)          -2.4963420  0.0404232 -61.755  < 2e-16 ***
## DriverAge            -0.0097020  0.0005652 -17.167  < 2e-16 ***
## CarAge(15,Inf]       -0.2409097  0.0308262  -7.815 5.49e-15 ***
## Density(40,200]       0.1781204  0.0267651   6.655 2.83e-11 ***
## Density(200,500]      0.3179189  0.0296834  10.710  < 2e-16 ***
## Density(500,4.5e+03]  0.5240740  0.0260746  20.099  < 2e-16 ***
## Density(4.5e+03,Inf]  0.6309480  0.0358091  17.620  < 2e-16 ***
## BrandJ               -0.2013570  0.0247173  -8.146 3.75e-16 ***
## Power2                0.0707222  0.0234291   3.019  0.00254 ** 
## Power3                0.2020247  0.0300170   6.730 1.69e-11 ***
## GasRegular           -0.1401808  0.0166576  -8.415  < 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: 105613  on 413168  degrees of freedom
## Residual deviance: 104387  on 413158  degrees of freedom
## AIC: 135666
## 
## Number of Fisher Scoring iterations: 6

On effectue maintenant un tracé de l’effet de DriverAge. On commence par représenter la contribution du terme correspondant dans la composante systématique, puis l’effet obtenu en fixant des valeurs conventionnelles pour les autres variables, sur l’échelle de la réponse.

trace_terme_univar(ajustement = ajustement_1,
                   nom_terme = "DriverAge",
                   nom_variable = "DriverAge",
                   titre = "Effet de la variable DriverAge", 
                   nom_expo = "Exposure",
                   trace_expo = TRUE, 
                   trace_int_conf = TRUE)
## Warning in trace_terme_univar(ajustement = ajustement_1, nom_terme = "DriverAge", : Utilisation des données de ajustement$data

trace_effet_univar(ajustement = ajustement_1, 
                   nom_variable = "DriverAge", 
                   titre = "Effet de la variable DriverAge", 
                   nom_expo = "Exposure",
                   type_rep_modele = "brut",
                   type_rep_voulu = "norm", 
                   trace_expo = TRUE, 
                   trace_int_conf = TRUE)
## Warning in trace_effet_univar(ajustement = ajustement_1, nom_variable = "DriverAge", : Utilisation des données de ajustement$data
## Valeur de CarAge fixée à [0,15] 
## Valeur de Density fixée à (40,200] 
## Valeur de Brand fixée à J 
## Valeur de Power fixée à 2 
## Valeur de Gas fixée à Diesel 
## Valeur de Exposure fixée à 0.09

On utilise maintenant un polynôme de degré 3 pour représenter l’effet de DriverAge, en utilisant dans la formule passée à la fonction glm le terme poly(DriverAge, 3). Trois coefficients \(\beta_1,\beta_2,\beta_3\) seront alors ajustés pour DriverAge, la contribution de cette variable à la composante systématique du modèle étant alors de la forme : \[\beta_1 f_1(DriverAge) + \beta_2 f_2(DriverAge) + \beta_3 f_3(DriverAge),\]\((1,f_1,f_2,f_3)\) forme une base de l’espace des polynômes de degré inférieur ou égal à 3. (La base utilisée n’est pas celle des monômes. De plus, le terme constant \(\beta_0\), associé à la fonction constante \(1\), est géré par ailleurs et de manière globale pour toutes les variables.)

Par rapport au cas précédent, le modèle a donc la capacité de faire apparaître un effet non-linéaire de la variable sur la composante systématique du modèle.

ajustement_2 <-
  glm(formula = 
        ClaimNb ~ poly(DriverAge, 3) + CarAge + Density + Brand + Power + Gas + offset(log(Exposure)),
      family = poisson(link = "log"),
      data = donnees)
summary(ajustement_2)
## 
## Call:
## glm(formula = ClaimNb ~ poly(DriverAge, 3) + CarAge + Density + 
##     Brand + Power + Gas + offset(log(Exposure)), family = poisson(link = "log"), 
##     data = donnees)
## 
## Coefficients:
##                       Estimate Std. Error z value Pr(>|z|)    
## (Intercept)           -2.95099    0.03181 -92.768  < 2e-16 ***
## poly(DriverAge, 3)1  -84.92501    4.90696 -17.307  < 2e-16 ***
## poly(DriverAge, 3)2   64.99913    5.09011  12.770  < 2e-16 ***
## poly(DriverAge, 3)3  -68.05479    5.17747 -13.144  < 2e-16 ***
## CarAge(15,Inf]        -0.23356    0.03083  -7.576 3.57e-14 ***
## Density(40,200]        0.18255    0.02677   6.820 9.11e-12 ***
## Density(200,500]       0.31904    0.02968  10.748  < 2e-16 ***
## Density(500,4.5e+03]   0.52574    0.02608  20.162  < 2e-16 ***
## Density(4.5e+03,Inf]   0.64492    0.03580  18.013  < 2e-16 ***
## BrandJ                -0.18422    0.02476  -7.441 1.00e-13 ***
## Power2                 0.08364    0.02343   3.569 0.000358 ***
## Power3                 0.23925    0.03012   7.944 1.95e-15 ***
## GasRegular            -0.16407    0.01673  -9.808  < 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: 105613  on 413168  degrees of freedom
## Residual deviance: 104012  on 413156  degrees of freedom
## AIC: 135295
## 
## Number of Fisher Scoring iterations: 6

On observe bien la présence des trois coefficients estimés, nommés poly(DriverAge, 3)1, poly(DriverAge, 3)2 et poly(DriverAge, 3)3.

On effectue le même type de tracé qu’auparavant. On constate que l’effet ajusté présente une non-linéarité marquée, à comparer avec l’effet linéaire (sur l’échelle de la composante systématique) ajusté avec le modèle précédent.

trace_terme_univar(ajustement = ajustement_2,
                   nom_terme = "poly(DriverAge, 3)",
                   nom_variable = "DriverAge",
                   titre = "Effet de la variable DriverAge", 
                   nom_expo = "Exposure", 
                   trace_expo = TRUE, 
                   trace_int_conf = TRUE)
## Warning in trace_terme_univar(ajustement = ajustement_2, nom_terme = "poly(DriverAge, 3)", : Utilisation des données de ajustement$data

trace_effet_univar(ajustement=ajustement_2, 
                   nom_variable="DriverAge", 
                   titre="Effet de la variable DriverAge", 
                   nom_expo="Exposure", 
                   type_rep_modele = "brut",
                   type_rep_voulu = "norm",
                   trace_expo=TRUE, 
                   trace_int_conf=TRUE)
## Warning in trace_effet_univar(ajustement = ajustement_2, nom_variable = "DriverAge", : Utilisation des données de ajustement$data
## Valeur de CarAge fixée à [0,15] 
## Valeur de Density fixée à (40,200] 
## Valeur de Brand fixée à J 
## Valeur de Power fixée à 2 
## Valeur de Gas fixée à Diesel 
## Valeur de Exposure fixée à 0.09

On utilise maintenant une famille de fonctions splines cubiques naturelles à 3 degrés de liberté pour représenter l’effet de DriverAge (les fonctions splines seront étudiées en détail ultérieurement). Trois coefficients seront de nouveau ajustés pour DriverAge, de manière à estimer une contribution à la composante systématique de la forme \[\beta_1 g_1(DriverAge) + \beta_2 g_2(DriverAge) + \beta_3 g_3(DriverAge),\] les fonctions \(g_1,g_2,g_3\) appartenant à une base de fonctions employée est très différente de celle employée pour les polynômes. On charge d’abord un paquet permettant de travailler avec les fonctions splines.

library(splines)

On utilise cette fois dans la formule passée à la fonction glm le terme ns(DriverAge, 3). On observe bien la présence des trois coefficients estimés, nommés ns(DriverAge, 3)1, ns(DriverAge, 3)2 et ns(DriverAge, 3)3.

ajustement_3 <-
  glm(formula = 
        ClaimNb ~ ns(DriverAge, 3) + CarAge + Density + Brand + Power + Gas + offset(log(Exposure)),
      family = poisson(link = "log"),
      data = donnees)
summary(ajustement_3)
## 
## Call:
## glm(formula = ClaimNb ~ ns(DriverAge, 3) + CarAge + Density + 
##     Brand + Power + Gas + offset(log(Exposure)), family = poisson(link = "log"), 
##     data = donnees)
## 
## Coefficients:
##                      Estimate Std. Error z value Pr(>|z|)    
## (Intercept)          -2.01598    0.04561 -44.202  < 2e-16 ***
## ns(DriverAge, 3)1    -0.26119    0.04071  -6.417 1.39e-10 ***
## ns(DriverAge, 3)2    -2.32211    0.09590 -24.213  < 2e-16 ***
## ns(DriverAge, 3)3    -1.01615    0.09251 -10.985  < 2e-16 ***
## CarAge(15,Inf]       -0.23347    0.03083  -7.573 3.66e-14 ***
## Density(40,200]       0.18094    0.02677   6.760 1.38e-11 ***
## Density(200,500]      0.31667    0.02968  10.668  < 2e-16 ***
## Density(500,4.5e+03]  0.52274    0.02608  20.047  < 2e-16 ***
## Density(4.5e+03,Inf]  0.64352    0.03580  17.975  < 2e-16 ***
## BrandJ               -0.18323    0.02476  -7.401 1.35e-13 ***
## Power2                0.08688    0.02344   3.707  0.00021 ***
## Power3                0.24029    0.03012   7.978 1.48e-15 ***
## GasRegular           -0.16219    0.01672  -9.700  < 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: 105613  on 413168  degrees of freedom
## Residual deviance: 103965  on 413156  degrees of freedom
## AIC: 135248
## 
## Number of Fisher Scoring iterations: 6

On retrouve une non-linéarité bien visible dans le tracé de l’effet ainsi ajusté, en cohérence avec le résultat obtenu avec des polynômes.

trace_terme_univar(ajustement = ajustement_3,
                   nom_terme = "ns(DriverAge, 3)",
                   nom_variable = "DriverAge",
                   titre = "Effet de la variable DriverAge",
                   nom_expo = "Exposure", 
                   trace_expo = TRUE, 
                   trace_int_conf = TRUE)
## Warning in trace_terme_univar(ajustement = ajustement_3, nom_terme = "ns(DriverAge, 3)", : Utilisation des données de ajustement$data

trace_effet_univar(ajustement = ajustement_3, 
                   nom_variable = "DriverAge", 
                   titre = "Effet de la variable DriverAge", 
                   nom_expo = "Exposure",
                   type_rep_modele = "brut",
                   type_rep_voulu = "norm",
                   trace_expo = TRUE, 
                   trace_int_conf = TRUE)
## Warning in trace_effet_univar(ajustement = ajustement_3, nom_variable = "DriverAge", : Utilisation des données de ajustement$data
## Valeur de CarAge fixée à [0,15] 
## Valeur de Density fixée à (40,200] 
## Valeur de Brand fixée à J 
## Valeur de Power fixée à 2 
## Valeur de Gas fixée à Diesel 
## Valeur de Exposure fixée à 0.09

On envisage maintenant de catégoriser la variable DriverAge, en effectuant des catégories d’âge. On crée pour cela une nouvelle variable catégorielle DriverAge_cat reflétant cette catégorisation, à l’aide de la fonction cut. Les tranches d’âge vont de 18 à 103 ans par tranches de 5 ans.

donnees[["DriverAge_cat"]] <- cut(x = donnees[["DriverAge"]],
                                  breaks = seq(18, 103, by = 5),
                                  include.lowest = TRUE,
                                  right = FALSE)
str(donnees[["DriverAge_cat"]])
##  Factor w/ 17 levels "[18,23)","[23,28)",..: 6 6 5 5 5 5 2 2 2 6 ...

On effectue maintenant l’ajustement GLM en utilisant DriverAge_cat au lieu de DriverAge dans la formule.

ajustement_4 <-
  glm(formula = 
        ClaimNb ~ DriverAge_cat + CarAge + Density + Brand + Power + Gas + offset(log(Exposure)),
      family = poisson(link = "log"),
      data = donnees)
summary(ajustement_4)
## 
## Call:
## glm(formula = ClaimNb ~ DriverAge_cat + CarAge + Density + Brand + 
##     Power + Gas + offset(log(Exposure)), family = poisson(link = "log"), 
##     data = donnees)
## 
## Coefficients:
##                       Estimate Std. Error z value Pr(>|z|)    
## (Intercept)           -1.93001    0.04550 -42.422  < 2e-16 ***
## DriverAge_cat[23,28)  -0.70246    0.04393 -15.989  < 2e-16 ***
## DriverAge_cat[28,33)  -1.01959    0.04195 -24.303  < 2e-16 ***
## DriverAge_cat[33,38)  -1.11918    0.04150 -26.966  < 2e-16 ***
## DriverAge_cat[38,43)  -1.11318    0.04125 -26.984  < 2e-16 ***
## DriverAge_cat[43,48)  -0.98009    0.04048 -24.211  < 2e-16 ***
## DriverAge_cat[48,53)  -0.99967    0.04015 -24.896  < 2e-16 ***
## DriverAge_cat[53,58)  -1.11329    0.04188 -26.582  < 2e-16 ***
## DriverAge_cat[58,63)  -1.17099    0.04721 -24.804  < 2e-16 ***
## DriverAge_cat[63,68)  -1.22891    0.05173 -23.757  < 2e-16 ***
## DriverAge_cat[68,73)  -1.21026    0.05358 -22.587  < 2e-16 ***
## DriverAge_cat[73,78)  -1.17810    0.05892 -19.994  < 2e-16 ***
## DriverAge_cat[78,83)  -1.11854    0.06934 -16.130  < 2e-16 ***
## DriverAge_cat[83,88)  -1.01911    0.11246  -9.062  < 2e-16 ***
## DriverAge_cat[88,93)  -0.85307    0.18007  -4.737 2.17e-06 ***
## DriverAge_cat[93,98)  -1.62203    0.57831  -2.805 0.005035 ** 
## DriverAge_cat[98,103] -1.05791    0.57835  -1.829 0.067370 .  
## CarAge(15,Inf]        -0.24505    0.03084  -7.945 1.95e-15 ***
## Density(40,200]        0.18078    0.02677   6.752 1.46e-11 ***
## Density(200,500]       0.31465    0.02969  10.598  < 2e-16 ***
## Density(500,4.5e+03]   0.52646    0.02609  20.181  < 2e-16 ***
## Density(4.5e+03,Inf]   0.65721    0.03584  18.336  < 2e-16 ***
## BrandJ                -0.17547    0.02480  -7.075 1.49e-12 ***
## Power2                 0.08988    0.02344   3.834 0.000126 ***
## Power3                 0.23986    0.03014   7.958 1.75e-15 ***
## GasRegular            -0.17280    0.01675 -10.315  < 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: 105613  on 413168  degrees of freedom
## Residual deviance: 103763  on 413143  degrees of freedom
## AIC: 135072
## 
## Number of Fisher Scoring iterations: 6

Cette fois, le modèle est libre d’attribuer un effet différent à chaque catégorie d’âge, ce qui se traduit par la présence d’un coefficient par catégorie (sauf celle choisie comme catégorie de référence), et l’on constate que l’allure globale du tracé des effets ainsi estimés est cohérente avec celle observée dans les deux exemples précédents. On note la forte incertitude qui affecte les coefficients attribués aux catégories d’âges élevés, à mettre en rapport avec le faible volume de données disponible pour ces catégories, comme le montre le tracé de l’exposition (la manière de traiter les problèmes que cette situation peut poser sera discutée plus tard).

trace_terme_univar(ajustement = ajustement_4,
                   nom_terme = "DriverAge_cat",
                   nom_variable = "DriverAge_cat",
                   titre = "Effet de la variable DriverAge", 
                   nom_expo = "Exposure", 
                   trace_expo = TRUE, 
                   trace_int_conf = TRUE)
## Warning in trace_terme_univar(ajustement = ajustement_4, nom_terme = "DriverAge_cat", : Utilisation des données de ajustement$data

trace_effet_univar(ajustement = ajustement_4,
                   nom_variable = "DriverAge_cat", 
                   titre = "Effet de la variable DriverAge", 
                   nom_expo = "Exposure",
                   type_rep_modele = "brut",
                   type_rep_voulu = "norm",
                   trace_expo = TRUE,
                   trace_int_conf = TRUE)
## Warning in trace_effet_univar(ajustement = ajustement_4, nom_variable = "DriverAge_cat", : Utilisation des données de ajustement$data
## Valeur de CarAge fixée à [0,15] 
## Valeur de Density fixée à (40,200] 
## Valeur de Brand fixée à J 
## Valeur de Power fixée à 2 
## Valeur de Gas fixée à Diesel 
## Valeur de Exposure fixée à 0.09

Une manière alternative de procéder, mathématiquement équivalente, est de créer au préalable une fonction de catégorisation, comme ci-dessous. L’avantage est de pouvoir continuer à travailler directement avec la variable DriverAge au lieu de passer par une variable auxiliaire catégorisée.

cat_Age <- function(x) {
  cut(x,
      breaks = seq(18, 103, by = 5),
      include.lowest = TRUE,
      right = FALSE)
}

On utilise maintenant dans la formule la variable DriverAge catégorisée par la fonction cat_Age que l’on vient de définir, via le terme cat_Age(DriverAge) dans la formule (au lieu de DriverAge_cat dans le cas précédent).

ajustement_4_bis <-
  glm(formula = 
        ClaimNb ~ cat_Age(DriverAge) + CarAge + Density + Brand + Power + Gas + offset(log(Exposure)),
      family = poisson(link = "log"),
      data = donnees)
summary(ajustement_4_bis)
## 
## Call:
## glm(formula = ClaimNb ~ cat_Age(DriverAge) + CarAge + Density + 
##     Brand + Power + Gas + offset(log(Exposure)), family = poisson(link = "log"), 
##     data = donnees)
## 
## Coefficients:
##                            Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                -1.93001    0.04550 -42.422  < 2e-16 ***
## cat_Age(DriverAge)[23,28)  -0.70246    0.04393 -15.989  < 2e-16 ***
## cat_Age(DriverAge)[28,33)  -1.01959    0.04195 -24.303  < 2e-16 ***
## cat_Age(DriverAge)[33,38)  -1.11918    0.04150 -26.966  < 2e-16 ***
## cat_Age(DriverAge)[38,43)  -1.11318    0.04125 -26.984  < 2e-16 ***
## cat_Age(DriverAge)[43,48)  -0.98009    0.04048 -24.211  < 2e-16 ***
## cat_Age(DriverAge)[48,53)  -0.99967    0.04015 -24.896  < 2e-16 ***
## cat_Age(DriverAge)[53,58)  -1.11329    0.04188 -26.582  < 2e-16 ***
## cat_Age(DriverAge)[58,63)  -1.17099    0.04721 -24.804  < 2e-16 ***
## cat_Age(DriverAge)[63,68)  -1.22891    0.05173 -23.757  < 2e-16 ***
## cat_Age(DriverAge)[68,73)  -1.21026    0.05358 -22.587  < 2e-16 ***
## cat_Age(DriverAge)[73,78)  -1.17810    0.05892 -19.994  < 2e-16 ***
## cat_Age(DriverAge)[78,83)  -1.11854    0.06934 -16.130  < 2e-16 ***
## cat_Age(DriverAge)[83,88)  -1.01911    0.11246  -9.062  < 2e-16 ***
## cat_Age(DriverAge)[88,93)  -0.85307    0.18007  -4.737 2.17e-06 ***
## cat_Age(DriverAge)[93,98)  -1.62203    0.57831  -2.805 0.005035 ** 
## cat_Age(DriverAge)[98,103] -1.05791    0.57835  -1.829 0.067370 .  
## CarAge(15,Inf]             -0.24505    0.03084  -7.945 1.95e-15 ***
## Density(40,200]             0.18078    0.02677   6.752 1.46e-11 ***
## Density(200,500]            0.31465    0.02969  10.598  < 2e-16 ***
## Density(500,4.5e+03]        0.52646    0.02609  20.181  < 2e-16 ***
## Density(4.5e+03,Inf]        0.65721    0.03584  18.336  < 2e-16 ***
## BrandJ                     -0.17547    0.02480  -7.075 1.49e-12 ***
## Power2                      0.08988    0.02344   3.834 0.000126 ***
## Power3                      0.23986    0.03014   7.958 1.75e-15 ***
## GasRegular                 -0.17280    0.01675 -10.315  < 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: 105613  on 413168  degrees of freedom
## Residual deviance: 103763  on 413143  degrees of freedom
## AIC: 135072
## 
## Number of Fisher Scoring iterations: 6
trace_terme_univar(ajustement = ajustement_4_bis,
                   nom_terme = "cat_Age(DriverAge)",
                   nom_variable = "DriverAge",
                   titre = "Effet de la variable DriverAge", 
                   nom_expo = "Exposure", 
                   trace_expo = TRUE, 
                   trace_int_conf = TRUE)
## Warning in trace_terme_univar(ajustement = ajustement_4_bis, nom_terme = "cat_Age(DriverAge)", : Utilisation des données de ajustement$data

trace_effet_univar(ajustement=ajustement_4_bis,
                   nom_variable="DriverAge", 
                   titre="Effet de la variable DriverAge", 
                   nom_expo="Exposure",
                   type_rep_modele = "brut",
                   type_rep_voulu = "norm",
                   trace_expo=TRUE,
                   trace_int_conf=TRUE)
## Warning in trace_effet_univar(ajustement = ajustement_4_bis, nom_variable = "DriverAge", : Utilisation des données de ajustement$data
## Valeur de CarAge fixée à [0,15] 
## Valeur de Density fixée à (40,200] 
## Valeur de Brand fixée à J 
## Valeur de Power fixée à 2 
## Valeur de Gas fixée à Diesel 
## Valeur de Exposure fixée à 0.09