Comorbidity-adjusted years lived with disability per person for two independent conditions

Combines the YLD rates of two conditions, each prevalence times weight, under independent co-occurrence and the multiplicative weight rule. Because the expected combined weight over people with neither, one or both conditions equals one minus the product of one minus each YLD rate, the adjustment needs no count of comorbid people. Multiplying by the population gives total YLDs.

Signature

y_12 = 1 - (1 - y_1) * (1 - y_2)
Inputs
InputsDefinitionUnit
y_1Prevalence of condition 1 as a proportion times its weightyears per person per year
y_2Prevalence of condition 2 as a proportion times its weightyears per person per year
Output
y_12Expected combined weight per person in the populationyears 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 = 250

    Worked 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 = 350

    Excel: 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))} Needs import 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-6

    Test (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-6

    Common 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.

    View source →

  • 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.

    View source →

Canonical Identity