Derive Life Tables that Match Life Expectancies, using a Brass Logit Model
Source:R/ex_to_lifetab.R
ex_to_lifetab_brass.Rd
Turn life expectancies at birth into full life tables, using the Brass logit model. The method is simple and is designed for simulations or for settings with little or no data on age-specific mortality rates. In settings where data on age-specific mortality is available, other methods might be more appropriate.
Arguments
- target
A data frame containing a variable called
"ex"
, and possibly others. See Details.- standard
A data frame containing variables called
age
andlx
, and possibly others. See details.- infant, child, closed, open
Methods used to calculate life expectancy. See
lifetab()
for details.- radix
Initial population for the
lx
column in the derived life table(s). Default is100000
.- suffix
Optional suffix added to life table columns.
Method
The method implemented by ex_to_lifetab_brass()
is
based on the observation that, if populations A and B
are demographically similar, then, in many cases,
$$\text{logit}(l_x^{\text{B}}) \approx \alpha + \beta \text{logit}(l_x^{\text{A}})$$
where \(l_x\) is the "survivorship probability" quantity from a life table. When populations are similar, \(beta\) is often close to 1.
Given (i) target life expectancy,
(ii) a set of \(l_x^{\text{A}}\)),
(referred to as a "standard"), and
(iii) a value for \(\beta\),
ex_to_lifetab_brass()
finds
a value for \(\alpha\) that yields a set of
\(l_x^{\text{B}}\)) with the required life expectancy.
target
argument
target
is a data frame specifying
life expectancies for each population being modelled,
and, possibly, inputs to the calculations, and
index variables. Values in target
are not age-specific.
A variable called
"ex"
, with life expectancy at birth must be included intarget
.A variable called
"beta"
with values forbeta
can be included intarget
. This variable can be an rvec. If no"beta"
variable is included intarget
, thenex_to_lifetab_brass()
assumes that \(beta \equiv 1\).A variable called
"sex"
. If theinfant
argument toex_to_lifetab_brass()
is is"CD"
or"AK"
, or if thechild
argument is"CD"
,target
must include a"sex" variable, and the labels for this variable must be interpretable by function [format_sex()]. Otherwise, the
"sex"` variable is optional, and there is no restriction on labels.Other variables used to distinguish between life expectancies, such as time, region, or model variant.
standard
argument
standard
is a data frame specifying
the \(l_x\) to be used with each life expectancy
in ex
, and, optionally, values the average age
person-years lived by people who die in each group,
\(_na_x\). Values in standard
are age-specific.
A variable called
"age"
, with labels that can be parsed byreformat_age()
.A variable called
"lx"
. Internally each set of \(l_x\) is are standardized so that the value for age 0 equals 1. Within each set, values must be non-increasing. Cannot be an rvec.Additional variables used to match rows in
standard
to rows intarget
.
Internally, standard
is merged with
target
using a left join from target
,
on any variables that target
and standard
have in common.
References
Brass W, Coale AJ. 1968. “Methods of analysis and estimation,” in Brass, W, Coale AJ, Demeny P, Heisel DF, et al. (eds). The Demography of Tropical Africa. Princeton NJ: Princeton University Press, pp. 88–139.
Moultrie TA, Timæus IM. 2013. Introduction to Model Life Tables. In Moultrie T, Dorrington R, Hill A, Hill K, Timæus I, Zaba B. (eds). Tools for Demographic Estimation. Paris: International Union for the Scientific Study of Population. online version.
See also
logit()
,invlogit()
Logit functionlifeexp()
Calculate life expectancy from detailed inputs
Examples
## create new life tables based on level-1
## 'West' model life tables, but with lower
## life expectancy
library(dplyr, warn.conflicts = FALSE)
target <- data.frame(sex = c("Female", "Male"),
ex = c(17.5, 15.6))
standard <- west_lifetab |>
filter(level == 1) |>
select(sex, age, lx)
ex_to_lifetab_brass(target = target,
standard = standard,
infant = "CD",
child = "CD")
#> # A tibble: 42 × 7
#> sex age qx lx dx Lx ex
#> <chr> <fct> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 Female 0 0.412 100000 41204. 73218. 17.5
#> 2 Female 1-4 0.286 58796. 16790. 190877. 28.5
#> 3 Female 5-9 0.0793 42006. 3331. 201590. 35.4
#> 4 Female 10-14 0.0617 38675. 2387. 187346. 33.2
#> 5 Female 15-19 0.0793 36288. 2879. 174145. 30.2
#> 6 Female 20-24 0.0979 33409. 3270. 158729. 27.6
#> 7 Female 25-29 0.109 30139. 3273. 142356. 25.4
#> 8 Female 30-34 0.122 26866. 3264. 125994. 23.1
#> 9 Female 35-39 0.131 23602. 3103. 110070. 21.0
#> 10 Female 40-44 0.138 20499. 2838. 95223. 18.8
#> # ℹ 32 more rows