如何使用felm()指定工具变量模型?

时间:2018-12-24 10:48:30

标签: r regression

由于实施了集群标准错误方法,我想用felm()来估计工具变量模型。使用AER::ivreg()plm::plm()可以生成相同的结果。但是,在felm()中指定函数对我来说似乎并不那么简单,而且我失败了。

我使用的是ivreg()帮助的示例,其中tdiffI(tax/cpi)都是log(rprice)的工具:

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)

1 个答案:

答案 0 :(得分:1)

我们有

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 

第1点:检测变量log(rprice)仅需要在第三部分,而无需将其添加到第一部分。

第2点:在第三部分中添加了括号; ?felm说了~|之间的干扰,但是我不确定在这种情况下为什么需要括号。

我也最后删除了| 0,这是没有必要的。