上一年的 Stata 交互变量

Stata interaction variable previous year

我正在使用 Stata,我的面板数据集采用以下格式:

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

我想在 var2 和 var1 之间创建一个交互变量,其中 var2 与 var1 的交互始终基于前一年。换句话说,2001 年的 var2 应该与 2000 年的 var1 交互。因此,输出应该如下所示:

year ID var1 var2 var1Xvar2
2000 1 100 . .
2001 1 200 0.2 20
2002 1 300 0.3 60
2000 2 500 . .
2001 2 300 0.4 20
2002 2 400 0.1 30

我怎样才能做到这一点?感谢您的帮助!

根据 ,这里是您问题的更新答案。更新使用滞后运算符 L1.var1,在创建滞后变量时相对于 var1[_n-1] 有很大优势。它阻止代码从不同的面板(在这种情况下,不同的 year。)

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 |
     +----------------------------------+ */