【问题标题】:Stata interaction variable previous year上一年的统计交互变量
【发布时间】:2021-02-01 08:36:16
【问题描述】:

我正在使用 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

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

【问题讨论】:

    标签: stata interaction


    【解决方案1】:

    基于Nick Cox's comment,这里是您问题的更新答案。该更新使用了滞后运算符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 |
         +----------------------------------+ */
    

    【讨论】:

    • 这在实践中有效,至少在数据示例中是这样,因为每个面板的第一次观察都缺少var2。原则上,最好先使用tsset ID year,然后再使用gen wanted = L1.var1 * var2。重要的是避免使用数据集中先前针对不同面板的任何观察结果。
    • 你是对的,@NickCox,我根据你的评论更新了答案。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多