fit_RH | R Documentation |
Carry out Bayesian estimation of the stochastic mortality model, the Renshaw-Haberman model (Renshaw and Haberman, 2006). Note that this model is equivalent to "M2" under the formulation of Cairns et al. (2009).
fit_RH(
death,
expo,
n_iter = 10000,
family = "nb",
share_alpha = FALSE,
share_beta = FALSE,
share_gamma = FALSE,
n.chain = 1,
thin = 1,
n.adapt = 1000,
forecast = FALSE,
h = 5,
quiet = FALSE
)
death |
death data that has been formatted through the function |
expo |
expo data that has been formatted through the function |
n_iter |
number of iterations to run. Default is |
family |
a string of characters that defines the family function associated with the mortality model. "poisson" would assume that deaths follow a Poisson distribution and use a log link; "binomial" would assume that deaths follow a Binomial distribution and a logit link; "nb" (default) would assume that deaths follow a Negative-Binomial distribution and a log link. |
share_alpha |
a logical value indicating if |
share_beta |
a logical value indicating if |
share_gamma |
a logical value indicating if the cohort parameter |
n.chain |
number of parallel chains for the model. |
thin |
thinning interval for monitoring purposes. |
n.adapt |
the number of iterations for adaptation. See |
forecast |
a logical value indicating if forecast is to be performed (default is |
h |
a numeric value giving the number of years to forecast. Default is |
quiet |
if TRUE then messages generated during compilation will be suppressed, as well as the progress bar during adaptation. |
The model can be described mathematically as follows:
If family="poisson"
, then
d_{x,t,p} \sim \text{Poisson}(E^c_{x,t,p} m_{x,t,p}) ,
\log(m_{x,t,p})=a_{x,p}+b_{x,p}k_{t,p} + \gamma_{c,p} ,
where c=t-x
is the cohort index,
d_{x,t,p}
represents the number of deaths at age x
in year t
of stratum p
,
while E^c_{x,t,p}
and m_{x,t,p}
represents respectively the corresponding central exposed to risk and central mortality rate at age x
in year t
of stratum p
.
Similarly, if family="nb"
, then a negative binomial distribution is fitted, i.e.
d_{x,t,p} \sim \text{Negative-Binomial}(\phi,\frac{\phi}{\phi+E^c_{x,t,p} m_{x,t,p}}) ,
\log(m_{x,t,p})=a_{x,p}+b_{x,p}k_{t,p} + \gamma_{c,p} ,
where \phi
is the overdispersion parameter. See Wong et al. (2018).
But if family="binomial"
, then
d_{x,t,p} \sim \text{Binomial}(E^0_{x,t,p} , q_{x,t,p}) ,
\text{logit}(q_{x,t,p})=a_{x,p}+b_{x,p}k_{t,p} + \gamma_{c,p} ,
where q_{x,t,p}
represents the initial mortality rate at age x
in year t
of stratum p
,
while E^0_{x,t,p}\approx E^c_{x,t,p}+\frac{1}{2}d_{x,t,p}
is the corresponding initial exposed to risk.
Constraints used are:
\sum_{x} b_{x,p} = 1, \sum_{t} k_{t,p} = 0, \sum_{c} \gamma_{c,p} = \sum_{c}c\gamma_{c,p} = 0 \text{\ \ \ for each stratum }p.
If share_alpha=TRUE
, then the additive age-specific parameter is the same across all strata p
, i. e.
a_{x}+b_{x,p}k_{t,p}+ \gamma_{c,p} .
Similarly if share_beta=TRUE
, then the multiplicative age-specific parameter is the same across all strata p
, i. e.
a_{x,p}+b_{x}k_{t,p}+ \gamma_{c,p} .
Similarly if share_gamma=TRUE
, then the cohort parameter is the same across all strata p
, i. e.
a_{x,p}+b_{x,p}k_{t,p}+ \gamma_{c} .
If forecast=TRUE
, then the following time series models are fitted on k_{t,p}
and \gamma_{c,p}
as follows:
k_{t,p} = \eta_1+\eta_2 t +\rho (k_{t-1,p}-(\eta_1+\eta_2 (t-1))) + \epsilon_{t,p} \text{ for }p=1,\ldots,P \text{ and } t=1,\ldots,T,
and
\gamma_{c,p} = \gamma_{c-1,p}+ \rho_\gamma (\gamma_{c-1,p}-\gamma_{c-2,p}) + \epsilon^\gamma_{c,p} \text{ for }p=1,\ldots,P \text{ and } c=3,\ldots,C,
\gamma_2=\gamma_1+\frac{1}{\sqrt{1-\rho_\gamma^2}}\epsilon^\gamma_{2,p},
\gamma_1=100\epsilon^\gamma_{1,p}
where \epsilon_{t,p}\sim N(0,\sigma_k^2)
for t=1,\ldots,T
, \epsilon^\gamma_{c,p}\sim N(0,\sigma_\gamma^2)
for c=1,\ldots,C
, while \eta_1,\eta_2,\rho,\sigma_k^2,\rho_\gamma,\sigma_\gamma^2
are additional parameters to be estimated.
Note that the forecasting models are inspired by Wong et al. (2023).
A list with components:
post_sample
An mcmc.list
object containing the posterior samples generated.
param
A vector of character strings describing the names of model parameters.
death
The death data that was used.
expo
The expo data that was used.
family
The family function used.
forecast
A logical value indicating if forecast has been performed.
h
The forecast horizon used.
Cairns, A. J. G., Blake, D., Dowd, K., Coughlan, G. D., Epstein, D., Ong, A., and Balevich, I. (2009). A Quantitative Comparison of Stochastic Mortality Models Using Data From England and Wales and the United States. North American Actuarial Journal, 13(1), 1–35. \Sexpr[results=rd]{tools:::Rd_expr_doi("https://doi.org/10.1080/10920277.2009.10597538")}
Renshaw, A. and S. Haberman (2006). A cohort-based extension to the Lee-Carter model for mortality reduction factors. Insurance: Mathematics and Economics, 38(3), 556-570. \Sexpr[results=rd]{tools:::Rd_expr_doi("https://doi.org/10.1016/j.insmatheco.2005.12.001")}
Jackie S. T. Wong, Jonathan J. Forster, and Peter W. F. Smith. (2018). Bayesian mortality forecasting with overdispersion, Insurance: Mathematics and Economics, Volume 2018, Issue 3, 206-221. \Sexpr[results=rd]{tools:::Rd_expr_doi("https://doi.org/10.1016/j.insmatheco.2017.09.023")}
Jackie S. T. Wong, Jonathan J. Forster, and Peter W. F. Smith. (2023). Bayesian model comparison for mortality forecasting, Journal of the Royal Statistical Society Series C: Applied Statistics, Volume 72, Issue 3, 566–586. \Sexpr[results=rd]{tools:::Rd_expr_doi("https://doi.org/10.1093/jrsssc/qlad021")}
#load and prepare mortality data
data("dxt_array_product");data("Ext_array_product")
death<-preparedata_fn(dxt_array_product,strat_name = c("ACI","DB","SCI"),ages=35:65)
expo<-preparedata_fn(Ext_array_product,strat_name = c("ACI","DB","SCI"),ages=35:65)
#fit the model (negative-binomial family)
#NOTE: This is a toy example, please run it longer in practice.
fit_RH_result<-fit_RH(death=death,expo=expo,n_iter=50,n.adapt=50)
head(fit_RH_result)
#if sharing the cohorts only (poisson family)
fit_RH_result2<-fit_RH(death=death,expo=expo,n_iter=1000,family="poisson",share_gamma=TRUE)
head(fit_RH_result2)
#if sharing all alphas, betas, and cohorts (poisson family)
fit_RH_result3<-fit_RH(death=death,expo=expo,n_iter=1000,family="poisson",
share_alpha=TRUE,share_beta=TRUE,share_gamma=TRUE)
head(fit_RH_result3)
#if forecast (negative-binomial family)
fit_RH_result4<-fit_RH(death=death,expo=expo,n_iter=1000,forecast=TRUE)
plot_rates_fn(fit_RH_result4)
plot_param_fn(fit_RH_result4)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.