我正在尝试使用包R
和两个阶段最小二乘(systemfit
)在2SLS
中进行简单的工具变量估算:
y = b + b1*x1 + b2*x2 + b3*w + e
其中x1和x1是我想要检验的内生变量,w是外生变量,e是残差。我的两个乐器是z1和z2。我想将z1用于x1,z2用于x2。因此,我的第一阶段回归将是
x1 = c + c1*z1 + c2*z2 + c3*w + e1
x2 = d + d1*z1 + d2*z2 +d3*w + e2
我试过了:
systemfit(y~x1 + x2 + w,inst=~z1 + z2 +w)
但不确定这是正确的......
答案 0 :(得分:3)
为什么不使用ivreg
套餐中的AER
?您可以尝试并比较结果。
#install.packages("AER") # if not already installed
library(AER)
?ivreg
答案 1 :(得分:1)
我认为systemfit
函数每个方程只能处理一个内生变量。尝试分2步完成。
lm1 <- lm(x1 ~ z1 + w, data = yourDataFrame)
lm2 <- lm(x2 ~ z2 + w, data = yourDataFrame)
yourDataFrame$x1.1st.step <- lm1$fitted
yourDataFrame$x2.1st.step <- lm2$fitted
lm.2nd.step <- lm(y ~ x1.1st.step + x2.1st.step + w, data = yourDataFrame)
答案 2 :(得分:0)
我肯定会使用ivreg
估算2SLS模型。如果您没有R的更新版本,有时上传AER包可能会很棘手(如果您遇到困难,请检查哪个包更适合您的R版本!)。