--- title: "Computational details of demographic functions" author: "C. Dutang and G.A. Spedicato" date: "`r format(Sys.time(), '%d %B, %Y')`" output: rmarkdown::html_vignette bibliography: lifecontingenciesBiblio.bib vignette: > %\VignetteIndexEntry{Computational details of demographic functions} %!\VignetteEncoding{UTF-8} \usepackage[utf8]{inputenc} %\VignetteEngine{knitr::rmarkdown} --- ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE, collapse = TRUE, comment = "#>") ``` # 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 ```{r} 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 ```{r} 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 ```{r} x <- 135:145 #high-age cbind(x=x, pxtvect(soa08Act, x=x, t=1), pXt(object=soa08Act, x=x, t=1)) ```