Skip to content

weekpay: Weekly pay (top-code adjusted)

Description

weekpay is the weekly earnings in dollars for nonhourly and hourly workers, including overtime, tips, and commissions. In contrast to weekpay_noadj, weekpay includes imputed values for top-coded weekly earnings.

Availability

Sample Years
ORG All years

Code

Variable creation
********************************************************************************
* Weekly earnings (top-code adjusted)
********************************************************************************

capture confirm variable weekpay, exact
if _rc == 0 {
    drop weekpay
}
gen weekpay = .

if $monthlycps == 1 | $maycps == 1 {
    if $earnerinfo == 1 {
        * determine top-code thresholds
        if tm(1973m1) <= $date & $date <= tm(1988m12) {
            local topcodeval 999
        }
        if tm(1989m1) <= $date & $date <= tm(1997m12) {
            local topcodeval 1923
        }
        if tm(1998m1) <= $date & $date <= tm(2024m3) {
            * going to use 2884.60 instead of actual topcode of 2884.61 to avoid precision issues
            local topcodeval 2884.60
        }

        * determine sample weights to use
        if $monthlycps == 1 & $maycps == 0 local weightvar orgwgt
        if $monthlycps == 0 & $maycps == 1 local weightvar basicwgt



        * Do top-code adjustment
        * account for topcoding change after April 2024
        if tm(2024m4) <= $date {
            replace weekpay = weekpay_noadj
        }

        * there seems to be something wrong with ernwk and ernwkc in 1980 may data
        * coding weekpay in these data as missing for now
        else if $maycps == 1 & tm(1980m1) <= $date & $date <= tm(1980m12) {
            replace weekpay = .
        }

        else {
            * males: generate top-code adjusted weekly earnings
            topcode_impute weekpay_noadj if weekpay_noadj ~= . & female == 0 & age >= 16 & age ~= . [pw=`weightvar'], generate(weekpay_male) method(Pareto) threshold(80) topcodeval(`topcodeval')

            * females: generate top-code adjusted weekly earnings
            topcode_impute weekpay_noadj if weekpay_noadj ~= . & female == 1 & age >= 16 & age ~= . [pw=`weightvar'], generate(weekpay_female) method(pareto) threshold(80) topcodeval(`topcodeval')

            replace weekpay = weekpay_male if female == 0
            replace weekpay = weekpay_female if female == 1

            drop weekpay_male weekpay_female
        }
        *account for topcoding change in 2023/2024 where outgoing rotation groups are making their way through the changed procedure
        replace weekpay = weekpay_noadj if (year == 2023 & month >= 4 | year == 2024) & minsamp == 4 
    }
}

lab var weekpay "Weekly pay (top-code adjusted)"
notes weekpay: Dollars per week for nonhourly and hourly workers
notes weekpay: Includes overtime, tips, commissions
notes weekpay: Original top-code values replaced with Pareto-distribution implied mean above top-code
notes weekpay: Separate imputations for men and women
notes weekpay: Original top-code: 1973-88: 999; 1986-97: 1923; 1998-2023: 2884.61
notes weekpay: Beginning in 2023, top-code value is the weighted average of the top 3% of earners in a given month
notes weekpay: Derived from weekpay_noadj and tc_weekpay