set more 1 /* File: cepr_org_wages.do Date: Nov 21, 2006 Feb 15, 2008 Feb 10, 2009 Jan 4, 2010 Desc: Creates consistent wage variables for CEPR extract of CPS ORG; for a full discussion of various wage series constructed here, see John Schmitt, "Creating a consistent hourly wage series from the Current Population Survey's Outgoing Rotation Group, 1979-2002," Center for Economic and Policy Research, August 2003, version 0.92, available at www.cepr.net. Note: See copyright notice at end of program. */ /* Determine data year */ local year=year in 1 /* NOTE: this program uses NBER extract for 1979-2002 and Basic CPS for 2003-2004 */ /* BLS allocated earnings */ /* Hourly earnings allocated */ if `year'==1994 {gen byte blsimph=.} /* I25c missing in NBER extract 1994 */ if (1979<=`year' & `year'<=1993) | (1995<=`year' & `year'<=2002) { gen byte blsimph=0 if I25c~=. } if 2003<=`year' & `year'<=2009 { gen byte blsimph=0 if prhernal==0 } if 1979<=`year' & `year'<=1988 { replace blsimph=1 if I25c==1 /* hourly earnings allocated */ } if 1989<=`year' & `year'<=1993 { replace blsimph=1 if I25c==3 } if 1995<=`year' & `year'<=2002 { replace blsimph=1 if I25c==1 } if 2003<=`year' & `year'<=2009 { replace blsimph=1 if prhernal==1 } lab var blsimph "BLS allocated hourly earnings" notes blsimph: Indicates BLS allocated usual hourly earnings notes blsimph: CPS: I25c, prhernal notes blsimph: Missing in NBER extract for 1994 /* Weekly earnings allocated */ if `year'==1994 {gen byte blsimpw=.} /* I25d missing in NBER extract 1994 */ if (1979<=`year' & `year'<=1993) | (1995<=`year' & `year'<=2002) { gen byte blsimpw=0 if I25d~=. } if 2003<=`year' & `year'<=2009 { gen byte blsimpw=0 if prwernal==0 } if 1979<=`year' & `year'<=1988 { replace blsimpw=1 if I25d==1 /* weekly earnings allocated */ } if 1989<=`year' & `year'<=1993 { replace blsimpw=1 if 2<=I25d & I25d<=4 } if 1995<=`year' & `year'<=2002 { replace blsimpw=1 if I25d==1 } if 2003<=`year' & `year'<=2009 { replace blsimpw=1 if prwernal==1 } lab var blsimpw "BLS allocated weekly earnings" notes blsimpw: Indicates BLS allocated usual weekly earnings notes blsimpw: CPS: I25d, prwernal notes blsimpw: Missing in NBER extract for 1994 /* Paid by the hour indicator variable */ if 1979<=`year' & `year'<=2002 { replace paidhre=0 if paidhre==2 } if 2003<=`year' & `year'<=2009 { gen paidhre=0 if peernhry==2 replace paidhre=1 if peernhry==1 } lab var paidhre "Paid by hour" notes paidhre: Indicates BLS records respondent's earnings by hour notes paidhre: Not a consistent indicator of "hourly worker" status notes paidhre: CPS: derived from a-hrlywk, peernhry /* Hourly earnings if "paid by hour" (paidhre==1) */ if 1979<=`year' & `year'<=2002 { replace earnhre=earnhre/100 /* convert from pennies to dollars */ } if 2003<=`year' & `year'<=2009 { gen earnhre=prernhly/100 /* convert from pennies to dollars */ } lab var earnhre "Hourly wage" notes earnhre: Dollars per hour notes earnhre: Excludes over-time, tips, commissions notes earnhre: Top-code 1979-84: 99.00 notes earnhre: Top-code 1985-98: set so that hours worked times earnhre /* */ < weekly earnings top-code notes earnhre: Top-code 1998-: set so that hours worked times earnhre /* */ < 1,998, which is less than the weekly earnings top-code of 2,884 /* */ [BLS documentation; check] notes earnhre: Top-code 1985-: NBER states that top-code not applied /* */ to all observations notes earnhre: Bottom-code: 1979-88: 0.50; 1994: 0.10; 1995: 0.20 notes earnhre: CPS: a-herntp, prernhly, pternhly /* Usual weekly earnings including overtime, tips, commissions */ if 1989<=`year' { gen byte uearnwke=. } if 1994<=`year' { gen byte uearnwk=. } if 2003<=`year' & `year'<=2009 { gen earnwke=prernwa/100 /* convert from pennies to dollars */ replace earnwke=. if earnwke<0 } lab var uearnwk "Weekly pay" notes uearnwk: Dollars per week notes uearnwk: Includes overtime, tips, commissions notes uearnwk: Available 1979-93 only notes uearnwk: Top-code: 1979-88: 999; 1989-93: 1999 notes uearnwk: CPS: a$grwkel1-4; prernwa lab var uearnwke "Weekly pay" notes uearnwke: Dollars per week notes uearnwke: Includes overtime, tips, commissions notes uearnwke: Available 1979-93 only notes uearnwke: Top-code: 1999 notes uearnwke: CPS: a-brswk (locations 427-429) lab var earnwke "Weekly pay" notes earnwk: Dollars per week notes earnwk: Includes overtime, tips, commissions notes earnwk: For paidhre=1: earnhre*uhourse; for paidhre=0: uearnwke notes earnwk: Top-code: 1979-88: 999; 1989-97: 1923; 1998-: 2884 notes earnwk: CPS: a-werntp, prernwa, pternwa notes earnwk: CPS: 1979-88: location 417-419 /* Weekly earnings from overtime, tips, commissions 1994- */ if 1979<=`year' & `year'<=1993 { gen byte wkotc=. gen byte otmgfail=. } if 1994<=`year' & `year'<=2002 { sort month state minsamp hhid hhnum lineno if $gnulin==1 { merge month state minsamp hhid hhnum lineno /* */ using "$locotc/otc`year'.dta" /* see cepr_org_master.do */ } if $gnulin==0 { merge month state minsamp hhid hhnum lineno /* */ using "$locotc\otc`year'.dta" /* see cepr_org_master.do */ } gen byte otmgfail=1 if _merge~=3 * gen wkotc=ptern if peernuot==1 & paidhre==1 /* universe for ptern is those reporting receipt of otc (peernuot==1) and reporting hourly pay (paidhre==1) */ drop _merge } if 2003<=`year' & `year'<=2009 { gen byte otmgfail=. gen wkotc=peern/100 if peernuot==1 & paidhre==1 } replace wkotc=0 if -0.1<=wkotc & wkotc<=0 /* appears to code zero as -0.01 dollars */ lab var wkotc "Weekly OTC earnings" notes wkotc: Weekly earnings from overtime, tips, commissions notes wkotc: Available from 1994 only notes wkotc: CPS: derived from peernuot, ptern, peern * lab var otmgfail "OTC merge failed" notes otmgfail: Available 1994- only /* use variables above to create 13 alternative wage variables 1. w_nber: wage variable recommended by NBER plus 12 wage variables based on different combinations of procedures for dealing with top-coding (tc) and overtime, tips, and commissions (ot); the two characters immediately after the first underscore refer to the type of tc adjustment; the two digits immediately after the second underscore refer to the type of ot adjustment 2. w_no_no: no tc adjustment, no ot adjustment 3. w_no_ot: no tc adjustment, standard ot adjustment 4. w_ln_no: tc adjustment assuming log normal distribution weekly earnings, no ot adjustment 5. w_ln_ot: tc adjustment assuming log normal distribution weekly earnings, standard ot adjustment 6. w_p7_no: tc adjustment assuming pareto distribution weekly earnings, with cutoff at the 70th percentile of observed distribution, no ot adjustment 7. w_p7_07: tc adjustment assuming pareto distribution weekly earnings, with cutoff at the 70th percentile of observed distribution, standard ot adjustment 8. w_p8_no: tc adjustment assuming pareto distribution weekly earnings, with cutoff at the 80th percentile of observed distribution, no ot adjustment 9. w_p8_ot: tc adjustment assuming pareto distribution weekly earnings, with cutoff at the 80th percentile of observed distribution, standard ot adjustment 10. w_p9_no: tc adjustment assuming pareto distribution weekly earnings, with cutoff at the 90th percentile of observed distribution, no ot adjustment 11. w_p9_ot: tc adjustment assuming pareto distribution weekly earnings, with cutoff at the 90th percentile of observed distribution, standard ot adjustment 12. rw: CEPR preferred wage: nominal w_ln_ot converted to real wage using the CPI-U-RS, trimmed to $1-100 13. rw_ot: as rw, but using w_ln_ot, which includes ot, tips, commissions note that binary variables for (1) earnings imputed by BLS and (2) usual weekly hours imputed by procedure in cepr_org_hours.do allow selecting subsets of the 13 wage variables with and without these two imputations */ /* 1. NBER wage */ gen w_nber=earnwke/uhourse lab var w_nber "Wage, NBER" notes w_nber: Equals earnwke/uhourse notes w_nber: Top-codes vary by year notes w_nber: CPS: derived: a-werntp, preernwa, pternwa; a-uslhrs, peernhro /* 2. w_no_no */ gen w_no_no=earnhre if paidhre==1 replace w_no_no=earnwke/uhoursi if paidhre==0 /* uhoursi includes imputation for hours-vary from 1994 on; is equal to uhourse before 1994 */ lab var w_no_no "Wage, no tc, no ot" notes w_no_no: No topcode adjustment, no overtime adjustment notes w_no_no: Top-codes vary by year notes w_no_no: CPS: derived: a-werntp, preernwa, pternwa; a-uslhrs, peernhro /* 3. w_no_ot */ gen w_no_ot=w_no_no /* "standard" adjustment for overtime, tips, commissions */ if 1979<=`year' & `year'<=1993 { /* use usual weekly earnings (which include overtime, tips, commissions) to estimate average hourly earnings including overtime, tips, commissions; but only if the procedure gives a higher estimated average hourly rate than given in the base rate in earnhre */ tempvar incot3 gen `incot3'=earnwke/uhoursi if paidhre==1 replace w_no_ot=`incot3' if paidhre==1 & w_no_no<`incot3' & `incot3'~=. & /* */ `incot3'<=4*w_no_no /* this procedure assumes that wherever the effect of overtime, tips, commissions would raise the hourly rate by more than four times the reported hourly base rate for hourly reporting workers, that the procedure is incorrect and the hourly reported rate is used instead; this especially affects observations where hourly workers on relatively low wages also report weekly earnings exactly equal to the top-code, which seems unlikely */ } if 1994<=`year' { /* begin by using same procedure as for 1979-93 */ tempvar incot3 gen `incot3'=earnwke/uhoursi if paidhre==1 replace w_no_ot=`incot3' if paidhre==1 & w_no_no<`incot3' & `incot3'~=. & /* */ `incot3'<=4*w_no_no /* where available, replace preceding by adding the average hourly earnings (over week) from overtime, tips, commissions to the basic hourly rate */ replace w_no_ot=w_no_no+(wkotc/uhoursi) if peernuot==1 & paidhre==1 & /* */ w_no_ot