Signature
W = C * x * exp(-beta * x); x_peak = 1 / beta; W_peak = C / beta * exp(-1)
| Inputs | Definition | Unit |
|---|---|---|
C | Scaling constant of the age-weight function, 0.1658 in the standard GBD DALY and 0.16243 in Murray's 1994 paper | per year of age |
x | Age at which the year of life is lived | years, zero or above |
beta | Parameter that sets where the weight peaks and how fast it declines, 0.04 in the GBD DALY | per year of age, above zero |
W | Weight given to a year of life lived at age x, relative to a weight of 1 under uniform age weights | none, a relative weight |
|---|---|---|
x_peak | Age at which the age weight is greatest, 1/beta | years |
W_peak | Largest weight the function gives, at age x_peak | none, a relative weight |
Function
Age-weighted healthy years lost under the GBD 1990 exponential age-weight function
Maps an age, or a span of ages from the age at death or onset a over L years, together with the age-weight constants C and beta, the modulation constant K, a discount rate r and, for a case of illness, a disability weight DW, to the weight on a year lived at that age and to the age-weighted, discounted healthy years lost over the span. With K = 0 the age weights drop out and the result is the continuously discounted years of HE-FM-YLL-003 for a death and HE-FM-YLD-002 for an incident case, the per-death and per-case inputs of HE-FN-YLL-001, HE-FN-YLD-001 and the DALY records HE-FN-DALY-001 and HE-FM-DALY-004. The package adds the weight function and its peak, the undiscounted age-weighted years lost, the age-weighted discounted years lost per death of the original DALY, and the same expression for years lived with disability. Notation follows the Age Weighting article.
Computational function
Computational function for the ages at which the GBD age weight crosses a chosen level
Takes the constants C and beta and a level, by default 1, and returns the two ages at which the weight equals that level, one on each side of the peak 1/beta, so the span of ages weighted above uniform can be read off. The crossing ages have no closed form in elementary functions, so the code finds them numerically by root search on each side of the peak. The calculator line checks a pair of ages by returning their weights. The inputs therefore differ from the formula's variables, which take one age.
Inputs and outputs:
Candbetaare the age-weight constants.levelis the weight to cross, 1 by default.x_loandx_hiare the lower and upper crossing ages in years, returned by the code and entered in the calculator line to check them.x_peakis the peak age 1/beta.W_loandW_hiare the weights at the two ages, equal to the level at a correct crossing. When the peak weight C/(beta e) is below the level there is no crossing.Assumption: The weight function is HE-FM-AGW-001 with beta above zero, so it rises to a single peak and then falls, and each side has at most one crossing. An age where the weight equals the level exactly is counted inside the span.
Worked example (Standard constants): The weight exceeds 1 between about 8.46 and 55.47 years, the article's roughly 8.5 and 55.5.
C = 0.1658; beta = 0.04; x_lo = 8.4603; x_hi = 55.4732; x_peak = 25; W_lo = 1; W_hi = 1Worked example (Murray's 1994 constant): With C = 0.16243 the span is about 8.73 to 54.53 years, which matches the 9 to 54 years that Barendregt and colleagues report for these values.
C = 0.16243; beta = 0.04; x_lo = 8.7292; x_hi = 54.532; x_peak = 25; W_lo = 1; W_hi = 1Excel: With a column of ages 0, 0.01 and onwards to 100 named AgeGrid,
=INDEX(AgeGrid,MATCH(TRUE,INDEX(AgeWtConstC*AgeGrid*EXP(-AgeWtBeta*AgeGrid)>=1,0),0))returns the lower crossing and=LOOKUP(2,1/(AgeWtConstC*AgeGrid*EXP(-AgeWtBeta*AgeGrid)>=1),AgeGrid)the upper crossing, both to the nearest 0.01 year and inside the span. Both work in classic Excel without array entry.R:
agw_cross <- function(C = 0.1658, beta = 0.04, level = 1) { w <- function(x) C*x*exp(-beta*x)-level; if (C/(beta*exp(1)) < level) return(NULL); c(x_lo = uniroot(w, c(0, 1/beta), tol = 1e-10)$root, x_hi = uniroot(w, c(1/beta, 50/beta), tol = 1e-10)$root) }Returns the two crossing ages.Python:
def agw_cross(C=0.1658, beta=0.04, level=1.0): w = lambda x: C*x*math.exp(-beta*x)-level; return (brentq(w, 0.0, 1/beta, xtol=1e-12), brentq(w, 1/beta, 50/beta, xtol=1e-12)) if C/(beta*math.e) >= level else NoneNeedsimport mathandfrom scipy.optimize import brentq.Test (Crossings either side of the peak): The lower crossing is below 25 and the upper above it, and the weight at each is 1 to four decimal places. The expected result is TRUE. Excel check
=AND(8.4603<25,55.4732>25,ABS(0.1658*8.4603*EXP(-0.04*8.4603)-1)<0.0001,ABS(0.1658*55.4732*EXP(-0.04*55.4732)-1)<0.0001)Test (No crossing above the peak weight): A level of 1.6 is above the peak weight 1.525, so the function returns no ages. The expected result is TRUE. Excel check
=0.1658/(0.04*EXP(1))<1.6Common error (Span read as the ages whose deaths gain from weighting): The ages 8.5 to 55.5 are where a year lived is weighted above 1, not the ages at death whose loss rises. Barendregt and colleagues show that, because years of life lost already favour the young, the ages that gain from weighting are 0 to 27, and in the article's illustration a death at 40, inside the span, loses 8% under age weighting.
Source: Barendregt JJ, Bonneux L, Van der Maas PJ. DALYs, the age-weights on balance. Bulletin of the World Health Organization. 1996;74(4) 439-443. Page 440 and Figure 1, the function C x e to the minus beta x with C = 0.16243 and beta = 0.04, and the statement that the years lived between ages 9 and 54 have a weight greater than unity, and the summary on page 439, which states that the age range made more important by weighting is 0 to 27 years because the expected years of life lost already emphasise the young. Prüss-Üstün A, Mathers C, Corvalán C, Woodward A. Introduction and methods, assessing the environmental burden of disease at national and local levels. Environmental Burden of Disease Series No. 1. Geneva, World Health Organization, 2003. Section 3.5, DALY parameters, for the standard constants 0.1658 and 0.04.
x_peak = 1 / beta; W_lo = C * x_lo * exp(-beta * x_lo); W_hi = C * x_hi * exp(-beta * x_hi)
Try this function
Implementations
Excel
GBD age weight and peak from named cells
With the constants in AgeWtConstC and AgeWtBeta and the age in AgeYears, the first formula returns the weight (a cell named AgeWeight), the second the peak age (PeakAge) and the third the peak weight (PeakWeight).
=AgeWtConstC*AgeYears*EXP(-AgeWtBeta*AgeYears); =1/AgeWtBeta; =AgeWtConstC/AgeWtBeta*EXP(-1)
Assumptions
Standard GBD constants for the age-weight function
The constants are fixed conventions, beta = 0.04 and C = 0.1658 in the standard DALY parameters of the WHO environmental burden of disease guide. Larson reports that, with beta at 0.04, C was chosen so that global DALYs were the same with and without age weighting in the 1990 study, so C is a calibration to that study and not a measured preference. Murray's 1994 paper used 0.16243.
Age weight as a continuous function of exact age
Age x is continuous and measured in years from birth, so the weight on a whole year of life is the integral of W over that year, not W at the start of it. Murray chose a continuous function over a set of discrete weights for convenience, and the peak formula uses the derivative, which needs beta above zero.
Worked examples
GBD age weight at age 25, the peak
With the standard constants a year lived at 25 carries a weight of about 1.525, 0.1658 times 25 times e to the minus 1, as in the article. Here x equals the peak age, so W equals W_peak.
C = 0.1658; beta = 0.04; x = 25; W = 1.5249; x_peak = 25; W_peak = 1.5249
GBD age weight at age 70
A year lived at 70 carries a weight of about 0.706, less than half the weight at 25, as in the article.
C = 0.1658; beta = 0.04; x = 70; W = 0.7058; x_peak = 25; W_peak = 1.5249
GBD age weight at age 5
A year lived at 5 carries a weight of about 0.679, the figure the article uses for a death at 5.
C = 0.1658; beta = 0.04; x = 5; W = 0.6787; x_peak = 25; W_peak = 1.5249
GBD age weight at birth
At birth the weight is zero whatever the constants, a limiting case that checks an implementation.
C = 0.1658; beta = 0.04; x = 0; W = 0; x_peak = 25; W_peak = 1.5249
Age weight at age 25 with Murray's 1994 constant
With C = 0.16243, the value in Murray's 1994 paper, the weight at 25 is about 1.494, some 2% below the standard 1.525 (computed here for illustration).
C = 0.16243; beta = 0.04; x = 25; W = 1.4939; x_peak = 25; W_peak = 1.4939
Common errors
Peak of the age weight read as the age of greatest loss per death
The weight peaks at 25, but a death at 25 loses fewer age-weighted years than a death in childhood, because the child's lost years pass through the whole high-weight span. Up to an illustrative age of 80 and without discounting, a death at 25 loses about 58.50 age-weighted years against 84.07 at age 5 and 85.88 at birth (HE-FM-AGW-002, computed here for illustration), the article's first misreading.
Shape parameter changed without recalibrating the scaling constant
Murray notes that if beta is altered the constant C would necessarily change as well. Keeping C = 0.1658 with beta = 0.05 lowers every weight, and the undiscounted age-weighted loss from a death at 5 up to age 80 falls from 84.07 to about 58.49 (computed here for illustration), a change produced by the constant, not by the new shape.
Sources
Murray on the exponential age-weight function and its constants
Murray CJ. Quantifying the burden of disease, the technical basis for disability-adjusted life years. Bulletin of the World Health Organization. 1994;72(3) 429-445. Page 436, which gives continuous age-weighting functions of the form C x e to the minus beta x, states that only a narrow range of beta, about 0.03 to 0.05, gives reasonable age patterns, that beta = 0.04 was chosen by informal polling of the advisory board, that C is chosen so that unequal age weights do not change the global burden, that C equals 0.16243, and that altering beta would change the constant.
WHO guide on standard age-weight constants for the DALY
Prüss-Üstün A, Mathers C, Corvalán C, Woodward A. Introduction and methods, assessing the environmental burden of disease at national and local levels. Environmental Burden of Disease Series No. 1. Geneva, World Health Organization, 2003. Section 3.4, which gives the function used to model the relative age weights, C x e to the minus beta x, and the GBD choice to value a year in young adulthood more than one in old age or infancy, and section 3.5, whose DALY parameters state that standard age weights use beta = 0.04 and C = 0.1658.
Larson on the age-weight constant chosen to match global DALYs
Larson BA. Calculating disability-adjusted-life-years lost (DALYs) in discrete-time. Cost Effectiveness and Resource Allocation. 2013;11 article 18. Appendix, equation 5, which gives the age-weighting function as 0.1658 x e to the minus 0.04 x and states that, with beta = 0.04, C = 0.1658 was chosen so that global DALYs were the same with and without age weighting in the 1990 global burden of disease study.
Canonical Identity
Stable URI · Machine-readable · Resolvable · CC BY 4.0
