Stata 如何在不同的时间段延迟?

Stata 如何在不同的时间段延迟?,stata,Stata,我使用的是1970年至2002年的大型面板数据。其中一个变量的观测值为1985年、1995年、1999年和2002年。变量如下所示: +-------------------------+ | country year groups | |-------------------------| 1. | Germany 1985 5 | 2. | Germany 1995 10 | 3. | Germany 1

我使用的是1970年至2002年的大型面板数据。其中一个变量的观测值为1985年、1995年、1999年和2002年。变量如下所示:

     +-------------------------+
     | country   year   groups |
     |-------------------------|
  1. | Germany   1985        5 |
  2. | Germany   1995       10 |
  3. | Germany   1997        . |
  4. | Germany   1998        . |
  5. | Germany   1999       20 |
     +-------------------------+

我的意图是通过下一次观察来滞后于Groups变量。我已经为这些时间段创建了一个显示1的虚拟对象,但我不知道如何进行下一步。我可以做些什么来延迟此组变量?

我不完全清楚您是希望组代表下一年还是上一年的值。无论如何,如果数据集中每个国家/年只有一次,则此语法相当简单:

bysort country year: replace groups=groups[_n-1] //for the previous observation 
bysort country year: replace groups=groups[_n+1] //for the next observation 

我不知道你为什么要这样做,但也许你想摆脱丢失的值。在这种情况下,请查看ssc的
carryforward

我打算使用[\u n-1]创建一个仪器。当我运行回归时,Stata只考虑1985年、1995年、1999年和2002年的时间段。你的方法可以奏效,但前提是我每隔一年放弃一次,而不是这四年。然而,如果我这样做,2002年的观察将转移到下一个国家。我想我可以创建一个副本并手动删除2002年的观察结果,然后将其延迟。您可以通过在前一年添加bysort country来避免将其移动到另一个国家,例如:bysort country year:groups=groups[\n-1]我还将编辑我的答案。