Calculate survivorship ratios to be used in projecting populations forward in time with ccmpp(). The survivorship ratios represent the proportion of people in one age group that will survive into the next age group given the age-specific mortality rates in a life table.

nSx_from_lx_nLx_Tx(dt, id_cols, terminal_age)

Arguments

dt

[data.table()]
Input data that includes columns for id_cols, 'lx', 'nLx' and 'Tx'.

id_cols

[character()]
Columns that uniquely identify each row of dt. Must include 'age_start' and 'age_end'.

terminal_age

[integer(1)]
The terminal age group in the population that the calculated survivorship ratios will be used to project in. This must be less than or equal to the maximum 'age_start' in dt.

Value

[data.table()] with the id_cols plus a column for 'nSx' with the survivorship ratio value.

Details

See the references page for the formatted equations below.

First age group: $${}_{n}S_0 = \frac{{}_{n}L_{0}}{n \cdot l_0}$$

Other age groups: $${}_{n}S_x = \frac{{}_{n}L_{x}}{{}_{n}L_{x-n}}$$

Terminal age group: $${}_{n}S_x = \frac{T_{x}}{T_{x-n}}$$

See also

ccmpp()

Other survivorship_ratio: gen_lx_from_nLx_ax(), gen_nLx_from_nSx()

Examples

id_cols <- c("sex", "age_start", "age_end")
dt <- data.table::data.table(
  sex = rep("both", 4),
  age_start = c(0, 5, 10, 15),
  age_end = c(5, 10, 15, Inf),
  mx = c(0.1, 0.2, 0.3, 0.4),
  ax = c(2.5, 2.5, 2.5, 2.5)
)
lifetable(dt, id_cols)
#>       sex age_start age_end age_length    mx    ax        qx        px
#>    <char>     <num>   <num>      <num> <num> <num>     <num>     <num>
#> 1:   both         0       5          5   0.1   2.5 0.4000000 0.6000000
#> 2:   both         5      10          5   0.2   2.5 0.6666667 0.3333333
#> 3:   both        10      15          5   0.3   2.5 0.8571429 0.1428571
#> 4:   both        15     Inf        Inf   0.4   2.5 1.0000000 0.0000000
#>            lx         dx        nLx         Tx       ex
#>         <num>      <num>      <num>      <num>    <num>
#> 1: 1.00000000 0.40000000 4.00000000 6.64285714 6.642857
#> 2: 0.60000000 0.40000000 2.00000000 2.64285714 4.404762
#> 3: 0.20000000 0.17142857 0.57142857 0.64285714 3.214286
#> 4: 0.02857143 0.02857143 0.07142857 0.07142857 2.500000
nSx <- nSx_from_lx_nLx_Tx(dt, id_cols, terminal_age = 15)