
Attribute premature deaths or YLL to an environmental stressor using a life table approach
Source:R/attribute_lifetable.R
attribute_lifetable.RdThis function assesses premature deaths or years of life lost (YLL) attributable to exposure to an environmental stressor using a life table approach.
Usage
attribute_lifetable(
age_group,
sex,
bhd_central,
bhd_lower = NULL,
bhd_upper = NULL,
population,
health_outcome = NULL,
min_age = NULL,
max_age = NULL,
approach_exposure = "single_year",
approach_newborns = "without_newborns",
year_of_analysis,
time_horizon = NULL,
exp_central = NULL,
exp_lower = NULL,
exp_upper = NULL,
cutoff_central = 0,
cutoff_lower = NULL,
cutoff_upper = NULL,
erf_eq_central = NULL,
erf_eq_lower = NULL,
erf_eq_upper = NULL,
rr_central = NULL,
rr_lower = NULL,
rr_upper = NULL,
rr_increment = NULL,
erf_shape = NULL,
prop_pop_exp = 1,
geo_id_micro = "a",
geo_id_macro = NULL,
info = NULL
)Arguments
- age_group
Numeric vectororstring vectorproviding the age groups considered in the assessment. In case of use inattribute_lifetable)(), it must be anumericand contain single year age groups. See Details for more info. Optional argument forattribute_health(); needed forattribute_lifetable().- sex
Numeric vectororstring vectorspecifying the sex of the groups considered in the assessment.Optional argument.- bhd_central, bhd_lower, bhd_upper
Numeric valueornumeric vectorproviding the baseline health data of the health outcome of interest in the study population and (optionally) the corresponding lower bound and the upper 95% confidence interval bounds. See Details for more info. Only applicable in RR pathways; always required.- population
Numeric vectorFor attribute_lifetable(), it is an obligatory argument specifying the mid-year populations per age (i.e. age group size = 1 year) for the (first) year of analysis.For attribute_health()it is an optional argument which specifies the population used to calculate attributable impacts rate per 100 000 population. See Details for more info.- health_outcome
Stringspecifying the desired result of the life table assessment. Options:"deaths"(premature deaths),"yll"(years of life lost).- min_age, max_age
Numberic valuespecifying the minimum and maximum age for which the exposure will affect the exposed population, respectively. Defaultmin_age: 30. Defaultmax_age: none. See Details for more info.- approach_exposure
Stringspecifying whether exposure is constant or only in one year. Options:"single_year"(default),"constant".- approach_newborns
Stringspecifying whether newborns are to be considered in the years after the year of analysis or not. Options:"without_newborns"(default),"with_newborns". See Details for more info.- year_of_analysis
Numeric valueproviding the first with exposure to the environmental stressor.- time_horizon
Numeric valuespecifying the time horizon (number of years) for which the attributable YLL or premature deaths are to be considered. See Details for more info. Optional argument.- exp_central, exp_lower, exp_upper
Numeric valueornumeric vectorspecifying the exposure level(s) to the environmental stressor and (optionally) the corresponding lower and upper bound of the 95% confidence interval. See Details for more info.- cutoff_central, cutoff_lower, cutoff_upper
Numeric valuespecifying the exposure cut-off value and (optionally) the corresponding lower and upper 95% confidence interval bounds. Default: 0. See Details for more info.- erf_eq_central, erf_eq_lower, erf_eq_upper
Stringorfunctionspecifying the exposure-response function and (optionally) the corresponding lower and upper 95% confidence interval functions. See Details for more info. Required in AR pathways; in RR pathways required only ifrr_...argument(s) not specified.- rr_central, rr_lower, rr_upper
Numeric valuespecifying the central relative risk estimate and (optionally) the corresponding lower and upper 95% confidence interval bounds. Only applicable in RR pathways; not required iferf_eq_...argument(s) already specified.- rr_increment
Numeric valuespecifying the exposure increment for which the provided relative risk is valid. See Details for more info. Only applicable in RR pathways; not required iferf_eq_...argument(s) already specified.- erf_shape
String valuespecifying the exposure-response function shape to be assumed. Options (no default):"linear",log_linear","linear_log","log_log". Only applicable in RR pathways; not required iferf_eq_...argument(s) already specified.- prop_pop_exp
Numeric valueornumeric vectorspecifying the population fraction(s) exposed for each exposure (category). Default: 1. See Details for more info. Only applicable in RR pathways.- geo_id_micro, geo_id_macro
Numeric vectororstring vectorproviding unique IDs of the geographic area considered in the assessment (geo_id_micro) and (optionally) providing higher-level IDs (geo_id_macro) to aggregate the geographic areas at. See Details for more info. Only applicable in assessments with multiple geographic units.- info
String,data frameortibbleproviding information about the assessment. See Details for more info. Optional argument.
Value
This function returns a list containing:
1) health_main (tibble) containing the main results;
impact(numericcolumn) attributable health burden/impactpop_fraction(numericcolumn) population attributable fraction; only applicable in relative risk assessmentsAnd many more
2) health_detailed (list) containing detailed (and interim) results.
input_args(list) containing all the argument inputs used in the backgroundinput_table(tibble) containing the inputs after preparationresults_raw(tibble) containing results for all combinations of input (geo units, uncertainty, age and sex specific data...)results_by_...(tibble) containing results stratified by each geographic unit, age or sex.
Details
Function arguments
age_group
The numeric values must refer to 1 year age groups, e.g. c(0:99). To convert multi-year/larger age groups to 1 year age groups use the function prepare_lifetable() (see its function documentation for more info).
bhd_central,bhd_lower,bhd_upper
Deaths per age must be inputted with 1 value per age (i.e. age group size = 1 year). There must be greater than or equal to 1 deaths per age to avoid issues during the calculation of survival probabilities. If zeros show up in the last ages (e.g. age 98 = 0 deaths, 99 years old = 1), please sum the values and condensate last category (e.g. age 98 = 1).
population
The population data must be inputted with 1 value per age (i.e. age group size = 1 year). The values must be greater than or equal to 1 per age to avoid issues during the calculation of survival probabilities.
Mid-year population of year x can be approximated as the mean of either end-year populations of years x-1 and x or start-of-year populations of years x and x+1. For each age, the inputted values must be greater than or equal to 1 to avoid issues during the calculation of survival probabilities.
approach_newborns
If "with_newborns" is selected, it is assumed that for each year after the year of analysis n babies (population aged 0) are born.
time_horizon
Applicable for the following cases:
#'
YLL:
single_yearorconstantexposurepremature deaths:
constantexposure
For example, if 10 is entered one is interested in the impacts of exposure during the year of analysis and the next 9 years (= 10 years in total). Default value: length of the numeric vector specified in the age_group argument.
min_age, max_age
The min_age default value 30 implies that all adults aged 30 or older will be affected by the exposure; max_age analogeously specifies the age above which no health effects of the exposure are considered.
Methodology
Information about the methodology (including corresponding equations and literature) is available in the package vignette. More specifically, see chapters:
Conversion of multi-year to single year age groups
To convert multi-year/larger age groups to 1 year age groups,
use the healthiar function prepare_lifetable().
Note
For this specific function, the return object health_detailed also
contains intermediate_calculations. This is a nested tibble
containing intermediate results, such as population projections and
impact by age/year.
References
WHO (2020). “Health impact assessment of air pollution: AirQ+ life table manual.” World Health Organization - Regional Office for Europe. https://iris.who.int/server/api/core/bitstreams/3ebe7c55-be17-4ebe-89b9-8871fd287acd/content.
Miller BG, Hurley JF (2003). “Life table methods for quantitative impact assessments in chronic mortality.” Journal of Epidemiology & Community Health, 57(3), 200–206. doi:10.1136/jech.57.3.200 , https://jech.bmj.com/content/57/3/200.full.pdf, https://jech.bmj.com/content/57/3/200.
Miller BG (2010). “Report on estimation of mortality impacts of particulate air pollution in London.” Institute of Occupational Medicine (IOM). Commissioned by the Greater London Authority, https://cleanair.london/app/uploads/CAL-098-Mayors-health-study-report-June-2010-1.pdf.
Examples
# Goal: determine YLL attributable to air pollution exposure during one year
# using the life table approach
results <- attribute_lifetable(
health_outcome = "yll",
approach_exposure = "single_year",
approach_newborns = "without_newborns",
exp_central = 8.85,
prop_pop_exp = 1,
cutoff_central = 5,
rr_central = 1.118,
rr_increment = 10,
erf_shape = "log_linear",
age_group = exdat_lifetable$age_group,
sex = exdat_lifetable$sex,
bhd_central = exdat_lifetable$deaths,
population = exdat_lifetable$midyear_population,
year_of_analysis = 2019,
min_age = 20
)
results$health_main$impact # Attributable YLL
#> [1] 28809.87
# Goal: determine attributable premature deaths due to air pollution exposure
# during one year using the life table approach
results_pm_deaths <- attribute_lifetable(
health_outcome = "deaths",
approach_exposure = "single_year",
exp_central = 8.85,
prop_pop_exp = 1,
cutoff_central = 5,
rr_central = 1.118,
rr_increment = 10,
erf_shape = "log_linear",
age_group = exdat_lifetable$age_group,
sex = exdat_lifetable$sex,
bhd_central = exdat_lifetable$deaths,
population = exdat_lifetable$midyear_population,
year_of_analysis = 2019,
min_age = 20
)
results_pm_deaths$health_main$impact # Attributable premature deaths
#> [1] 2599.366
# Goal: determine YLL attributable to air pollution exposure (exposure distribution)
# during one year using the life table approach
results <- attribute_lifetable(
health_outcome = "yll",
exp_central = rep(c(8, 9, 10), each = 100*2), # each = length of sex or age_group vector
prop_pop_exp = rep(c(0.2, 0.3, 0.5), each = 100*2), # each = length of sex or age_group vector
cutoff_central = 5,
rr_central = 1.118,
rr_lower = 1.06,
rr_upper = 1.179,
rr_increment = 10,
erf_shape = "log_linear",
age_group = rep(
exdat_lifetable$age_group,
times = 3), # times = number of exposure categories
sex = rep(
exdat_lifetable$sex,
times = 3), # times = number of exposure categories
population = rep(
exdat_lifetable$midyear_population,
times = 3), # times = number of exposure categories
bhd_central = rep(
exdat_lifetable$deaths,
times = 3), # times = number of exposure categories
year_of_analysis = 2019,
min_age = 20
)
results$health_main$impact_rounded # Attributable YLL
#> [1] 32185 16849 47413