Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

From |
Richard Herron <richard.c.herron@gmail.com> |

To |
statalist@hsphsun2.harvard.edu |

Subject |
Re: st: In unbalanced panel, make sure individuals begin in month X and end in month Y |

Date |
Sun, 9 Oct 2011 17:30:31 -0400 |

I am not sure that it can be done without a loop or with -if- statements and fewer than 20 conditional statements. I am very interested to see attempts -- without a loop I could fix beginnings, but not endings. Unfortunately -while- loops aren't byable and -_n- and -_N- don't work properly with -foreach-. My -forvalues- solution is not particularly efficient, but works. * ----- begin code ----- * generate random starting dates clear set obs 250 egen int id = seq() generate int date_m = 1 + int(12*runiform()) generate int date_y = 1960 + int(50*runiform()) * add random number of observations to each id generate int n_obs = 48 + int(10*12*runiform()) expand n_obs * create seq tempvar date_m_seq bysort id: generate int `date_m_seq' = date_m + _n - 1 by id: replace date_m = 1 + mod(`date_m_seq' - 1, 12) by id: replace date_y = date_y + int((`date_m_seq' - 1) / 12) by id: generate int id_n = _n * generate random variables generate y = rnormal() generate x = rnormal() * create panel generate int date_ym = ym(date_y, date_m) format date_ym %tm tsset id date_ym forvalues i = 1/11 { bysort id: drop if ((date_m != 4 & _n == 1) /// | (date_m != 4 & _n == _N)) } * ----- end code ----- On Sat, Oct 8, 2011 at 18:08, Nick Cox <njcoxstata@gmail.com> wrote: > What's wrong with an -if- condition? > > Nick > > On Sat, Oct 8, 2011 at 9:59 PM, Richard Herron > <richard.c.herron@gmail.com> wrote: >> How can I make sure individuals in a panel begin in one given month >> and ends in another given month? For example, I want to make sure that >> every firm in an unbalanced monthly panel begins in April and ends in >> March. A priori I don't know each firm's first or last month (i.e., >> unbalanced panel). >> >> My end goal is to use -rolling- to perform regressions with a 48-month >> window and a 12-month step size to get regression coefficients each >> year. I want to avoid regressing every month and dropping 11 of 12 >> entries each year, which would be very time-consuming. >> >> Thanks! Here is some code: >> >> * ----- begin code ----- >> * generate random starting dates >> clear >> set obs 250 >> egen int id = seq() >> generate int date_m = 1 + int(12*runiform()) >> generate int date_y = 1960 + int(50*runiform()) >> generate int date_ym = ym(date_y, date_m) >> format date_ym %tm >> >> * add random number of observations to each id >> generate int n_obs = 1 + int(20*12*runiform()) >> expand n_obs >> bysort id: replace date_ym = date_ym + _n >> >> * generate random variables >> generate y = rnormal() >> generate x = rnormal() >> >> * I would like to do this rolling regression with a 12 month step-size >> * and have them go from April through March four years later >> tsset id date_ym >> rolling z = (e(rss) / e(N)) /// >> , window(48) stepsize(12) saving(temp, replace) /// >> : regress y x >> >> * ----- end code ----- >> * > > * > * For searches and help try: > * http://www.stata.com/help.cgi?search > * http://www.stata.com/support/statalist/faq > * http://www.ats.ucla.edu/stat/stata/ > * * For searches and help try: * http://www.stata.com/help.cgi?search * http://www.stata.com/support/statalist/faq * http://www.ats.ucla.edu/stat/stata/

**Follow-Ups**:**Re: st: In unbalanced panel, make sure individuals begin in month X and end in month Y***From:*Nick Cox <njcoxstata@gmail.com>

**References**:**st: In unbalanced panel, make sure individuals begin in month X and end in month Y***From:*Richard Herron <richard.c.herron@gmail.com>

**Re: st: In unbalanced panel, make sure individuals begin in month X and end in month Y***From:*Nick Cox <njcoxstata@gmail.com>

- Prev by Date:
**st: Bug in stsplit and stptime - or me ?** - Next by Date:
**st: Re: problem with nlsur quaids** - Previous by thread:
**Re: st: In unbalanced panel, make sure individuals begin in month X and end in month Y** - Next by thread:
**Re: st: In unbalanced panel, make sure individuals begin in month X and end in month Y** - Index(es):