Skip to content

Period and Cohort Rates

Mortality rates are often presented in a period format where each column represents the mortality rates across ages for a particular calendar year. However, they can also be expressed in a cohort format where each column is for a particular cohort. Cohort rates are more suitable for the pricing of insurance products, so this module introduces two helper functions to convert between period and cohort mortality rates and one-year death probabilities.


Period to Cohort Rates

period2cohort(period_rates, ages, init_age = NULL)

   Parameters:

     period_rates : matrix/array

       period mortality rates with age rows, calendar year columns

       (and simulation number 3rd dimension)

     ages : vector

       vector of ages for period_rates

     init_age : numeric

       initial age of cohort (default smallest age)

   Returns:

     matrix/array of cohort mortality rates with age rows, cohort columns (and simulation number

     3rd dimension). The columns represent the cohort aged init_age in the corresponding year.

   Usage:

# consider the male mortality rates from the data file 'mortality_AUS_data'

period_rates <- mortality_AUS_data$rate$male
ages <- mortality_AUS_data$age # 0:110

# convert to rates for cohort aged 55

cohort_rates_55 <- period2cohort(period_rates, ages, init_age = 55)

Note

The conversions between period and cohort mortality rates will only return the upper triangle.


Cohort to Period Rates

cohort2period(cohort_rates)

   Parameters:

     cohort_rates : matrix/array

       cohort mortality rates with age rows, cohort columns

       (and simulation number 3rd dimension)

   Returns:

     matrix/array of period mortality rates with age rows, year columns

     (and simulation number 3rd dimension)

   Usage:

# consider the Kannisto completion method on male mortality rates
# from the data file 'mortality_AUS_data'

AUS_male_rates <- mortality_AUS_data$rate$male
ages <- mortality_AUS_data$age # 0:110
old_ages <- 91:130
fitted_ages <- 76:90

completed_rates <- complete_old_age(AUS_male_rates, ages, old_ages,
                                    method = "kannisto", type = "central",
                                    fitted_ages = fitted_ages)

# suppose these are rates for cohort starting at age 60

cohort_rates_60 <- completed_rates[as.character(60:130), ]

period_rates <- cohort2period(cohort_rates_60)

Note

The conversions between period and cohort mortality rates will only return the upper triangle.