Parametric Mortality Models
Introduction
Parametric mortality models are not collections of annual rates, but rather construct a mathematical representation of a mortality curve.
They are often used underlying traditional table construction, but are converted to a list of annual rates for convenience in practice. MortalityTables.jl provides them and are essentially interchangeable versus the traditional table structure in most use cases.
Many of these models were adapted from the MortalityLaws R package, by Marius Pascariu & Vladimir Canudas-Romo.
Usage Example
Use like so:
a = 0.0002
b = 0.13
c = 0.001
m = MortalityTables.Makeham(a=a,b=b,c=c)
g = MortalityTables.Gompertz(a=a,b=b)Now some examples with m, but could use g interchangeably:
age = 20
hazard(m,20) # the force of mortality at age 20 (equivalently `m(20)`)
decrement(m,20,25) # the five year cumulative mortality rate
survival(m,20,25) # the five year survival rateOther notes
- Because of the large number of models and the likelihood for overlap with other things (e.g.
QuadraticorWeibullwould be expected to be found in other contexts as well), these models are not exported from the package (exceptMakehamandGompertz), so you need to call them by prefixing withMortalityTables.- e.g. :
MortalityTables.Kostaki()
- e.g. :
- Because of the large number of parameters for the models, the arguments are keyword rather than positional:
MortalityTables.Gompertz(a=0.01,b=0.2) - Keywords with Unicode names also accept ASCII spellings:
sigmaforσ,gammaforγ,v0forv₀, anda0toa3fora₀toa₃. Passing both spellings of one keyword is anArgumentError. - The alternative Makeham/Gompertz models also accept
muforμ; the Carrière models acceptp1,p2,mu1tomu3, andsigma1tosigma3. - The models have default values, so they can be called without args like this:
MortalityTables.Gompertz().- See the help text for what the default values are:
?Gompertz
- See the help text for what the default values are:
Functions
Every model defines its hazard. cumhazard, survival and decrement follow from it, and MortalityTables integrates the hazard numerically for a model without a closed-form cumhazard.
MortalityTables.hazard — Function
hazard(model,age)The force of mortality at age: the density of the age at death divided by the probability of surviving to age, $\mu_x = f(x)/S(x) = -S'(x)/S(x)$.
Every parametric law implements hazard; cumhazard, survival, and decrement follow from it.
MortalityTables.cumhazard — Function
cumhazard(model,age)
cumhazard(model,from_age,to_age)The integrated hazard up to age, $H(x) = \int_0^x \mu_s \, ds$, equivalently $-\log S(x)$, so that survival(model, age) == exp(-cumhazard(model, age)). The two-age form integrates from from_age to to_age: $-\log(S(\text{to})/S(\text{from}))$.
The generic method integrates hazard numerically from age zero. A law may override the one-argument form with a closed-form expression; the two-age form is the difference of the one-argument form, so a closed form is used automatically wherever it exists.
MortalityTables.μ — Function
μ(model,age)$\mu_x$: the force of mortality at age. An alias for hazard.
Also see survival and decrement.
Alternative parameterizations and survival mixtures
Makeham2 and Gompertz2 describe the Gompertz component using a location μ and a scale σ. They are equivalent to the existing laws with a = exp(-μ/σ)/σ and b = 1/σ. They retain the location and scale directly so that an underflowed coefficient a does not erase mortality near age μ.
using MortalityTables
g = MortalityTables.Gompertz2(mu = 88, sigma = 9.5)
(hazard(g, 80), decrement(g, 80, 81))(0.045347643704993175, 0.04669497402822671)Carriere1 mixes Weibull, inverse-Weibull, and Gompertz survival functions. Carriere2 substitutes inverse Gompertz for the middle component. The initial weights are p₁, p₂, and 1-p₁-p₂; each component's survival at age zero is one. These are mixtures of populations with different lifetimes: the hazard at an attained age weights the component hazards by the population still surviving at that age.
m = MortalityTables.Carriere1(p1 = 0.003, p2 = 0.007, sigma2 = 6)
ages = [20.0, 40.0, 60.0, 80.0]
(hazards = hazard.(m, ages), annual_decrements = decrement.(m, ages, ages .+ 1))(hazards = [0.00013739412326990252, 0.000694207555793018, 0.005526653379153184, 0.04524143816148945], annual_decrements = [0.0001401438813063514, 0.0007301947270610998, 0.0058101950674774505, 0.04658508501290114])The force of mortality hazard(m, age) is instantaneous; decrement(m, age, age + 1) is the one-year probability of death conditional on survival to age. cumhazard, interval survival, and interval decrements use the same continuous law, including at fractional ages.
Carrière weights must be nonnegative and sum to at most one for the first two components. Zero weights are supported. Locations and scales must be finite and positive; invalid inputs raise an ArgumentError. A negative age raises a DomainError. There is no clipping of weights or survival probabilities.
At age zero, an active Weibull component with μ₁ < σ₁ gives an infinite hazard, while survival is exactly one and cumulative hazard is zero. This singularity is integrable. The default Carriere1 also has an infinite mean lifetime because its inverse-Weibull component has μ₂/σ₂ ≤ 1; use parameters with μ₂/σ₂ > 1 or set p₂ = 0 when a finite mean is needed. Carriere2 has a finite mean for all allowed parameters.
The defaults are inherited from MortalityLaws and are examples rather than a calibrated mortality table. In particular, the default Carriere1 hazard declines sharply at old ages as inverse-Weibull survivors dominate.
Carriere1 uses σ₂ for the inverse-Weibull component. Older MortalityLaws implementations used σ₁ and ignored σ₂, before the v2.3.0 development correction. Parameters fitted with that older formula generally need refitting. MortalityLaws' reported hazards are finite differences of cumulative hazard; hazard here is the instantaneous force.
The zero-age limits above apply to ordinary numeric ages. ForwardDiff age derivatives at exactly zero are not reliable for InverseWeibull or the Carrière mixtures. They can return NaN where the right-hand derivative is finite, or where it is +Inf because of a singular Weibull component. The latter affects both default mixtures, including Carriere2, which has no inverse-Weibull component. These cases are tracked in #157.
Available Models
These models are subtypes of ParametricMortality:
MortalityTables.Makeham — Type
Makeham(;a,b,c)Construct a mortality model following Makeham's law.
$\mathrm{hazard} \left( {\rm age} \right) = ae^{bx} + c$
Default args:
a = 0.0002
b = 0.13
c = 0.001MortalityTables.Gompertz — Function
Gompertz(;a,b)Construct a mortality model following Gompertz' law of mortality.
$\mathrm{hazard} \left( {\rm age} \right) = ae^{bx}$
This is a special case of Makeham's law and will Makeham model where c=0.
Default args:
a = 0.0002
b = 0.13MortalityTables.Makeham2 — Type
Makeham2(; μ=49, σ=7.692308, c=0.001)Makeham's law in location/scale parameters, with force of mortality $h(x) = e^{(x-μ)/σ}/σ + c$. It is equivalent to Makeham(a=exp(-μ/σ)/σ, b=1/σ, c=c).
μ must be finite, σ finite and positive, and c finite and nonnegative. mu and sigma are ASCII aliases for μ and σ; passing both spellings of a keyword is an ArgumentError. Ages must be nonnegative.
The location and scale are retained as fields: transforming them to a and b can underflow a even when mortality near age μ is representable.
MortalityTables.Gompertz2 — Function
Gompertz2(; μ=49, σ=7.7)Gompertz's law in location/scale parameters, with force of mortality $h(x) = e^{(x-μ)/σ}/σ$. Returns a Makeham2 with c=0, equivalent to Gompertz(a=exp(-μ/σ)/σ, b=1/σ). mu and sigma are ASCII keyword aliases.
MortalityTables.Carriere1 — Type
Carriere1(; p₁=0.003, p₂=0.007, μ₁=2.7, μ₂=3, μ₃=88, σ₁=15, σ₂=6, σ₃=9.5)Carrière's three-component survival mixture: Weibull, inverse Weibull, and Gompertz. For weights $w = (p₁, p₂, 1-p₁-p₂)$ and component survival functions $S_i$,
\[S(x) = \sum_{i=1}^3 w_i S_i(x), \qquad H(x) = -\log S(x), \qquad h(x) = \frac{\sum_{i=1}^3 w_i S_i(x) h_i(x)}{S(x)}.\]
The components are Weibull(m=μ₁, σ=σ₁), InverseWeibull(m=μ₂, σ=σ₂), and Gompertz2(μ=μ₃, σ=σ₃). Each is normalized to survival one at age zero. The hazard is an instantaneous force, not an annual mortality probability; use decrement(model, age, age + 1) for the latter.
Weights must be nonnegative with p₁ + p₂ ≤ 1; zero weights are allowed. All locations and scales must be finite and positive. Ages must be nonnegative. The hazard at zero is infinite when p₁ > 0 and μ₁ < σ₁ (an integrable Weibull singularity); survival there is one. The inverse-Weibull tail gives an infinite mean lifetime when p₂ > 0 and μ₂/σ₂ ≤ 1, as with the defaults. The defaults are inherited from MortalityLaws, not a calibrated mortality table: their hazard declines sharply at old ages as inverse-Weibull survivors dominate.
This implementation uses σ₂ for the inverse-Weibull component, following Carrière's paper. Older MortalityLaws implementations used σ₁ there and ignored σ₂; that wiring was corrected in MortalityLaws' v2.3.0 development commit 8f13abb. Parameters fitted with the older formula generally need refitting before use here. MortalityLaws also reports finite differences of cumulative hazard, whereas hazard here is the instantaneous force.
The zero-age limits above apply to ordinary numeric ages. ForwardDiff age derivatives at exactly zero are not reliable for InverseWeibull or the Carrière mixtures. They can return NaN where the right-hand derivative is finite, or where it is +Inf because of a singular Weibull component (as in both mixtures' defaults, including Carriere2, which has no inverse-Weibull component).
ASCII aliases are p1, p2, mu1 to mu3, and sigma1 to sigma3. Passing both spellings of a keyword is an ArgumentError.
See Carrière (1992), Parametric Models for Life Tables, Transactions of the Society of Actuaries 44, 77–99, and the MortalityLaws implementation.
MortalityTables.Carriere2 — Type
Carriere2(; p₁=0.01, p₂=0.01, μ₁=1, μ₂=49, μ₃=49, σ₁=2, σ₂=7, σ₃=7)Carrière's survival mixture of Weibull(m=μ₁, σ=σ₁), InverseGompertz(m=μ₂, σ=σ₂), and Gompertz2(μ=μ₃, σ=σ₃). With $w = (p₁,p₂,1-p₁-p₂)$, $S = ∑ᵢ wᵢ Sᵢ$, $H = -log(S)$, and $h = (∑ᵢ wᵢ Sᵢ hᵢ)/S$. Each component is normalized at age zero.
Parameter validation, ASCII keyword aliases, and the hazard's limit at age zero are as for Carriere1. Unlike Carriere1, this mixture has a finite mean lifetime for every allowed parameter set.
MortalityTables.InverseGompertz — Type
InverseGompertz(;m,σ)Construct a mortality model following InverseGompertz's law.
\[\begin{aligned} \mathrm{hazard} \left( {\rm age} \right) &= \frac{1}{\sigma} \cdot \frac{e^{\frac{ - \left( {\rm age} - m \right)}{\sigma}}}{e^{e^{\frac{ - \left( {\rm age} - m \right)}{\sigma}}} - 1} \\ \mathrm{survival} \left( {\rm age} \right) &= \frac{1 - e^{ - e^{\frac{ - \left( {\rm age} - m \right)}{\sigma}}}}{1 - e^{ - e^{\frac{m}{\sigma}}}} \end{aligned}\]
sigma is an ASCII alias for σ.
Default args:
m = 49
σ = 7.7MortalityTables.Opperman — Type
Opperman(;a,b,c)Construct a mortality model following Opperman's law of mortality.
$\mathrm{hazard} \left( {\rm age} \right) = \max\left( \frac{a}{\sqrt{{\rm age} + 1}} - b + c \cdot \sqrt{{\rm age} + 1}, 0 \right)$
Default args:
a = 0.04
b = 0.0004
c = 0.001MortalityTables.Thiele — Type
Thiele(;a,b,c,d,e,f,g)Construct a mortality model following Thiele's law of mortality.
\[\begin{aligned} \mu_1 &= a \cdot \exp\left( -b \cdot {\rm age} \right) \\ \mu_2 &= c \cdot \exp\left( -\frac{d}{2} \left( {\rm age} - e \right)^{2} \right) \\ \mu_3 &= f \cdot \exp\left( g \cdot {\rm age} \right) \\ \mathrm{hazard} \left( {\rm age} \right) &= \begin{cases} \mu_1 + \mu_3 & \text{if } \left( {\rm age} = 0 \right)\\ \mu_1 + \mu_2 + \mu_3 & \text{otherwise} \end{cases} \end{aligned}\]
Default args:
a = 0.02474
b = 0.3
c = 0.004
d = 0.5
e = 25
f = 0.0001
g = 0.13MortalityTables.Wittstein — Type
Wittstein(;a,b,m,n)Construct a mortality model following Wittstein's law of mortality.
$\mathrm{hazard} \left( {\rm age} \right) = \frac{1}{b} \cdot a^{ - \left( b \cdot {\rm age} \right)^{n}} + a^{ - \left( m - {\rm age} \right)^{n}}$
Default args:
a = 1.5
b = 1.
n = 0.5
m = 100The law is defined up to age m, which omega returns. An age past m is a DomainError.
MortalityTables.Weibull — Type
Weibull(;m,σ)Construct a mortality model following Weibull's law of mortality.
Note that if σ > m, then the mode of the density is 0 and hx is a non-increasing function of x, while if σ < m, then the mode is greater than 0 and hx is an increasing function.
m >0is a measure of locationσ >0is measure of dispersion
\[\begin{aligned} \mathrm{hazard} \left( {\rm age} \right) = \frac{1}{\sigma} \cdot \left( \frac{{\rm age}}{m} \right)^{\frac{m}{\sigma} - 1} \\ \mathrm{cumhazard} \left( {\rm age} \right) = \left( \frac{{\rm age}}{m} \right)^{\frac{m}{\sigma}} \\ \mathrm{survival} \left( {\rm age} \right) = e^{ - \mathrm{cumhazard} \left( {\rm age} \right)} \end{aligned}\]
sigma is an ASCII alias for σ.
Default args:
m = 1
σ = 2MortalityTables.InverseWeibull — Type
InverseWeibull(;m,σ)Construct a mortality model following the Inverse-Weibull law of mortality.
The Inverse-Weibull proves useful for modelling the childhood and teenage years, because the logarithm of h(x) is a concave function.
m >0is a measure of locationσ >0is measure of dispersion
\[\begin{aligned} \mathrm{hazard} \left( {\rm age} \right) &= \frac{\frac{1}{\sigma} \cdot \left( \frac{{\rm age}}{m} \right)^{\frac{ - m}{\sigma} - 1}}{e^{\left( \frac{{\rm age}}{m} \right)^{\frac{ - m}{\sigma}}} - 1} \\ \mathrm{cumhazard}\left( {\rm age} \right) &= - \log\left( 1 - e^{ - \left( \frac{{\rm age}}{m} \right)^{\frac{ - m}{\sigma}}} \right) \\ \mathrm{survival}\left( {\rm age} \right) &= e^{ - \mathrm{cumhazard}\left( {\rm age} \right)} \end{aligned}\]
sigma is an ASCII alias for σ.
Default args:
m = 5
σ = 10MortalityTables.Perks — Type
Perks(;a,b,c,d)Construct a mortality model following Perks' law of mortality.
$\mathrm{hazard} \left( {\rm age} \right) = \frac{a + b \cdot c^{{\rm age}}}{b \cdot c^{ - {\rm age}} + 1 + d \cdot c^{{\rm age}}}$
Default args:
a = 0.002
b = 0.13
c = 0.01
d = 0.01MortalityTables.VanderMaen — Type
VanderMaen(;a,b,c,i,n)Construct a mortality model following VanderMaen's law of mortality.
$\mathrm{hazard} \left( {\rm age} \right) = a + b \cdot {\rm age} + c \cdot {\rm age}^{2} + \frac{i}{n - {\rm age}}$
Default args:
a = 0.01
b = 1
c = 0.01
i = 100
n = 200The law is defined up to age n, where the hazard has a pole; omega returns n. An age past n is a DomainError.
MortalityTables.VanderMaen2 — Type
VanderMaen2(;a,b,i,n)Construct a mortality model following VanderMaen2's law of mortality.
$\mathrm{hazard} \left( {\rm age} \right) = a + b \cdot {\rm age} + \frac{i}{n - {\rm age}}$
Default args:
a = 0.01
b = 1
i = 100
n = 200The law is defined up to age n, where the hazard has a pole; omega returns n. An age past n is a DomainError.
MortalityTables.StrehlerMildvan — Type
StrehlerMildvan(;k,v₀,b,d)Construct a mortality model following StrehlerMildvan's law of mortality.
$\mathrm{hazard} \left( {\rm age} \right) = k \cdot e^{\frac{\left( - v_0 \right) \cdot \left( 1 - b \cdot {\rm age} \right)}{d}}$
v0 is an ASCII alias for v₀.
Default args:
k = 0.01
v₀ = 2.5
b = 0.2
d = 6.0MortalityTables.Beard — Type
Beard(;a,b,k)Construct a mortality model following Beard's law of mortality.
$\mathrm{hazard} \left( {\rm age} \right) = \frac{a \cdot e^{b \cdot {\rm age}}}{1 + k \cdot a \cdot e^{b \cdot {\rm age}}}$
Default args:
a = 0.002
b = 0.13
k = 1.MortalityTables.MakehamBeard — Type
MakehamBeard(;a,b,c,k)Construct a mortality model following MakehamBeard's law of mortality.
$\mathrm{hazard} \left( {\rm age} \right) = \frac{a \cdot e^{b \cdot {\rm age}}}{1 + k \cdot a \cdot e^{b \cdot {\rm age}}} + c$
Default args:
a = 0.002
b = 0.13
c = 0.01
k = 1.MortalityTables.Quadratic — Type
Quadratic(;a,b,c)Construct a mortality model following Quadratic law of mortality.
$\mathrm{hazard} \left( {\rm age} \right) = a + b \cdot {\rm age} + c \cdot {\rm age}^{2}$
Default args:
a = 0.01
b = 1.
c = 0.01MortalityTables.GammaGompertz — Type
GammaGompertz(;a,b,γ)Construct a mortality model following GammaGompertz law of mortality.
$\mathrm{hazard} \left( {\rm age} \right) = \frac{a \cdot e^{b \cdot {\rm age}}}{1 + \frac{a \cdot \gamma}{b} \cdot \left( e^{b \cdot {\rm age}} - 1 \right)}$
gamma is an ASCII alias for γ.
Default args:
a = 0.002
b = 0.13
γ = 1MortalityTables.Siler — Type
Siler(;a,b,c,d,e)Construct a mortality model following Siler law of mortality.
$\mathrm{hazard} \left( {\rm age} \right) = a \cdot \exp\left( -b \cdot {\rm age} \right) + c + d \cdot \exp\left( e \cdot {\rm age} \right)$
Default args:
a = 0.0002
b = 0.13
c = 0.001
d = 0.001
e = 0.013MortalityTables.HeligmanPollard — Type
HeligmanPollard(;a,b,c,d,e,f,g,h)Construct a mortality model following HeligmanPollard law of mortality with 8 parameters.
\[\begin{aligned} \mu_1 &= a^{\left( {\rm age} + b \right)^{c}} + g \cdot h^{{\rm age}} \\ \mu_2 &= d \cdot \exp\left( -e \cdot \left( \log\left( \frac{{\rm age}}{f} \right) \right)^{2} \right) \\ \eta &= \begin{cases} \mu_1 & \text{if } \left( {\rm age} = 0 \right)\\ \mu_1 + \mu_2 & \text{otherwise} \end{cases} \\ \mathrm{hazard}\left( {\rm age} \right) &= \frac{\eta}{1 + \eta} \end{aligned}\]
Default args:
a = .0005
b = .004
c = .08
d = .001
e = 10
f = 17
g = .00005
h = 1.1MortalityTables.HeligmanPollard2 — Type
HeligmanPollard2(;a,b,c,d,e,f,g,h)Construct a mortality model following HeligmanPollard (alternate) law of mortality with 8 parameters.
\[\begin{aligned} \mu_1 &= a^{\left( {\rm age} + b \right)^{c}} + \frac{g \cdot h^{{\rm age}}}{1 + g \cdot h^{{\rm age}}} \\ \mu_2 &= d \cdot \exp\left( -e \cdot \left( \log\left( \frac{{\rm age}}{f} \right) \right)^{2} \right) \\ \mathrm{hazard}\left( {\rm age} \right) &= \begin{cases} \mu_1 & \text{if } \left( {\rm age} = 0 \right)\\ \mu_1 + \mu_2 & \text{otherwise} \end{cases} \end{aligned}\]
Default args:
a = .0005
b = .004
c = .08
d = .001
e = 10
f = 17
g = .00005
h = 1.1MortalityTables.HeligmanPollard3 — Type
HeligmanPollard3(;a,b,c,d,e,f,g,h,k)Construct a mortality model following HeligmanPollard (alternate) law of mortality with 9 parameters.
\[\begin{aligned} \mu_1 &= a^{\left( {\rm age} + b \right)^{c}} + \frac{g \cdot h^{{\rm age}}}{1 + k \cdot g \cdot h^{{\rm age}}} \\ \mu_2 &= d \cdot \exp\left( -e \cdot \left( \log\left( \frac{{\rm age}}{f} \right) \right)^{2} \right) \\ \mathrm{hazard}\left( {\rm age} \right) &= \begin{cases} \mu_1 & \text{if } \left( {\rm age} = 0 \right)\\ \mu_1 + \mu_2 & \text{otherwise} \end{cases} \end{aligned}\]
Default args:
a = .0005
b = .004
c = .08
d = .001
e = 10
f = 17
g = .00005
h = 1.1
k= 1.MortalityTables.HeligmanPollard4 — Type
HeligmanPollard4(;a,b,c,d,e,f,g,h,k)Construct a mortality model following HeligmanPollard (alternate) law of mortality with 9 parameters.
\[\begin{aligned} \mu_1 &= a^{\left( {\rm age} + b \right)^{c}} + \frac{g \cdot h^{{\rm age}^{k}}}{1 + g \cdot h^{{\rm age}^{k}}} \\ \mu_2 &= d \cdot \exp\left( -e \cdot \left( \log\left( \frac{{\rm age}}{f} \right) \right)^{2} \right) \\ \mathrm{hazard}\left( {\rm age} \right) &= \begin{cases} \mu_1 & \text{if } \left( {\rm age} = 0 \right)\\ \mu_1 + \mu_2 & \text{otherwise} \end{cases} \end{aligned}\]
Default args:
a = .0005
b = .004
c = .08
d = .001
e = 10
f = 17
g = .00005
h = 1.1
k= 1.MortalityTables.RogersPlanck — Type
RogersPlanck(;a₀, a₁, a₂, a₃, a, b, c, d, u)Construct a mortality model following RogersPlanck law of mortality.
$\mathrm{hazard}\left( {\rm age} \right) = a_0 + a_1 \cdot e^{\left( - a \right) \cdot {\rm age}} + a_2 \cdot e^{b \cdot \left( {\rm age} - u \right) - e^{\left( - c \right) \cdot \left( {\rm age} - u \right)}} + a_3 \cdot e^{d \cdot {\rm age}}$
a0, a1, a2 and a3 are ASCII aliases for a₀, a₁, a₂ and a₃.
Default args:
a₀ = 0.0001
a₁ = 0.02
a₂ = 0.001
a₃ = 0.0001
a = 2.
b = 0.001
c = 100.
d = 0.1
u = 0.33MortalityTables.Martinelle — Type
Martinelle(;a,b,c,d,k)Construct a mortality model following Martinelle's law of mortality.
$\mathrm{hazard}\left( {\rm age} \right) = \frac{a \cdot e^{b \cdot {\rm age}} + c}{1 + d \cdot e^{b \cdot {\rm age}}} + k \cdot e^{b \cdot {\rm age}}$
Default args:
a = 0.001
b = 0.13
c = 0.001
d = 0.1
k = 0.001MortalityTables.Kostaki — Type
Kostaki(;a,b,c,d,e1,e2,f,g,h)Construct a mortality model following Kostaki's law of mortality. A nine-parameter adaptation of HeligmanPollard.
\[\begin{aligned} \mu_1 &= a^{\left( {\rm age} + b \right)^{c}} + g \cdot h^{{\rm age}} \\ \mu_2 &= \begin{cases} d \cdot e^{ - \left( e1 \cdot \log\left( \frac{{\rm age}}{f} \right) \right)^{2}} & \text{if } \left( {\rm age} \leq f \right)\\ d \cdot e^{ - \left( e2 \cdot \log\left( \frac{{\rm age}}{f} \right) \right)^{2}} & \text{otherwise} \end{cases} \\ \eta &= \begin{cases} \mu_1 & \text{if } \left( {\rm age} = 0 \right)\\ \mu_1 + \mu_2 & \text{otherwise} \end{cases} \\ \mathrm{hazard}\left( {\rm age} \right) &= \frac{\eta}{1 + \eta} \end{aligned}\]
Default args:
a = 0.0005
b = 0.01
c = 0.10
d = 0.001
e1 = 3.
e2 = 0.1
f = 25.
g = .00005
h = 1.1Kostaki, A. (1992). A nine‐parameter version of the Heligman‐Pollard formula. Mathematical Population Studies, 3(4), 277–288. doi:10.1080/08898489209525346
MortalityTables.Kannisto — Type
Kannisto(;a,b)Construct a mortality model following Kannisto's law of mortality.
\[\begin{aligned} \mathrm{hazard}\left( {\rm age} \right) &= \frac{a \cdot e^{b \cdot {\rm age}}}{1 + a \cdot e^{b \cdot {\rm age}}} \\ \mathrm{cumhazard}\left( {\rm age} \right) &= \frac{1}{b} \log\left( \frac{1 + a \cdot e^{b \cdot {\rm age}}}{1 + a} \right) \\ \mathrm{survival}\left( {\rm age} \right) &= e^{ - \mathrm{cumhazard}\left( m, {\rm age} \right)} \end{aligned}\]
Default args:
a = 0.5
b = 0.13MortalityTables.KannistoMakeham — Type
KannistoMakeham(;a,b,c)Construct a mortality model following KannistoMakeham's law of mortality.
$\mathrm{hazard}\left( {\rm age} \right) = \frac{a \cdot e^{b \cdot {\rm age}}}{1 + a \cdot e^{b \cdot {\rm age}}} + c$
Default args:
a = 0.5
b = 0.13
c = 0.001