The Atkinson Index is a welfare-based measure of economic disparity that introduces an explicit normative parameter representing societal aversion to inequality ((epsilon)). Unlike purely descriptive statistical measures such as the Gini coefficient or coefficient of variation, the Atkinson Index quantifies the proportion of total income or revenue that could be sacrificed without reducing overall social welfare if distributions were perfectly equal. Using modern dynamic arrays in Microsoft Excel, you can build parametric Atkinson inequality models that recalculate dynamically across different inequality aversion thresholds using LAMBDA, MAP, and VSTACK.
Understanding the Atkinson Index Mathematical Formulation
For a distribution of values (y_i) with mean (mu) and inequality aversion parameter (epsilon > 0), the Atkinson Index ((A_epsilon)) is defined as:
A = 1 - ( (1 / N) * SUM( (y_i / mean)^(1 - epsilon) ) )^(1 / (1 - epsilon)) [for epsilon != 1]
A = 1 - EXP( (1 / N) * SUM( LN(y_i / mean) ) ) [for epsilon == 1]
- (epsilon = 0.5): Moderate aversion to inequality, placing balanced weight across median and lower brackets.
- (epsilon = 1.0): Standard aversion threshold corresponding to logarithmic utility.
- (epsilon = 2.0): High aversion to inequality, heavily penalizing disparities at the bottom end of the distribution.
- Interpretation: An Atkinson Index of 0.25 indicates that society could achieve the same level of economic welfare with 25% less total income if the distribution were completely equal.
Building the Dynamic LAMBDA Atkinson Function
Assuming your dataset of revenue or income observations resides in A2:A50, create a flexible LAMBDA function using LET:
=LAMBDA(values, epsilon,
LET(
clean_v, FILTER(values, ISNUMBER(values) * (values > 0)),
n, ROWS(clean_v),
mu, AVERAGE(clean_v),
ratios, clean_v / mu,
atkinson, IF(
epsilon = 1,
1 - EXP((1 / n) * SUM(LN(ratios))),
1 - ((1 / n) * SUM(ratios^(1 - epsilon)))^(1 / (1 - epsilon))
),
atkinson
)
)
Stacking Multi-Parameter Sensitivity Tables with VSTACK
In financial and policy analysis, reporting a single Atkinson Index is rarely sufficient; analysts evaluate results across multiple aversion levels. Use VSTACK and HSTACK to spill a formatted sensitivity dashboard automatically:
=LET(
data, B2:B40,
clean_d, FILTER(data, ISNUMBER(data) * (data > 0)),
n_count, ROWS(clean_d),
mu_val, AVERAGE(clean_d),
calc_atk, LAMBDA(eps,
LET(
r, clean_d / mu_val,
IF(eps = 1, 1 - EXP((1 / n_count) * SUM(LN(r))), 1 - ((1 / n_count) * SUM(r^(1 - eps)))^(1 / (1 - eps)))
)
),
atk_05, calc_atk(0.5),
atk_10, calc_atk(1.0),
atk_20, calc_atk(2.0),
headers, HSTACK("Aversion Parameter (Epsilon)", "Atkinson Index", "Welfare Loss Equivalent"),
row1, HSTACK("Epsilon = 0.5 (Moderate)", TEXT(atk_05, "0.0000"), TEXT(atk_05, "0.0%")),
row2, HSTACK("Epsilon = 1.0 (Standard)", TEXT(atk_10, "0.0000"), TEXT(atk_10, "0.0%")),
row3, HSTACK("Epsilon = 2.0 (High Aversion)", TEXT(atk_20, "0.0000"), TEXT(atk_20, "0.0%")),
VSTACK(headers, row1, row2, row3)
)
Why This Formula Structure is Superior
- Instant Recalculation: Updating any number in the source data immediately recalculates all three aversion tiers without manual intervention.
- Division-by-Zero Protection: The
FILTERfunction eliminates zero values and empty cells, preventing mathematical domain errors in both power and logarithmic evaluations. - Self-Contained Reporting: Combining
HSTACKandVSTACKdelivers a publication-ready dashboard table that requires zero manual formatting.