Slope index of inequality for grouped health data

Gives the slope of the line fitted by population-weighted least squares to group mean health against the midpoint rank of each group, with the population ranked from the most disadvantaged (rank 0) to the most advantaged (rank 1). The slope equals predicted health at rank 1 minus predicted health at rank 0, so the index is in the units of the health variable. From group values, cov_hr is the sum over groups of f_j times (h_j minus mu) times (r_j minus 0.5), and var_r is the sum of f_j times (r_j minus 0.5) squared, because the population-weighted mean rank is 0.5. The computational function HE-CF-HINQ-001 carries out the full procedure from group means and population shares.

Signature

SII = cov_hr / var_r
Inputs
InputsDefinitionUnit
cov_hrPopulation-weighted covariance between group mean health and group midpoint rankhealth units, for example years of QALE
var_rPopulation-weighted variance of the group midpoint ranks. It depends only on the population shares and is 0.08 for five equal groupsnone
Output
SIISlope index of inequality: predicted health at rank 1 minus predicted health at rank 0. Positive when health is higher in the advantaged groupsunits of the health variable, for example years of QALE

Function

Health inequality measures across ordered population groups

Maps the mean health of population groups, ordered from the most to the least disadvantaged, and the share of the population in each group to summary measures of socioeconomic-related health inequality: the absolute and relative gaps between the extreme groups, the slope index of inequality, the relative index of inequality in two forms and the concentration index. The measures describe how health varies with socioeconomic position and do not say whether that variation is unfair, which is the separate judgement of health inequity. The Atkinson index, which ignores the ranking of groups, has its own records on the Atkinson index page (HE-FN-ATK-001) and is not repeated here.

Computational function

  • Computational function: health inequality indices from group mean health and population shares

    Takes the inputs a health inequality analysis usually holds, the mean health of each group in order from the most to the least disadvantaged and the share of the population in each group, and returns the slope index of inequality, both forms of the relative index of inequality and the concentration index. It first builds each group's midpoint rank from the shares, then the population-weighted mean, covariance and variance, and then applies HE-FM-HINQ-002 to HE-FM-HINQ-005. The inputs therefore differ from the formulas' variables, which take the ranks, covariance and variance as given.

    Inputs and outputs: h_j: Mean health of group j, in order from the most disadvantaged group to the most advantaged; required, above zero for the relative measures. Unit: health units, for example years of QALE.; f_j: Share of the population in group j, in the same order; required, above zero. The R and Python versions divide by the total, so counts can be entered. Unit: proportion.; r_j: Midpoint rank of group j, the sum of the shares before it plus half its own share, returned as an intermediate output. Unit: none.; mu: Population-weighted mean health. Unit: health units.; cov_hr: Population-weighted covariance of health and rank, an intermediate output. Unit: health units.; var_r: Population-weighted variance of rank, an intermediate output. Unit: none.; SII: Slope index of inequality. Unit: health units.; alpha: Predicted health at rank 0. Unit: health units.; RII_ratio: Relative index of inequality, ratio form. Unit: none.; RII_mean: Relative index of inequality, slope index over mean health. Unit: none.; C: Concentration index. Unit: none.

    Assumption: The groups have a natural socioeconomic order, each group is given its mean health so only inequality between groups is measured, and the slope index comes from a straight line fitted by population-weighted least squares.

    Worked example (Five equal deprivation quintiles): The article's quintiles, with QALE of 62, 66, 69, 71 and 72 years and 20% of the population in each, give a mean of 68 years, a slope index of 12.5 years, relative indices of 1.2024 and 0.1838, and a concentration index of 0.0294. h_j = [62,66,69,71,72]; f_j = [0.2,0.2,0.2,0.2,0.2]; mu = 68; SII = 12.5; RII_ratio = 1.2024; RII_mean = 0.1838; C = 0.0294

    Worked example (Gain of 1 year in every quintile): Programme A in the article leaves the slope index at 12.5 years while every relative measure falls. h_j = [63,67,70,72,73]; f_j = [0.2,0.2,0.2,0.2,0.2]; mu = 69; SII = 12.5; RII_ratio = 1.1992; RII_mean = 0.1812; C = 0.0290

    Worked example (Unequal group sizes): An illustrative variation with the same QALE values and shares of 0.30, 0.25, 0.20, 0.15 and 0.10 from the most to the least deprived group gives midpoint ranks of 0.15, 0.425, 0.65, 0.825 and 0.95. h_j = [62,66,69,71,72]; f_j = [0.30,0.25,0.20,0.15,0.10]; mu = 66.75; SII = 13.0; RII_ratio = 1.2158; RII_mean = 0.1948; C = 0.0307

    Worked example (Equal health in every group): When every group has the same mean health the function returns no inequality on any measure, a limiting case that checks the implementation. h_j = [68,68,68,68,68]; f_j = [0.2,0.2,0.2,0.2,0.2]; mu = 68; SII = 0; RII_ratio = 1; RII_mean = 0; C = 0

    Excel: =SUM(B$2:B2)-B2/2 With the shares in B2:B6, summing to 1, this formula filled down beside them gives the midpoint ranks, named Rank, with health in a range named Health and shares in Share. The slope index is then =SUMPRODUCT(Share,(Health-SUMPRODUCT(Share,Health))*(Rank-0.5))/SUMPRODUCT(Share,(Rank-0.5)^2) and the concentration index =2*SUMPRODUCT(Share,(Health-SUMPRODUCT(Share,Health))*(Rank-0.5))/SUMPRODUCT(Share,Health).

    R: health_ineq <- function(h, f) { f <- f/sum(f); r <- cumsum(f)-f/2; mu <- sum(f*h); cv <- sum(f*(h-mu)*(r-0.5)); vr <- sum(f*(r-0.5)^2); sii <- cv/vr; a <- mu-sii/2; c(mean = mu, SII = sii, RII_ratio = (a+sii)/a, RII_mean = sii/mu, C = 2*cv/mu) } Returns the mean and the four indices for one set of groups; applying it to each programme's group means gives a comparison table.

    Python: def health_ineq(h, f): w = [x/sum(f) for x in f]; r = [sum(w[:j])+w[j]/2 for j in range(len(w))]; mu = sum(a*b for a, b in zip(w, h)); cv = sum(a*(b-mu)*(c-0.5) for a, b, c in zip(w, h, r)); vr = sum(a*(c-0.5)**2 for a, c in zip(w, r)); sii = cv/vr; al = mu-sii/2; return {'mean': mu, 'SII': sii, 'RII_ratio': (al+sii)/al, 'RII_mean': sii/mu, 'C': 2*cv/mu} Plain Python with no imports; the shares are rescaled to sum to 1 inside the function.

    Test (Population-weighted mean rank is one half): With midpoint ranks built from shares that sum to 1, the weighted mean rank is 0.5. Expected result: TRUE. Excel check: =ABS(SUMPRODUCT(Share,Rank)-0.5)<1E-9

    Test (Concentration index agrees with the slope index): Twice the variance of rank times the slope index, divided by mean health, returns the concentration index. Expected result: TRUE. Excel check: =ABS(ConcIndex-2*SUMPRODUCT(Share,(Rank-0.5)^2)*SII/SUMPRODUCT(Share,Health))<1E-9

    Common error (Fitting an unweighted line when groups differ in size): Using Excel SLOPE on the group means and midpoint ranks gives each group the same weight. In the unequal-shares example it returns about 12.66 years instead of 13.0, and every relative measure built on it inherits the error.

    Source: World Health Organization. Handbook on health inequality monitoring: with a special focus on low- and middle-income countries. Geneva: World Health Organization; 2013. Section 3.5 on the slope index of inequality, with ranks at the midpoint of each subgroup's range in the cumulative population distribution, and the tip box on the relative index of inequality. The concentration index steps follow O'Donnell O, van Doorslaer E, Wagstaff A, Lindelow M. Analyzing health equity using household survey data: a guide to techniques and their implementation. Washington, DC: World Bank; 2008. Chapter 8, equations 8.3 and 8.5.

    r_j = sum_(k=1)^(j-1) [f_k] + f_j / 2; mu = sum_(j=1)^J [f_j * h_j]; cov_hr = sum_(j=1)^J [f_j * (h_j - mu) * (r_j - 0.5)]; var_r = sum_(j=1)^J [f_j * (r_j - 0.5)^2]; SII = cov_hr / var_r; alpha = mu - SII / 2; RII_ratio = (alpha + SII) / alpha; RII_mean = SII / mu; C = 2 * cov_hr / mu

Try this function

Implementations

  • Excel

    Slope index of inequality from grouped data in one Excel cell

    With group mean health in a range named Health, population shares summing to 1 in Share and midpoint ranks in Rank, all in order from the most disadvantaged group, Excel returns the population-weighted slope. Each midpoint rank is the sum of the shares of the groups before it plus half the group's own share.

    =SUMPRODUCT(Share,(Health-SUMPRODUCT(Share,Health))*(Rank-0.5))/SUMPRODUCT(Share,(Rank-0.5)^2)

Assumptions

  • Straight line fitted by population-weighted least squares for the slope index

    The slope index here comes from a straight line fitted by population-weighted least squares, as in the article. The WHO handbook asks for an appropriate regression model, and a different model gives a different value, so the model is stated with the result.

  • Naturally ordered groups for the slope index of inequality

    The groups have a natural order, such as deprivation quintiles or education levels, and are ranked from the most to the least disadvantaged. For groups without an order, such as regions, the WHO handbook uses other measures.

  • Between-group inequality only in the grouped slope index

    Each group is represented by its mean health, so differences within a group are averaged away and the index describes inequality between the groups only.

Worked examples

  • Slope index of inequality for five equal deprivation quintiles

    In the article's example with five equal quintiles the population-weighted covariance is 1.0 and the variance of the midpoint ranks is 0.08, so the slope index is 1.0 / 0.08 = 12.5 years of QALE. It exceeds the simple gap of 10 years because it compares predicted values at ranks 0 and 1, not quintiles centred at ranks 0.1 and 0.9.

    cov_hr = 1.0; var_r = 0.08; SII = 12.5
  • Slope index of inequality with unequal group sizes

    An illustrative variation on the article's example keeps the same QALE values but gives the five groups population shares of 0.30, 0.25, 0.20, 0.15 and 0.10, from the most to the least deprived. The midpoint ranks become 0.15, 0.425, 0.65, 0.825 and 0.95, the covariance 1.02375 and the variance 0.07875, so the slope index is 13.0 years while the absolute gap stays at 10 years.

    cov_hr = 1.02375; var_r = 0.07875; SII = 13.0

Common errors

  • Reading the slope index of inequality as the gap between extreme groups

    The slope index compares predicted health at ranks 0 and 1, the ends of the population distribution, not the means of the first and last groups. In the article's example it is 12.5 years against a simple gap of 10 years, so the two numbers are not interchangeable in a report.

  • Fitting an unweighted line for the slope index with unequal group sizes

    An unweighted fit, for example with Excel SLOPE, gives every group the same weight whatever its size. In the unequal-shares example the unweighted slope is about 12.66 years against 13.0 years with population weights.

Sources

  • WHO handbook method for the slope index of inequality

    World Health Organization. Handbook on health inequality monitoring: with a special focus on low- and middle-income countries. Geneva: World Health Organization; 2013. Section 3.5, which ranks the population from the most disadvantaged at rank 0 to the most advantaged at rank 1, places each subgroup at the midpoint of its range in the cumulative population distribution, regresses health on that midpoint and takes the difference between the predicted values at rank 1 and rank 0.

    View source →

Canonical Identity

Stable URI · Machine-readable · Resolvable · CC BY 4.0