Signature
y_12 = 1 - (1 - y_1) * (1 - y_2)
| Inputs | Definition | Unit |
|---|---|---|
y_1 | Prevalence of condition 1 as a proportion times its weight | years per person per year |
y_2 | Prevalence of condition 2 as a proportion times its weight | years per person per year |
y_12 | Expected combined weight per person in the population | years per person per year |
|---|
Function
Disability weight scaling of time lived with a non-fatal health state
Maps time lived in a non-fatal health state to healthy time lost by multiplying it by the state's disability weight, on a scale where 0 is equivalent to full health and 1 to death. The products give years lived with disability (YLD), which add to years of life lost to give DALYs. When people have several conditions, weights are combined multiplicatively and the combined loss is shared among the conditions. The notation follows the Disability Weight article.
Computational function
Computational function: comorbidity-adjusted and cause-attributed YLDs for any number of independent conditions
Takes the population size, each condition's prevalence and its disability weight, enumerates every combination of conditions with its probability under independence, applies the multiplicative combined weight (HE-FM-DWT-002) and apportions it in proportion to stand-alone weights (HE-FM-DWT-003). It returns adjusted total YLDs (HE-FM-DWT-004), YLDs attributed to each condition and the unadjusted sum. This is the expected value that GBD 2010's microsimulation of 20,000 individuals estimates by sampling. The inputs differ from the formula's: prevalences and weights for any number of conditions instead of two YLD rates.
Inputs and outputs:
N: Population size; required, above zero. Unit: people.;p: Prevalence of each condition; required, vector, each from 0 to 1. Unit: proportion.;DW: Stand-alone disability weight of each condition from one weight set; required, vector, each from 0 to 1. Unit: none.;total: Comorbidity-adjusted YLDs. Unit: years.;by_condition: YLDs attributed to each condition, adding to total. Unit: years.;unadjusted: Sum of N x p x DW over conditions. Unit: years.Assumption: Independent occurrence within the population group, multiplicative combination of weights, apportioning in proportion to stand-alone weights, and prevalence over one year with no age weighting or discounting.
Worked example (Conditions A and B from the article): With N of 10,000, prevalences of 0.10 and 0.05 and weights of 0.10 and 0.30, adjusted YLDs are 248.5, attributed as 99.625 to A and 148.875 to B, against an unadjusted 250.
N = 10000; p = [0.10, 0.05]; DW = [0.10, 0.30]; total = 248.5; by_condition = [99.625, 148.875]; unadjusted = 250Worked example (Adding a common mild condition C): A third condition with prevalence 0.20 and weight 0.05 gives an adjusted total of 346.015 against 350 unadjusted, attributed as about 98.96, 147.62 and 99.44 (computed here for illustration).
N = 10000; p = [0.10, 0.05, 0.20]; DW = [0.10, 0.30, 0.05]; total = 346.015; by_condition = [98.9589, 147.6195, 99.4366]; unadjusted = 350Excel: For any number of conditions, the total is
=Population*(1-PRODUCT(1-PrevRange*WeightRange)), with the population in a cell named Population, (array formula in older versions); cause attribution needs one row per combination of conditions, with its probability from PRODUCT of p or 1 minus p, its combined weight from 1 minus PRODUCT of 1 minus the weights present, and each condition's share from SUMPRODUCT.R:
yld_comorb <- function(N, p, DW) { K <- length(p); S <- as.matrix(expand.grid(rep(list(0:1), K))); pr <- apply(S, 1, function(s) prod(ifelse(s == 1, p, 1-p))); dw <- apply(S, 1, function(s) 1-prod(1-DW*s)); sh <- t(apply(S, 1, function(s) if (sum(s) == 0) 0*s else DW*s/sum(DW*s))); list(total = N*sum(pr*dw), by_condition = N*colSums(pr*dw*sh), unadjusted = N*sum(p*DW)) }yld_comorb(10000, c(0.10, 0.05), c(0.10, 0.30))returns 248.5, 99.625 and 148.875, and 250 unadjusted.Python:
def yld_comorb(N, p, DW): S = list(itertools.product([0, 1], repeat=len(p))); pr = [math.prod(q if b else 1-q for q, b in zip(p, s)) for s in S]; dw = [1-math.prod(1-d*b for d, b in zip(DW, s)) for s in S]; by = [N*sum(w*c*d/sum(x*b for x, b in zip(DW, s)) for w, c, s in zip(pr, dw, S) if s[k]) for k, d in enumerate(DW)]; return {"total": N*sum(w*c for w, c in zip(pr, dw)), "by_condition": by, "unadjusted": N*sum(q*d for q, d in zip(p, DW))}Needsimport itertools, math(Python 3.8 or later for math.prod); returns the same values as the R function.Test (Attributed YLDs add to the adjusted total): The sum of by_condition equals total. Expected result: TRUE. Excel check:
=ABS(SUM(AttributedRange)-AdjustedTotal)<1E-6Test (Total matches the closed form): For independent conditions the total equals N x (1 minus the product of 1 minus p x DW), 248.5 and 346.015 in the examples. Expected result: TRUE. Excel check:
=ABS(AdjustedTotal-Population*(1-PRODUCT(1-PrevRange*WeightRange)))<1E-6Common error (Microsimulation noise read as a real difference): A simulation of 20,000 people per group estimates these expected values with sampling error; comparing two runs without the same random numbers can show differences that the exact enumeration does not have.
Source: Vos T, Flaxman AD, Naghavi M, et al. Years lived with disability (YLDs) for 1160 sequelae of 289 diseases and injuries 1990-2010: a systematic analysis for the Global Burden of Disease Study 2010. The Lancet. 2012;380(9859):2163-2196. doi:10.1016/S0140-6736(12)61729-2. Methods; World Health Organization. WHO methods and data sources for global burden of disease estimates 2000-2019. Global Health Estimates Technical Paper WHO/DDI/DNA/GHE/2020.3. Geneva: WHO; 2020. Section 2.5.
total = N * sum_(s in S) [Pr(s) * (1 - prod_(k in s) (1 - DW_k))]; by_k = N * sum_(s in S, k in s) [Pr(s) * DW_s * DW_k / sum_(m in s) DW_m]; Pr(s) = prod_(k in s) p_k * prod_(k not in s) (1 - p_k)
Try this function
Implementations
Excel
Comorbidity-adjusted YLD rate and total from named cells
With prevalences PrevOne and PrevTwo, weights WeightOne and WeightTwo and the population in Population, the formula returns total adjusted YLDs, held in AdjustedYLD.
=Population*(1-(1-PrevOne*WeightOne)*(1-PrevTwo*WeightTwo))
Assumptions
Conditions occur independently within the age-sex group for comorbidity-adjusted YLDs
The chance of having both is the product of the two prevalences, as GBD 2010 assumed within each age, sex, country and year; dependent comorbidity needs data on joint prevalence.
Multiplicative weights for co-occurring conditions
People with both conditions carry the combined weight of HE-FM-DWT-002.
Worked examples
Comorbidity-adjusted YLDs for conditions A and B in a population of 10,000
Condition A has prevalence 0.10 and weight 0.10 (rate 0.01) and condition B prevalence 0.05 and weight 0.30 (rate 0.015). The adjusted rate is 1 minus 0.99 x 0.985, or 0.02485, which is 248.5 YLDs in 10,000 people, matching the article's count of 95 plus 135 plus 18.5.
y_1 = 0.01; y_2 = 0.015; y_12 = 0.02485
Comorbidity-adjusted YLDs for two rare mild conditions
With rates of 0.002 and 0.001 the adjusted rate is 0.002998, almost exactly the sum, because comorbid cases are rare (computed here for illustration).
y_1 = 0.002; y_2 = 0.001; y_12 = 0.002998
Common errors
Summing cause-specific YLDs across causes
Summing gives 250 instead of 248.5 in the example; WHO reports that adjustment for independent comorbidity reduced global all-age YLDs in GBD 2004 by 6 per cent and YLDs at ages 60 and over by 11 per cent.
Using YLD counts instead of rates in the comorbidity product
The rule combines rates per person; entering 100 and 150 YLDs instead of 0.01 and 0.015 gives 1 minus (minus 99 x minus 149), about minus 14,750, a meaningless result. Convert to rates, combine, then multiply by the population.
Sources
WHO single-step combination of YLDs for independent conditions
World Health Organization. WHO methods and data sources for global burden of disease estimates 2000-2019. Global Health Estimates Technical Paper WHO/DDI/DNA/GHE/2020.3. Geneva: WHO; 2020. Section 2.5: GBD 2010 estimated comorbidity assuming independence within age-sex groups, p(1+2) = 1 minus (1 minus p1) x (1 minus p2); with DW(1+2) = 1 minus (1 minus DW1) x (1 minus DW2) and YLD_i = DW_i x p_i the equations combine into YLD(1+2) = 1 minus (1 minus YLD1) x (1 minus YLD2); adjustment reduced global all-age GBD 2004 YLDs by 6 per cent and those at ages 60 and over by 11 per cent.
Independence assumed in the GBD 2010 YLD comorbidity simulation
Vos T, Flaxman AD, Naghavi M, et al. Years lived with disability (YLDs) for 1160 sequelae of 289 diseases and injuries 1990-2010: a systematic analysis for the Global Burden of Disease Study 2010. The Lancet. 2012;380(9859):2163-2196. doi:10.1016/S0140-6736(12)61729-2. Methods: lacking data to estimate dependent probabilities, GBD 2010 assumed independence and, for each age-sex-country-year, used a Monte Carlo simulation of 20,000 individuals (1,000 simulations) to estimate co-occurrence of sequelae.
Canonical Identity
Stable URI · Machine-readable · Resolvable · CC BY 4.0