Mack's model is a Glm !

Which actuary does not know about Mack’s model ? Due to Mack (1991), this model is fairly simple. Suppose you have a triangle.

Ok seeing the origin dates of claims, thoose data are old. But who cares ? Let’s denote \(C_{i,j}\) the value of this triangle from the \(i\)’th row and the \(j\)’th collumn.

The mack model consist of a stochastic model that enframe the classical chain-ladder estimator, denoted here by the vector \(\mathbf{\hat{f}}\), defined \(\forall j \in \{1,...,n\}\) by :

\[\hat{f}_j = \frac{\sum\limits_{i=1}^{n-j+1} C_{i,j+1}}{\sum\limits_{i=1}^{n-j+1} C_{i,j}}\]

Then we estimate future claims by setting, \(\forall i,j \,|\, i+j>n\), \(C_{i,j+1} = \hat{f_j} C_{i,j}\). That’s chain-ladder estimation right ?

Mack then found stochastic hypohtesis that make thoose estimator better in a certain sense (in the MSE-sense) :

  • \((H1)\) : The lines are independants
  • \((H2)\) : \(\exists\, \mathbf{f} \text{ such that } \forall i,j,\, \mathbb{E}(C_{i,j+1}\,|\, C_{i,1},...,C_{i,j}) = f_j C_{i,j}\)
  • \((H3)\) : \(\exists\, \mathbf{\sigma} \text{ such that } \forall i,j,\, \mathbb{V}(C_{i,j+1}\,|\, C_{i,1},...,C_{i,j}) = \sigma_j^2 C_{i,j}\)

First, lets look a little closer at theese hypothesis. First, we should note the conditionning of \(C_{i,j+1}\) on the past of the origin year.

Suppose that, following England and Verrall (2002), we reformulate the model in terme of individual developpements factors. Set :

\[F_{i,j} = \frac{C_{i,j+1}}{C_{i,j}} \text{ and } w_{i,j} = C_{i,j}\]

The 2 last hypohtesis can then be reformulated in the following way (just dividing by \(w_{i,j}\)).

  • \((H2*)\) : \(\exists\, \mathbf{f} \text{ such that } \forall i,j,\, \mathbb{E}(F_{i,j}\,|\, w_{i,j}) = f_j\)
  • \((H3*)\) : \(\exists\, \mathbf{\sigma} \text{ such that } \forall i,j,\, \mathbb{V}(F_{i,j}\,|\, w_{i,j}) = \frac{\sigma_j^2}{w_{i,j}}\)

Note that i assume that the information given by the past is well sumarised by \(w_ {i,j}\), which is indeed the case under those hypohtesis.

Now that we reformulate the hypohtesis, you’l say “What about the GLM you promised ?”. Well i’m comming to it.

Look again at the formula for the estimator of the chain-ladder developpement factors. DO you see the weighted mean of \(F\)’s, weigthed by \(C\)’s ? Well you should ! Indeed, since we posed \(w_{i,j} = C_{i,j}\),

\[\hat{f}_j = \frac{\sum\limits_{i=1}^{n-j+1} F_{i,j}\, w_{i,j}}{\sum\limits_{i=1}^{n-j+1} w_{i,j}}\]

Now let’s focuse on the mack estimators for the variance parameters \(\mathbf{\sigma}\) :

\[\hat{\sigma}_j = \frac{1}{n-j} \sum\limits_{i=1}^{n-j+1} w_{i,j} (F_{i,j} - \hat{f}_j)^2\]

they look a lot like a simple unbiaised variance estimation, for the estimation of \(F\)’s by \(\hat{f}\)’s, with case weights \(w\)’s, right ? Well, although the normalisation is not right (should be \(\frac{1}{n-j-1}\)), they do.

Ok now that i gave you some hints, let’s get on it. To estimate the first ordre, i.e \(f\)’s, we just take a weighted average of observation \(F\)’s, with weights \(w\)’s, by column.

So if i set a glm with :

  • Link function Identity
  • Any law in the exponential family
  • case weights given by \(w\)
  • response variable \(F\)
  • Only covariable the indicant f the column, i.e the year of developpement

I should get the same estimate, right ? Let’s try on the ABC triangle from the ChainLadder package (see Gesmann (2009) ) :

Table 1: Incured triangle – cumulative view
1 2 3 4 5 6 7 8 9 10 11
1977 153638 342050 476584 564040 624388 666792 698030 719282 735904 750344 762544
1978 178536 404948 563842 668528 739976 787966 823542 848360 871022 889022
1979 210172 469340 657728 780802 864182 920268 958764 992532 1019932
1980 211448 464930 648300 779340 858334 918566 964134 1002134
1981 219810 486114 680764 800862 888444 951194 1002194
1982 205654 458400 635906 765428 862214 944614
1983 197716 453124 647772 790100 895700
1984 239784 569026 833828 1024228
1985 326304 798048 1173448
1986 420778 1011178
1987 496200

First, the estimated developpement factor given by standard chain-ladder :

ChainLadder::MackChainLadder(ABC)$f
##  [1] 2.308599 1.421098 1.199934 1.113445 1.072736 1.047559 1.034211 1.026047
##  [9] 1.020188 1.016259 1.000000

If we create a data.frame with what we need and then try a useless glm (actualy it’s even a lm there) on it :

df <- ABC %>% 
    as.data.frame %>% 
    mutate(
      weight = cbind(rep(NA,nrow(ABC)),ABC %>% as.matrix) %>% .[,1:nrow(ABC)] %>% as.vector,
      F = value / weight,
     ) %>% 
    drop_na

model <- lm(data =df,formula=F~factor(dev)+0,weights=weight)
  
df %<>% 
  mutate(f.hat = model$fitted.values,
         rez2 = weight * (F - f.hat)^2)

I also extracted the squared preason residuals.

Indeed, if we want to model \(\sigma\)’s too, we need a second model to calculate the weighted average of… Squared pearson residuals ! Which is Normla in the context of Joint modeling of Glm’s, see e.g McCullagh and Nelder (1989) .

To calculate the weighted average of squared residuals (for the dispersions parameters), we’ll just use another linear model since only the first order is here of interest. Note that we excluse the last column of the triangle, since there is only one point (and therefore no estimation of variance is possible). We also add the last valeu estimated by Mack for sake of completeness.

model2 <- df %>% 
    filter(dev != nrow(ABC)) %>%
    {lm(data =., formula = rez2 ~ factor(dev))}

df %<>% mutate(
    estimated.phi = model2$fitted.values %>% {c(.,min(.[length(.)],.[length(.)-1],.[length(.)]^2/.[length(.)-1]))}
  )

df
##    origin dev   value weight        F    f.hat         rez2 estimated.phi
## 1    1977   2  342050 153638 2.226337 2.308599 1039.6609948  1940.0408948
## 2    1978   2  404948 178536 2.268159 2.308599  291.9754480  1940.0408948
## 3    1979   2  469340 210172 2.233123 2.308599 1197.2515446  1940.0408948
## 4    1980   2  464930 211448 2.198791 2.308599 2549.5751391  1940.0408948
## 5    1981   2  486114 219810 2.211519 2.308599 2071.5915573  1940.0408948
## 6    1982   2  458400 205654 2.228987 2.308599 1303.4551427  1940.0408948
## 7    1983   2  453124 197716 2.291792 2.308599   55.8462412  1940.0408948
## 8    1984   2  569026 239784 2.373077 2.308599  996.9031237  1940.0408948
## 9    1985   2  798048 326304 2.445719 2.308599 6135.1878014  1940.0408948
## 10   1986   2 1011178 420778 2.403115 2.308599 3758.9619552  1940.0408948
## 11   1977   3  476584 342050 1.393317 1.421098  263.9876431   548.0174476
## 12   1978   3  563842 404948 1.392381 1.421098  333.9344808   548.0174476
## 13   1979   3  657728 469340 1.401389 1.421098  182.3038561   548.0174476
## 14   1980   3  648300 464930 1.394403 1.421098  331.3012598   548.0174476
## 15   1981   3  680764 486114 1.400420 1.421098  207.8370561   548.0174476
## 16   1982   3  635906 458400 1.387229 1.421098  525.8105220   548.0174476
## 17   1983   3  647772 453124 1.429569 1.421098   32.5170215   548.0174476
## 18   1984   3  833828 569026 1.465360 1.421098 1114.8127986   548.0174476
## 19   1985   3 1173448 798048 1.470398 1.421098 1939.6523906   548.0174476
## 20   1977   4  564040 476584 1.183506 1.199934  128.6170742   208.3223889
## 21   1978   4  668528 563842 1.185665 1.199934  114.7889365   208.3223889
## 22   1979   4  780802 657728 1.187120 1.199934  107.9955483   208.3223889
## 23   1980   4  779340 648300 1.202129 1.199934    3.1232034   208.3223889
## 24   1981   4  800862 680764 1.176416 1.199934  376.5043910   208.3223889
## 25   1982   4  765428 635906 1.203681 1.199934    8.9295071   208.3223889
## 26   1983   4  790100 647772 1.219719 1.199934  253.5814014   208.3223889
## 27   1984   4 1024228 833828 1.228344 1.199934  673.0390490   208.3223889
## 28   1977   5  624388 564040 1.106992 1.113445   23.4819775    95.1739102
## 29   1978   5  739976 668528 1.106874 1.113445   28.8663512    95.1739102
## 30   1979   5  864182 780802 1.106788 1.113445   34.6021980    95.1739102
## 31   1980   5  858334 779340 1.101360 1.113445  113.8120512    95.1739102
## 32   1981   5  888444 800862 1.109360 1.113445   13.3642605    95.1739102
## 33   1982   5  862214 765428 1.126447 1.113445  129.4015811    95.1739102
## 34   1983   5  895700 790100 1.133654 1.113445  322.6889519    95.1739102
## 35   1977   6  666792 624388 1.067913 1.072736   14.5232459    95.4346025
## 36   1978   6  787966 739976 1.064853 1.072736   45.9752469    95.4346025
## 37   1979   6  920268 864182 1.064901 1.072736   53.0508012    95.4346025
## 38   1980   6  918566 858334 1.070173 1.072736    5.6366537    95.4346025
## 39   1981   6  951194 888444 1.070629 1.072736    3.9429272    95.4346025
## 40   1982   6  944614 862214 1.095568 1.072736  449.4787401    95.4346025
## 41   1977   7  698030 666792 1.046848 1.047559    0.3369445    14.7731099
## 42   1978   7  823542 787966 1.045149 1.047559    4.5761913    14.7731099
## 43   1979   7  958764 920268 1.041831 1.047559   30.1914463    14.7731099
## 44   1980   7  964134 918566 1.049608 1.047559    3.8554008    14.7731099
## 45   1981   7 1002194 951194 1.053617 1.047559   34.9055665    14.7731099
## 46   1977   8  719282 698030 1.030446 1.034211    9.8952347    12.6617691
## 47   1978   8  848360 823542 1.030136 1.034211   13.6760755    12.6617691
## 48   1979   8  992532 958764 1.035220 1.034211    0.9771982    12.6617691
## 49   1980   8 1002134 964134 1.039414 1.034211   26.0985679    12.6617691
## 50   1977   9  735904 719282 1.023109 1.026047    6.2066637     2.9989596
## 51   1978   9  871022 848360 1.026713 1.026047    0.3763507     2.9989596
## 52   1979   9 1019932 992532 1.027606 1.026047    2.4138644     2.9989596
## 53   1977  10  750344 735904 1.019622 1.020188    0.2353251     0.2170726
## 54   1978  10  889022 871022 1.020665 1.020188    0.1988201     0.2170726
## 55   1977  11  762544 750344 1.016259 1.016259    0.0000000     0.2170726

And there we have it ! Thoose estimates are clearly the same as Mack’s. Indeed :

model4 <- MackChainLadder(ABC,est.sigma="Mack")
  resultat <- 
    df %>% 
      group_by(dev) %>% 
      summarise(phi=mean(estimated.phi)) %>% 
      mutate(
        mack = model4$sigma^2,
        degree.of.freedom = max(dev) - dev, # correction for degree of freedom
        phi = (phi * (degree.of.freedom+1)/(degree.of.freedom)) %>%
          .[1:(length(.)-1)] %>%
          {c(.,min(.[length(.)],.[length(.)-1],.[length(.)]^2/.[length(.)-1]))},
        f = model$coefficients[1:(dim(ABC)[1]-1)],
        f.cl = model4$f[1:(dim(ABC)[1]-1)]
        ) %>%
      select(f,f.cl,phi,mack) %>%
      as.data.frame
f f.cl phi mack
2.308599 2.308599 2155.6009942 2155.6009942
1.421098 1.421098 616.5196286 616.5196286
1.199934 1.199934 238.0827301 238.0827301
1.113445 1.113445 111.0362286 111.0362286
1.072736 1.072736 114.5215230 114.5215230
1.047559 1.047559 18.4663874 18.4663874
1.034211 1.034211 16.8823588 16.8823588
1.026047 1.026047 4.4984394 4.4984394
1.020188 1.020188 0.4341453 0.4341453
1.016259 1.016259 0.0418994 0.0418994

So, ok, we reproduced Mack’s result in a new model. But under wich hypohtesis ? I see there linear models, that require generaly gaussian error, so some law hypothesis, right ?

The hypothesis we used are :

  • \((H1**)\) : The lines are independants
  • \((H2**)\) : \(\exists\, \mathbf{f}\text{ and }\mathbb{\sigma} \text{ such that } \forall i,j,\, F_{i,j} |\, w_{i,j} \sim \mathcal{N}(f_j, \frac{\sigma_j^2}{w_{i,j}})\)

Well, if we forget about the law assumption and only use quasi-glm (see, once again, McCullagh and Nelder (1989)), thoose are mack hypothesis.

Therefore, Mack’s model is a Quasi-glm, conditional, and weighted, with a normal-like variance assumption.

Some remarks :

  • Note that we playe a little with degree of freedom : Since we are estimating the \(\sigma\)’s after the \(f\)’s, we should take into account that \(n-1\) parameters are already estimated. This is classical in the joint modeling process.
  • Furthermore, the joint modeling process gives the choice of residuals (pearson residuals or deviance contribution), but in a the normal case they are equal.
  • Last but not least, the accointance for the kurtosis is not necessary here beacause of the normal variance assumption.

if you wanna try on your own triangle, feel free to download the gist i made with a check_model function.

So what ? Ok, Mack’s model is a Glm, and what ? Well, the categorisation of this classical hypothesis set as a GLM allows several things :

  • The use of standard statistiqcal tools : cook’s distance, residual analysis, etc…
  • The use of standard software : R’s glm function is probably more safe than ChainLadder’s specific function.
  • The simplicity of extention : The bornhutter-fergusson extension, e.g, can be easily introduced in the modelisation within a GLM framework, it’s harder within mack’s framework.

Next time, i’ll continue my analysis of Mack model by talking about one year risk and the Merz-wuthrich principles in this quasi-glm framwork.

References :

England, P. D., and R. J. Verrall. 2002. “Stochastic Claims Reserving in General Insurance.” British Actuarial Journal 8 (03): 443–518. https://doi.org/10/csqxh7.

Gesmann, Markus. 2009. “London R-User Group Meeting Claims Reserving in R the ChainLadder Package,” March, 35.

Mack, Thomas. 1991. “A Simple Parametric Model for Rating Automobile Insurance or Estimating IBNR Claims Reserves.” ASTIN Bulletin 21 (01): 93–109. https://doi.org/10.2143/AST.21.1.2005403.

McCullagh, P, and J. A Nelder. 1989. Generalisez Linear Models.

Oskar Laverny
Oskar Laverny
Maître de Conférence

What would be the dependence structure between quality of code and quantity of coffee ?

comments powered by Disqus