View source: R/attribute_health.R
| attribute_health | R Documentation |
This function calculates the attributable health impacts (mortality or morbidity) due to exposure to an environmental stressor (air pollution or noise), using either relative risk (RR) or absolute risk (AR).
Arguments for both RR & AR pathways
approach_risk
exp_central, exp_lower, exp_upper
cutoff_central, cutoff_lower, cutoff_upper
erf_eq_central, erf_eq_lower, erf_eq_upper
Arguments only for RR pathways
rr_central, rr_lower, rr_upper
rr_increment
erf_shape
bhd_central, bhd_lower, bhd_upper
prop_pop_exp
Argument for AR pathways
pop_exp
Optional arguments for both RR & AR pathways
geo_id_micro, geo_id_macro,
age_group, sex, info, population
dw_central, dw_lower, dw_upper
duration_central, duration_lower, duration_upper
attribute_health(
approach_risk = "relative_risk",
exp_central,
exp_lower = NULL,
exp_upper = NULL,
cutoff_central = 0,
cutoff_lower = NULL,
cutoff_upper = NULL,
pop_exp = 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,
bhd_central = NULL,
bhd_lower = NULL,
bhd_upper = NULL,
prop_pop_exp = 1,
geo_id_micro = "a",
geo_id_macro = NULL,
age_group = "all",
sex = "all",
dw_central = NULL,
dw_lower = NULL,
dw_upper = NULL,
duration_central = NULL,
duration_lower = NULL,
duration_upper = NULL,
info = NULL,
population = NULL
)
approach_risk |
|
exp_central, exp_lower, exp_upper |
|
cutoff_central, cutoff_lower, cutoff_upper |
|
pop_exp |
|
erf_eq_central, erf_eq_lower, erf_eq_upper |
|
rr_central, rr_lower, rr_upper |
|
rr_increment |
|
erf_shape |
|
bhd_central, bhd_lower, bhd_upper |
|
prop_pop_exp |
|
geo_id_micro, geo_id_macro |
|
age_group |
|
sex |
|
dw_central, dw_lower, dw_upper |
|
duration_central, duration_lower, duration_upper |
|
info |
|
population |
|
What you put in is what you get out
The health metric you put in (e.g. absolute disease cases, deaths per 100 000 population, DALYs, prevalence, incidence, ...) is the one you get out.
Exception: if you enter a disability weight (via the dw_... arguments) the attributable impact will be in YLD.
Function arguments
exp_central, exp_lower, exp_upper
In case of exposure bands enter only one exposure value per band (e.g. the means of the lower and upper bounds of the exposure bands).
cutoff_central, cutoff_lower, cutoff_upper
The cutoff level refers to the exposure level below which no health effects occur in the same unit as the exposure. If exposure categories are used, the length of this input must be the same as in the exp_... argument(s).
pop_exp
Only applicable in AR pathways; always required. In AR pathways the population exposed per exposure category is multiplied with the corresonding category-specific risk to obtain the absolute number of people affected by the health outcome.
erf_eq_central, erf_eq_lower, erf_eq_upper
Required in AR pathways; in RR pathways required only if rr_... arguments not specified. Enter the exposure-response function as a function, e.g. output from stats::splinefun() or stats::approxfun(), or as a string formula, e.g. "3+c+c^2" (with the c representing the concentration/exposure).
If you have x-axis (exposure) and y-axis (relative risk) value pairs of multiple points lying on the the exposure-response function, you could use e.g. stats::splinefun(x, y, method="natural") to derive the exposure-response function (in this example using a cubic spline natural interpolation).
rr_increment
Only applicable in RR pathways. Relative risks from the literature are valid for a specific increment in the exposure, in case of air pollution often 10 or 5 \mu g/m^3).
bhd_central, bhd_lower, bhd_upper
Only applicable in RR pathways. Baseline health data for each exposure category must be entered.
prop_pop_exp
Only applicable in RR pathways. In RR pathways indicates the fraction(s) (value(s) from 0 until and including 1) of the total population exposed to the exposure categories. See equation of the population attributable fraction for categorical exposure below.
geo_id_macro, geo_id_micro
Only applicable in assessments with multiple geographic units. For example, if you provide the names of the municipalities under analysis to geo_id_micro, you might provide to geo_id_macro the corresponding region / canton / province names.
Consequently, the vectors fed to geo_id_micro and geo_id_macro must be of the same length.
age_group
Can be either numeric or character. If it is numeric, it refers to the first age of the age group. E.g. c(0, 40, 80) means age groups [0, 40), [40, 80), >=80].
info
Optional argument. Information entered to this argument will be added as column(s) names info_1, info_2, info_... to the results table. These additional columns can be used to further stratify the analysis in a secondary step (see example below).
population
Optional argument. The population entered here is used to determine impact rate per 100 000 population. Note the requirement for the vector length in the paragraph Assessment of multiple geographic units below.
duration_central, duration_lower, duration_upper
Only applicable in assessments of YLD (years lived with disability). Measured in years. A value of 1 (year) refers to the prevalence-based approach, while values above 1 to the incidence-based approach.
Methodology
This function can quantify the attributable health impacts by means of a relative risk or an absolute risk (depending on the health outcome).
Relative risk: The comparative risk assessment approach \insertCiteMurray2003_ehealthiar is applied by obtaining the population attributable fraction (percent of cases that are attributable to the exposure) based on the relative risk \insertCiteWHO2003_reporthealthiar.
Absolute risk: The attributable cases are directly derived from population exposed \insertCiteWHO2011_reporthealthiar.
Detailed information about the methodology (including equations) is available in the package vignette. More specifically, see chapters:
This function returns a list containing:
1) health_main (tibble) containing the main results;
impact (numeric column) attributable health burden/impact
pop_fraction (numeric column) population attributable fraction; only applicable in relative risk assessments
And many more
2) health_detailed (list) containing detailed (and interim) results.
input_args (list) containing all the argument inputs used in the background
input_table (tibble) containing the inputs after preparation
results_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.
Alberto Castro & Axel Luyten
Upstream: prepare_exposure (only if no exposure data available)
Alternative: attribute_lifetable,
get_paf, get_risk
Downstream: attribute_mod, compare,
daly, multiexpose,
standardize, monetize, socialize
# Goal: attribute lung cancer cases to population-weighted PM2.5 exposure
# using relative risk
results <- attribute_health(
erf_shape = "log_linear",
rr_central = 1.369, # Central relative risk estimate
rr_increment = 10, # per \mu g / m^3 increase in PM2.5 exposure
exp_central = 8.85, # Central exposure estimate in \mu g / m^3
cutoff_central = 5, # \mu g / m^3
bhd_central = 30747 # Baseline health data: lung cancer incidence
)
results$health_main$impact_rounded # Attributable cases
# Goal: attribute cases of high annoyance to (road traffic) noise exposure
# using absolute risk
results <- attribute_health(
approach_risk = "absolute_risk",
exp_central = c(57.5, 62.5, 67.5, 72.5, 77.5),
pop_exp = c(387500, 286000, 191800, 72200, 7700),
erf_eq_central = "78.9270-3.1162*c+0.0342*c^2"
)
results$health_main$impact_rounded # Attributable high annoyance cases
# Goal: attribute disease cases to PM2.5 exposure in multiple geographic
# units, such as municipalities, provinces, countries, ...
results <- attribute_health(
geo_id_micro = c("Zurich", "Basel", "Geneva", "Ticino"),
geo_id_macro = c("Ger","Ger","Fra","Ita"),
rr_central = 1.369,
rr_increment = 10,
cutoff_central = 5,
erf_shape = "log_linear",
exp_central = c(11, 11, 10, 8),
bhd_central = c(4000, 2500, 3000, 1500)
)
# Attributable cases (aggregated)
results$health_main$impact_rounded
# Attributable cases (disaggregated)
results$health_detailed$results_raw |> dplyr::select(
geo_id_micro,
geo_id_macro,
impact_rounded
)
# Goal: determine attributable YLD (years lived with disability)
results <- attribute_health(
exp_central = 8.85,
prop_pop_exp = 1,
cutoff_central = 5,
bhd_central = 1000,
rr_central = 1.1,
rr_increment = 10,
erf_shape = "log_linear",
duration_central = 100,
dw_central = 1,
info = "pm2.5_yld"
)
results$health_main$impact
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.