comment: This is an IPAT-S script. IPAT-S is an open-source scripting language for developing sustainability scenarios. It can be run using the free IPAT-S software, available from: http://ipat-s.kb-creative.net/ For more information, please contact the author of IPAT-S, Eric Kemp-Benedict (eric@kb-creative.net) :comment comment: This script implements two income distribution scenarios using a lognormal income distribution function. When using a lognormal function, the shape of the income distribution is determined by just one parameter (here, the Gini coefficient). Future changes in income by quintile are determined by the growth rate of GDP per capita (average income) and change in the Gini coefficient. Also, using a fixed income poverty line, the poverty rate is estimated in each scenario. In the script it is assumed that the income growth rate is the same for both scenarios. If the user wants, he or she can change the parameter "GiniElast" to have income growth respond to changes in the Gini coefficient over time. (To date, there is little evidence for a relationship between income growth and income inequality, although some research has shown that high initial levels of inequality can lead to lower subsequent growth after controlling for other factors.) As a further variation on the basic calculation, income mobility is also taken into account. With an income mobility "transition matrix" (which gives the fraction of people making the transition from one quintile to another after a given time), the average level of future income can be estimated based on the starting (base-year) quintile. This average (or "expected value") income is reported as "expected income" in the script. :comment # Sample IPAT-S script # Estimate income by quintile from average income and Gini coefficient # Assume a lognormal income distribution baseyear 2000 scenario years 2010 2020 dim scenario 'Egalitarian' 'Inegalitarian' # Use the same categories for "quintile" and "initQuintile" ditto 'Q1' 'Q2' 'Q3' 'Q4' 'Q5': dim quintile '' dim initQuintile '' ## ## Aggregate population and GDP ## summvar Pop = 300, 320, 350 summvar GDP{scenario} GDP.by = 11250 * Pop.by ratio income = gr(<2.0%>) ## ## Income distribution ## # Gini coefficient var Gini{scenario} Gini{scenario = 'Inegalitarian'} = 37%, <40%, 42%> Gini{scenario = 'Egalitarian'} = 37%, <35%, 33%> report Gini as "Gini coefficient" number GiniElast = <0.0> :: Pop >> income * Gini^GiniElast -> GDP # Assume lognormally distributed, and estimate high 20%/low 20% ratio # Variables are: # sigma - standard deviation of log income (standard parameter for lognormal) # high_low - ratio of average income of highest-earning 20% to lowest-earning 20% var sigma{scenario} high_low{scenario} # Calculate sigma from the Gini coefficient, assuming lognormal :: (sqrt(2) * N_inv((1 + Gini)/2)) -> sigma # Estimate high 20%/low 20% using lognormal Lorenz curve :: (1.0 - N(N_inv(80%) - sigma))/(N(N_inv(20%) - sigma)) -> high_low report high_low as "High 20%/Low 20%" # Calculate income quintiles summvar totIncome{quintile, scenario} var incomePerCap{quintile, scenario} # Calculate shares of GDP within each quintile, using lognormal Lorenz curve :: GDP * N(N_inv(20%) - sigma) -> totIncome{quintile = 'Q1'} :: GDP * (N(N_inv(40%) - sigma) - N(N_inv(20%) - sigma)) -> totIncome{quintile = 'Q2'} :: GDP * (N(N_inv(60%) - sigma) - N(N_inv(40%) - sigma)) -> totIncome{quintile = 'Q3'} :: GDP * (N(N_inv(80%) - sigma) - N(N_inv(60%) - sigma)) -> totIncome{quintile = 'Q4'} :: GDP * (100% - N(N_inv(80%) - sigma)) -> totIncome{quintile = 'Q5'} # Average income by quintile -- each quintile has 20% of the population :: totIncome / (20% * Pop) -> incomePerCap report 100 * totIncome / GDP as "Income quintile (%)" report GDP/Pop as "Average income (l.c./cap)" report incomePerCap as "Income (l.c./cap)" number PovLine = 365 * 10 # 10 l.c./cap/day is fixed poverty line report 100 * N((1/sigma) * (ln(PovLine/(GDP/Pop)) + sigma^2/2)) as "Poverty rate (%)" # Finally, take income mobility into account, using 10-year and 20-year transfer matrices var MobilityTM{initQuintile, quintile} # Initial quintile = Q1 ditto initQuintile = 'Q1': MobilityTM{'', quintile = 'Q1'} = 100%, 61.5%, 44.3% MobilityTM{'', quintile = 'Q2'} = 0%, 24.0%, 25.0% MobilityTM{'', quintile = 'Q3'} = 0%, 8.6%, 15.6% MobilityTM{'', quintile = 'Q4'} = 0%, 4.3%, 9.7% MobilityTM{'', quintile = 'Q5'} = 0%, 1.6%, 5.4% # Initial quintile = Q2 ditto initQuintile = 'Q2': MobilityTM{'', quintile = 'Q1'} = 0%, 22.7%, 24.3% MobilityTM{'', quintile = 'Q2'} = 100%, 31.3%, 23.9% MobilityTM{'', quintile = 'Q3'} = 0%, 27.5%, 22.3% MobilityTM{'', quintile = 'Q4'} = 0%, 12.9%, 17.7% MobilityTM{'', quintile = 'Q5'} = 0%, 5.6%, 11.8% # Initial quintile = Q3 ditto initQuintile = 'Q3': MobilityTM{'', quintile = 'Q1'} = 0%, 9.6%, 15.1% MobilityTM{'', quintile = 'Q2'} = 0%, 22.5%, 21.1% MobilityTM{'', quintile = 'Q3'} = 100%, 29.6%, 23.1% MobilityTM{'', quintile = 'Q4'} = 0%, 26.1%, 22.4% MobilityTM{'', quintile = 'Q5'} = 0%, 12.2%, 20.1% # Initial quintile = Q4 ditto initQuintile = 'Q4': MobilityTM{'', quintile = 'Q1'} = 0%, 3.3%, 9.9% MobilityTM{'', quintile = 'Q2'} = 0%, 17.3%, 18.0% MobilityTM{'', quintile = 'Q3'} = 0%, 22.4%, 21.8% MobilityTM{'', quintile = 'Q4'} = 100%, 31.6%, 24.6% MobilityTM{'', quintile = 'Q5'} = 0%, 25.4%, 25.8% # Initial quintile = Q5 ditto initQuintile = 'Q5': MobilityTM{'', quintile = 'Q1'} = 0%, 2.9%, 6.5% MobilityTM{'', quintile = 'Q2'} = 0%, 4.9%, 12.0% MobilityTM{'', quintile = 'Q3'} = 0%, 11.9%, 17.3% MobilityTM{'', quintile = 'Q4'} = 0%, 25.1%, 25.6% MobilityTM{'', quintile = 'Q5'} = 100%, 55.2%, 38.6% var expectedIncomePerCap{initQuintile, scenario} :: MobilityTM * incomePerCap -> expectedIncomePerCap report expectedIncomePerCap as "Income Expected (l.c./cap)"