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 |
Nick Cox <njcoxstata@gmail.com> |

To |
statalist@hsphsun2.harvard.edu |

Subject |
Re: st: Re: rolling and ts operators |

Date |
Tue, 25 Oct 2011 11:34:08 +0100 |

That's what I thought too, although I'd guess at the problem being a missing value rather than something being empty. But how come the use of f. doesn't exclude the last observation in the window too? This is a lazy post, because I have not looked at the code or done any experimentation. Nick On Tue, Oct 25, 2011 at 11:19 AM, Richard Herron <richard.c.herron@gmail.com> wrote: > -rolling- passes seven observations to -regress-, but when -regress- > creates the regressors, the one with the lag operator in the first > observation for each individual is empty. -regress- still runs the > regression, but can only use six observations since the first one is > empty. > > It doesn't have to do with the number or linearity of regressors. > Maybe it's illustrative to look at that first seven observation window > and see that the first lagged value is missing and that -regress- has > N = 6. > > * begin code > webuse grunfeld, clear > xtset company year > list company year invest mvalue l.mvalue in 1/7 > regress invest mvalue l.mvalue in 1/7 > * end code > > On Tue, Oct 25, 2011 at 05:12, Nuno Soares <ndsoares@gmail.com> wrote: >> Dear Richard, >> >> Thank you so much! I didn't know - rolling - was panel data aware! >> It's much more efficient than the code I have. >> >> However, although your insights solve my problem, the main question >> still remains: why does Stata use 6 observations and not 7.... >> >> If I just tweak your code a litle bit (to include 5 indep variables as >> in my case I squared mvalue); >> >> * start code * >> >> webuse grunfeld, clear >> rename company id >> gen mvaluesq=mvalue^2 >> xtset id year, year >> gen end = year >> tempfile stats >> rolling _b N = e(N), window(7) recursive saving(`stats', replace) /// >> : reg invest mvalue l.mvalue f.mvalue kstock mvaluesq >> merge 1:1 id end using `stats', nogenerate >> xtset id year, year >> >> * calculating error term * >> gen e = invest - (_b_cons + _b_mvalue*mvalue + _stat_2*l.mvalue /// >> + _stat_3*f.mvalue + _b_kstock*kstock+_b_mvaluesq*mvaluesq) >> >> * end code * >> >> If we just check the data we'll notice that N starts with 6 >> observations, which doesn't make sense... I must be missing >> something... >> >> >> Best wishes, >> >> Nuno >> >> >> Re: st: rolling and ts operators >> >> From Richard Herron <richard.c.herron@gmail.com> >> To statalist@hsphsun2.harvard.edu >> Subject Re: st: rolling and ts operators >> Date Mon, 24 Oct 2011 09:50:16 -0400 >> >> It may be easiest to think of -rolling- and -regress- in two steps. >> First -rolling- grabs a window of 7 observations and hands off these >> data to -regress-. Then -regress- regresses, but is only able to use 6 >> of these observations because in the first window the lagged value >> isn't available. >> >> If you add -N = e(N)- to your -rolling- command you can see how many >> observations -regress- used. >> >> Also, there is no need to use loops with -rolling-; it is panel aware >> (at least in 11.2). The following should help with the -N = e(N)- bit. >> >> webuse grunfeld, clear >> rename company id >> keep if id == 2 // just a test firm >> xtset id year >> gen end = year >> tempfile stats >> rolling _b N = e(N), window(7) recursive saving(`stats', replace) /// >> : reg invest mvalue l.mvalue f.mvalue kstock >> merge 1:1 id end using `stats', nogenerate >> xtset id year >> >> * calculating error term * >> gen e = invest - (_b_cons + _b_mvalue*mvalue + _stat_2*l.mvalue /// >> + _stat_3*f.mvalue + _b_kstock*kstock) >> >> >> >> On 24 October 2011 13:52, Nuno Soares <ndsoares@gmail.com> wrote: >>> Hi everyone, >>> >>> I'm having a problem with the - rolling - command the the use of time >>> series operators. I need to estimate a model for several firms (id) >>> and several years in a rolling regression with a window of at least 7 >>> years and the recursive option. >>> >>> The code I'm using is the following: >>> >>> use "test.dta", clear >>> keep if id==2 * just a test firm >>> xtset id year >>> gen end=year >>> tempfile stats >>> levelsof id, local(ids) >>> foreach id of local ids { >>> cap rolling , window(7) recursive saving(`stats', replace): reg >>> depvar indepvar1 l.indepvar1 f.indepvar1 indepvar2 indepvar3 if >>> id==`id' >>> cap merge 1:1 id end using "`stats'", update replace >>> cap drop _merge >>> } >>> sort id year >>> xtset id year >>> * calculating error term * >>> gen e=depvar-(_b_cons+_b_indepvar1*indepvar1+_b_stat2*l.indepvar1+_b_stat3*f.indepvar1+_b_indepvar2*indepvar2+_b_indepvar3*indepvar3) >>> >>> >>> Given the l. operator I was expecting that Stata would use 8 >>> observations given that the first l.indepvar1 would be missing an thus >>> it wouldn't have enough observations to estimate the first model with >>> only six observations (while the window option is set at 7, >>> restricting the sample to the first 7 observations would lead to have >>> only 6 eligible observations, and thus not enough data to estimate the >>> regression). This however isn't happening with Stata reporting >>> estimated coefficient starting from the first 7 observations. Any >>> clues on why this is happening? >>> * * 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: Re: rolling and ts operators***From:*Richard Herron <richard.c.herron@gmail.com>

**References**:**st: rolling and ts operators***From:*Nuno Soares <ndsoares@gmail.com>

**st: Re: rolling and ts operators***From:*Nuno Soares <ndsoares@gmail.com>

**Re: st: Re: rolling and ts operators***From:*Richard Herron <richard.c.herron@gmail.com>

- Prev by Date:
**Re: st: RE: save9.ado updated to run in Stata 12** - Next by Date:
**Fwd: st: mlogtest after mlogit** - Previous by thread:
**Re: st: Re: rolling and ts operators** - Next by thread:
**Re: st: Re: rolling and ts operators** - Index(es):