Bookmark and Share

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

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

Re: st: Lag operators on panel data inside -bysort-

From   Nick Cox <>
Subject   Re: st: Lag operators on panel data inside -bysort-
Date   Mon, 29 Oct 2012 18:53:39 +0000

Working backwards from the bottom:

1.  Variable names with subscripts are not acceptable within Stata as
equivalent to variable names.

2.  The previous -regress- doesn't work because the sort order implied
by a reference to L.invest is -sort company year- which clashes with
the -sort- order you are asking for.

3. -xtile()- is an -egen- function that must be installed from
-egenmore- (SSC), as you are asked to explain.

I think to do what you are asking then, as you say, you need to step
outside the framework of -tsset- by

tsset company year
gen previnvest = L.invest
bysort invest_q : regress mvalue previnvest

but even then what sense does this make unless exceptionally companies
don't change between quantile categories?


On Mon, Oct 29, 2012 at 3:02 PM, Richard Herron
<> wrote:

> I would like to use lag operators on panel data inside a -bysort-
> command, but I get the -not sorted- error. For example, using the
> following data,
> *
> webuse grunfeld, clear
> xtset company year
> * generate quantiles with -xtile- from -egenmore- (SSC)
> egen invest_q = xtile(invest), by(year)
> *
> neither of the following two lines work.
> *
> bysort invest_q: regress mvalue l.invest
> bysort invest_q (company year): regress mvalue invest[_n-1]
> *
> I thought -xtset-'s effects were persistent, but the error makes
> sense. Is there an elegant solution? (It would be nice to be able to
> use lag operators on the fly.) Or is the best option to generate
> lagged variables as follows.
> *
> generate linvest = l.invest
*   For searches and help try:

© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index