*************************; /* RESEARCH METHODS IN */ /* ACCOUNTING 30.1.2019 */ *************************; libname RMA "C:\Users\classtoolo\Downloads"; run; * list of variables; proc contents data=RMA.compustat; run; * import compustat data; data aaa; set RMA.compustat; * market value of equity; * price times number of shares; MVE=PRCC_F*CSHO; * delete missing and zero obs; if MVE=0 or AT=0 or LT=0 then delete; if MVE=. or AT=. or LT=. then delete; keep FYEAR MVE AT LT; run; * sort data by fiscal year; proc sort data=aaa; by FYEAR; run; ods graphics off; proc reg data=aaa outest=parms adjrsq; model MVE=AT LT; by FYEAR; run; proc print data=parms; run; * mean values of yearly regressions; proc means data=parms n mean t prt; var Intercept AT LT _adjrsq_; run; * figure; proc sgplot data=parms; series x=FYEAR y=AT; series x=FYEAR y=LT; *series x=FYEAR y=_adjrsq_; run; *********************; data bbb; set RMA.compustat; * 2-digit SIC industry code; SIC2=int(SIC/100); * scaling variables: average AT; scale=(AT+lag(AT))/2; if scale=0 then scale=.; * compute accruals using cash flow statement information; ACC=(IBC-OANCF)/scale; * change in sales; DSALES=dif(SALE)/scale; * gross PPE; PPE=PPEGT/scale; if GVKEY^=lag(GVKEY) then delete; run; data ccc; set bbb; * delete missing observations; if SIC2=. or ACC=. or DSALES=. or PPE=. then delete; keep FYEAR SIC2 ACC DSALES PPE; run; * let's require at least 15 observations for each industry-year regression; proc sort data=ccc; by SIC2 FYEAR; proc means data=ccc noprint; output out=c1 (drop=_type_ _freq_) n(ACC)=nbr; by SIC2 FYEAR; run; * merge datasets; data ddd; merge ccc c1; by SIC2 FYEAR; * min 15 obs requirement; if nbr<15 then delete; drop nbr; run; * Jones (1991) model; * compute non-discretionary discretionary accruals; proc reg data=ddd noprint outest=jones_parms adjrsq; model ACC=DSALES PPE; output out=eee predicted=NACC residual=DACC; by SIC2 FYEAR; run; * DACC is used in the literature as an earnings management proxy; proc means data=jones_parms n mean t prt; var Intercept DSALES PPE _adjrsq_; run;