由于实现了聚类标准误差方法,我想用 felm()
估计一个工具变量模型。使用 AER::ivreg()
和 plm::plm()
我可以生成相同的结果。然而,在 felm()
中指定函数对我来说似乎不是很简单,我失败了。
我正在使用 ivreg()
帮助的示例,其中 tdiff
和 I(tax/cpi)
都是工具日志(价格)
:
library(AER)
aer.hat <- ivreg(log(packs) ~ log(rprice) + log(rincome) | log(rincome) + tdiff + I(tax/cpi),
data=CigarettesSW, subset=year == "1995")
> coef(aer.hat)
(Intercept) log(rprice) log(rincome)
9.8949555 -1.2774241 0.2804048
使用 plm()
我可以轻松生成相同的结果:
library(plm)
plm.hat <- plm(log(packs) ~ log(rprice) + log(rincome) | log(rincome) + tdiff + I(tax/cpi),
data=CigarettesSW[CigarettesSW$year == 1995, ], model="pooling")
> coef(plm.hat)
(Intercept) log(rprice) log(rincome)
9.8949555 -1.2774241 0.2804048
但是我用 lfe::felm()
失败了:
library(lfe)
felm.hat <- felm(log(packs) ~ log(rprice) + log(rincome) | 0 | log(rprice) ~ tdiff + I(tax/cpi) | 0 ,
data=CigarettesSW[CigarettesSW$year == 1995, ])
> coef(felm.hat)
(Intercept) tdiff I(tax/cpi)
1.000000e+00 -8.187404e-17 -3.294448e-17
我们如何在 felm()
中做到这一点?
数据
data("CigarettesSW", package="AER")
CigarettesSW$rprice <- with(CigarettesSW, price/cpi)
CigarettesSW$rincome <- with(CigarettesSW, income/population/cpi)
CigarettesSW$tdiff <- with(CigarettesSW, (taxs - tax)/cpi)
最佳答案
我们有
felm.hat <- felm(log(packs) ~ log(rincome) | 0 | (log(rprice) ~ tdiff + I(tax/cpi)),
data = CigarettesSW[CigarettesSW$year == 1995, ])
coef(felm.hat)
# (Intercept) log(rincome) `log(rprice)(fit)`
# 9.8949555 0.2804048 -1.2774241
Point 1: instrumented variable log(rprice)
只需要在第三部分,不需要也添加到第一部分。
要点2:在第三部分我加了括号; ?felm
说明了 ~
和 |
之间的干扰,但我不确定为什么在这种情况下需要括号。
我还删除了| 0
结尾,不需要。
关于r - 如何使用 felm() 指定工具变量模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53912380/