【问题标题】:Storing the residual for each group存储每组的残差
【发布时间】:2019-09-23 01:57:13
【问题描述】:

我正在尝试使用不同的yeargroupStata 中运行回归分析:

generate y = .

areg X1 X2 X3 if year == 1997, absorb(group)
predict r1997, res
replace y = r1997 if e(sample)

areg X1 X2 X3 if year == 1998, absorb(group)
predict r1998, res
replace y = r1998 if e(sample)

areg X1 X2 X3 if year == 1999, absorb(group)
predict r1999, res
replace y = r1999 if e(sample)

但是,如果有很多yeargroup,那就是低效了。

我可以使用bysort,它将按组运行回归,但不存储每个组的残差。

如何修改我的代码以更有效地存储每个组的残差?

【问题讨论】:

    标签: regression linear-regression stata data-manipulation


    【解决方案1】:

    从表面上看,这只是一个循环。有关基本介绍,请参阅this FAQ

    假设您的年份是 1997 年至 2018 年:

    generate wanted = . 
    
    forvalues y = 1997 / 2018 { 
        areg X1 X2 X3 if year == `y', absorb(group)
        predict work, res
        replace wanted = work if e(sample)
        drop work 
    } 
    

    如果您考虑一下,代码是不言自明的。变量work 是我放置残差的地方。它们不能放入wanted,因为 predict 需要一个新的变量名。反过来,下次循环时,我不能再次使用work,除非它不再存在,这就是为什么一旦它的值被复制到wanted,它就会被删除。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-22
      • 2020-03-25
      • 2014-12-13
      • 1970-01-01
      • 1970-01-01
      • 2020-02-07
      • 1970-01-01
      相关资源
      最近更新 更多