Measures whether exposure to pollution is concentrated among lower-income or higher-income people. The index runs from -1 (all the exposure borne by the poorest) through 0 (exposure shared evenly across income) to +1 (all of it borne by the richest); environmental-justice analyses report it next to the burden.
Value
A list of class rmbl_equity (plot() draws the
concentration curve) with concentration_index (a number in
\([-1, 1]\)), interpretation (a sentence),
exposure_mean, citation (a string) and extra, a
list with n (rows used), cov_h_R (the covariance) and
curve, a data frame of the concentration curve
(population: cumulative population share, poorest first;
exposure: cumulative share of total exposure).
Details
Wagstaff, Paci and van Doorslaer (1991): $$CI = (2 / \mu) \, \mathrm{cov}(h_i, R_i)$$ with \(R_i = (rank_i - 0.5) / n\) the fractional income rank (tied incomes share their average rank, so the index does not depend on row order) and the population covariance. Negative values mean lower-income units bear more exposure. Both columns must be numeric: a factor or character income is refused rather than ranked by its level codes, and exposures must be non-negative.
Rows with a missing exposure or income are dropped. The interpretation
calls an index below -0.01 a burden on the poor, above 0.01 a burden on
the rich, and anything between an even distribution. Refusals: column
names that are not single strings or not in data; fewer than 2
complete rows; a non-numeric or infinite value; a negative exposure; and
a mean exposure of zero (the index divides by it). Income only needs an
order: an amount, a quintile number or a rank all give the same index.
References
Wagstaff, A., Paci, P. and van Doorslaer, E. (1991). On the measurement of inequalities in health. Social Science and Medicine 33(5), 545-557.
Examples
d <- data.frame(exposure = c(30, 25, 20, 15, 10), income = 1:5)
ci <- exposure_concentration_index(d, "exposure", "income")
ci$concentration_index
#> [1] -0.2
ci$interpretation
#> [1] "CI = -0.2000. Pro-poor exposure burden: lower-income individuals bear disproportionately higher pollution."
# Even exposure across income gives 0; tied incomes share a rank.
exposure_concentration_index(data.frame(exposure = 20, income = c(1, 1, 2, 3)),
"exposure", "income")$concentration_index
#> [1] 0
# A text income cannot be ranked.
try(exposure_concentration_index(data.frame(exposure = 1:3, income = c("a", "b", "c")),
"exposure", "income"))
#> Error : `income` must be numeric, got character
