Bookmark and Share

Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down on April 23, and its replacement, statalist.org is already up and running.


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

st: Re: stata generated wrong lagged values for mi data


From   ymarchenko@stata.com (Yulia Marchenko, StataCorp LP)
To   statalist@hsphsun2.harvard.edu
Subject   st: Re: stata generated wrong lagged values for mi data
Date   Thu, 03 Jun 2010 17:51:58 -0500

Junqing <jl591164@albany.edu> asks how to generate a lagged variable for MI
data:

> My data is panel data in mi format. I used the following syntax to generate
> several lagged variables(one time point lag) one by one:
> 
> mi tsset ID time
> sort ID time
> by ID, gen lagx=l.x
> 
> But i found that the generaged lagged values of panels were wrong. How i may
> fix it?

In general, when performing data manipulation on -mi- data, it is important to
use -mi- specific commands in place of the standard Stata commands when there
is an -mi- specific alternative.  The list of the -mi- specific commands can
be found in -help mi-.  If there is no -mi- specific version, before using the
standard Stata construct, look first at -help mi xeq-.  

To obtain correct results, Junqing needs to use the -mi xeq- command:

  . mi tsset ID time
  . mi xeq: sort ID time; by ID: gen lagx = l.x

Notice that to issue multiple commands with -mi xeq-, the commands must be
separated by a semicolon.  -mi xeq- issues all specified commands separately
on m=0,1,..., where m=0 refers to the original data and m=1,... refers to each
set of imputed data.  Because the lag operator requires that data are sorted
on the panel and time variables, it is important to use -mi xeq- to execute
both the -sort- command and -by: gen- together on each m=0,1,... data.

Martin Weiss demonstrates an example without using -mi xeq- which returns
results as expected:

>
> ***
> clear*
> set obs 100
> //id
> gen id=_n
> //expand to # of time periods
> expand 10
> bys id: gen time=_n
> gen x=rnormal()
> compress
> mi set wide
> mi tsset id time
> by id: gen lagx=l.x
> l in 1/50, sepby(id)
> ***


Depending on the chosen -mi- storage style, using standard Stata commands can
be appropriate as is the case in Martin's example, which used the -wide-
style.  However, it is safer to use -mi- specific commands or -mi xeq- because
these will work regardless of the -mi- style.

If Junqing is still experiencing difficulties, Junqing should contact Stata
Technical Services at tech-support@stata.com.


-- Yulia                           -- Wes
ymarchenko@stata.com              weddings@stata.com
*
*   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/


© Copyright 1996–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index