/*
File: cepr_sipp_topcode_pareto.do, CEPR ORG Version 0.9
Date: Jul 18, 2003
Desc: Estimates mean above the top-code for weekly earnings using
pareto distribution
Note: See copyright notice at end of program.
*/
local T=($topcode) /* to simplify calculation below */
di "topcode = $topcode"
di "T = `T'"
/* Description of procedure for estimating mean above top-code
Step 1: use sample data to estimate parameters of pareto distribution
If:
1. y refers to weekly earnings and T to the topcode
2. Pr(y>x)=(k/x)^alpha, where x is a particular value of y
2. F(y)=1-(k/y)^alpha is the cumulative distribution function (pareto
distribution)
3. alpha and k are paramters of the pareto distribution
Then:
1. it is possible to estimate the parameters alpha and k from two points,
y1 and y2, in the observed distribution:
2. alpha=ln[(1-F(y1))/(1-F(y2))]/ln(y2/y1) [Note that the procedure is
invalid if alpha is not > 1. If alpha <=1, the improper integral
implicitly evaluated below would not converge. In practice, though,
it is unlikely that alpha will not be > 1.]
3. k=y1*(1-F(y1))^(1/alpha)
4. also note that the pareto distribution is not defined for y= T, the program
defines the new density function by multiplying the density function
from the Pareto distribution by 1/(1-F(T)); this factor is needed to
ensure that the integral of the new density function is one.)
For further discussions, see:
Feenberg, Daniel R. and James M. Poterba (1992), "Income inequality and
the Incomes of Very High Income Taxpayers: Evidence from Tax Returns,"
NBER Working Paper No. 4229, Technical Appendix, pp. 28-30.
Kuznets, Simon (1953), Shares of Upper Income Groups in Income and Savings,
New York: National Bureau of Economic Research.
Saez, Emmanuel and Michael R. Veall (2003), "The Evolution of High Incomes
in Canada," NBER Working Paper No. 9607, Appendix B.1., pp. 38-29.
*/
* Step 1 use sample data to estimate parameters of pareto distribution
* using three different cutoff points for the pareto distribution:
* the 70th, 80th, and 90th percentiles of the weekly earnings
* distribution
* a. calculate share of weekly earnings at or above the top-code: 1-F(T)
* universe is all those not paid by hour and reporting weekly earnings
* not paid by hour is paidhre==2 in NBER data, ==0 in modified data
/* topcode indicator variable calculated earlier in
cepr_org_topcode_lognormal.do; if not, create topcode here: */
/*
gen byte tc=0 if empl==1 & selfemp==0 & $inc~=. & (paidhre==0 | paidhre==2)
replace tc=1 if empl==1 & selfemp==0 & `T'<=$inc & $inc~=.
lab var tc "Weekly earnings topcoded"
notes tc: Weekly earnings topcodes are: 1979-88: $999; 1989-97: $1923; /*
*/ 1998- $2884
*/
sum tc [aw=wpfinwgt]
local F2=r(mean) /* probability that weekly earnings is above the topcode;
analagous to 1-F(y2) above */
* b. calculate alternative values for y1
_pctile $inc if tc~=., p(70,80,90)
local y7=r(r1)
local y8=r(r2)
local y9=r(r3)
di "y7 = `y7'"
di "y8 = `y8'"
di "y9 = `y9'"
* c. estimate parameters of the pareto distribution
* 70th percentile cutoff
local alpha7=ln((1-0.7)/(`F2'))/ln(`T'/`y7')
if `alpha7'<=1 {
di "Warning: Invalid value for alpha (70th percentile)"
}
local k7=`y7'*((1-0.7)^(1/`alpha7'))
* 80th percentile cutoff
local alpha8=ln((1-0.8)/(`F2'))/ln(`T'/`y8')
if `alpha8'<=1 {
di "Warning: Invalid value for alpha (80th percentile)"
}
local k8=`y8'*((1-0.8)^(1/`alpha8'))
* 90th percentile cutoff
local alpha9=ln((1-0.9)/(`F2'))/ln(`T'/`y9')
if `alpha9'<=1 {
di "Warning: Invalid value for alpha (90th percentile)"
}
local k9=`y9'*((1-0.9)^(1/`alpha9'))
* d. weight the integral (since we are looking at only the area
* above the topcode
local wgtup7=1/(`F2')
local wgtup8=1/(`F2')
local wgtup9=1/(`F2')
* Step 2: use estimated pareto distribution to estimate mean above topcode
* 70th percentile cutoff
local pre7=`alpha7'/(`alpha7'-1)
local top7=`k7'^`alpha7'
local bot7=`T'^(`alpha7'-1)
*global matc7 : display %6.0f `wgtup7'*`pre7'*(`top7'/`bot7')
global matc7 = `wgtup7'*`pre7'*(`top7'/`bot7')
* 80th percentile cutoff
local pre8=`alpha8'/(`alpha8'-1)
local top8=`k8'^`alpha8'
local bot8=`T'^(`alpha8'-1)
*global matc8 : display %6.0f `wgtup8'*`pre8'*(`top8'/`bot8')
global matc8 = `wgtup8'*`pre8'*(`top8'/`bot8')
* 90th percentile cutoff
local pre9=`alpha9'/(`alpha9'-1)
local top9=`k9'^`alpha9'
local bot9=`T'^(`alpha9'-1)
*global matc9 : display %6.0f `wgtup9'*`pre9'*(`top9'/`bot9')
global matc9 = `wgtup9'*`pre9'*(`top9'/`bot9')
/*
Copyright 2003 CEPR, John Schmitt, and Eric Freeman
This file is part of the cepr_org_master.do program. This file and all
programs referenced in it are free software. You can redistribute the
program or modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA.
*/