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.


9 thoughts on “Reinterpreting Lee-Carter Mortality Model”

  1. 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.

  2. 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.

  3. 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)$

  4. 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

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