Code:
clear all set seed 3123 * demonstration dataset, 50 firms over 40 quarters in 10 industry set obs 50 gen firmid = _n gen industry = runiformint(1,10) expand 70 bysort firmid: gen qdate = yq(1999,4) + _n format %tq qdate gen returns = runiform() gen earnings = runiform() * pick a quarter to calculate measure, use quarters in 2 previous years gen q2use = quarter(dofq(qdate)) == 4 gen qlow = cond(q2use, qdate - 11, 1) gen qhigh = cond(q2use, qdate - 4, 0) format %tq qlow qhigh program get_CompAcct reg earnings returns predict pearn, xb reg earnings2 returns2 gen pearn2 = _b[returns2] * returns + _b[_cons] count if !mi(pearn,pearn2) gen CompAcct_nobs = r(N) gen CompAcct = -sum(abs(pearn-pearn2)) / CompAcct_nobs drop pearn pearn2 end program pair_by_quarters tempfile hold save "`hold'" rename (firmid returns earnings) (firmid2 returns2 earnings2) joinby qdate using "`hold'" keep if firmid != firmid2 sort firmid firmid2 qdate rangerun get_CompAcct, by(firmid firmid2) interval(qdate qlow qhigh) end runby pair_by_quarters, by(industry) verbose save "results.dta", replace sort industry qdate firmid firmid2 * to install, type: ssc install listsome listsome industry qdate firmid firmid2 CompAcct_nobs CompAcct /// if q2use & !mi(CompAcct), sepby(qdate)
0 Response to Financial statement comparability (rangerun after rangestat?
Post a Comment