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.