rate_calculations.Rmd
Start with the exposures_mod frame from the “Creating Exposure Intervals” article.
key | duration | start_int | end_int | exposure | issue_age | gender | attained_age |
---|---|---|---|---|---|---|---|
B10251C8 | 1 | 2010-04-10 | 2011-04-09 | 0.9993 | 35 | M | 35 |
B10251C8 | 2 | 2011-04-10 | 2012-04-09 | 1.002 | 35 | M | 36 |
B10251C8 | 3 | 2012-04-10 | 2013-04-09 | 0.9993 | 35 | M | 37 |
B10251C8 | 4 | 2013-04-10 | 2014-04-09 | 0.9993 | 35 | M | 38 |
B10251C8 | 5 | 2014-04-10 | 2015-04-09 | 0.9993 | 35 | M | 39 |
B10251C8 | 6 | 2015-04-10 | 2016-04-09 | 1.002 | 35 | M | 40 |
Add a death indicator and use a full exposure in the year of death when performing a mortality study.
exposures_mort <- exposures_mod %>%
group_by(key) %>%
mutate(exposure_mod = if_else(duration == max(duration), 1, exposure),
death_cnt = if_else(duration == max(duration), 1, 0))
tail(exposures_mort, 4)
key | duration | start_int | end_int | gender | attained_age | exposure_mod | death_cnt |
---|---|---|---|---|---|---|---|
D68554D5 | 12 | 2016-01-01 | 2016-12-31 | F | 41 | 1.002 | 0 |
D68554D5 | 13 | 2017-01-01 | 2017-12-31 | F | 42 | 0.9993 | 0 |
D68554D5 | 14 | 2018-01-01 | 2018-12-31 | F | 43 | 0.9993 | 0 |
D68554D5 | 15 | 2019-01-01 | 2019-04-04 | F | 44 | 1 | 1 |
We then aggregate by duration to calculate mortality rates.
duration_rate <- exposures_mort %>%
group_by(duration) %>%
summarise(q = sum(death_cnt)/sum(exposure_mod))
duration_rate
duration | q |
---|---|
1 | 0 |
2 | 0 |
3 | 0 |
4 | 0 |
5 | 0 |
6 | 0 |
7 | 0 |
8 | 0 |
9 | 0.5002 |
10 | 0 |
11 | 0 |
12 | 0 |
13 | 0 |
14 | 0 |
15 | 1 |
Or by attained age and gender.
attained_age_gender_rates <- exposures_mort %>%
group_by(attained_age, gender) %>%
summarise(q = sum(death_cnt)/sum(exposure_mod))
tail(attained_age_gender_rates)
attained_age | gender | q |
---|---|---|
41 | M | 0 |
42 | F | 0 |
42 | M | 0 |
43 | F | 0 |
43 | M | 1 |
44 | F | 1 |
##Expected mortality
Some mortality tables have been loaded in an easy to join format so that users can conduct A/E analysis.
## Length Class Mode
## AM92 3 -none- list
## GAM1983 3 -none- list
## UP1984 3 tbl_df list
## VBT2015_SmokerDistinct_ALB 2 -none- list
## CSO2017_Unloaded_PreferredStructure_ALB 2 -none- list
## CSO2017_Loaded_PreferredStructure_ALB 2 -none- list
The “table” column includes the table identifier from the SOA website’s collection of mortality tables.
table | attained_age | q_ult |
---|---|---|
t2360 | 19 | 0.000587 |
t2360 | 20 | 0.000582 |
t2360 | 21 | 0.000577 |
t2360 | 22 | 0.000572 |
t2360 | 23 | 0.000569 |
t2360 | 24 | 0.000567 |
We join the mortality table to the data frame using the attained age.
key | duration | start_int | end_int | gender | attained_age | exposure_mod | death_cnt | q_ult |
---|---|---|---|---|---|---|---|---|
B10251C8 | 1 | 2010-04-10 | 2011-04-09 | M | 35 | 0.9993 | 0 | 0.000689 |
B10251C8 | 2 | 2011-04-10 | 2012-04-09 | M | 36 | 1.002 | 0 | 0.000724 |
B10251C8 | 3 | 2012-04-10 | 2013-04-09 | M | 37 | 0.9993 | 0 | 0.000765 |
B10251C8 | 4 | 2013-04-10 | 2014-04-09 | M | 38 | 0.9993 | 0 | 0.000813 |
B10251C8 | 5 | 2014-04-10 | 2015-04-09 | M | 39 | 0.9993 | 0 | 0.00087 |
B10251C8 | 6 | 2015-04-10 | 2016-04-09 | M | 40 | 1.002 | 0 | 0.000937 |