Reinterpreting Lee-Carter Mortality Model

Last week, while I was giving my crash course on R for insurance, we’ve been discussing possible extensions of Lee & Carter (1992) model. If we look at the seminal paper, the model is defined as follows

Hence, it means that https://latex.codecogs.com/gif.latex?\mathbb{E}[\log%20\mu_{x,t}]%20=\alpha_x+\beta_x\cdot%20\kappa_t This would be a (non)linear model on the logarithm of the mortality rate. A non-equivalent, but alternative expression might be

https://latex.codecogs.com/gif.latex?\log\mathbb{E}[%20\mu_{x,t}]%20=\alpha_x+\beta_x\cdot%20\kappa_t

which could be obtained as a Gaussian model, with a log-link function https://latex.codecogs.com/gif.latex?%20\mu_{x,t}\sim{\mathcal{N}(e^{\alpha_x+\beta_x\cdot%20\kappa_t},\sigma^2) Actually, this model can be compared to the more popular one, introduced in 2002 by Natacha Brouhns, Michel Denuit and Jeroen Vermunt, where a Poisson regression is used to count deaths (with the exposure used as an offset variable) https://latex.codecogs.com/gif.latex?%20D_{x,t}\sim{\mathcal{P}(E_{x,t}\cdot%20e^{\alpha_x+\beta_x\cdot%20\kappa_t}) On our datasets

EXPO <- read.table(
  "http://freakonometrics.free.fr/Exposures-France.txt",
  header=TRUE,skip=2)
DEATH <- read.table(
  "http://freakonometrics.free.fr/Deces-France.txt",
  header=TRUE,skip=0) ### !!!! 0
base=data.frame(
  D=DEATH$Total,
  E=EXPO$Total,
  X=as.factor(EXPO$Age),
  T=as.factor(EXPO$Year))
library(gnm)
listeage=c(101:109,"110+")
sousbase=base[! base$X %in% listeage,]
 # on met des nombres car il faut calculer T-X
sousbase$X=as.numeric(as.character(sousbase$X))
sousbase$T=as.numeric(as.character(sousbase$T))
sousbase$C=sousbase$T-sousbase$X
sousbase$E=pmax(sousbase$E,sousbase$D)

The codes to fit those models are the following

LC.gauss <- gnm(D/E~
     as.factor(X)+
     Mult(as.factor(X),as.factor(T)),
     family=gaussian(link="log"),
     data=sousbase)

LC.gauss.2 <- gnm(log(D/E)~
      as.factor(X)+
      Mult(as.factor(X),as.factor(T)),
      family=gaussian(link="identity"),
      data=sousbase)

while for the Poisson regression is

LC.poisson <- gnm(D~offset(log(E))+
   as.factor(X)+
   Mult(as.factor(X),as.factor(T)),
   family=poisson(link="log"),
   data=sousbase)

To visualize the first component, the https://latex.codecogs.com/gif.latex?\alpha_x‘s, use

alphaG=coefficients(LC.gauss)[1]+c(0,
coefficients(LC.gauss)[2:101])
s=sd(residuals(LC.gauss.2))

alphaG2=coefficients(LC.gauss.2)[1]+c(0,
coefficients(LC.gauss.2)[2:101])

alphaGw=coefficients(LC.gauss.w)[1]+c(0,
coefficients(LC.gauss.w)[2:101])

We can then plot them

plot(0:100,alphaP,col="black",type="l",
xlab="Age")
lines(0:100,alphaG,col="blue")
legend(0,-1,c("Poisson","Gaussian"),
lty=1,col=c("black","blue"))

On small probabilities, the difference can be considered as substential. But for elderly, it seems that the difference is rather small. Now, the problem with a Poisson model is that it might generate a lot of deaths. Maybe more than the exposure actually. A natural idea is to consider a binomial model (which is a standard model in actuarial textbooks)

https://latex.codecogs.com/gif.latex?D_{x,t}\sim\mathcal{B}\left(E_{x,t},\frac{e^{\alpha_x+\beta_x\cdot\kappa_t}}{1+e^{\alpha_x+\beta_x\cdot\kappa_t}}\right)

The codes to run that (non)linear regression would be

LC.binomiale <- gnm(D/E~
    as.factor(X)+
    Mult(as.factor(X),as.factor(T)),
    weights=E,
    family=binomial(link="logit"),
    data=sousbase)

One more time, we can visualize the series of https://latex.codecogs.com/gif.latex?\alpha_x‘s.

alphaB=coefficients(LC.binomiale)[1]+c(0,
coefficients(LC.binomiale)[2:101])

Here, the difference is only on old people. For small probabilities, the binomial model can be approximated by a Poisson model. Which is what we observe. On elderly people, there is a large difference, and the Poisson model underestimates the probability of dying. Which makes sense, actually, since the number of deaths has to be smaller than the exposure. A Poisson model with a large parameter will have a (too) large variance. So the model will underestimate the probability. This is what we observe on the right. It is clearly a more realistic fit.


10 thoughts on “Reinterpreting Lee-Carter Mortality Model”

  1. Hi Professor.
    I am trying to understand the differences between DEATH and EXPO tables. And If I pressume that that DEATH contains the number of deaths according to age, sex and total from sex, what does the EXPO contains? Cannot understand why the values are float numbers and what do they indicate?

    Thank you in advance

  2. hi prof. i would like to know how in this code i have to do to change years of forecast, because of i have a similar data-set which deal about DEATH and EXPOSURE and i have to interpolate data and do forecasts with Lee-Carter model.

  3. I want to apply Lee-Carter model to forecast mortality rate of lung cancer . The data I collectedfrom 2008 to 2014. but it has unequal intervals of age group and open last interval (0-4,5-14,15-24,25-44,45+).
    I will be grateful if you tell me how can I apply the Lee carter model on this data.

  4. hallo the LC.gauss.w var just appears without substantation, and in the text “invalid equation” also appears. Please explain.

    1. there was a typo in LaTeX… I need to fix it… should have been

      $D_{x,t}\sim\mathcal{B}\left(E_{x,t},\frac{e^{\alpha_x+\beta_x\cdot\kappa_t}}{1+e^{\alpha_x+\beta_x\cdot\kappa_t}}\right)$

  5. Hi prof. First of all I would like to say that ur page is quite help me. Currently, I am a Master student at University in Malaysia. Im doing my thesis on study of Malaysia mortality rate by using poisson log bilinear model. Prof, can u help me? I would like to know what are the disadvantages of this model since my supervisor ask me to include it in my proposal. Thank you so much..

Leave a Reply to Fatin Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.