我正在使用带有两个虚拟变量的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)
但结果并没有改变。
我发现这一反应有一个类似的问题,但是使用了一个手册和一个连续的交互术语,这与我的情况有点不同。无论如何,我尝试应用它,生成第一个虚拟变量的两个级别,并与另一个虚拟变量进行交互,如下所示:
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的帮助。
发布于 2022-01-20 17:07:19
根据杰夫·伍尔德里奇和卡洛·拉扎罗关于“史泰斯特”的建议,我尝试了
ppmlhdfe trunk high_price##foreign headroom, vce(robust)
和
ppmlhdfe trunk high_price c.high_price#c.foreign foreign headroom, vce(robust)
两者产生的结果与手动交互术语相同。仍然不确定单一#到底是怎么回事,但我得出结论,最好使用##。
https://stackoverflow.com/questions/70778330
复制相似问题