[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

From |
"Nick Cox" <[email protected]> |

To |
<[email protected]> |

Subject |
st: RE: Asking Stata to ignore "no observations" when running regressions |

Date |
Thu, 27 Jan 2005 13:49:14 -0000 |

Check out capture _rc and various FAQs, including http://www.stata.com/support/faqs/data/foreach.html In fact, you might start with that FAQ. More generally, there is much in the FAQs and the Stata Journal that provides guidance in this territory. Nick [email protected] Yvonne Capstick > Using Nick's helpful method for looping (which I initially > required to > generate proportions), I'm now trying to do looping > regressions. What I'd > like is the coefficient on regressions for the last 5 years, > and to store these just like I was storing the proportions. > > My structure is permno year ret rp, where permno is a number which > identifies each company uniquely. > > I initially try: > > gen brp = . > gen bsmb = . > gen bhml = . > > forval m = 0/4 { > gen begin = year if mod(year,5) == `m' > bysort permno (year): replace begin = begin[_n-1] if > missing(begin) > local i = 1990+`m' > local j = 10107 > while `j' < 12000 { > while `i' < 2005 { > reg sret rp if permno == `j' & begin == `i' > replace brp = _b[rp] if year == `i' + 5 & > permno == `j' & month == 1 & > month[_n-1] == 12 > local i = `i' + 5 > } > local j = `j' + 1 > } > drop begin > } > > but, after doing everything successfully for permno 10007, it > comes up with > no observations for permno 10008. There is indeed no company > with permno > 10008 - but I would like it to skip to the next permno. Is > there an option > that asks Stata to skip and increment j once more if there are no > observations? > > I tried a long-winded way of doing this using an 'if' function, i.e. > > forval m = 0/4 { > gen begin = year if mod(year,5) == `m' > bysort permno (year): replace begin = begin[_n-1] if > missing(begin) > local i = 1990+`m' > local j = 10107 > while `j' < 12000 { > qui gen temp = 1 if permno == `j' > if sum(temp) == 0 { > } > else { > while `i' < 2005 { > reg sret rp if permno == `j' & begin == `i' > replace brp = _b[rp] if year == `i' + 5 > & permno == `j' & month == 1 & > month[_n-1] == 12 > local i = `i' + 5 > } > } > local j = `j' + 1 > local i = 1990+`m' > drop temp > } > drop begin > } > > but this didn't seem to increment either. > > Any advice would be much appreciated. In addition, is there > an easier way of > doing the whole thing without using 'while'? I tried something like: > > forval m = 0/4 { > gen begin = year if mod(year,5) == `m' > bysort permno (year): replace begin = begin[_n-1] if > missing(begin) > bysort (permno begin): reg sret rp > > but this seems to only run one regression. > * * For searches and help try: * http://www.stata.com/support/faqs/res/findit.html * http://www.stata.com/support/statalist/faq * http://www.ats.ucla.edu/stat/stata/

**Follow-Ups**:

- Prev by Date:
**RE: st: Hypergeometric probabilities** - Next by Date:
**st: a blog on statistical modeling and applications** - Previous by thread:
**st: Corrupt display of helpfiles in the Viewer** - Next by thread:
**Re: st: RE: Asking Stata to ignore "no observations" when runningregressions** - Index(es):

© Copyright 1996–2024 StataCorp LLC | Terms of use | Privacy | Contact us | What's new | Site index |