help for ineqfac                                Stephen P. Jenkins (March 2009)

Inequality decomposition by factor components, following Shorrocks (1982a, b)

ineqfac facvars [weights] [ if exp] [in range ] [, i2 stats total(newvarname) ]

fweights and aweights are allowed; see help weights.


ineqfac provides an exact decomposition of the inequality of total income into inequality contributions from each of the factor components of total income. More specifically, given the set of factors

facvars = {factor_1 factor_2 ... factor_F},

define the variable totvar such that for each observation in the data set,

F totvar = SUM (factor_f). f=1

Shorrocks (1982a) proved that there was a unique 'decomposition rule' for which inequality in totvar across observations could be expressed as the sum of inequality contributions from each of the factor components, and which also satisfied some other basic axioms. The decomposition rule is the "proportionate contribution of factor f to total inequality", s_f:

s_f = rho_f*sd(factor_f)/sd(totvar) where rho_f is the correlation between factor_f and totvar, and sd(.) is the standard deviation. Equivalently, s_f is the slope coefficient from the regression of factor_f on totvar. Observe that for each observation,

F SUM (s_f) = 1. f=1

Factor components with a positive value for s_f make a disqualizing contribution to inequality in total income; factor components with negative s_f values make an equalizing contribution.

Shorrocks shows that choice of the decomposition rule is an issue independent of that concerning which index is used to summarise inequality. However there happens to be a nice link with the case in which inequality is measured using the coefficient of variation, for one can also re-write s_f as:

s_f = rho_f*[m(factor_f)/m(totvar)]*[CV(factor_f)/CV(totvar)] where m(.) is the mean, and CV(.) is the coefficient of variation = sd(.)/m(.). If m(factor_f) > 0 for every f, then also

s_f = rho_f*[m(factor_f)/m(totvar)]*[I2(factor_f)/I2(totvar)]^(.5)

where I2(.) = half the squared coefficient of variation (a member of the Generalised Entropy class of inequality measures).

Thus total inequality can be written in terms of the factor correlations with total income, the factor shares in total income = m(factor_f)/m(totvar), and the factor inequalities (summarized using CV or I2).

ineqfac reports the estimates for each factor component of: s_f, S_f = s_f*CV(totvar), m(factor_f)/m(totvar), CV(factor_f), and CV(factor_f)/CV(totvar), plus, optionally, the correlations, means and standard deviations of the factor components and totvar. Optionally, inequality may be summarised using I2 rather than CV as long as m(factor_f) > 0, for every f.

ineqfac was designed as a tool for income distribution analysis in the case where the current sample contains observations on income components for each of a set of income receiving units (e.g. families, households, persons). In this case, facvars might include labour income, income from investments and pensions, cash transfers, etc. See Shorrocks (1982b) and Jenkins (1995) for examples. ineqfac may also be used to summarise and compare the riskiness of portfolios of wealth holdings: s_f has the same form as the "beta coefficient" used in finance analysis.


stats provides the means, standard deviations, and correlations of the factor components and totvar.

total(newvarname) creates a new variable equal to the sum of the factor components for each observation.

i2 summarises inequality using I2 rather than CV. The option is available only if every factor mean is positive.

Saved results

r(mean_total), r(sd_total), mean, standard deviatio > n, variance and CV for Total r(var_total), r(cv_total)

r(sf_f), r(mean_f), proportionate inequalit > y contribution, mean, r(sd_f), r(var_f), r(cv_f) standard deviation, var > iance, CV, and r(share_f) share of total (mean_f/ > mean_total), for each factor, f. "f" is replaced by the > factor's varname.

r(N) Number of non-missing o > bservations used

r(nfactor) Number of factor variab > les

r(varlist) The names of the factor > variables


. ineqfac labour invest transfer, stats

. ineqfac labour invest transfer, stats total(grossi)

. generate negtax = -tax

. ineqfac labour invest transfer negtax, stats total(disposablei)


Stephen P. Jenkins <stephenj@essex.ac.uk> Institute for Social and Economic Research University of Essex, Colchester CO4 3SQ, U.K.


This is an update of ineqfac, first written for Stata version 5. Andreas Peichl beta-tested the revised code.


Jenkins, S.P. 1995. Accounting for Inequality Trends: Decomposition Analyses for the U.K., 1971-1986. Economica 62: 29-63.

Shorrocks, A.F. 1982a. Inequality Decomposition by Factor Components. Econometrica 50: 193-212.

Shorrocks, A.F. 1982b. The Impact of Income Components on the Distribution of Family Incomes. Quarterly Journal of Economics 98: 311-326.

Also see