上一年的Stata交互变量

上一年的Stata交互变量,stata,interaction,Stata,Interaction,我使用的是Stata,我的面板数据集的格式如下: 年 身份证件 var1 var2 2000 1. 100 . 2001 1. 200 0.2 2002 1. 300 0.3 2000 2. 500 . 2001 2. 300 0.4 2002 2. 400 0.1 基于,以下是您问题的最新答案。更新使用了滞后运算符L1.var1,在创建滞后变量时,它比var1[\u n-1]优越得多。它防止代码从不同的面板(在这种情况下,不同的年份)获取观察结果 至少在数据示例中,这在实践中是有效的,因为每个

我使用的是Stata,我的面板数据集的格式如下:

年 身份证件 var1 var2 2000 1. 100 . 2001 1. 200 0.2 2002 1. 300 0.3 2000 2. 500 . 2001 2. 300 0.4 2002 2. 400 0.1 基于,以下是您问题的最新答案。更新使用了滞后运算符
L1.var1
,在创建滞后变量时,它比
var1[\u n-1]
优越得多。它防止代码从不同的面板(在这种情况下,不同的
年份
)获取观察结果


至少在数据示例中,这在实践中是有效的,因为每个面板的第一次观察缺少
var2
。原则上,最好先执行
tsset ID year
,然后执行
gen wanted=L1.var1*var2
。最重要的是避免使用数据集中以前用于其他面板的任何观察结果。你是对的,@NickCox,我根据你的评论更新了答案。非常感谢。
clear all
input year  ID  var1    var2
2000    1   100 .
2001    1   200 0.2
2002    1   300 0.3
2000    2   500 .
2001    2   300 0.4
2002    2   400 0.1

end
// Declare data to be time series
tsset ID year
// Use Lag operator on var1 (for details see: help tsvarlist)
gen wanted  = L1.var1 * var2

list

/*   +----------------------------------+
     | year   ID   var1   var2   wanted |
     |----------------------------------|
  1. | 2000    1    100      .        . |
  2. | 2001    1    200     .2       20 |
  3. | 2002    1    300     .3       60 |
  4. | 2000    2    500      .        . |
  5. | 2001    2    300     .4      200 |
     |----------------------------------|
  6. | 2002    2    400     .1       30 |
     +----------------------------------+ */