【发布时间】:2022-01-19 22:03:36
【问题描述】:
我正在使用ppmlhdfe 运行回归,其中包含两个虚拟变量以及它们之间的交互。它的构造如下:
gen interaction = D1*D2
ppmlhdfe y D1#D2 control i.year, vce(robust)
ppmlhdfe y D1 interaction D2 control i.year, vce(robust)
我运行这个比较主要是为了看看结果是否相同,因为esttab 输出和标记第一个版本的方式有点丑陋和混乱。然而,虽然第二版中 D1 和 D2 上的系数与第一版中的 D1 = 1、D2 = 0 和 D1 = 0、D2 = 1 相匹配,但交互项完全不同 - 符号错误、幅度错误、显着在第一个版本中,但在第二个版本中微不足道。 D1 = 0, D2 = 0 上的系数在第一个版本中明确输出,由于共线性而被省略,所以我觉得结果应该是相同的。我已经使用reg 命令重新运行它,以确保它不是 ppml 问题,但同样的事情发生了。我还尝试将虚拟变量和交互添加为显式因子变量:
ppmlhdfe y i.D1 i.interaction i.D2 control i.year, vce(robust)
但结果没有改变。
我发现this response 有一个类似的问题,但使用的是手动和连续交互术语,这与我的情况有点不同。无论如何,我尝试应用它,生成第一个虚拟变量的两个级别并与另一个虚拟变量进行交互,如下所示:
tab D1, gen(d)
gen d1D2 = d1*D2
gen d2D2 = d2*D2
ppmlhdfe y D1 D2 d1D2 d2D2 control i.year, vce(robust)
但发生的情况是 d2D2 由于共线性而被省略 - 不足为奇 - 结果是相同的。有人知道这是为什么吗?
EDIT1:最小可行示例 -
sysuse auto.dta, clear
gen high_price = 0
replace high_price = 1 if price>6165
gen interaction = high_price*foreign
ppmlhdfe trunk high_price interaction foreign headroom, vce(robust)
ppmlhdfe trunk high_price#foreign headroom, vce(robust)
EDIT2:请注意,我还回复了上面提到的 Statalist 帖子,因为我在这里发帖后意识到那里可能有更多特定于 Stata 的帮助。
【问题讨论】:
标签: regression stata interaction dummy-variable