В связи с внедрением стандартных методов ошибок кластера, я хотел бы оценить модель инструментальных переменных с felm()
.С AER::ivreg()
и plm::plm()
я могу генерировать одинаковые результаты.Однако указание функции в felm()
не кажется мне очень простым, и я потерпел неудачу.
Я использую пример справки ivreg()
, где tdiff
и I(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)