Category Archives: M1-actuariat

Qui peut m’aider à comprendre les sorties de SAS ?

Je m’étais promis que j’évoquerais une bizarrerie rencontrée avec SAS lors d’une formation…. Écrire ce billet permettra à ceux qui auraient des éléments d’explication de poster un commentaire.
Pour cela, comparons une régression logistique faite avec deux outils différents, sous SAS,

  • avec la procédure logistique

Le code pour faire une régression logistique ressemble à ça

PROC LOGISTIC DATA=base_logistq;
FORMAT age_soc f2_ageso.;
CLASS sexe_soc age_soc fract_paiemt;
MODEL SPOCAM = sexe_soc age_soc fract_paiemt / selection=stepwise;
RUN; QUIT;

ce qui donne la sortie suivante (je passe l’introduction pour insister sur les coefficients)

                                 The LOGISTIC Procedure

                   Analyse des estimations de la vraisemblance maximum
                                                     Erreur         Khi 2
  Paramètre                    DF    Estimation         std       de Wald    Pr > Khi 2

  Intercept                     1        1.7833      0.0676      696.9022        <.0001
  sexe_soc     Femme            1       -0.2429      0.0619       15.4237        <.0001
  age_soc      1_AGESOC_-60     1        0.4578      0.0667       47.1020        <.0001
  fract_paiemt Annuel           1        0.6021      0.0997       36.4862        <.0001
  fract_paiemt Mensuel          1       -0.5410      0.0842       41.2342        <.0001
  • avec la procédure genmod (car la régression logistique est un glm)

On peut faire exactement la même chose (théoriquement) en ajustement un modèle GLM,

PROC GENMOD DATA=base_logistq;
FORMAT age_soc f2_ageso.;
CLASS sexe_soc age_soc fract_paiemt;
MODEL SPOCAM = sexe_soc age_soc fract_paiemt / dist = binomial;
RUN;

et la sortie ressemble à ça

                                  The GENMOD Procedure
                      Analyse des résultats estimés de paramètres

                                                  Erreur      Wald 95Limites
Paramètre                     DF   Estimation   standard      de confiance %       Khi 2
Intercept                      1       1.5073     0.1501     1.2131     1.8014    100.85
sexe_soc       Femme           1      -0.4859     0.1237    -0.7284    -0.2434     15.42
sexe_soc       Homme           0       0.0000     0.0000     0.0000     0.0000       .
age_soc        1_AGESOC_-60    1       0.9156     0.1334     0.6542     1.1771     47.10
age_soc        Z_AGESOC_+60    0       0.0000     0.0000     0.0000     0.0000       .
fract_paiemt   Annuel          1       0.6634     0.1770     0.3165     1.0104     14.05
fract_paiemt   Mensuel         1      -0.4798     0.1510    -0.7759    -0.1838     10.09
fract_paiemt   Semestriel      0       0.0000     0.0000     0.0000     0.0000       .
Scale                          0       1.0000     0.0000     1.0000     1.0000
  • comparaison des deux sorties

Si on regarde l’impact du sexe par exemple, dans la première sortie on peut lire

sexe_soc     Femme            1       -0.2429      0.0619       15.4237        <.0001
alors que dans la seconde sortie, on a
sexe_soc       Femme           1      -0.4859     0.1237    -0.7284    -0.2434     15.42
sexe_soc       Homme           0       0.0000     0.0000     0.0000     0.0000

On dira ce qu’on veut, mais moi je trouve cette différence troublante…. Dans la seconde sortie, le coefficient vaut le double de l’autre….
Alors SAS semble s’y retrouver car si on lui demande d’afficher le score prédit pour un individu au hasard (le premier de la base par exemple), les prédictions sont très proches,

                           fract_                                 proba1_       proba1_
  Obs  sexe_soc   age_soc  paiemt      SPOCAM  proba1_logit        
1      Homme          71  Annuel         0      0.10242637    0.10241302

Si quelqu’un sait interpréter ce qui est fait avec cette procédure logistique (car R donne la même chose que la sortie GLM), je suis preneur…..


Crédibilité et calcul bayésien

On a commencé en cours la tarification a posteriori, en commençant par la tarification bayésienne, et en présentant ensuite l’approche d’Hans Bühlmann comme un cas particulier en projetant dans un sous espace de combinaisons linéaires (un peu comme l’économétrie linéaire était présenté en cours comme un cas particulier de calcul d’espérance conditionnelle).La classification a priori sera poursuivie un TD, sur des bases de données, afin d’orienter davantage le cours sur la pratique des GLM.
L’utilisation des techniques bayésiennes en actuariat ne s’est pas faite sans peine. Pour ceux qui souhaitent s’en convaincre, il suffit de relire les comptes rendus de la conférence à Trieste en 1962. Dans le discours de Bruno de Finetti (publié dans l’ASTIN Bulletin), on retrouve un point historique, présentant les nouveaux travaux d’Hans Bühlmann,

Et Bruno de Finetti de conclure en rappelant les apports d’Arthur Bailey en 1950,

  • La formule de Bayes, ou apprendre par l’expérience

La formule de Bayes ne dit pas grand chose quand on le regarde sous la forme suivante

https://perso.univ-rennes1.fr/arthur.charpentier/latex/latex-bayes-01.png

A la rigueur on peut aussi la réécrire en utilisant deux fois cette formule

https://perso.univ-rennes1.fr/arthur.charpentier/latex/latex-bayes-02.png

Bon, là encore, on ne voit peut être toujours pas ce qu’on peut en faire…. L’idée géniale est de faire la lecture suivante

https://perso.univ-rennes1.fr/arthur.charpentier/latex/latex-bayes-03.gif

Autrement dit la loi a posteriori du paramètre, conditionnellement aux observations (en bleu) est proportionnelle au produit de  la loi a priori du paramètre (en vert) et de la vraisemblance des observations (en rouge, qui sera un simple produit de lois si on suppose l’indépendance conditionnelle au paramètre). Le paramètre en noir est juste un facteur de normalisation, histoire que la loi soit effectivement une mesure de probabilité. D’où parfois l’écriture

https://perso.univ-rennes1.fr/arthur.charpentier/latex/latex-bayes-4.gif

Bref, on a réussit à inverser les deux termes dans la probability (on retrouve le terme “inverse probability” dans la littérature anglo-saxonne).
En cours, on avait vu que si on supposait le nombre annuel de sinistres Poisson, conditionnellement au paramètre, avec une indépendance (toujours conditionnellement à ce paramètre), et que l’on suppose que la loi a priori du paramètre est une loi Gamma, alors la loi a posteriori se calcule facilement et c’est une loi Gamma.
Considérons la petite simulation suivante: on suppose que le nombre de sinistres suit une loi de Poisson, et on cherche à estimer le paramètre de cette loi. On commence par une loi a priori Gamma, centrée sur 5, et on regarde évoluer la loi a posteriori au fur et à mesure que l’on observe les sinistres arriver (ou les années passer en l’occurence).

On peut également considerer l’évolution de l’espérance a posteriori du paramètre, ainsi qu’un intervalle de confiance (puisqu’on connaît la loi)

La “magie” des méthodes bayésiennes est que peu importe la loi a priori, on va converger vers la vraie valeur. Par exemple sur l’animation ci-dessous, on part d’une loi a priori de moyenne 2,

avec là aussi l’évolution de la moyenne a posteriori avec un intervalle de confiance,

La morale de l’histoire est que comme la loi a priori n’influence pas (j’exagère un peu car elle va influencer la vitesse de la convergence, ce qui n’est pas rien en pratique), autant prendre quelque chose de simple pour les calculs: la loi conjuguée de la loi exponentielle. La loi conjuguée d’une loi de la famille exponentielle de la forme

s’écrit

où et sont des constantes, et où  est une constante de normalisation (afin que cette fonction soit effectivement une mesure de probabilité).

  • L’hérésie de la statistique bayésienne

La principale hérésie des statisticiens bayésien a été de proposer une lecture des probabilités d’un point de vue subjectif. En particulier Jimmie Savage et Bruno de Finetti partait de l’hypothèse que chacun avait à sa disposition son propre espace de probabilité.C’est ce qui lui permet de se construire un a priori. Et au fur et à mesure que le temps passe, on apprend, et on peut dériver une loi a posteriori. Par exemple  je pars d’un a priori comme quoi un enfant sur deux qui nait est un garçon, en France. Je peux ensuite récupérer des données, et affiner ma connaissance. C’est ce qu’avait fait Laplace il y a fort fort longtemps….
L’hérésie est ici un
problème philosophique lié au concept même de probabilité. Mais on peut noter qu’à l’époque dans les années 60, les débats étaient assez virulants. Et pour Jimmie Savage et Bruno de Finetti, il n’est pas nécessaire d’avoir le formalisme mathématique d’Andreï Kolmogorov pour appréhender la notion de probabilité (c’est à dire la mesure d’ensembles dans un espace abstrait d’évènements, voir ici ou ). On notera que pour John Keynes (qui avait écrit un “traité de probabilités“) il existait une probabilité subjective, mais davantage liée à une information donnée par l’éducation. C’est un problème culturel plus que personnel. Mais finalement, il a surtout fallu attendre les travaux de Daniel Kahneman et Amos Tversky dans les années 70 pour que des psychologues se penchent sur la construction individuelle des probabilités.

  • La crédibilité au sens de Bühlmann

L’idée d’Hans Bühlmann est de proposer une formule fermée qui approche l’espérance conditionnelle, tout simplement en utilisant celle qui avait été obtenue dans le cas bayésien. En tarification, on s’intéresse à des primes pures, et il est finalement assez naturel de chercher à calculer

Hans Bühlmann a suggéré d’approcher cette grandeur par

avec classiquement

est appelé facteur de crédibilité, avec , et où respectivement,


Bref, on a un facteur de crédibilité qui dépend de la variance intra et de la variance inter, pour reprendre des termes connus en statistique. L’énorme avantage est que cette formule peut très facilement s’utiliser sur des données. En particulier, considérons un tableau de la forme suivante

où on regarde si un contrat a – ou n’a pas – eu de sinistre chacune des années. Formellement, on dispose d’un tableau d’observations,

(on notera que le nombre d’années d’observations pour chacun des contrats peut être différent). On peut alors obtenir les estimateurs empiriques des moments nécéssaires, i.e. on pose

correspondant à la moyenne empirique pour un contrat,

et

Le facteur de crédibilité pour le contrat i est alors

où tout naturellement

Méthodes numériques et convolution, suite

Pour poursuivre un ancien billet, je voulais revenir plus particulièrement sur l’algorithme de Panjer, et sur la précision de l’approximation faite en discrétisant la loi des coûts individuels. Les références sont ici

Je reprends ici un partie de l’article de wikipedia sur le sujet. Comme toujours, on souhaite approcher la loi de

 S = \sum_{i=1}^N X_i\,

On suppose ici que les coûts individuels sont discrets, et on pose

f_k = P[X_i = hk].\,

On suppose de plus que les nombres sont dans une classe un peu particulière, vérifiant

 P[N=k] = p_k=

En fait, cette condition n’est pas trop forte, la plupart des lois classiques étant de ce type.

La formule permettant d’obtenir

g_k =P[S = hk] \,.

est alors obtenue par récurrence, en posant

g_0=p_0\cdot \exp(f_0 b)\text{ if }a = 0,\,

g_0=\frac{p_0}{(1-f_0a)^{1+b/a}}\text{ for }a \ne 0,\,

et ensuite

g_k=\frac{1}{1-f_0a}\sum_{j=1}^k \left( a+\frac{b\cdot j}{k} \right) \cdot f_j \cdot g_{k-j}.\,

L’avantage c’est que tout cela a été programmé sous R… Pour la discrétisation, je reprends ici actuar qui propose plusieurs techniques. En particulier on distinguera entre une borne supérieure et une borne inférieure, une version arrondir et une version sans biais.

> fx <- discretize(pgamma(x, 2, 1), method = "upper", from = 0, to = 17, step = 0.5)
> fx <- discretize(pgamma(x, 2, 1), method = "lower", from = 0, to = 17, step = 0.5)
> fx <- discretize(pgamma(x, 2, 1), method = "rouding", from = 0, to = 17, step = 0.5)
> fx <- discretize(pgamma(x, 2, 1),method = "unbiased", lev = levgamma(x, 1), from = 0, to = 17, step = 0.5)

On peut alors utiliser l’algorithme de Panjer pour calculer la loi composée basée sur ces discrétisations. Au niveau de la programmation, le code est le suivant 

>  fx <- discretize(pgamma(x, 2, 1), from = 0, to = 22,
+  step = 0.5, method = "unbiased", lev = levgamma(x,2, 1))
>  Fs <- aggregateDist("recursive", model.freq = "poisson",
+  model.sev = fx, lambda = 10, x.scale = 0.5)

Graphiquement, on obtient la distribution suivante pour la loi composée (fonction de répartition et fonction quantile).

Convolution(s) et lois composées, aspects numériques

Nous avons vu en cours que l’outil de base pour travailler sur les sommes de variables aléatoires était la convolution,

(f * g )(t)  , stackrel{mathrm{def}}{=} int_{-infty}^{infty} f(tau)cdot g(t - tau), dtau
= int_{-infty}^{infty} f(t-tau)cdot g(tau), dtau.

permettant d’obtenir la densité ou la fonction de répartition de la somme de deux variables indépendantes.

Cet outils permet en théorie d’obtenir la forme d’une loi composée, i.e. d’une somme dont le nombre de termes est aléatoire.

Pour les calculs numériques de la convolée, Vincent Goulet a programmé pas  mal de choses dans la librairie actuar. Numériquement, il faut discrétiser la loi des coûts de sinistres. Si on suppose par exemple que les coûts individuels sont discrets, on peut obtenir la distribution simplement

> fx <- c(0, 0.15, 0.2, 0.25, 0.125, 0.075,
+         0.05, 0.05, 0.05, 0.025, 0.025)
> pn <- c(0.05, 0.1, 0.15, 0.2, 0.25, 0.15, 0.06, 0.03, 0.01)
> Fs <- aggregateDist("convolution", model.freq = pn,
+                     model.sev = fx, x.scale = 25)
> summary(Fs)
Aggregate Claim Amount Empirical CDF:
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
    0.0   150.0   275.0   314.5   400.0  2000.0 
> c(Fs(0), diff(Fs(25 * 0:21))) # probability mass function
 [1] 0.05000000 0.01500000 0.02337500 0.03467500 0.03257656 0.03578639
 [7] 0.03980787 0.04356232 0.04751800 0.04903380 0.05189806 0.05137886
[13] 0.05118691 0.05030486 0.04818189 0.04575882 0.04280890 0.03937836
[19] 0.03574568 0.03196808 0.02832446 0.02478833
> plot(Fs)

On peut aussi utiliser des méthodes d’approximation récursives,

> Fs <- aggregateDist(“recursive”, model.freq = “poisson”,
+                     model.sev = fx, lambda = 3, x.scale = 25)
> plot(Fs)

Ce qui donne le graphique suivant

Des méthodes d’approximation de type normal power sont aussi programmées, ainsi que les techniques de simulations. Par exemple ici pour une survenance Poissonienne avec des coûts Gamma, on écrit

> Fs <- aggregateDist("recursive", model.freq = "poisson",
+ model.sev = fx, lambda = 3, x.scale = 25)
> plot(Fs)

Enfin, pour lier avec le DM que je donnerais mercredi, Vincent Goulet a aussi programmé une méthode d’estimation de quantile,

> model.freq <- expression(data = rpois(3))
> model.sev <- expression(data = rgamma(100, 2))
> Fs <- aggregateDist("simulation", nb.simul = 1000,
+                     model.freq, model.sev)

Simulation d’un processus de Poisson

Le prochain cours reviendra sur la solvabilité des compagnies d’assurance, et en particulier sur la modélisation et le calcul de la probabilité de ruine. En particulier, nous passerons pas mal de temps sur le “processus de Poisson“.

Nous verrons en cours les notions de base sur les processus de Poisson$ \{N_t\}$. En particulier, nous verrons qu’ils se caractérisent soit par le processus d’arrivées $ \{T_i\}$, correspondant aux dates d’arrivée des sinistres, ou bien par$ W_i=, correspondants aux durées intersinistres. En effet, on peut obtenir des expressions de la forme $ N_t=.

Dans sa forme la plus simple, on s’intéresse aux processus homogènes. $ \{N_t: t \ge 0 \}$ sera un processus de Poisson homogène d’intensité $ \lambda > 0$ si les durées entre arrivées, $ W_i$ i.i.d. de loi exponentielle de paramètre $ \lambda $. L’algorithme naturel pour simuler les dates d’arrivées de sinistre $ T_1,T_2,\ldots,T_n$ est alors

  1. poser $ T_0 =
  2. pour $ i = on génère$ E$ suivant une loi exponentielle de paramètre $ \lambda $, puis on pose $ T_i =

Les choses vont se compliquer si on suppose que le processus de Poisson n’est plus homogène. Cette hypothèse est peut être davantage réaliste pour l’assurance. Par exemple, les assureurs savent qu’il y a plus d’accidents automobiles les jours de brouillard, ou de pluie, ou de verglas. On peut donc supposer qu’il existe un cycle lié au climat.

On suppose ici que le processus de Poisson est d’intensité $ \lambda(t)$. La première idée pour simuler un tel processus est de supposer qu’il existe $ \overline{\lambda}$ tel que $ \lambda(t)\leq\overline{\lambda}$ pour tout $ t$. On note $ T_1^* ,T_2^* , T_3^* ,\ldots$ des arrivées successives d’un processus de Poisson de paramètre $ \overline{\lambda}$. On met alors en place une stratégie acceptation/rejet, telle que l’on garde le $ i$ème sinistre $ T_i^*$ avec probabilité $ \lambda(T_i^* )/\overline{\lambda}$. La suite $ T_1, T_2, \ldots$ ainsi construite suit un processus de Poisson nonhomogène d’intensité $ \lambda(t)$. D’où l’algorithme

  1. On pose $ T_0 = et $ T^* = 0$
  2. on génère une variable exponentielle$ E$ d’intensité $ \overline{\lambda}$.
  3. On pose alors$ T^* = T^* + E$.
  4. On génère une variable $ U$ uniforme sur $ (0,1)$: si $ U>\lambda(T^*)/\overline{\lambda}$ on rejette (et on retourne en 2.), et sinon on pose $ T_i = .

Une autre méthode consiste à noter que l’incrément

$ N_t-N_s$, $ 0 < s < t$, suit une loi de Poisson d’intensité$ \widetilde{\lambda} = \int_s^t \lambda(u)du$. Aussi, la fonction de répartition $ F_s$ du temps d’attente $ W_s$ est qui vaut

On peut utiliser la méthode suivante pour simuler le processus de Poisson

  1. Poser $ T_0 =
  2. Générer $ U$ suivant une loi uniforme sur $ (0,1)$
  3. Poser $ T_i =

Pour aller plus loin, je renvoie à des bouquins sur la simulation de processus, ou pour les applications assurantielles au Statistical Tools for Finance and Insurance, chez Springer.

Dernier billet sur l’assurance vie (a priori)

Afin de rappeler ce que nous avons vu en TD jeudi dernier, je mets un petit billet pour rappeler les trois techniques de calcul de PM. Pour une temporaire décès, sur n années, on a

  • la méthode prospective, i.e. sur la période [k,n], ce qui s’écrit
ou encore
  • la méthode rétrospective, i.e. sur la période [0,k] – on se place en 0 puis on “actualise”, soit
  • la méthode itérative, i.e. on étudie la variation de PM, entre k-1 et k, en se plaçant en k-1, puis en “actualisant”. On a
Pour un autre exemple (assurance combinant une rente viagère en cas de vie et un capital décès), je renvoie au dernier TD.

Calcul (pratique) de la provision mathématique

Nous verrons mercredi comment calculer une provision mathématique (i.e. la PM) pour un contrat d’assurance temporaire décès. Les calculs suivants sont fait sous Excel, avec un assuré de 20 ans, un durée contractuelle de 25 ans, une prime payée annuellement et un taux d’actualisation de 3,5%.

On pourra alors utiliser cette feuille de calcul pour regarder l’évolution de la PM en fonction de l’âge de l’assuré, ou du taux d’actualisation.

Sinon il est aussi possible d’utiliser R pour faire des formules de calcul plus générales, et plus simples. Par exemple, pour calculer un VAP sous R, on peut utiliser un code de la forme suivante

> capital=c(100,100,125,125,150,150); n=length(capital) 
> taux=0.035; x=45 
> (capital.act=capital*(1/(1+taux))^(1:n)) 
[1] 96.61836 93.35107 112.74284 108.93028 126.29598 122.02510 
> Lx=read.table("https://perso.univ-rennes1.fr/arthur.charpentier/TV8890.csv",header=TRUE,sep=";") 
> (PROBA=Lx[((Lx[,1]>x)*(Lx[,1]<=(x+n)))==1,2]/Lx[(Lx[,1]==x)==1,2]) 
[1] 0.9980581 0.9960128 0.9938849 0.9915814 0.9890714 0.9863444 
> (FluxVAP=capital.act*PROBA) 
[1] 96.43073 92.97886 112.05341 108.01324 124.91573 120.35877 
> (VAP=sum(FluxVAP)) 
[1] 654.7507