******************************************************************************** Eliminations ******************************************************************************** drop if sic1==. drop if sic1>=4400 & sic1<5000 drop if sic1>5999 & sic1<6501 drop if sales<0 drop if tas<0 ******************************************************************************** Industry Classification ******************************************************************************** generate twodigit= int(sic1/100) generate industry=. replace industry=1 if inrange(twodigit, 1, 14) replace industry=2 if inrange(twodigit, 15, 17) replace industry=3 if inrange(twodigit, 20, 21) replace industry=4 if inrange(twodigit, 22, 23) replace industry=5 if inrange(twodigit, 24, 27) replace industry=6 if inrange(twodigit, 28, 30) replace industry=7 if inrange(twodigit, 31, 34) replace industry=8 if inrange(twodigit, 35, 39) replace industry=9 if inrange(twodigit, 40, 47) replace industry=10 if inrange(twodigit, 50, 52) replace industry=11 if inrange(twodigit, 53, 59) replace industry=12 if inrange(twodigit, 70, 79) replace industry=13 if inrange(twodigit, 80, 99) ******************************************************************************** Construction of Real Earnings Management Variables ******************************************************************************** xtset id year by id: generate cfor=cfo/L.tas by id: generate last=1/L.tas by id: generate revr=sales/L.tas by id: generate Drev=(sales-L.sales) by id: generate Drevr=(Drev/L.tas) by id: generate lS=(L.sales-L2.sales) by id: generate lDrevr=lS/L.tas by id: generate Dinv=(inv-L.inv) egen produc= rowtotal(cogs Dinv) if cogs!=. | Dinv!=. by id: generate producr=produc/L.tas egen Discr= rowtotal (rd sga) if rd!=. | sga!=. by id: generate Discrr=Discr/L.tas by id: generate revr2=L.sales/L.tas by id: generate accr=ni-cfo by id: generate accrtas=(accr/l.tas) by id: generate ppetas=(l.ppe/l.tas) generate suspect=0 replace suspect=1 if (ni/L.tas)<=0.005 & (ni/L.tas)>=0 ******************************************************************************** Calculation of Abnormal CFO ******************************************************************************** generate abnormalcfor=. capture program drop abnormalcfor program abnormalcfor forvalues i = 1(1)13 { capture reg cfor last revr Drevr if industry==`i' capture predict abnormalcfor`i' if industry==`i', resid replace abnormalcfor= abnormalcfor`i' if industry==`i' capture drop abnormalcfor`i' } end abnormalcfor ******************************************************************************** Calculation of Abnormal Discretionary ******************************************************************************** generate abnormalDiscrr=. capture program drop abnormalDiscrr program abnormalDiscrr forvalues i = 1(1)13 { capture reg Discrr last revr2 if industry==`i' capture predict abnormalDiscrr`i' if industry==`i', resid replace abnormalDiscrr= abnormalDiscrr`i' if industry==`i' capture drop abnormalDiscrr`i' } end abnormalDiscrr ******************************************************************************** Calculation of Abnormal Production ******************************************************************************** generate abnormalproducr=. capture program drop abnormalproducr program abnormalproducr forvalues i = 1(1)13 { capture reg producr last revr Drevr lDrevr if industry==`i' capture predict abnormalproducr`i' if industry==`i', resid replace abnormalproducr= abnormalproducr`i' if industry==`i' capture drop abnormalproducr`i' } end abnormalproducr