wageotc: Hourly wage (adjusted) - OTC consistent¶
Description¶
wageotc
is the hourly wage in dollars per hour for workers paid hourly or nonhourly, including payments for overtime, tips, and commissions. In contrast to wageotc_noadj
, wageotc
includes imputed values for respondents with top-coded weekly earnings or weekly hours that vary.
Availability¶
Sample | Years |
---|---|
ORG | 1994 - present |
wage
is a similar variable available back to 1973 that excludes overtime, tips, commissions for hourly workers.
Detailed comments¶
The analysis above uses the CPS ORG for 1979-2023 and the CPS May for 1973-1978.
Code¶
Variable creation
********************************************************************************
* wageotc
* NBER-style wage variable usual hourly earnings
* INcluding overtime, tips, commissions for hourly workers
* adjusted for top-coding, hours vary imputations, and trimmed of extreme values
********************************************************************************
capture confirm variable wageotc, exact
if _rc == 0 {
drop wageotc
}
gen wageotc = .
if $monthlycps == 1 {
if $earnerinfo == 1 {
if tm(1994m1) <= $date {
* for hourly workers
replace wageotc = wageotc_noadj if paidhre == 1
* for nonhourly
replace wageotc = wage if paidhre == 0
}
}
* trim wage values according to extreme values
merge m:1 year using $extremewages, assert(2 3) keepusing(wage_lower wage_upper)
keep if _merge == 3
replace wageotc = . if wageotc < wage_lower
replace wageotc = . if wageotc > wage_upper
drop _merge wage_lower wage_upper
}
lab var wageotc "Hourly wage (adjusted) - OTC consistent"
notes wageotc: Dollars per hour, for hourly and nonhourly workers
notes wageotc: Includes overtime, tips, commissions for nonhourly and hourly
notes wageotc: Adjustments for top-coding, trimming of outliers
notes wageotc: Includes nonhourly workers whose usual hours vary
notes wageotc: Covers only hourly workers who report hourly rate of pay
notes wageotc: 1994-present, CPS: derived from wage, weekpay, phersul1, otcamt, otrec, peernhro
Figure creation
keep if age >= 16 & age != .
recode wage (0 = .)
recode wageotc (0 = .)
gen wgt = .
replace wgt = basicwgt if year <= 1978
replace wgt = orgwgt if year >= 1979
gcollapse (p50) wage wageotc [pw=wgt], by(year) fast
* inflation-adjust wages
preserve
sysuse cpi_annual, clear
keep year cpiurs
keep if year > = 1973
tempfile cpiurs
save `cpiurs'
restore
merge m:1 year using `cpiurs', keep(3) nogenerate
sum cpiurs if year == 2023
local basevalue = r(mean)
replace wage = wage * `basevalue' / cpiurs
replace wageotc = wageotc * `basevalue' / cpiurs
* make graph
foreach var of varlist wage* {
sum `var' if year == 2008
local `var'yvalue = r(mean)
local `var'xvalue = 2008
}
local wageyvalue = `wageyvalue' - 0.8
local wageotcyvalue = `wageotcyvalue' + 1.0
local color1 228 26 28
local color2 55 126 184
local color3 77 175 74
local color4 152 78 163
local color5 255 127 0
local dollar=char(36)
line wage wageotc year, ///
legend(off) ///
xlabel(1975(5)2020) ///
ylabel(12(2)24 26 "$24", angle(0) gmin gmax) ///
xtitle("") ytitle("") ///
lcolor("`color4'" "`color2'") ///
graphregion(color(white)) plotregion(color(white)) ///
title("Median real wages (in 2023`dollar')", size(medium)) ///
text(`wageyvalue' `wagexvalue' "wage", color("`color4'") placement(c)) ///
text(`wageotcyvalue' `wageotcxvalue' "wageotc", color("`color2'") placement(c))
graph export ${variableimages}wageotc_titleimage.svg, replace
/***
The analysis above uses the CPS ORG for 1979-2023 and the CPS May for 1973-1978.
***/