Computational details of demographic functions"

knitr::opts_chunk$set(echo = TRUE)

Survival probabilities

For notation details, see [@bowers1997actuarial].

Using the well-known relation ${}{s+u}p_y={}_up{y+s} \times {}sp_y$, we compute ${}_tp{x}$ as for all $x,t\in\mathbb R_+$ $$ {}tp{x} = \frac{{}{t+\epsilon_x}p{\lfloor x\rfloor} }{{}{\epsilon_x}p{\lfloor x\rfloor}} = \frac{{}{\lfloor u\rfloor}p{\lfloor x\rfloor} \times {}{\epsilon_u}p{\lfloor x\rfloor+\lfloor u\rfloor} }{{}{\epsilon_x}p{\lfloor x\rfloor}} $$ with $\epsilon_x=x - \lfloor x\rfloor$, $u=t+\epsilon_x$ and $\epsilon_u=u-\lfloor u\rfloor$.

Then we estimate ${}np{m}$ as for all $n,m\in\mathbb N$ $$ {}np{m} = \frac{l_{n+m}}{l_m}. $$

We interpolate fractional age probabilities by three classical assumptions for all $y \in [0,1), m\in\mathbb N$ $$ {}{y}p{m} = \left{ \begin{array}{ll} 1 - y (1-p_{m}) & \text{if uniform distribution} \ (p_{m})^y & \text{if constant force} \ \frac{p_{m}}{1-(1-y)(1-p_{m})} & \text{if hyperbolic distribution} \ \end{array} \right. $$

Examples of non-integer times

library(lifecontingencies)
data("soa08Act")
pXt <- Vectorize(lifecontingencies:::pxtold, "x")
pxT <- Vectorize(lifecontingencies:::pxtold, "t")
pxtvect <- pxt

z <- 1:6/3
#non integer time
cbind(t=z, pxtvect(soa08Act, x=100, t=z, fractional = "lin"), pxT(object=soa08Act, x=100, t=z, fractional = "lin"))
cbind(t=z, pxtvect(soa08Act, x=100, t=z, fractional = "hyp"), pxT(object=soa08Act, x=100, t=z, fractional = "hyp"))
cbind(t=z, pxtvect(soa08Act, x=100, t=z, fractional = "exp"), pxT(object=soa08Act, x=100, t=z, fractional = "exp"))

Examples of non-integer ages

x <- 50+0:6/6
#non-integer age
cbind(x=x, pxtvect(soa08Act, x=x, t=1, fractional = "lin"), pXt(object=soa08Act, x=x, t=1, fractional = "lin"))
cbind(x=x, pxtvect(soa08Act, x=x, t=1, fractional = "hyp"), pXt(object=soa08Act, x=x, t=1, fractional = "hyp"))
cbind(x=x, pxtvect(soa08Act, x=x, t=1, fractional = "exp"), pXt(object=soa08Act, x=x, t=1, fractional = "exp"))

Examples of large ages

x <- 135:145
#high-age
cbind(x=x, pxtvect(soa08Act, x=x, t=1), pXt(object=soa08Act, x=x, t=1))


Try the lifecontingencies package in your browser

Any scripts or data that you put into this service are public.

lifecontingencies documentation built on March 6, 2019, 1:05 a.m.