Category Archives: Actuarial science

Some updates about the insurance datasets package (CASdataset)

Ten years ago, Computational Actuarial Science with R was published. With Christophe Dutang, we created at the same time an R package, collecting datasets used in the book. It was mainly to give access to the datasets to reproduce the applications, since functions used in the different chapters were coming from other R packages. Then, we started adding more and more datasets, not used in the book, but that could be used by researchers and students. We are quite happy to see that those datasets are now considered as a benchmark in actuarial and insurance litterature (and also outside the community, actually).

The maintenance was a bit complicated since it was not possible to be hosted by the CRAN (Comprehensive R Archive Network), so it was either on Christophe’s github repo, or on a dedicated website at UQAM. Christophe’s repo

https://dutangc.github.io/CASdatasets/

is under construction (or major refreshing, with Ewen Gallic), and several vignettes will be added, created by ). Actually, we encourage colleagues, or students, who used datasets from the package to share some codes, we can now host the application. And there is also the following repository,

https://entrepot.recherche.data.gouv.fr/

Hence, the dataset has now an official DOI, which makes it easier to cite doi:10.57745/P0KHAG. And  the following bib file can be obtained,

@data{P0KHAG_2024,
author = {Dutang, Christophe and Charpentier, Arthur},
publisher = {Recherche Data Gouv},
title = {{Insurance dataset}},
year = {2024},
version = {V1},
doi = {10.57745/P0KHAG},
url = {https://doi.org/10.57745/P0KHAG}
}

Talk at the 27th International Congress on Insurance: Mathematics and Economics

On Wednesday morning, I will be chairing our session “Discrimination-free Insurance Pricing” at the Insurance: Mathematics & Insurance Conference, in Chicago. With Olivier Côté, Lydia Gabric and Hong Beng Lim, we will be four speaker, just before lunch time. My talk will be a mix of recent work on quantifying and mitigating discrimination in scores (in insurance). Slides are available online.

 

Tweedie regression, or Poisson-Gamma regressions ?

Yesterday, I was chating with a young and enthousiastic actuary, who asked a nice (and classical) question: is it the same, or not to use a Tweedie regression, or two regressions (Poisson, and Gamma). For distributions, the two are equivalent, but when we have heterogeneity and explanatory variable, I really think that using all information, and running two regressions is much more interesting.

Homogeneous case

In the homogenous case, without any explanatory variable, the Tweedie distribution and compound Poisson-gamma distribution are equivalent representation (i.e., it is simply a reparametrization)

Consider a Tweedie distribution, with variance function power p\in(1,2), mean \mu and scale parameter \phi, then it is a compound Poisson model,

  • N\sim\mathcal{P}(\lambda) with \lambda=\displaystyle{\frac{\phi \mu^{2-p}}{2-p}}
  • Y_i\sim\mathcal{G}(\alpha,\beta) with \alpha=\displaystyle{-\frac{p-2}{p-1}}\text{~and~}\beta=\displaystyle{\frac{\phi \mu^{1-p}}{p-1}}

Conversely, consider a compound Poisson model N\sim\mathcal{P}(\lambda) and Y_i\sim\mathcal{G}(\alpha,\beta), then

  • variance function power is p=\displaystyle{\frac{\alpha+2}{\alpha+1}}
  • mean is \mu=\displaystyle{\frac{\lambda \alpha}{\beta}}
  • scale (nuisance) parameter is
    \phi=\displaystyle{\frac{[\lambda\alpha]^{\frac{\alpha+2}{\alpha+1}-1}\beta^{2-\frac{\alpha+2}{\alpha+1}}}{\alpha+1}}

So the two are equivalent…

Heterogeneous case

Now, in the context of regressionN_i\sim\mathcal{P}(\lambda_i)\text{ with }\lambda_i=\exp[\boldsymbol{x}_i^\top\boldsymbol{\beta}_{\lambda}]
andY_{j,i}\sim\mathcal{G}(\mu_i,\phi)\text{ with }\mu_i=\exp[\boldsymbol{x}_i^\top\boldsymbol{\beta}_{\mu}]
Then S_i=Y_{1,i}+\cdots+Y_{N,i} has a Tweedie distribution

  • variance function power is p=\displaystyle{\frac{\phi+2}{\phi+1}}
  • mean is \lambda_i \mu_i
  • scale parameter is\displaystyle{\frac{\lambda_i^{\frac{1}{\phi+1}-1}}{\mu_i^{\frac{\phi}{\phi+1}}}\left(\frac{\phi}{1+\phi}\right)}

There are 1+2\text{dim}(\boldsymbol{X}) degrees of freedom here. And a Tweedie regression is

  • variance function power is p\in(1,2)
  • mean is \mu_i=\exp[\boldsymbol{x}_i^{\top}\boldsymbol{\beta}_{\text{Tweedie}}]
  • scale parameter is \phi

There are now 2+\text{dim}(\boldsymbol{X}) degrees of freedom.

In the actuarial terminology

  • N is the annual claim frequency
  • Y is the cost of single claims
  • S is the annual cost for a single insurance policy

As explained in our book, frequency and costs can be explained by different features, so that itself is a motifivation to consider two models. But consider the following simulated data

n = 1e4
a=2
set.seed(123)
x = runif(n)
etan = exp(-2+a*x)
N = rpois(n,etan)
dfn = data.frame(y=N,x=x)
I=rep(1:n,N)
etaz = exp(2-a*x[I])
Z = rgamma(sum(N),etaz,20)
dfz = data.frame(y=Z,x=x[I])
S=tapply(Z,as.factor(I),sum)
V=as.numeric(S[as.character(1:n)])
V[is.na(V)]=0
dfy = data.frame(y=V,x=x)

We can run two regressions, for the frequency, and for the costs

regn = glm(y~x, family=poisson(link="log"),data=dfn)
regz = glm(y~x, family=Gamma(link="log"),data=dfz)

For the tweedie regression, let us find the optimal power parameter

library(statmod)
library(tweedie)
glmtw = function(t){
m = glm(y~x, family=tweedie(var.power = t, link.power = 0),data=dfy)
d = NULL
if(t == 1) d = 1
AICtweedie(m, dispersion = d)
}
vt = seq(1.01,1.99,length=251)
vg = Vectorize(glmtw)(vt)
plot(vt,vg,log="y",type="l")
i=which.min(vg)

and consider the associated Tweedie regression.

regy = glm(y~x, family=tweedie(var.power = vt[i], link.power = 0),data=dfy)

For frequency, there is a clear increase of the average frequency with x (and significant)

summary(regy)

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -3.00822 0.04101 -73.356 <2e-16 ***
x           -0.02226 0.07154  -0.311  0.756
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for Tweedie family taken to be 0.6516459)

For the individual costs, there is a clear decline of the average cost with x (and highly significant)

summary(regn)

Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -2.01508 0.04135 -48.73 <2e-16 ***
x            1.99036 0.05887  33.81 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for poisson family taken to be 1)

Now, if we consider the average cost for the policy, we have

summary(regy)

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -3.00822 0.04101 -73.356 <2e-16 ***
x           -0.02226 0.07154  -0.311  0.756
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for Tweedie family taken to be 0.6516459)

I.e., the average annual cost for a single policy does not depend on x (it is clearly not significant). As the product of the frequency and the average costs tells more or less the same story…

If the outcome, the price, is the same, one could agree that having here the two regressions is much more informative for risk management (if one wants to introduce deductibles for instance).

Entrevue avec RTS

L’autre jour, j’avais discuté Francesca Argiroffo, de RTS, au sujet de la décision de All State et State Farm, de ne plus assurer de nouveaux propriétaires de maisons ou locaux commerciaux, en Californie (et les liens entre assurance et changement climatique. Tout est en ligne, dans un article intitulé quand les assurances n’assurent plus, un autre effet du changement climatique (avec aussi une version audio, mais de mauvaise qualité…)

Model selection, AIC and Tweedie regression

Just some simple codes to illustrate some points we will discuss this week, for the last course on GLMs, before the final exam.  We have mentioned that the Gamma distribution belongs to the exponential, so we can run a regression, and compute the associated AIC,

> set.seed(123)
> test.data = rgamma(n=2000, scale=1, shape=1)
> m1 = glm( test.data~1, family=Gamma(link=log))
> AIC(m1)
[1] 3997.332

The Gamma distribution is also a special case of the Tweedie distribution, with power 2

> library(statmod)
> library(tweedie)
> m2 = glm( test.data~1, family=tweedie(link.power=0, var.power=2) )
> AIC(m2)
[1] NA

Unfortunately, we cannot compute the AIC, and we need a trick (with the appropriate R function).

> AICtweedie(m2)
[1] 3997.332

Of course, we can do the same with the Poisson distribution, which also belongs to the exponential family

> test.data = rpois(n=2000, lambda=1)
> m3 = glm( test.data~1, family=poisson(link=log))
> m4 = glm( test.data~1, family=tweedie(link.power=0, var.power=1) )
> AIC(m3)
[1] 5124.61

Here, we have a problem with the AICtweedie function

> AICtweedie(m4)
[1] Inf

because we need to specify the dispersion parameter

> AICtweedie(m4, dispersion=1)
[1] 5124.61

We can now check: we generate some Gamma sample, and fit various Tweedie distribution, changing simply the variance function (which is a power function)

> set.seed(123)
> test.data = rgamma(n=2000, scale=1, shape=1)
> glmtw = function(t){
+ m1 = glm( test.data~1, family=tweedie(link.power=0, var.power=t) )
+ d = NULL
+ if(t == 1) d = 1
+ AICtweedie(m1, dispersion = d)
+ 
+ }
> vt = seq(1,2.7,length=100)
> vg = Vectorize(glmtw)(vt)
> plot(vt,vg,log="y",type="l")

The minimum of the AIC is close to 2, corresponding to the Gamma distribution

We can also try with a Poisson

> set.seed(123)
> test.data = rpois(n=2000, lambda=1)
> glmtw = function(t){
+ m1 = glm( test.data~1, family=tweedie(link.power=0, var.power=t) )
+ d = NULL
+ if(t == 1) d = 1
+ AICtweedie(m1, dispersion = d)
+ 
+ }
> vt = seq(1,2,length=100)
> vg = Vectorize(glmtw)(vt)
> plot(vt,vg,log="y",type="l")

The minimum is now close to 1, corresponding to the Poisson distriubtion (the variance is equal to the average)

Let us now try some compound Poisson distribution,

> rcpd=function(n,lambda,shape,scale){
+ N=rpois(n,lambda)
+ X=rgamma(sum(N),shape=shape, scale=scale)
+ I=as.factor(rep(1:n,N))
+ S=tapply(X,I,sum)
+ V=as.numeric(S[as.character(1:n)])
+ V[is.na(V)]=0
+ return(V)}

Let us generate some compound Poisson random variables, with Poisson distribution with average 1, and with Gamma jumps, with average and variance 1,

> set.seed(123)
> test.data = rcpd(n=2000, 1,1,1)
> glmtw = function(t){
+ m1 = glm( test.data~1, family=tweedie(link.power=0, var.power=t) )
+ d = NULL
+ if(t == 1) d = 1
+ AICtweedie(m1, dispersion = d)
+ }
> vt = seq(1.1,1.9,length=100)
> vg = Vectorize(glmtw)(vt)
> plot(vt,vg,log="y",type="l")

The optimal value for the power function is here 1.5, based on the AIC (relationships between Tweedie parameters and the compound Poisson ones are given in the slides)

We can now play a little bit with the variance of the jumps: they still have aveage 1, but they now have a smaller variance

> set.seed(123)
> test.data = rcpd(n=2000, 1,3,1/3)
> vt = seq(1.05,1.95,length=100)
> vg = Vectorize(glmtw)(vt)
> plot(vt,vg,log="y",type="l")

The optimal power for the Tweedie is closer to one, closer to the Poison case

while if we increase the variance of the jumps

> set.seed(123)
> test.data = rcpd(n=2000, 1,1/3,3)
> vt = seq(1.05,1.95,length=100)
> vg = Vectorize(glmtw)(vt)
> plot(vt,vg,log="y",type="l")

the optimal power is higher, closer to the Gamma distribution.

Un «Manuel d’assurance» universitaire et professionnel à la fois

Offrir une compréhension large du secteur de l’assurance et de ses enjeux, telle est l’ambition du « Manuel d’assurance », dernier-né des ouvrages universitaires dédiés à l’assurance. Une somme de 500 pages que l’on doit à ses trois auteurs : Gilles Bénéplanc, directeur général du groupe Adelaïde et de Verlingue, Arthur Charpentier, actuaire et docteur en mathématiques appliquées, et Patrick Thourot, inspecteur général des finances honoraire.

Un livre pensé par des « enseignants » plutôt que des théoriciens de l’assurance à proprement parler. « Cette idée a émergé entre enseignants du CNAM dont je préside le comité scientifique. Notre projet était de concevoir le « Vernimmen », cet ouvrage de référence de tous les étudiants en finance, appliqué à l’assurance : un manuel simple, clair et pédagogique », souligne Gilles Bénéplanc à L’Argus. Et d’ajouter : « Nous sommes très complémentaires. Patrick Thourot, ancien inspecteur général des finances, passé par Axa et Scor. Arthur Charpentier, actuaire et docteur en mathématiques appliquées apporte la modélisation. Et moi-même où, par mon expérience dans le grand courtage et les risques d’entreprise. »

(à suivre…)

Recension du Manuel d’Assurance

Jolie recension de notre Manuel d’Assurance, paru cet automne, par Daniel Zajdenweber dans le dernier numéro de Risques

Les métiers de l’assurance, à l’instar des métiers de la finance en général, évoluent constamment et rapidement. Un manuel faisant le point pour les professionnels de ce secteur et les étudiants est donc un bienfait qu’il convient de signaler. En 57 chapitres répartis en cinq parties, tous les aspects de l’assurance sont couverts avec un souci permanent de clarté et un minimum de jargon, qu’ils relèvent des mathématiques, du droit, de la philosophie politique, de la réglementation ou de l’économie. De plus, chaque chapitre s’achève sur un court résumé et une bibliographie tout aussi courte ce qui facilite l’accès aux notions abordées (de « accident » à « vulnérabilité »), lesquelles sont indexées à la fin de l’ouvrage. (à suivre)

Qu’est-ce que l’assurance ?

Avec un peu de retard, je profite de ce moment de relâche pour mentionner une entrevue, parue chez Dalloz Actualités,  avec Rodolphe Bigot et Amandine Cayol.

Quel est l’intérêt d’aborder les mécanismes de l’assurance de manière multidisciplinaire en 2022 ?

Depuis une dizaine d’années, on a l’impression que l’univers des risques est en forte expansion dans nos sociétés, et qu’il croît avec le niveau de développement. Jusqu’à récemment, il y avait une attitude générale de désintérêt à l’égard des principes et des techniques de couverture des risques ou de transfert de ces risques, que ce soit à des tiers, à des assureurs, à des réassureurs, aux marchés financiers ou encore à la puissance publique. La demande sociale de protection augmente avec l’accumulation de richesses, l’information des citoyens, et la dangerosité réelle ou ressentie des technologies. Par ailleurs, le débat sur le rôle de l’État et l’implication des finances publiques dans la protection des citoyens est désormais largement ouvert. Les techniques et les modalités de gestion de l’assurance sont donc des éléments importants de l’analyse du fonctionnement de la société. Malgré cet intérêt collectif, force est de constater que les techniques de la gestion des risques sont souvent méconnues par le grand public, y compris chez bon nombre d’étudiants, auxquels les fondamentaux sont généralement exposés sporadiquement, dans des formations spécialisées trop tôt (droit, économie, mathématiques et science en général) alors même que l’assurance offre des perspectives importantes de développement de l’emploi. Ainsi, l’assurance nécessite par nature une approche multidisciplinaire : mathématiques et actuariat, économie, mais aussi droit et sciences de l’ingénieur. à suivre

Probabilités prédictives, pour 100% actuaires, et 100% data science

Ce jeudi, je participe (virtuellement) à un atelier sur les probabilités prédictives à la journée 100% actuaires, et 100% data science, de l’Institut des Actuaires, en France, avec Nicolas Marescaux et Florence Picard.

L’évènement n’étant pas offert en mode “hybride” je serais présent via une courte vidéo, qui sera transmise lors de l’atelier.

Je vais reprendre graphiquement un point que j’évoque régulièrement, à savoir la variabilité fondamentale qui existe lorsqu’on modéliser des évènements binaires, y compris si la vraie probabilité est connue. Dans un modèle Gaussien, si Y\sim\mathcal{N}(\mu,\sigma^2), même en connaissant (parfaitement) la moyenne \mu, Y-\mu est une variable, aléatoire, Y-\mu\sim\mathcal{N}(0,\sigma^2) qui peut avoir une petite variance, si \sigma est faible. Et dans un modèle de régression Y|X=x\sim\mathcal{N}(\mu_x,\sigma_0^2) avec \sigma_0^2\leq \sigma^2. Mais dans les GLM, avec les modèles de classification ou de Poisson, la variance ne diminue pas : si Y|X=x\sim\mathcal{B}(p_x), et la variance sera p_x(1-p_x) qui restera toujours non-nulle quand p_x\in(0,1).

L’autre point est que si on a une loi de Bernoulli, p ne peut être vraiment connu que si on a beaucoup d’observations, c’est la loi des grands nombres, sinon on a de la variabilité. Sur la figure ci-dessous, j’ai plusieurs niveaux de probabilité p, et je trace à gauche l’intervalle de “confiance” pour la fréquence, quand on n=100 observations, avec en bas la distribution de la fréquence. Par exemple, si p=15\%, avec une centaine d’observations, la fréquence a 90% de chances d’être entre 10\% et 20\%. Autrement dit, prédire une probabilité d’avoir un accident de 15.723\% n’a pas trop de sens. Au centre, le regarde la distribution de \overline{y}_n-p, et on voit qu’il reste une part non négligeable de variance. À droite, c’est la variation relative (\overline{y}_n-p)/p, qui varie en sens inverse par rapport à la variation absolue : si p est faible (disons 2\%), on s’écarte peu en valeur absolue (\pm 2\%) mais il n’est pas impossible (y compris avec n=100 observations) d’observer 2 fois trop de 1).

Regarder \overline{y}_n-p, c’est supposer qu’on peut connaître la vraie probabilité, et qu’on l’utilise : \overline{y} c’est la charge moyenne par années, et p, c’est la prime pure (annuelle). Donc \overline{y}_n-p, c’est la perte annuelle. Mais au lieu d’utiliser p, on peut imaginer qu’on mutualiser : par exemple ci-dessous, si p\in[0\%;4\%] on utilise la valeur moyenne (soit 2\%). On voit qu’on rajoute de la variabilité sur la distribution des pertes individuelle, d’autant plus qu’il y a peu de classes.

On en reparlera…

DataDay 2022 MAIF

Ce mercredi, je participerais au à la semaine DataDay 2022 de la MAIF, pour parler de données et de climat…

Je commencerais pas revenir (il s’agit d’un exposé grand public) sur les spécificités des différents types de données, en commençant par les données individuelles vs. les données temporelles

Dans le premier cas, on parlera surtout (dans les applications climatiques) de données spatiales

et dans le second cas, de séries temporelles,

On finira avec les données spatio-temporelles