Background Mortality Adjustments

Why Background Mortality Matters

Health economic models track cohorts over long time horizons (often lifetime). Patients can die from the disease being modelled, but they also face background (all-cause) mortality from other causes. Census life tables provide general population mortality rates, but these must be adjusted for your specific patient population.

ParCC provides four methods for handling background mortality.

Method 1: SMR Adjustment

The Scenario – Heart Failure Cohort

You are modelling a cohort of 65-year-old heart failure patients. The general population mortality rate for age 65 (from the Indian Census life table) is 0.013 per year. Published literature reports that heart failure patients have a Standardized Mortality Ratio (SMR) of 2.5 compared to the general population (Meta-analysis by Jhund et al., Eur Heart J 2009).

The Formula

\[r_{disease} = r_{population} \times SMR\]

\[p_{disease} = 1 - e^{-r_{disease} \times t}\]

Worked Example

r_pop <- 0.013   # General population rate, age 65
smr <- 2.5        # From published meta-analysis

r_disease <- r_pop * smr
p_disease <- 1 - exp(-r_disease)

cat("Population rate:", r_pop, "\n")
#> Population rate: 0.013
cat("SMR:", smr, "\n")
#> SMR: 2.5
cat("Disease-adjusted rate:", round(r_disease, 5), "\n")
#> Disease-adjusted rate: 0.0325
cat("Annual mortality probability:", round(p_disease, 5), "\n")
#> Annual mortality probability: 0.03198

Method 2: DEALE (Declining Exponential Approximation of Life Expectancy)

The Scenario – Rare Disease with Known Life Expectancy

For Duchenne Muscular Dystrophy, the observed mean life expectancy is 25 years (from a registry study). The background life expectancy for the same age-sex group is 65 years.

The Formula

\[r_{disease} = \frac{1}{LE_{observed}} - \frac{1}{LE_{background}}\]

Worked Example

le_observed <- 25    # Disease-specific life expectancy
le_background <- 65  # General population

r_excess <- (1 / le_observed) - (1 / le_background)
cat("Excess mortality rate:", round(r_excess, 5), "\n")
#> Excess mortality rate: 0.02462
cat("This means patients face an additional", round(r_excess * 1000, 2),
    "deaths per 1,000 person-years beyond background\n")
#> This means patients face an additional 24.62 deaths per 1,000 person-years beyond background

Method 3: Gompertz Parameterization

When to Use

The Gompertz law describes how mortality increases exponentially with age, which closely matches human mortality patterns above age 30:

\[r(age) = \alpha \times e^{\beta \times age}\]

This is useful when you need age-specific mortality rates and only have a few data points from the life table.

Worked Example

# Fit Gompertz from two life table points
# Age 60: rate = 0.008
# Age 80: rate = 0.065

r1 <- 0.008; age1 <- 60
r2 <- 0.065; age2 <- 80

beta <- log(r2 / r1) / (age2 - age1)
alpha <- r1 / exp(beta * age1)

cat("Gompertz alpha:", format(alpha, scientific = TRUE), "\n")
#> Gompertz alpha: 1.491488e-05
cat("Gompertz beta:", round(beta, 5), "\n\n")
#> Gompertz beta: 0.10475

# Generate age-specific rates
ages <- seq(50, 90, by = 5)
rates <- alpha * exp(beta * ages)
probs <- 1 - exp(-rates)

data.frame(
  Age = ages,
  Rate = round(rates, 5),
  Annual_Prob = round(probs, 5)
)
#>   Age    Rate Annual_Prob
#> 1  50 0.00281     0.00280
#> 2  55 0.00474     0.00473
#> 3  60 0.00800     0.00797
#> 4  65 0.01351     0.01342
#> 5  70 0.02280     0.02255
#> 6  75 0.03850     0.03777
#> 7  80 0.06500     0.06293
#> 8  85 0.10974     0.10393
#> 9  90 0.18528     0.16913

Method 4: Linear Interpolation

For ages between available life table entries, linear interpolation provides a simple estimate:

\[r(age) = r_1 + (age - age_1) \times \frac{r_2 - r_1}{age_2 - age_1}\]

References