Il y a quelques années, Guillaume Beneteau avait fait son mémoire d'actuariat, en France, sur l'utilisation de données individuelles pour faire du provisionnement (au lieu de travailler sur des donnees aggregées dans des triangles). Dans le même genre d'idées, Ngoc An Dinh et Gilles Chau viennent de soutenir leur mémoire cette semaine à l'ENSAE, encadré par Frédéric Planchet. L'idée était de modéliser les processus de règlements avec deux approches : la première intitulée dynamiques markoviennes qui considère les processus de règlements (avec une certaine dynamique sous-jacente), et une basée sur des modèles linéaires généralisés qui suppose que les règlements appartiennent à une famille de distribution paramétrique et les paramètres dépendent des facteurs liés aux règlements. Le mémoire est en ligne sur le blog, ainsi que le code R.
Tag - actuariat
Friday, June 29 2012
Provisionnement et modélisation individuelle des sinistres
By arthur charpentier on Friday, June 29 2012, 15:21 - Encadrement
Saturday, September 3 2011
ACT2040, session d'automne, plan de cours
By arthur charpentier on Saturday, September 3 2011, 21:18 - ACT2040-2011

En attendant, pour la première partie du cours, sur la tarification, les données utilisées dans le cours sont les suivantes (construites à partir d'une base de contrats, et d'une base de sinistres: on fait un comptage a partir de la base de sinistres, et on définit une variable de nombre de sinistres),
> sinistre <- read.table("http://freakonometrics.free.fr/sinistreACT2040.txt",
+ header=TRUE,sep=";")
> sinistres=sinistre[sinistre$garantie=="1RC",]
> contrat <- read.table("http://freakonometrics.free.fr/contractACT2040.txt",
+ header=TRUE,sep=";")
> T=table(sinistres$nocontrat)
> T1=as.numeric(names(T))
> T2=as.numeric(T)
> nombre1 = data.frame(nocontrat=T1,nbre=T2)
> I = contrat$nocontrat%in%T1
> T1= contrat$nocontrat[I==FALSE]
> nombre2 = data.frame(nocontrat=T1,nbre=0)
> nombre=rbind(nombre1,nombre2)
> sinistres = merge(contrat,nombre)
> head(sinistres)
nocontrat exposition zone puissance agevehicule ageconducteur bonus marque
1 27 0.87 C 7 0 56 50 12
2 115 0.72 D 5 0 45 50 12
3 121 0.05 C 6 0 37 55 12
4 142 0.90 C 10 10 42 50 12
5 155 0.12 C 7 0 59 50 12
6 186 0.83 C 5 0 75 50 12
carburant densite region nbre
1 D 93 13 0
2 E 54 13 0
3 D 11 13 0
4 D 93 13 0
5 E 73 13 0
6 E 42 13 0
> Y = sinistres$nbre
> X = cut(sinistres$ageconducteur,
+ breaks=c(0,25,70,Inf),
+ labels=c("Jeune","Intermédiaire","Senior"))
> mean(Y)
[1] 0.05394
> var(Y)
[1] 0.06423176
> mean(Y[X=="Jeune"])
[1] 0.07634677
> tapply(Y,X,mean)
Jeune Intermédiaire Senior
0.07634677 0.05257215 0.05317324
> tapply(Y,X,var)
Jeune Intermédiaire Senior
0.08910128 0.06304311 0.05791289
Thursday, December 2 2010
Statistique de l'assurance STT6705V, les projets
By arthur charpentier on Thursday, December 2 2010, 22:41 - actuariat 10/11 STT6705V
Les projets sont à rendre pour la rentrée des vacances de Noël, pour le lundi 10 janvier (au plus tard) pour les étudiants de l'Université de Montréal, et le lundi 31 janvier (au plus tard) pour les étudiants de l'Université de Rennes1. J'attends trois rapports (un rapport par projet) envoyé par adresse électronique à l'adresse indiquée par courriel (le message devra mettre en copie l'autre membre du binôme pour les projets faits à deux). Merci de préciser les noms de tous les membres du binôme sur la première page du rapport.
pour le rapport de tarification (ici pour les bases de données) j'avais donné beaucoup d'indications ici, mais pour faire rapide, pas plus de 15-20 pages. Le projet doit se terminer par plusieurs propositions de primes (basés sur plusieurs modèles) pour un ou plusieurs assurés "types" (indiqués sur le billet mentionné auparavant),- pour le rapport de provisionnement (ici pour les bases de données) j'attends un rapport d'une dizaine de pages. Une première partie détaillera sur quel triangle vous allez utiliser les méthodes vues en cours (je vous autorise à ne pas prendre en compte - et donc à exclure - des années trop atypiques, à condition de le justifier un minimum). Une seconde partie présentera l'utilisation de la méthode Mack, avec un best estimate et le mse du montant total de provision. Une troisième partie présentera une ou plusieurs mises en œuvres de méthodes économétriques avec des simulations. Enfin une dernière partie présentera pour tous les modèles considérés un best estimate, mais aussi un quantile à 95% et à 99.5%.
pour le rapport de mortalité (ici pour les bases de données) j'attends un rapport d'une dizaine de pages, présentant sommairement dans une première partie la mortalité dans le pays étudié (surface de taux de mortalité et pics apparents); la seconde partie proposera une modélisation du taux de mortalité et une projection pour les 90 ans à venir (le modèle attendu sera celui de Lee-Carter mais tout autre complément sera le bienvenu*); une troisième partie présentera l'évolution de l'espérance de vie entre 1950 et 2000; et enfin, dans une dernière partie, le calcul de la valeur actuelle (à la signature du contrat, en 2000) probable du contrat suivant sera demandé (pour une personne qui avait 45 ans en 2000): la personne veut toucher 10,000 tous les ans à partir de ses 65 ans (à terme échu) tant qu'elle est en vie, avec une garantie décès d'un montant de 50,000 si la personne décède avant 65 ans, et 20,000 si elle décède après 65 ans (strictement). Le taux d'actualisation sera fixé à 3%.
* je mettrais en ligne rapidement un billet détaillant un peu les différentes méthodes de prédiction du coefficient temporel.
Thursday, November 11 2010
Statistique de l'assurance STT6705V, partie 10, bis
By arthur charpentier on Thursday, November 11 2010, 09:33 - actuariat 10/11 STT6705V
Les liens pour le cours d'hier sont ici et là. Sinon, pour ceux qui veulent mettre en œuvre une technique MCMC pour étudier le montant de provision, je mets un code ici
(correspondant à celui détaillé dans les notes de cours, inspiré d'un
travail fait par Nathalie Balson il y a quelques années maintenant). Pour quelques compléments théoriques, je peux renvoyer ici.
Le code utilisé en cours est en ligne ici, et les petits dessins là.
Sinon pour les bases de données pour le dernier devoir maison, le code est donné en dessous. Le numéro de la base est le même que pour les bases de tarification que vous aviez choisi... Par exemple, pour le groupe qui avait choisi la base 10,
k=10
loc="http://perso.univ-rennes1.fr/arthur.charpentier/6705V/"
nom=paste(loc,"base",k,"Exposures_1x1.txt",sep="")
base1=read.table(nom,skip=2,header=TRUE)
libelle1=read.table(nom,nrows=1,sep=";")
nom=paste(loc,"base",k,"Deaths_1x1.txt",sep="")
base2=read.table(nom,skip=2,header=TRUE)
Tuesday, November 9 2010
Bornhuetter-Ferguson and claims reserving, STT6705V part 10
By arthur charpentier on Tuesday, November 9 2010, 15:18 - actuariat 10/11 STT6705V
In several posts on this blog, I have mentioned Chain Ladder, Mack's view of Chain Ladder, and the Overdispersed Poisson model for incremental payments. But there is also one important model used when modeling IBNR: the so-called Bornhuetter-Ferguson model (from that paper). The slides for tomorrow can be downloaded here,
Here is also a link to the slides presented by William Panning in 2006. And here and there, it is possible to find papers (or slides) discussing uncertainty in Bornhuetter-Ferguson's model.
Reserving techniques will probably take us half of the course. We will finally discuss mortality models. The dataset we will use can be downloaded from here (with population data here and death data there). I have converted them in csv files, and the R code to use them is the following,
tabB=read.table("http://perso.univ-rennes1.fr/arthur.charpentier/tabB.csv",
sep=";",header=FALSE)
ANNEE=tabB[,1]
BASEB=tabB[,seq(2,246,by=2)]
BASEB=BASEB[,1:100]
tabC=read.table("http://perso.univ-rennes1.fr/arthur.charpentier/tabC.csv",
sep=";",header=FALSE)
BASEC=tabC[,2:101]
BASEC=BASEC[-c(16,23,43,48,51,53),]
BASEC=BASEC[1:nrow(BASEB),] AGE=0:99
(I will upload soon the code for claims reserving techniques...)
Thursday, November 4 2010
Statistique de l'assurance STT6705V, partie 9, ter
By arthur charpentier on Thursday, November 4 2010, 15:12 - actuariat 10/11 STT6705V
Suite à des petits soucis légaux, je ne peux pas proposer de triangles par trimestres, ou sur plusieurs régions, comme promis. Les données pour le second devoir-maison sont en ligne ici. Les données ne sont pas très jolies, car il manque la partie supérieure gauche des triangles... mais en adaptant les techniques vues en cours, c'est largement faisable. Il y a les triangles de paiements, mais aussi des estimations de charge (par les gestionnaires de sinistres, i.e. charge dossier/dossier).
Les binômes restent les mêmes que pour le premier devoir, il s'agit de me proposer un montant de provision, et une estimation du quantile à 95% du montant de provisions. En cas de problème, vous avez mon adresse électronique.... Et je reviendrais ultérieurement sur la forme de ce que j'attends. La correspondance est simple, et fonction des bases utilisées en tarification
- bases 1 et 2 : triangle onglet 1
- bases 3 et 4 : triangle onglet 2
- bases 5 et 7 : triangle onglet 3
- bases 8 et 9 : triangle onglet 4
- bases 10 et 11 : triangle onglet 5
- bases 17 et 20 : triangle onglet 6
- bases 21 et 22 : triangle onglet 7
- bases 23 : triangle onglet 8
Attention, les triangles sont présentés ici à l'envers par rapport au cours (les années de survenance sont en colonne).
Wednesday, November 3 2010
Statistique de l'assurance STT6705V, partie 9, bis
By arthur charpentier on Wednesday, November 3 2010, 15:03 - actuariat 10/11 STT6705V
Les liens pour le cours de ce matin sont en ligne ici (en un bloc de deux heures). Sinon, comme cela semblait en intéresser certains, j'ai mis en ligne quelques versions des dessins que j'ai pu faire au tableau... cours4, cours5, cours6, cours7, cours8 et cours9. Ca ressemble aux dessins de mon fils, donc je ne les mets pas pour une quelconque valeur artistique, mais essentiellement parce que ces derniers temps, j'ai davantage utilisé le tableau blanc que les transparents...

Tuesday, November 2 2010
Statistique de l'assurance STT6705V, partie 9
By arthur charpentier on Tuesday, November 2 2010, 17:35 - actuariat 10/11 STT6705V

Nous finirons la partie sur le provisionnement (je parlerais des projets) et sinon je renvoie ici pour des notes de cours détaillées sur ce que nous avons vu.
COMPLÉMENT: un paragraphe de dernière minute... je mets des lignes de code, ici. Il s'agit de ligne que nous utiliserons, et que nous commenterons pendant ce cours..
Monday, October 4 2010
Statistique de l'assurance STT6705V, polycopié (1)
By arthur charpentier on Monday, October 4 2010, 12:29 - actuariat 10/11 STT6705V
Sinon pour revoir le dernier cours, c'est ici et là (les liens ont été réparés pour les séances passées).
Wednesday, September 29 2010
Statistique de l'assurance STT6705V, partie 5
By arthur charpentier on Wednesday, September 29 2010, 01:53 - actuariat 10/11 STT6705V
Pour la cinquième séance de cours, nous allons continuer sur la modélisation des coûts, à partir des transparents en
ligne ici.
La première partie portera sur la comparaison du modèle Gamma et du
modèle lognormal, et la seconde sur l'écrêtement des gros sinistres.
Il convient de faire attention à la transformation logarithmique. Un modèle de la forme


soient bien plus grands que 1). Regardons un jeu de données classique, liant vitesse du véhicule et distance de freinage.> summary(lm(dist~speed,data=cars))
Call:
lm(formula = dist ~ speed, data = cars)
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -17.5791 6.7584 -2.601 0.0123 *
speed 3.9324 0.4155 9.464 1.49e-12 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 15.38 on 48 degrees of freedom
Multiple R-squared: 0.6511, Adjusted R-squared: 0.6438
F-statistic: 89.57 on 1 and 48 DF, p-value: 1.490e-12

Call:
lm(formula = log(dist) ~ speed, data = cars)
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.67612 0.19614 8.546 3.34e-11 ***
speed 0.12077 0.01206 10.015 2.41e-13 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.4463 on 48 degrees of freedom
Multiple R-squared: 0.6763, Adjusted R-squared: 0.6696
F-statistic: 100.3 on 1 and 48 DF, p-value: 2.413e-13

Il ne faut jamais oublier qu'on doit ensuite prendre l'exponentiel sur modèle en log. C'est d'ailleurs ce qui est fait par exemple dans la transformation de Box Cox, où l'on compare les sommes des carrés des résidus sur les
, i.e.

.
> mean((cars$dist-predict(lm(dist~speed,data=cars)))^2)
[1] 227.0704
> mean((cars$dist-exp(predict(lm(log(dist)~speed,data=cars))+.5*s^2))^2)
[1] 296.2027
Tout ça pour conclure que le modèle linéaire n'est peut être pas si mauvais que ça....
Sinon je rajoute un petit programme pour comparer une loi gamma et une loi normale (afin de montrer que si le coefficient de variation est inférieur à 0,7 - comme le dit la légende - il est difficile de distinguer une loi lognormale et une loi gamma),
> source("http://perso.univ-rennes1.fr/arthur.charpentier/dessinlognormalgamma.R")
> dessinlng(.7)
Sinon, je rappelle que pour le premier devoir maison, les bases sont en ligne ici.
Et pour commencer la séance 5, je reviendrais sur ce que j'attends dans
ce projet, probablement en évoquant les transparents d'emb disponible
sur le site de la CAS (ici, et là),Thursday, September 23 2010
Statistique de l'assurance STT6705V, partie 4b
By arthur charpentier on Thursday, September 23 2010, 20:11 - actuariat 10/11 STT6705V
Bon, sinon, comme promis, les bases de données pour les projets sont en ligne ici. Le principe est simple. Il y a 28 bases de données, toutes semblables (mais bien sûr différentes), par les numéros ci-dessous. Comme toujours, premier arrivé, premier servi, donc les bases vont être attribuées au fur et à mesure
- étape 1: choisir une base
- étape 2: récupérer les données
> k=1
> nom=paste("http://perso.univ-rennes1.fr/arthur.charpentier/6705V/UdM-baseC-",
+ k,".txt",sep="")
> baseC=read.table(nom,header=TRUE)
pour la base de contrats (et pour le groupe qui aurait choisi la base 1) et pour la base des sinistres,
> nom=paste("http://perso.univ-rennes1.fr/arthur.charpentier/6705V/UdM-baseS-",
+ k,".txt",sep="")
> baseS=read.table(nom,header=TRUE)
Ensuite, c'est parti, il s'agit de me proposer différents modèles de tarification, et de calculer les primes pures avec les différents modèles, pour une personne parmi les listes des personnes ayant les caractéristiques suivantes,
> client=data.frame(
+ exposition=rep(1,9),
+ zone=c("A","A","A","C","D","E","F","F","F"),
+ puissance=c(6,7,11,6,7,11,6,7,11),
+ agevehicule=c(0,1,5,10,5,1,0,6,10),
+ ageconducteur=c(25,18,55,55,55,40,21,20,18),
+ bonus=c(80,100,50,60,55,50,100,125,100),
+ marque=c(1,2,12,12,12,1,1,1,2),
+ carburant=c("D","E","E","D","D","E","E","D","D"),
+ densite=rep(3000,9),
+ client=rep(baseC$region[1],9))
(si certains modalités ne sont pas présentes dans la base, il faut choisir quelqu'un d'autre.... sur les neuf, il doit bien en avoir un(e) qui pourrait être présent(e) dans votre base de données). En cas de problème, vous avez mon adresse électronique.... Et je reviendrais ultérieurement sur la forme de ce que j'attends.
Tuesday, September 21 2010
Statistique de l'assurance STT6705V, partie 4
By arthur charpentier on Tuesday, September 21 2010, 22:28 - actuariat 10/11 STT6705V
On continue le cours avec la fin sur la modélisation de la fréquence, où on parlera de surdispersion (évoquée ici par exemple), de quasi-lois (ici ou là), de régression binomiale négative (ici), ou de modèles à inflation de zéros (là par exemple). Et si ça ne suffit pas, on commencera à parler de la modélisation des coûts individuels. Les lois de bases seront les lois lognormales, et gamma,

Les transparents seront bientôt en ligne ici.

Monday, September 13 2010
Statistique de l'assurance STT6705V, parties 1 et 2 (bis)
By arthur charpentier on Monday, September 13 2010, 21:08 - actuariat 10/11 STT6705V
Après quelques jours de cafouillage, rendez-vous avec les rennais pour une classe virtuelle mardi, à partir de 15 heures.


Le code présenté la semaine dernière était le suivant,
> x=c(1,2,3,4,5);
> y=c(1,2,4,2,6)
> base=data.frame(x,y)
> plot(base,pch=19)
> reg=glm(y~x,data=base,family=gaussian(link='identity'))
> X=data.frame(x=seq(0,7,by=.1))
> y0=predict(reg,newdata=X)
> lines(X$x,y0,col="red")
Cette première partie permet de répliquer l'ajustement Gaussien classique. Pour changer de lien, il suffit d'apporter la précision dans les paramètres,
> reg=glm(y~x,data=base,family=gaussian(link='log'))
> y0=predict(reg,newdata=X,type='response')
> lines(X$x,y0,col="blue")
On a ainsi changé le lien, mais pas la loi. Si on utilise une loi de Poisson,
> reg=glm(y~x,data=base,family=poisson(link='identity'))
> y0=predict(reg,newdata=X,type='response')
> lines(X$x,y0,col="purple")
Enfin, pour la régression Poisson avec un lien log, c'est simplement
> reg=glm(y~x,data=base,family=poisson(link='log'))
> y0=predict(reg,newdata=X,type='response')
> lines(X$x,y0,col="green")
Tuesday, August 31 2010
Statistique de l'assurance STT6705V, partie 1
By arthur charpentier on Tuesday, August 31 2010, 04:05 - actuariat 10/11 STT6705V

Thursday, February 26 2009
Actuariat, modèle collectif et calculs numériques
By arthur charpentier on Thursday, February 26 2009, 07:58 - actuariat - M1-08/09


Le TD aura lieu salle 347 le jeudi 5, et la liste des 18 sujets est en ligne ici. Je ferais la distribution en TD. Comme toujours, un exo par binôme.
« previous entries - page 1 of 2








