HAL Id: cel-00550583
https://cel.hal.science/cel-00550583
Submitted on 28 Dec 2010
HAL is a multi-disciplinary open access archive for the deposit and dissemination of sci- entific research documents, whether they are pub- lished or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers.
L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d’enseignement et de recherche français ou étrangers, des laboratoires publics ou privés.
To cite this version:
Arthur Charpentier. Statistique de l’assurance. 3rd cycle. Université de Rennes 1 et Université de Montréal, 2010, pp.133. �cel-00550583�
Université de Rennes 1 Université de Montréal 2010-2011
Statistique de l'assurance, STT 6705V Statistique de l'assurance II
partie 1 - assurance non-vie tarication & provisionnement
http ://freakonometrics.blog.free.fr/
1 La tarication a priori 5
1.1 Les modèles linéaires généralisés . . . 7
1.1.1 Le cadre général des GLM . . . 7
1.1.2 Approche économétrique de la tarication . . . 9
1.1.3 Estimation des paramètres . . . 10
1.1.4 Interprétation d'une régression . . . 13
1.1.5 Extension à d'autres familles de lois . . . 16
1.1.6 De la qualité d'une régression . . . 16
1.1.7 Les variables tarifaires continues et la nonlinéarité . . 19
1.1.8 Les modèles nonlinéaires multivariés . . . 23
1.2 Modéliser des variables indicatrices . . . 24
1.2.1 La régression logistique ou probit . . . 24
1.2.2 Les arbres de régression . . . 26
1.2.3 Probabilité d'avoir (au moins) un sinistre dans l'année 30 1.2.4 Probabilité d'avoir un gros sinistre dans l'année . . . . 31
1.3 Modéliser la fréquence de sinistralité . . . 34
1.3.1 Un peu d'analyse descriptive . . . 34
1.3.2 La méthode des marges . . . 38
1.3.3 Prise en compte de l'exposition et variable oset . . . 40
1.3.4 Prise en compte de la surdispersion . . . 41
1.3.5 Les modèles zero-inated . . . 44
1.3.6 Régression simple versus régression multiple . . . 47
1.3.7 Prédiction de la fréquence par police . . . 47
1.4 Modéliser les cỏts individuels des sinistres . . . 50
1.4.1 Modèle Gamma et modèle lognormal . . . 50
1.4.2 Modélisation des grands sinistres . . . 57
1.4.3 Ecrêtement des grands sinistres . . . 58
1.5 Modéliser les cỏts par police . . . 60
1.5.1 Les modèles Tweedie comme modèle Poisson composé 60 2 Les provisions pour sinistres à payer 63 2.1 La problématique du provisionnment . . . 63
3
taires et comptables . . . 63
2.1.2 Formalisation du problème du provisionnement . . . . 65
2.2 Les cadences de paiements et la méthode Chain Ladder . . . 66
2.3 De Mack à Merz & Wüthrich . . . 69
2.3.1 Quantier l'incertitude dans une prédiction . . . 69
2.3.2 Le formalisme de Mack . . . 70
2.3.3 La notion de tail factor . . . 72
2.3.4 Des estimateurs des paramètres à l'incertitude sur le montant des provisions . . . 72
2.3.5 Un mot sur Munich-Chain Ladder . . . 73
2.3.6 L'incertitude à un an de Merz & Wüthrich . . . 78
2.4 Régression Poissonnienne et approches économétriques . . . . 83
2.4.1 Les modèles à facteurs, un introduction historique . . 83
2.4.2 Les modèles de de Vylder et de Chritophides . . . 83
2.4.3 La régression poissonnienne de Hachemeister & Stanard 85 2.4.4 Incertitude dans un modèle de régression . . . 87
2.4.5 Le modèle binomial-négative . . . 91
2.4.6 Quel modèle de régression ? . . . 91
2.5 Les triangles multivariés . . . 92
2.5.1 Hypohtèse d'indépendance entre les triangles, et lois paramétriques . . . 93
2.5.2 Le modèle de Mack bivarié . . . 95
2.5.3 Modèles économétriques pour des risques multiples . . 96
2.6 Borhutter-Fergusson, Benktander et les méthodes bayésiennes 97 2.6.1 Le modèle de Borhutter-Ferguson et l'introduction d'un avis d'expert . . . 97
2.6.2 Benktander . . . 98
2.6.3 La méthode dite Cape-Code . . . 99
2.6.4 Les approches Bayésiennes . . . 100 2.6.5 Approche bayésienne sur les facteurs de développement 104
La tarication a priori
Pour chaque police d'assurance, la prime est fonction de variables dites de tarication. Généralement, on considère
des informations sur l'assuré, comme l'âge ou le sexe pour un particu- lier, ou le secteur d'activité et le nombre de salariés pour une entreprise, des informations sur le bien assuré, comme l'âge du véhicule, la puis- sance ou la marque en assurance auto, la surface du logement en mul- tirisque habitation, le chire d'aaire de l'entreprise en perte d'exploi- tation,
des informations géograhiques comme le revenu moyen dans la com- mune ou le département, la densité de population, etc.
La fréquence est le nombre de sinistres divisé par l'exposition (correspon- dant au nombre d'années police) pour une police d'assurance, ou un groupe de polices d'assurance. La plupart des contrats étant annuels, on ramènera toujours le nombre de sinistres à une exposition annuelle lors du calcul de la prime, et on notera N la variable aléatoire associée. Durant la période d'exposition, on notera Yi les cỏts des sinistres, c'est à dire les indemnités versées par l'assureur à l'assuré (ou une tierce personne). La charge totale par police est alors S= 0 s'il n'y a pas eu de sinistres, ou sinon :
S =Y1+· · ·+YN =
N
X
i=1
Yi.
Classiquement (et ce point sera important pour constituer la base de don- nées) Yi > 0 etN est alors le nombre de sinistres en excluant les sinistres classés sans suite (i.e. de cỏt nul).
La prime pure est E(S) =E(N)·E(Yi) dès lors que les cỏts individuels sont i.i.d., indépendants du nombre de sinistres. Dans le cas ó la fréquence et les charges sont hétérogènes, l'hétérogénéité étant caractérisée par une informationΩ, la prime pure devrait être :
E(S|Ω) =E(N|Ω)·E(Yi|Ω).
5
à notre disposition pour obtenir un proxi de ces espérances conditionnelles.
On cherche alors X = (X1,· · · , Xk) un ensemble de variables explicatives telles que
E(S|X) =E(N|X)·E(Yi|X).
Pour importer les bases de données, on utilise le code suivant (seuls les sinistres de responsabilité civile nous intéressent),
sinistreUdM <- read.table("http://perso.univ-rennes1.fr/arthur.charpentier/sinistreUdM.txt", + header=TRUE,sep=";")
> sinistres=sinistreUdM[sinistreUdM$garantie=="1RC",]
> contratUdM <- read.table("http://perso.univ-rennes1.fr/arthur.charpentier/contratUdM.txt", + header=TRUE,sep=";")
Pour consituer une base contenant les nombres de sinistres, le code est le suivant :
> T=table(sinistres$nocontrat)
> T1=as.numeric(names(T))
> T2=as.numeric(T)
> nombre1 = data.frame(nocontrat=T1,nbre=T2)
> I = contratUdM$nocontrat%in%T1
> T1=contratUdM$nocontrat[I==FALSE]
> nombre2 = data.frame(nocontrat=T1,nbre=0)
> nombre=rbind(nombre1,nombre2)
> base = merge(contratUdM,nombre)
> head(base)
nocontrat exposition zone puissance agevehicule ageconducteur bonus
1 27 0.87 C 7 0 56 50
2 115 0.72 D 5 0 45 50
3 121 0.05 C 6 0 37 55
4 142 0.90 C 10 10 42 50
5 155 0.12 C 7 0 59 50
6 186 0.83 C 5 0 75 50
marque carburant densite region nbre
1 12 D 93 13 0
2 12 E 54 13 0
3 12 D 11 13 0
4 12 D 93 13 0
5 12 E 73 13 0
6 12 E 42 13 0
La base nombre contient, par police, le nombre de sinistres en respon- sabilité civile déclaré par l'assuré pendant l'année d'observation. Parmi les variables d'intérêt,
conducteur principal,
zone : zone A B C D E ou F, selon la densité en nombre d'habitants par km2 de la commune de résidence
marque : marque du véhicule selon la table suivante (1 Renault Nis- san ; 2 Peugeot Citroën ; 3 Volkswagen Audi Skoda Seat ; 4 Opel GM ; 5 Ford ; 6 Fiat ; 10 Mercedes Chrysler ; 11 BMW Mini ;12 Autres ja- ponaises et coréennes ; 13 Autres européennes ; 14 Autres marques et marques inconnues)
region : code à 2 chires donnant les 22 régions françaises (code IN- ageconducteur : âge du conducteur principal en début de la couver-SEE)
ture,
agevehicule : âge du véhicule en début de période.
Nous disposons aussi d'un numéro de police no permettant de fusionner les deux bases, et donc d'associer à la charge d'un sinistre les caractéristiques du conducteur et du véhicule.
1.1 Les modèles linéaires généralisés
Depuis quelques années, l'outil principal utilisé en tarication est le mo- dèle linéaire généralisé, développé par [22], et dont la mise en oeuvre en assurance est détaillée dans [17], [7], [6], [25] ou [9]. Dans cette section, nous allons présenter le cadre des GLM, ainsi que leur mise en oeuvre sous R, avant de rentrer dans l'application en tarication dans les sections suivantes.
1.1.1 Le cadre général des GLM
Les modèles linéaires généralisés sont une généralisation du modèle li- néaire Gaussien, obtenu en autorisant d'autres lois (conditionnelles) que la loi Gaussienne. Les lois possibles doivent appartenir à la famille exponentielle, i.e. dont la densité (ou mesure de probabilité dans le cas discret) s'écrit :
f(y|θ, φ) = exp
yθ−b(θ)
φ +c(y, φ)
Exemple 1.1 La loi normale N(µ, σ2) appartient à cette famille, avec θ= µ, φ=σ2, b(θ) =θ2/2 et
c(y, φ) =−1 2
y2
σ2 + log(2πσ2)
, y∈R,
Exemple 1.2 La loi de PoissonP(λ) appartient à cette famille, f(y|λ) = exp(−λ)λy
y! = exp
ylogλ−λ−logy!
, y∈N,
Exemple 1.3 La loi binomialeB(n, p)correspond au casθ= log{p/(1−p)}, b(θ) =nlog(1 + exp(θ)), φ= 1 et c(zy, φ) = log
n y
.
Exemple 1.4 La loi Gamma est également dans la famille exponentielle, f(y|µ, ν) = 1
Γ(ν) ν
µ ν
yν−1exp
−ν µy
, y∈R+,
avecθ=−1
µ, b(θ) =−log(−θ) et φ=ν−1.
Pour une variable aléatoire Y dont la densité est de la forme exponen- tielle, alors
E(Y) =b0(θ) et Var(Y) =b00(θ)φ
de telle sorte que la variance deY apparaît comme le produit de deux fonc- tions,
la première,b00(θ), qui dépend uniquement du paramètreθest appelée fonction variance
la seconde est indépendante de θet dépend uniquement de φ
En notant µ=E(Y), on voit que le paramètreθ est lié à la moyenneµ. La fonction variance peut donc être dénie en fonction de µ, nous la noterons dorénavantV(µ).
Exemple 1.5 Dans le cas de la loi normale,V(µ) = 1, dans le cas de la loi de Poisson,V(µ) =µalors que dans le cas de la loi Gamma, V(µ) =µ2.
Notons que la fonction variance caractérise complètement la loi de la famille exponentielle. Chacune des lois de la famille exponentielle possède une fonction de lien spécique, dite fonction de lien canonique, permettant de relier l'espéranceµau paramètre naturel θ. Le lien canonique est tel que g?(µ) =θ. Or, µ=b0(θ) donc g?(·) =b0(·)−1.
Exemple 1.6 Dans le cas de la loi normale, θ = µ (link='identity'), dans le cas de la loi de Poisson,θ= log(µ) (link='log') alors que dans le cas de la loi Gamma, θ= 1/µ (link='inverse').
Sous R, la syntaxe des modèles linéaires généralisées est :
> glm(Y~X1+X2+X3+offset(Z), family =quasipoisson(link='log'), + data, weights)
E(Yi|Xi) =µi =g−1 X0iβ+ξi
et Var(Yi|Xi) = φV(µi) ωi
ó Y est le vecteur des Yi que l'on cherche à modéliser (le nombre de si- nistres de la police i par exemple), X1, X2 et X3 sont les variables explica- tives qui peuvent être qualitatives (on parlera de facteurs) ou quantitatives, link='log' indique quegest la fonctionlog, family=poisson revient à choi- sir une fonction varianceV identité, alors que family=quasipoisson revient à choisir une fonction variance V identité avec un paramètre de dispersion φ à estimer, offset correspond à la variable ξi, et weights le vecteur ωi. Cette fonction glm calcule alors des estimateurs deβ etφ, entre autres, car comme pour le modèle linéaire gaussien (la fonction lm) on peut obtenir des prédictions, des erreurs, ainsi qu'un grand nombre d'indicateurs relatifs à la qualité de l'ajustement.
1.1.2 Approche économétrique de la tarication
Cette famille de lois (dite exponentielle) va s'avérer être particulièrement utile pour construire des modèles économétriques beaucoup plus généraux que le modèle Gaussien usuel. On suppose disposer d'un échantillon(Yi,Xi), ó les variablesXi sont des informations exogènes sur l'assuré ou sur le bien assuré, et óYi est la variable d'intérêt, qui sera
une variable booléenne 0/1, par exemple l'assuré i a-t-il été victime d'un accident l'an dernier,
une variable de comptage, à valeurs dans N, par exemple le nombre d'accident de l'assuréil'an passé,
une variable positive, à valeurs dansR+, par exemple le cỏt du sinistre i, ou bien la durée entre la survenance et la déclaration du sinistre.
On supposera que, conditionnellement aux variables explicatives X, les variablesY sont indépendantes, et identiquement distribuées. En particulier, on partira d'un modèle de la forme
f(yi|θi, φ) = exp
yiθi−b(θi)
φ +c(yi, φ)
ó l'on supposera que
g(µi) =ηi =X0i
pour une fonction de lien g(·) donnée (on gardera ainsi un score linéaire en les variables explicatives), et ó, pour rappel,
µi =E(Yi|Xi)
La fonction lien est la fonction qui permet de lier les variables explicatives X à la prédiction µ, alors que la loi apparaỵt via la fonction variance, sur
petit exemple ci-dessous permet de visualiser sur un petit de données simple six régressions GLM diérentes,
> x <- c(1,2,3,4,5)
> y <- c(1,2,4,2,6)
> base <- data.frame(x,y)
> plot(x,y,pch=19,cex=1.5)
> regNId <- glm(y~x,family=gaussian(link="identity"))
> regNlog <- glm(y~x,family=gaussian(link="log"))
> regPId <- glm(y~x,family=poisson(link="identity"))
> regPlog <- glm(y~x,family=poisson(link="log"))
> regGId <- glm(y~x,family=Gamma(link="identity"))
> regGlog <- glm(y~x,family=Gamma(link="log"))
La prédiction (ainsi qu'un intervalle de conance) pour chacun de ces modèles est présentée sur la Figure 1.1. Le code de base pour obtenir la prédiction avec un intervalle de conance (à95%) est simplement
> plot(x,y,pch=19,cex=1.5)
> abs <- seq(0,7,by=.1)
> yp <- predict(regNId,newdata=data.frame(x=abs),se.fit = TRUE, + type="response")
> lines(abs,yp$fit,lwd=2)
> lines(abs,yp$fit+2*yp$se.fit,lty=2)
> lines(abs,yp$fit-2*yp$se.fit,lty=2)
Remarque 1.1 De la même manière qu'en économétrie linéaire, il est aussi possible d'allouer des poids à chacune des observations ωi. Mais nous n'en parlerons pas trop ici. Il peut s'agir de pondération décroisantes avec le temps, attribuées à des années trop anciennes, si l'on utilise des données sur une période plus longue, par exemple.
1.1.3 Estimation des paramètres
La loi de Y sachant X étant spéciée, on obtient numériquement les estimateurs deβ etφpar maximisation de la vraisemblance.
> logv=function(beta){
+ L=beta[1]+beta[2]*sinistres$ageconducteur + -sum(log(dpois(sinistres$nombre,exp(L)))) + }> nlm(f = logv, p = beta)
$minimum
●
●
●
●
1 2 3 4 5
12345
x
y
●
●
●
●
●
●
●
●
1 2 3 4 5
12345
x
y
●
●
●
●
●
●
●
●
1 2 3 4 5
12345
x
y
●
●
●
●
●
●
●
●
●
1 2 3 4 5
123456
x
y
●
●
●
●
● Modèle Gaussien lien logarithmique
●
●
●
●
●
1 2 3 4 5
123456
x
y
●
●
●
●
● Modèle Poisson lien logarithmique
●
●
●
●
●
1 2 3 4 5
123456
x
y
●
●
●
●
● Modèle Gamma lien logarithmique
Figure 1.1 Prédiction par 6 modèles linéaires diérents, 3 lois et 2 fonc- tions de lien, avec les intervalles de conance de prédiction.
[1] 113429.7
$estimate
[1] -3.157159895 -0.001900410
$gradient
[1] 0.01069032 1.31089786
$code [1] 3
$iterations [1] 25
> glm(nombre~ageconducteur,data=sinistres,family="poisson")$coefficients (Intercept) ageconducteur
-3.157198596 -0.001899561
Notons qu'il est aussi possible d'utiliser une régression linéaire pondérée.
En eet, on cherche à maximiser ici une (log)-vraisemblance (ou une dé- viance comme nous le verrons plus tard), qui s'écrit dans le cas des modèles exponentiels,
logL=
n
X
i=1
Yiθi−b(θi)
a(ψ) −c(Yi, ψ)
semblance du paramètreβ est atteint au même point que le maximum de la fonction
logL=
n
X
i=1
[Yiθi−b(θi)]
Le maximum est alors atteint enβbtel que
∂
∂βlogL==
n
X
i=1
[Yi−b0(θi)] ∂
∂θiβ = 0.
Orµi=g(ηi) =g(X0iβ) =b0(θi), et donc b0(θi)] ∂
∂θiβ =g(X0iβ)Xi
On cherche alors à résoudre
n
X
i=1
[Yi−µi]g0(X0iβ) V(µi) Xi,
Ce qui correspondrait à la condition du premier ordre dans une régression pondérée, ó la matrice de poids serait W = [wi,j], ó wi,j = 0 si i6=j, et sinon
wi,i = 1
Var(Yi) = 1 µi
= 1
g−1(X0iβ)
Mais cette matrice de poids étant inconnue (elle dépend des paramètres que l'on cherche à estimer), on met en place une itération de régression pondérée, la matrice de poids étant calculée à partir des coecients de l'étape précédante.
Dans le cas d'une régression log-Poisson, le code devient,
> BETA=matrix(NA,101,2)
> REG=lm(nombre~ageconducteur,data=sinistres)
> beta=REG$coefficients
> BETA[1,]=beta
> for(i in 2:15){
+ eta=beta[1]+beta[2]*sinistres$ageconducteur + mu=exp(eta)
+ w=mu
+ z=eta+(sinistres$nombre-mu)/mu
+ REG=lm(z~sinistres$ageconducteur,weights=w) + beta=REG$coefficients
+ BETA[i,]=beta + }
[,1] [,2]
[1,] 0.04239008 -7.371466e-05 [2,] -0.91696821 -1.418714e-04 [3,] -1.81086687 -3.136888e-04 [4,] -2.55133907 -6.958340e-04 [5,] -3.00654605 -1.315441e-03 [6,] -3.14670636 -1.803882e-03 [7,] -3.15715335 -1.898126e-03 [8,] -3.15719860 -1.899561e-03 [9,] -3.15719860 -1.899561e-03 [10,] -3.15719860 -1.899561e-03 [11,] -3.15719860 -1.899561e-03 [12,] -3.15719860 -1.899561e-03 [13,] -3.15719860 -1.899561e-03 [14,] -3.15719860 -1.899561e-03 [15,] -3.15719860 -1.899561e-03
qui converge très rapidement (vers les bonnes valeurs).
1.1.4 Interprétation d'une régression
Considérons tout simplement une régression de la fréquence annuelle de sinistre sur l'âge du conducteur. On supposera un modèle Poissonnien.
> reg1 <- glm(nombre~ageconducteur,data=nombre,family=poisson(link="log"), + offset=log(exposition))
> summary(reg1) Call:
glm(formula = nombre ~ ageconducteur, family = poisson(link = "log"), data = nombre, offset = log(exposition))
Deviance Residuals:
Min 1Q Median 3Q Max
-0.5685 -0.3527 -0.2611 -0.1418 13.3247 Coefficients:
Estimate Std. Error z value Pr(>|z|) (Intercept) -2.1369116 0.0207723 -102.87 <2e-16 ***
ageconducteur -0.0101679 0.0004397 -23.12 <2e-16 ***
---Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1
Null deviance: 171919 on 678012 degrees of freedom Residual deviance: 171373 on 678011 degrees of freedom AIC: 222190
Number of Fisher Scoring iterations: 6
Avec un lien logarithmique, le modèle est multplicatif. Le multiplicateur est ici
> exp(coefficients(reg1)[2]) ageconducteur
0.9898836
Autrement dit, tous les ans, la probabilité d'avoir un accident diminue de 1−0.9898 = 1.011%.
Si l'on considère des classes d'âges (dénies a priori, nous reviendrons par la suite sur la construction optimale des classes), on obtient la régression suivante :
> seuils = c(17,21,25,30,45,55,65,80,120)
> nombre$agecut <- cut(nombre$ageconducteur,breaks=seuils)
> reg2 <- glm(nombre~agecut ,data=nombre,family=poisson(link="log"), + offset=log(exposition))
> summary(reg2) Call:
glm(formula = nombre ~ agecut, family = poisson(link = "log"), data = nombre, offset = log(exposition))
Deviance Residuals:
Min 1Q Median 3Q Max
-0.6566 -0.3522 -0.2601 -0.1413 13.2465 Coefficients:
Estimate Std. Error z value Pr(>|z|) (Intercept) -1.55416 0.03277 -47.42 <2e-16 ***
agecut(21,25] -0.52724 0.04186 -12.60 <2e-16 ***
agecut(25,30] -0.95181 0.03865 -24.62 <2e-16 ***
agecut(30,45] -1.08673 0.03441 -31.58 <2e-16 ***
agecut(45,55] -1.04649 0.03500 -29.90 <2e-16 ***
agecut(55,65] -1.19279 0.03709 -32.16 <2e-16 ***
agecut(65,80] -1.27536 0.03876 -32.90 <2e-16 ***
agecut(80,120] -1.24017 0.06743 -18.39 <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: 171919 on 678012 degrees of freedom Residual deviance: 170589 on 678005 degrees of freedom AIC: 221417
Number of Fisher Scoring iterations: 6
Notons qu'il est aussi possible de taper directement
> reg2 = glm(nombre~cut(ageconducteur,breaks=seuils),data=nombre, + family=poisson(link="log"),offset=log(exposition))
La classe de référence est ici celle des jeunes conducteurs (17,21]. Re- lativement à cette classe, on note que toutes les classes ont une probabilité d'avoir un accident plus faible. Pour un conducteur de la classe (30,45], on note qu'il a66%de chances en moins d'avoir un accident dans l'année qu'un jeune conducteur,
> exp(coefficients(reg2)[4])
cut(ageconducteur, breaks = seuils)(30,45]
0.3373169
Au lieu de comparer à la classe des jeunes conducteurs, on peut aussi comparer au conducteur moyen.
> seuils = c(17,21,25,30,45,55,65,80,120)
> reg2 = glm(nombre~0+cut(ageconducteur,breaks=seuils),
+ data=nombre,family=poisson(link="log"),offset=log(exposition)) Les multiplicateurs sont alors
> reg2b <- glm(nombre~1,data=nombre,family=poisson(link="log"), + offset=log(exposition))
> moyenne <- exp(coefficients(reg2b))
> reg2c <- glm(nombre~0+cut(ageconducteur,breaks=seuils),
+ data=nombre,family=poisson(link="log"),offset=log(exposition))
> exp(coefficients(reg2c))/moyenne
Une personne de la classe (17,21] a ainsi2.86fois plus de chance que l'assuré moyen d'avoir un accident.
Les modèles linéaires généralisés ont été dénis pour des lois (deY, condi- tionnelles aux variables explicatives X) appartenant à la famille exponen- tielle. Il est toutefois possible de généraliser. Les lois de library(gamlss) sont des lois à quatre paramètres, (µ, σ, ν, τ), ó µ est un paramètre de lo- calisation (e.g. la moyenne),σ un paramètre d'échelle (e.g. l'écart-type), et ó ν et τ sont des paramètres d'asymétrie et d'épaisseur de queue (e.g. la skewness et la kurtosis). Ces quatre paramètres peuvent être fonction des variables explicatives au travers d'une fonction de lien,
µ=g−1µ (Xα) σ =g−1σ (Xβ) ν =g−1ν (Xγ) τ =g−1τ (Xδ)
Parmi les lois classiques, on retrouvera celles données dans la Table 1.1.
loi R µ σ ν τ
Binomiale BI logit - - -
Normale NO identité log - -
Poisson PO log - - -
Gamma GA logit - - -
inverse Gaussienne IG log log - -
Gumbel GU identité log - -
lognormale LNO log log - -
binomiale négative (Poisson-Gamma) NBI log log - -
Poisson-inverse Gaussien PIG log log - -
Weibull WEI log log - -
zero inated Poisson ZIP log logit - -
Table 1.1 Les diérentes lois et modèles de library(gamlss)@.
Dans sa version la plus simple, on retrouve le modèle proposé par [11], Yi=X0iβ+εi,modèle en moyenne
logε2i =Z0iα+ui,modèle en variance
óuiest un bruit i.i.d. suivant une loi Gamma. Cette fonction particulière est obtenue à l'aide de la fonction lm.disp de library(dispmod).
1.1.6 De la qualité d'une régression
Pour mesurer les performances d'une régression, ou plus généralement d'un modèle quel qu'il soit, il faut se donner une fonction de risque R(·,·) qui mesure la distance entreY et sa prédiction Yb. Classiquement, on utilise
norme L , correspondant à l'erreur absolue R(Y,Y) =|Y −Y|.
Si on reprend l'exemple de la section 1.1.2, les résidus sont représenté sur la Figure 1.2. Les résidus de gauche sont les résidus bruts, c'est à dire la diérence entre Yi etYbi. A droite, ce sont les résidus de Pearson, i.e.
εbi = Yi−Ybi q
V(Ybi) óV est la fonction variance.
> RNIr <- residuals(regNId,type="response")
> RNIp <- residuals(regNId,type="pearson")
● ●
●
●
●
1 2 3 4 5
−2−1012
Résidus (bruts)
● Gaussien, identité Poisson, identité Gamma, identité Gaussien, log Poisson, log Gamma, log
● ●
●
●
●
1 2 3 4 5
−2−1012
Résidus de Pearson
● Gaussien, identité Poisson, identité Gamma, identité Gaussien, log Poisson, log Gamma, log
Figure 1.2 Résidus de la régression.
Les résidus de Pearson permettent de prendre en compte de l'hétéroscé- dasticité qui apparaỵtra dès lors que l'on quite le modèle Gaussien (la fonction variance ne sera alors plus constante). Pour le modèle log-Poisson, les erreurs L1 etL2 sont respectivement
> cat("Erreur L1 =",sum(abs(RPL)) Erreur L1 = 4.196891
> cat("Erreur L2 =",sum((RPL)^2) Erreur L2 = 5.476764
[5] revient longuement sur l'analyse des résidus dans le cadre de modèles linéaires généralisés.
est la déviance
D(β) =−2[logL(β|Yb )−logL?(Y)]
ó logL(β|Y) désigne la log-vraisemblance du modèle, et ó logL?(Y) est la log-vraisemblance saturée (obtenue avec un modèle parfait).
> logLik(regPlog)
'log Lik.' -7.955383 (df=2)
> deviance(regPlog) [1] 1.760214
> AIC(regPlog) [1] 19.91077
> -2*logLik(regPlog)+2*2 [1] 19.91077
attr(,"df")
Dans un souci de partimonie, on pénalise souvent log-vraisemblance par le nombre de paramètres, ce qui correspond au critère d'information d'Akaike (AIC, en multipliant par 2). On peut également dénir le critère de Schwartz,
(
AIC :−2 logL(β) + 2kb BIC :−2 logL(β) +b klog(n)
Il existe aussi un critère d'Aikaike corrigé (introduit par [15]) dans le cas ó l'on a trop peu d'observations. Toutes ces fonctions peuvent être obtenues à l'aide de la fonction AIC de library(aod) ou BIC de library(BMA), ou encore extractAIC avec comme paramètre k=log(nrow(base)).
> cat("AIC (Poisson-log) =",extractAIC(regPlog,k=2)[2]) AIC (Poisson-log) = 19.91077
> cat("BIC (Poisson-log) =",extractAIC(regPlog,k=log(nrow(base)))[2]) BIC (Poisson-log) = 19.12964
On peut comparer tous les modèles via :
> AIC(regNId,regNlog,regPId,regPlog,regGId,regGlog)
df AIC
regNId 3 21.10099 regNlog 3 20.63884 regPId 2 19.86546 regPlog 2 19.91077 regGId 3 18.01344 regGlog 3 18.86736
Le but de la tarication (et plus généralement de toute prédiction) est d'estimer une espérance conditionnelle,
E(S|X =x) =ϕ(x) ou S=ϕ(X1,· · ·, Xk) +ε
ó ϕ:Rk →R. Supposer un modèle linéaire est problement une hypothèse trop forte. Mais on se doute qu'estimer une fonction dénie surRkserait trop complexe numériquement. Un bon compromis est proposé par les modèles dit additifs.
A titre d'illustration, la Figure 1.3 permet de visualiser l'impact de la den- sité de population dans la commune de l'assuré sur la fréquence de sinistre.
Les points noirs correspondent à la fréquence moyenne empirique observée pour diérents niveaux de densité
> library(mgcv)
> reg.gam <- gam(nombre~s(densite),offset=log(exposition), + family=poisson(link="log"),data=sinistres)
> dens.x <- seq(0,30000,100)
> pred <- predict(reg.gam,newdata=data.frame(densite=dens.x,expo=1), + se=TRUE,type="response")
> plot(dens,pred$fit,col="blue",lwd=2)
> lines(dens,pred$fit+2*N1RC0as1$se.fit,col="red",lty=2)
> lines(dens,pred$fit-2*N1RC0as1$se.fit,col="red",lty=2)
Les modèles GAM
Les modèles additifs ont été introduits par [30] qui notait qu'estimer une fonction ϕ:Rk→Rserait numériquement trop complexe (et probablement peu robuste). On cherche ici une décomposition de la forme
S =ϕ1(X1) +· · ·+ϕk(Xk) +ε
ó les fonctions ϕj :R → R sont supposées susament régulières. En fait, ce modèle n'est valable que pour les variables Xj continues, les variables qualitatives continuant - généralement - à intervenir sous une forme linéaire.
Autrement dit, un modèle additif serait
S=ϕ1(X1) +β2X2+ε
óX1 est l'âge du conducteur, etX2 le carburant du véhicule. Notons qu'il serait aussi possible de considérer un modèle de la forme
S=
ϕ1,E(X1) +ε siX2= essence ϕ1,D(X1) +ε siX2= diesel Ces deux types de modèles sont estimés ci-dessous.
●
●
●●●●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●●●
●
●
●●●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●●●●
●
●●●●●●●●●●●●●
●
●●●●●●●●●●
●
●
●
●●●●
●
●
●
●●●●●●●●●
●
●●
●
●●●
●
●
●
●
●
●●●●●
●
●●●●●●●●●●
●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●
●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
0 5000 10000 15000 20000 25000 30000
0.000.050.100.15
Densité de population
Fréquence annuelle de sinistre
Figure 1.3 Fréquence individuelle en fonction de la densité de population de la commune de résidence du conducteur principal.
> library(mgcv)
> reg <- gam(nombre~s(ageconducteur)+offset(exposition), + data=sinistres,family=poisson)
> age <- seq(17,100)
> AGE <- data.frame(ageconducteur=age,exposition=1)
> Y <- predict(reg,AGE,type="response")
> reg = gam(nombre~s(ageconducteur)+carburant+offset(exposition), + data=sinistres,family=poisson)
> AGE <- data.frame(ageconducteur=age,exposition=1,carburant="E")
> YE <- predict(reg,AGE,type="response")
> AGE <- data.frame(ageconducteur=age,exposition=1,carburant="D")
> YD <- predict(reg,AGE,type="response")
> plot(age,Y,type='l')
> lines(age,YD,col='blue')
> lines(age,YE,col='red')
Pour le premier type de modèle, ou le code suivant pour le second,
> library(mgcv)
> reg <- gam(nombre~s(ageconducteur)+offset(exposition), + data=sinistres,family=poisson)
> age <- seq(17,100)
> AGE <- data.frame(ageconducteur=age,exposition=1)
> Y <- predict(reg,AGE,type="response")
+ data=sinistres[sinistres$carburant=="E",],family=poisson)
> YE <- predict(reg,AGE,type="response")
> reg <- gam(nombre~s(ageconducteur)+offset(exposition), + data=sinistres[sinistres$carburant=="D",],family=poisson)
> YD=predict(reg,AGE,type="response")
> plot(age,Y,type='l')
> lines(age,YD,col='blue')
> lines(age,YE,col='red')
Ce petit exemple montre bien les limites de ces modèles additifs.
20 40 60 80 100
0.000.050.100.150.20
Age du conducteur principal
Fréquence annuelle de sinistres
Figure 1.4 Modèle GAM addif,S =ϕ1(X1) +β2X2+ε ó X2 désigne le type de carburant.
L'estimation de ces modèles peut se faire de plusieurs manières sous R.
Il y a tout d'abord la fonction gam de library(gam), basé sur l'algorithme proposé par [13]. La fonction gam de library(mgcv) repose sur la métho- dologie développée par [32]. Enn d'autres packages proposent aussi des estimations de ces transformations nonlinéaires, dont library(gmlss) ou library(gss).
Une autre possibilité est également d'uiliser la fonction glm avec la library(splines). On peut alors changer facilement le nombre de degrés de liberté, i.e. le paramètre de lissage de la transformation,
> library(splines)
> reg3 <- glm(nombre~bs(ageconducteur,df=3)+offset(exposition), + data=nombre,family=poisson)
20 40 60 80 100
0.000.050.100.150.20
Age du conducteur principal
Fréquence annuelle de sinistres
Figure 1.5 Modèle GAM,S =
ϕ1,E(X1) +ε si X2 = essence
ϕ1,D(X1) +ε si X2 = diesel óX2
désigne le type de carburant.
La Figure 1.6 montre ainsi la prédiction de la fréquence moyenne en fonction de l'âge, avec diérents paramètres de lissage.
Les modèles MARS
Une autre classe de modèle particulièrement intéressant a été présentée par [10], appelés MARS, Multiplicative Adaptative Regression Splines. On considère ici une base de fonctions deϕde la forme(±(x−k)+).
En particulier, par rapport à un modèle linéaire simpleY =β0+β1X+ε, on considère ici un modèle avec rupture,
Y =β0+β1max{0, X−k}+β1max{0, k−X}+ε ók devient également un paramètre à estimer.
> library(mda)
> reg <- mars(sinistres$ageconducteur,sinistres$nombre,nk=10)
> summary(lm(sinistres$nombre~reg$x-1)) Call:
lm(formula = sinistres$nombre ~ reg$x - 1) Residuals:
Min 1Q Median 3Q Max
20 40 60 80 100
0.020.040.060.080.100.12
Age du conducteur principal
Fréquence annuelle de sinistres
3 degrés de liberté 5 degrés de liberté 10 degrés de liberté
-0.08342 -0.03916 -0.03730 -0.03560 15.96203 Coefficients:
Estimate Std. Error t value Pr(>|t|) reg$x1 3.408e-02 4.528e-04 75.271 <2e-16 ***
reg$x2 1.692e-04 2.007e-05 8.432 <2e-16 ***
reg$x3 4.486e-03 1.694e-04 26.477 <2e-16 ***
---Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1
Residual standard error: 0.2071 on 678010 degrees of freedom Multiple R-squared: 0.03526, Adjusted R-squared: 0.03526 F-statistic: 8261 on 3 and 678010 DF, p-value: < 2.2e-16
> age <- seq(17,100)
> Y <- predict(reg,age)
> plot(age,Y)
1.1.8 Les modèles nonlinéaires multivariés
On peut s'autoriser éventuellement encore un peu plus de souplesse en prenant en compte le couple constitué de deux variables continues,
S=ϕ(X1, X2) +ε óϕ:R2→R, au lieu d'un modèle GAM classique,
S =ϕ1(X1) +ϕ2(X2) +ε
20 40 60 80 100
0.000.020.040.060.080.10
Age du conducteur principal
Fréquence annuelle de sinistre
Figure 1.7 Modèle MARS, impact de l'âge du conducteur principal sur la fréquence de sinistres.
Cette option est proposée par exemple dans library(mgcv)
1.2 Modéliser des variables indicatrices
Les bases des modèles GLM étant posées, nous allons les utiliser en ta- rication, en modélisant tout d'abord des variables indicatrices0/1 dans un premier temps, avant de modéliser la fréquence de sinistres, puis les cỏts individuels dans les prochaines sections.
Remarque 1.2 Les modèles sont très utilisés en techniques de scoring an de savoir s'il convient d'occtroyer un crédit à quelqu'un.
1.2.1 La régression logistique ou probit
La régression logistique suppose que si π(Y|X) =P(Y = 1|X), alors π(Y|X)
1−π(Y|X) = P(Y = 1|X)
P(Y = 0|X) = exp (Xβ)
Dans le cas du modèle probit, on suppose qu'il existe un modèle latent Gaus- sien, tel que
Yi?=X0iβ+εi
et queYi = 0 siYi? < s, etYi = 1 siYi? > s, etεi∼ N(0, σ2).
La synthaxe de ces deux modèles est très proche, car seule la fonction de lien change.
âge conducteur
âge du v éhicule fréquence
espérée
Figure 1.8 Fréquence préditeYb, en fonction de l'âge du conducteur et de l'ancienneté du véhicule, Yb =ϕ(Xb 1, X2).
> sinistres$touche <- sinistres$nombre>0
> reglogit <- glm(touche~ageconducteur,
+ data=sinistres,family=binomial(link="logit"))
> regprobit <- glm(touche~ageconducteur,
+ data=sinistres,family=binomial(link="probit"))
> age <- seq(17,100)
> AGE <- data.frame(ageconducteur=age,exposition=1)
> Yl <- predict(reglogit,AGE,type="response")
> Yp <- predict(regprobit,AGE,type="response")
> plot(age,Yp-Yl,type="l")
> abline(h=0,lty=2)
On notera que ces deux modèles donnent des prédictions très proches, comme le montre la Figure 1.13.
20 30 40 50 60 70 80
0510152025
âge conducteur
âge du véhicule
0.05
0.06 0.07
0.08
Figure 1.9 Fréquence préditeYb par un modèle GLMYb = exp(βb0+βb1X1+ βb2X2).
1.2.2 Les arbres de régression
Les arbres de régression sont des outils nonparamétriques de segmenta- tion. Dans un arbre de décision, on cherche à détecter des critères permettant de répartir les individus en2 classes, caractérisées parY = 0 etY = 1. On commence par choisir la variable, qui, par ses modalités, sépare le mieux les individus de chacune des classes. On constitue alors un premier noeud.
On réintère alors la procédure sur chaque nouveau noeud. Dans la méthode CART (Classication And Regression Tree), on regarde toutes les possibili- tés. On continue soit jusqu'à ce qu'il ne reste plus qu'un seul. individu dans chaque noeud, soit suivant un critère d'arrêt. Les critères de discrimination et de constitution des noeuds sont généralement les suivants,
lorsque les variables explicativesXj sont qualitatives, ou discrètes, on utilise la distance duχ2 (on parle d'arbre CHAID),
en présence de variables de tous types, on peut utiliser l'indice de Gini (méthode CART),
ou l'entropie (méthode C5.0),
Pour un varible continue, on distinguera {X1 ≤ s} et {X1 > s}. Pour une variable qualitative, on distinguera{X1 =x}et{X1 6=x}.
Pour chacune des variables, on regarde l'ensemble des classications pos- sibles. Quelles que soient les variables, on dénit :
> seuilagecond <- unique(nombre$ageconducteur)
> seuilregion <- unique(nombre$region)
20 30 40 50 60 70 80
0510152025
âge conducteur
âge du véhicule
0.05
0.06
0.06 0.07
0.07 0.08
0.08 0.1
0.15 0.2
Figure 1.10 Fréquence prédite Yb par un modèle additif Yb = ϕb1(X1) + ϕb2(X2).
Pour les variables quantitatives, on distingue :
> k=5
> classe0 <- nombre$ageconducteur<=seuilagecod[k]
> classe1 <- nombre$ageconducteur>seuilagecod[k]
alors que pour les variables qualitatives,
> k=5
> classe0 <- nombre$region==seuilregion[k]
> classe1 <- nombre$region!=seuilregion[k]
Une fois constituées les 2 classes, on calcule un des critères possibles.
Si on regarde la décomposition obtenue sur le premier noeud, on observe que pour les conducteurs de moins de 25 ans, la probabilité d'avoir un acci- dent est de 10%, contre 5% pour les conducteurs de plus de 25 ans. Dans le cas des régions, avec une distance du chi-deux, on cherche à minimiser
χ2=− X
classe∈{0,1}
X
y∈{0,1}
[nclasse,y−n⊥classe,y]2 n⊥classe,y
ó nclasse,y désigne le nombre de personnes dans la classe considérée pour lesquelles la variableY prend la modalitéy.
> base=sinistres[sinistres$ageconducteur<=85,]
> seuil=sort(unique(base$ageconducteur))
20 30 40 50 60 70 80
0510152025
âge conducteur
âge du véhicule
0.05
0.06
0.06 0.07
0.08
0.08 0.1
0.15 0.2
Figure 1.11 Fréquence préditeYb par un modèle additifYb =ϕ(Xb 1, X2).
> TABLE=rep(NA,length(seuil))
> names(TABLE)=seuil
> for(k in 1:(length(seuil)-1)){
+ classe0 <- base$ageconducteur<=seuil[k]
+ classe1 <- base$ageconducteur>seuil[k]
+ M=matrix(
+ rbind(c(sum(base$touche[classe0]==FALSE), + sum(base$touche[classe0]==TRUE)), + c(sum(base$touche[classe1]==FALSE), + sum(base$touche[classe1]==TRUE))),2,2) + TABLE[k]=-chisq.test(M)$statistic
}> which.min(TABLE) 236
> plot(seuil,TABLE)
Autrement dit le meilleur découpage possible est (17,23] et (23,85]
A la seconde étape, on cherche une autre partition, en considérant la précédente comme acquise,
> k1 = which(seuil==23)
> for(k in 1:(length(seuil)-1)){
+ if(k!=k1){
+ classe0 <- (base$ageconducteur<=seuil[k])&(base$ageconducteur<=seuil[k1])
20 30 40 50 60 70 80
0510152025
âge conducteur
âge du véhicule
Figure 1.12 Fréquence prédite Yb par un modèle par classes jointes, (X1, X2)∈[a1, b1]×[a2, b2].
+ classe2 <- (base$ageconducteur>seuil[k])&(base$ageconducteur>seuil[k1]) + classe1 <- 1-classe0-classe2
+ M=matrix(
+ rbind(c(sum(base$touche[classe0]==FALSE), + sum(base$touche[classe0]==TRUE)), + c(sum(base$touche[classe1]==FALSE), + sum(base$touche[classe1]==TRUE)), + c(sum(base$touche[classe2]==FALSE), + sum(base$touche[classe2]==TRUE))),3,2) + TABLE[k]=-chisq.test(M)$statistic
+ }}
> which.min(TABLE) 8467
> plot(seuil,TABLE)
En l'occurence, on ne nous conseille ici pas d'autre classe (ou alors à un âge très avancé). On retrouvera ce découpage en deux classes dans la section sur les modèles MARS par exemple.
Parmi les autres critères, on peut aussi utiliser la distance de Gini,
G=− X
classe∈{0,1}
nclasse n
X
y∈{0,1}
nclasse,y nclasse
1−nclasse,y nclasse
20 40 60 80 100
0.0340.0350.0360.0370.038
Age du conducteur principal
Probabilité d'avoir au moins un accident
20 40 60 80 100
−0.050.000.05
Age du conducteur principal
Différence relative (%)
Figure 1.13 Régression logistique (logit) versus modèle latent Gaussien (probit) pour prédire la probabilité d'avoir au moins un accident dans l'an- née, en fonction de l'âge du conducteur principal.
ou l'entropie,
E =− X
classe∈{0,1}
nclasse n
X
y∈{0,1}
nclasse,y nclasse log
nclasse,y nclasse
Les arbres permettent une lecture relativement aisée pour l'utilisateur, et reposent sur des techniques nonparamétriques. Aussi, contrairement aux méthodes GLM que nous verrons par la suite, le choix des lois ou la recherche d'éventuelles nonlinéarités n'intervient pas ici. Les arbres sont également peu sensibles aux outliers. Mais les arbres, de par leur construction, posent aussi certains soucis. En particulier, on ne peut pas revenir en arrière, et le séquencement est très important.
1.2.3 Probabilité d'avoir (au moins) un sinistre dans l'année A titre d'illustration, étudions la probabilité d'avoir au moins un sinistre dans l'année. Par défaut, l'arbre ne permet pas de dénir des classes, et on obtient autant de classes que l'on a d'âges,
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●
20 30 40 50 60 70 80
−600−500−400−300−200−1000
Age du conducteur
Distance du chi−deux
●
Figure 1.14 Evolution de χ2 lors du découpage en 2 classes (17,k] et (k,85].
> library(tree)
> arbre=tree((nombre>0)~ageconducteur,data=sinistres,split="gini")
> age=data.frame(ageconducteur=18:90)
> y=predict(arbre,age)
> plot(age$ageconducteur,y)
Si l'on souhaite coupe les branches de l'arbre, on peut utiliser l'option mincut pour dire qu'on ne peut couper davantage qu'à condition de consti- tuer des classes dont le nombre d'invidus à l'intérieur soit susement élevé.
> arbre2=tree((nombre>0)~ageconducteur,data=sinistres,split="gini", + mincut = 20000)
> y2=predict(arbre2,age)
> lines(age$ageconducteur,y2,col="red",type="s",lwd=2)
> arbre3=tree((nombre>0)~ageconducteur,data=sinistres,split="gini", + mincut = 100000)
> y3=predict(arbre3,age)
> lines(age$ageconducteur,y3,col="purple",type="s",lwd=2) On obtient alors les classes décrites sur la gure 1.16.
1.2.4 Probabilité d'avoir un gros sinistre dans l'année
Cette étude sera particulièrement intéressante pour écrêter les gros si- nistres (nous reviendrons sur ce point dans la section 1.4.3). On supposera
● ● ● ● ● ● ●● ●●●●●
●●●●●
●●●
●●
●●●●
●●●●●
●●
●●
●●●
●●
●●●●
●●
●●
●●
●●
●
●●
●●
●●
●●
● ●● ●
20 30 40 50 60 70 80
−40000−30000−20000−100000
Age du conducteur
Distance du chi−deux
Figure 1.15 Evolution de χ2 lors du découpage en 3 classes, (17,23], (23,k] et (k,85], ou (17,k], (k,23] et (23,85].
(arbitrairement) que les gros sinistres sont ceux dont le montant dépasse50 000euros.
> library(tree)
> sinistres$GS <- sinistres$cout>50000
> ARBRE <- tree(GS ~ puissance + zone + agevehicule , + data=sinistres,split="gini")
Cet arbre étant manifestement trop étendu, on peut limiter en demandant à avoir au moins5 000 assuré par branche,
> ARBRE <- tree(GS ~ puissance + zone + agevehicule , + data=sinistres,split="gini",minsize = 5000)
> ARBRE
> ARBRE
node), split, n, deviance, yval
* denotes terminal node 1) root 26444 87.710 0.003328
2) zone: B,C,D,E,F 23080 68.790 0.002990 4) puissance < 5.5 8028 17.960 0.002242
8) zone: B,D,F 3442 3.995 0.001162 * 9) zone: C,E 4586 13.960 0.003053 * 5) puissance > 5.5 15052 50.830 0.003388
●
●
●
●
●
●
●
● ●
● ● ● ●●●
●● ● ●●
● ● ●● ●●
● ●
●
●
●● ● ●
● ● ●
●● ●
● ● ●
● ●
●●
●
●●●
● ●
●
●
●●
●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
20 30 40 50 60 70 80 90
0.000.020.040.060.080.10
Age du conducteur principal
Probabilité d'avoir au moins un accident
Figure 1.16 Prédiction par arbre de régression, avec plus ou moins de classes d'âge.
10) zone: B,C,E 10372 30.910 0.002989
20) agevehicule < 10.5 7541 17.960 0.002387 40) puissance < 7.5 5274 14.960 0.002844
80) agevehicule < 2.5 1291 5.972 0.004648 * 81) agevehicule > 2.5 3983 8.980 0.002260 * 41) puissance > 7.5 2267 2.996 0.001323 * 21) agevehicule > 10.5 2831 12.940 0.004592 * 11) zone: D,F 4680 19.910 0.004274 *
3) zone: A 3364 18.890 0.005648 *
On note qu'en fonction de la zone, de la puissance du véhicule et de l'ancienneté du véhicule, on peut déterminer avec une bonne assurance la probabilité d'avoir un très gros sinistre. Par exemple, pour les personnes n'habitant pas un endroit trop dense (les zones les plus denses correspondant à zone=A), en particulier les zones B, D et E, et si la puissance n'est pas trop élevée, puissance<5.5 la probabilité d'avoir un très gros sinistres est de l'ordre de1/1000. La probabilité sera 4 fois plus grande si la le véhicule est puissant (puissance>5.5) et ancien, (agevehicule>10.5). Dans une zone dense, la probabilité sera plus de 5 fois plus grande (quelles que soient les autres variables).
Si on trace l'arbre, on obtient le dessin de la Figure 1.17
> plot(ARBRE)
> text(ARBRE,cex=.9,col="blue")
zone:bcdef|
puissance < 5.5
zone:bdf zone:bce
agevehicule < 10.5
puissance < 7.5 agevehicule < 2.5 0.001162 0.003053
0.004648 0.002260
0.001323
0.004592
0.004274
0.005648
Figure 1.17 Arbre de prédiction, pour expliquer la probabilité d'avoir (ou pas) un gros sinistre, en fonction de la densité de population, de l'ancienneté du véhicule, et de sa puissance.
1.3 Modéliser la fréquence de sinistralité
Dans cette section, nous allons rentrer davantage dans la modélisation par modèles linéaires généralisés. Mais avant de commencer, il peut être intéressant de regarder un peu la base, et de faire un peu d'analyse descriptive pour comprendre la loi du nombre de sinistres par contrat.
1.3.1 Un peu d'analyse descriptive La fréquence de sinistres
Une hypothèse forte de la loi de Poisson est queE(N) =Var(N)
Si l'on compare les valeurs numériques, cela donne l'ajustement suivant, si l'on estime le paramètre par la méthode des moments (ou par maximum de vraisemblance, ML qui ici cọncident) :
> library(vcd)
> gof = goodfit(N,type= "poisson",method= "ML")
> gof
Observed and fitted values for poisson distribution with parameters estimated by `ML'
0 200 400 600 800
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Nombre de sinistres
Fréquence (racine carrée)
●
●
● ● ● ● ● ● ● ● ● ● ● ● ● ● ●
Figure 1.18 Fréquence empirique du nombre de sinistres par police d'as- surance.
count observed fitted [1,] 653047 653047 652055 [2,] 23592 23592 25453
[3,] 1299 1299 496
[4,] 62 62 6
[5,] 5 5 0
[6,] 2 2 0
[7,] 1 1 0
[8,] 0 0 0
[9,] 1 1 0
[10,] 1 1 0
[11,] 0 0 0
[12,] 2 2 0
[13,] 0 0 0
[14,] 0 0 0
[15,] 0 0 0
[16,] 0 0 0
[17,] 1 1 0
La diérence entre la valeur prédite par le modèle Poissonnien et les va- leurs observées nous poussent à essayer de mieux comprendre l'hétérogénéité qui existe au sein de nos données.