Standard inequality metrics like the Gini coefficient and Theil index are scale-invariant (relative) measures: if every individual’s income doubles, relative inequality remains completely unchanged. However, in many economic and corporate settings, analysts require an translation-invariant (absolute) measure: if every entity receives an equal cash bonus, absolute inequality should remain unchanged. The Kolm Inequality Index provides an axiomatic foundation for absolute inequality modeling. In Microsoft Excel, leveraging LAMBDA, MAP, and VSTACK allows you to compute Kolm inequality indices dynamically across multiple sensitivity thresholds.
Understanding the Kolm Inequality Index Formulation
For a distribution of values (x_i) with mean (mu) and absolute inequality aversion parameter (kappa > 0) (kappa), the Kolm Index ((K_kappa)) is defined mathematically as:
K = (1 / kappa) * LN( (1 / N) * SUM( EXP( -kappa * (x_i - mean) ) ) )
- Translation Invariance: Adding a fixed constant (c) to all observations does not alter the Kolm Index ((K(x + c) = K(x))).
- Aversion Parameter ((kappa)): Controls the analyst’s sensitivity to transfers at the lower tail of the distribution. Higher kappa values place stronger weight on disparities among the lowest earners.
- Economic Interpretation: The Kolm Index represents the absolute amount (in currency or output units) that could be deducted from each individual’s share while preserving the same societal welfare level if distribution were equal.
Building the Dynamic LAMBDA Kolm Calculation Engine
Assuming raw observations reside in A2:A50 (e.g. Employee Salaries or Departmental Budgets), author a reusable LAMBDA formula using LET:
=LAMBDA(values, kappa,
LET(
clean_x, FILTER(values, ISNUMBER(values)),
n_count, ROWS(clean_x),
mu, AVERAGE(clean_x),
deviations, clean_x - mu,
kolm, (1 / kappa) * LN((1 / n_count) * SUM(EXP(-kappa * deviations))),
kolm
)
)
Stacking Multi-Scenario Sensitivity Models with VSTACK
Assemble an executive sensitivity table comparing multiple kappa parameters alongside absolute welfare interpretations using VSTACK and HSTACK:
=LET(
data, B2:B40,
clean_d, FILTER(data, ISNUMBER(data)),
n, ROWS(clean_d),
mu_val, AVERAGE(clean_d),
calc_kolm, LAMBDA(k,
(1 / k) * LN((1 / n) * SUM(EXP(-k * (clean_d - mu_val))))
),
k_001, calc_kolm(0.001),
k_005, calc_kolm(0.005),
k_010, calc_kolm(0.010),
headers, HSTACK("Absolute Aversion (Kappa)", "Kolm Index (Absolute Currency)", "Inequality Assessment"),
row1, HSTACK("Kappa = 0.001 (Mild)", TEXT(k_001, "$#,##0.00"), IF(k_001 < 500, "Low Absolute Disparity", "Noticeable Disparity")),
row2, HSTACK("Kappa = 0.005 (Moderate)", TEXT(k_005, "$#,##0.00"), IF(k_005 < 2000, "Moderate Disparity", "High Tail Skew")),
row3, HSTACK("Kappa = 0.010 (Strict)", TEXT(k_010, "$#,##0.00"), IF(k_010 < 5000, "High Absolute Disparity", "Severe Disparity")),
VSTACK(headers, row1, row2, row3)
)
Key Advantages of the Dynamic Array Approach
- Zero Overflow Errors: Normalizing by the sample mean inside
clean_d - mu_valkeeps exponents manageable, preventing mathematical overflow in Excel’sEXP()function. - Instant Dynamic Spilling: Adding new rows to the source data automatically updates the entire sensitivity matrix across all aversion levels.
- Seamless Integration: Register
CALC_KOLM_INDEXin Name Manager to evaluate organizational pay gaps or resource allocations across any sheet with a single function call.