Dear All,
I have a unbalanced panel data for 691 firms from 2000 to 2015, and I am using the forvalue for looping and it keep showing error r(2001). I have read the previous threads and understand the command -capture- is the right way to skip the error. However, it seems I didn't code it right :/
should I do following:
I have a unbalanced panel data for 691 firms from 2000 to 2015, and I am using the forvalue for looping and it keep showing error r(2001). I have read the previous threads and understand the command -capture- is the right way to skip the error. However, it seems I didn't code it right :/
Code:
* Example generated by -dataex-. To install: ssc install dataex clear input long stkcd float(year eps dps) 2 2000 .5979245 .2182174 2 2001 .7339562 .24246375 2 2002 .7646937 .26011115 2 2003 .4816828 .064508885 2 2004 .4520849 .17563193 2 2005 .4188644 .18476103 2 2006 .6070246 .17239834 2 2007 .7931072 .1024866 2 2008 .14777902 .05135466 2 2009 .5860879 .07015415 2 2010 .8054049 .10017643 2 2011 1.0567758 .13021822 2 2012 .511426 .18030176 2 2013 .7092986 .41088885 2 2014 1.0787876 .5012027 2 2015 .9016325 .7202358 6 2000 .8649804 .3213946 6 2001 .8389993 .20890647 6 2002 .5162996 .12855783 6 2003 -1.7667146 0 6 2004 .3603315 .12052297 6 2005 .6881822 .2892551 6 2006 1.1381309 .46875715 6 2007 1.154605 .11600561 6 2008 .6425335 .08783888 6 2009 .6794741 .12337156 6 2010 .36603865 .06160907 6 2011 .5198129 .04087448 6 2012 .4975616 .10160732 6 2013 .52158 .15636133 6 2014 .3989851 .11897808 6 2015 .156163 .12087108 12 2000 .5194232 .24604318 12 2001 .37492135 .2166489 12 2002 .43572605 .2499795 12 2003 .5346876 .2999754 12 2004 .9081318 .4166325 12 2005 .52024543 .2999754 12 2006 .6212344 .685862 12 2007 .3601305 .2134129 12 2008 .3223521 .123815 12 2009 .9006728 .4214269 12 2010 .3410782 .3567134 12 2011 .6519145 .18201007 12 2012 .37885505 .15066135 12 2013 .7849684 .301494 12 2014 .23706283 .50243556 12 2015 .2031785 .30126 16 2000 .8652775 .3135344 16 2001 -1.623514 0 16 2002 .10829102 0 16 2003 .2690636 0 16 2004 .3756118 0 16 2005 .04511677 0 16 2006 .22791146 .12461361 16 2007 .4429887 0 16 2008 .2356838 .05986432 16 2009 .14658122 .01197285 16 2010 -.005788817 .01197285 16 2011 -.1490676 .01197287 16 2012 .17880037 .01197279 16 2013 .05951122 .01197279 16 2014 -.1991864 .01197279 16 2015 -.3468329 0 21 2000 .7518119 .18270127 21 2001 -.1149535 .21924153 21 2002 .3019944 .36540255 21 2003 1.1272192 .36540255 21 2004 1.0918223 .5481038 21 2005 1.5669395 .5481038 21 2006 1.1155739 1.1287524 21 2007 1.720212 .9568117 21 2008 .6279721 .35787025 21 2009 .1907588 .2002099 21 2010 .27035543 .1501574 21 2011 .14765975 .10010495 21 2012 .006413673 .02002193 21 2013 .09637035 .05582117 21 2014 .22070815 .05004916 21 2015 .1229407 .05004916 22 2000 .7163461 .3133819 22 2001 .7902093 .24779037 22 2002 1.8383032 .6996434 22 2003 3.146192 1.2049414 22 2004 4.0788 1.548465 22 2005 2.1984901 1.8147 22 2006 3.4579666 1.35625 22 2007 3.26745 1.4708734 22 2008 1.4024465 1.0069561 22 2009 .4412922 .3251477 22 2010 1.28336 .463484 22 2011 1.0370003 .4004913 22 2012 .29470757 .3634145 22 2013 .9970883 .3902345 22 2014 .8221648 .3241847 22 2015 .41003665 .4102743 23 2000 .4191937 .152 23 2001 -1.3520644 0 23 2002 .183314 0 23 2003 .21227683 0 end
Code:
//Prepare panel data xtset stkcd year, yearly egen id = group(stkcd) //Create target payout ratio as the median payout over a 6-year period sort id year by id: gen n=_n gen tpr=. forvalues i = 1(1)11 { by id: egen l=median(dps/eps) if n>=`i'&n<=`i'+5 replace tpr=l if n==`i'+5 drop l } replace tpr=dps/eps if tpr==. //Create SOA and RelVol mesuarements sort id year by id:gen dps1=dps[_n-1] gen ddps=dps-dps1 by id:gen dev=tpr*eps-dps1 gen soa=. gen relvol=. gen y=tpr*eps forvalues j=1(1)691{ forvalues i= 1(1)11{ qui reg ddps dev if id==`j'&n>=`i'&n<=`i'+5 replace soa=_b[dev] if id==`j'&n==`i'+5 gen t=1 if n==`i' replace t=2 if n==`i'+1 replace t=3 if n==`i'+2 replace t=4 if n==`i'+3 replace t=5 if n==`i'+4 replace t=6 if n==`i'+5 gen t2=t^2 reg dps t t2 if id==`j'&n>=`i'&n<=`i'+5 gen m1=e(rmse) reg y t t2 if id==`j'&n>=`i'&n<=`i'+5 gen m2=e(rmse) replace relvol=(m1/m2)/100 if id==`j'&n==`i'+5 drop t t2 m1 m2 } }
Code:
forvalues j=1(1)691{ forvalues i= 1(1)11{ qui reg ddps dev if id==`j'&n>=`i'&n<=`i'+5 replace soa=_b[dev] if id==`j'&n==`i'+5 gen t=1 if n==`i' replace t=2 if n==`i'+1 replace t=3 if n==`i'+2 replace t=4 if n==`i'+3 replace t=5 if n==`i'+4 replace t=6 if n==`i'+5 gen t2=t^2 cap reg dps t t2 if id==`j'&n>=`i'&n<=`i'+5 if c(rc) == 0 { gen m1=e(rmse) } else if c(rc) == 2001 { display "Insufficient results for i == `i': moving on." } else { display "Unanticipated error in regression with i = `i'" exit `c(rc)' } cap reg y t t2 if id==`j'&n>=`i'&n<=`i'+5 if c(rc) == 0 { gen m2=e(rmse) } else if c(rc) == 2001 { display "Insufficient results for i == `i': moving on." } else { display "Unanticipated error in regression with i = `i'" exit `c(rc)' } replace relvol=(m1/m2)/100 if id==`j'&n==`i'+5 drop t t2 m1 m2 } }
Comment