暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

R语言工具变量与两阶段最小二乘法

拓端数据部落 2023-03-07
321

原文链接:http://tecdat.cn/?p=5374


我们要估计的模型是点击文末“阅读原文”获取完整代码数据



其中是解释变量,是我们想要估计的系数。x是控制变量,d是治疗变量。我们对我们治疗d对y的影响特别感兴趣。

生成数据

首先,让我们生成数据。

假设x,d,z(d的工具变量)和e之间的相关矩阵如下:

##       x     d     z     e
## x 1.000 0.001 0.002 0.001
## d 0.001 1.000 0.700 0.300
## z 0.002 0.700 1.000 0.001
## e 0.001 0.300 0.001 1.000


具体而言,相关性表明

  1. cor(d,e)= 0.3,这意味着d是内生的;

  2. cor(d,z)= 0.7,这意味着z是d的强大工具变量;

  3. cor(z,e)= 0.001,这意味着工具变量z满足排除限制,因为它只通过d影响y。

现在,让我们使用指定的相关性为,,和生成数据.xdze

 nvars = dim(U) 1 
numobs = 1000
random.normal = matrix(rnorm(nvars*numobs, 0 , nrow=nvars, ncol=numobs);
X = U %*% random.normal
newX = t(X)
data = as.data.frame(newX)


数据看起来像这样:

##             x          d          z          e
## 1 -0.62645381 0.1830168 -0.4694601 1.7474361
## 2 0.32950777 -0.8201385 -0.2255741 0.2818908
## 3 0.57578135 -0.3048125 0.8670061 -0.1795257
## 4 -0.62124058 -2.2153200 -0.7481687 -1.0350488
## 5 -0.01619026 0.9438195 1.2471197 0.5820200
## 6 0.91897737 0.7830549 0.6025820 -1.5924689


点击标题查阅往期内容


R语言计量经济学:工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断


左右滑动查看更多


01

02

03

04



以及数据之间的相关性

##             x          d            z           e
## x 1.00000000 0.00668391 -0.012319595 0.016239235
## d 0.00668391 1.00000000 0.680741763 0.312192680
## z -0.01231960 0.68074176 1.000000000 0.006322354
## e 0.01623923 0.31219268 0.006322354 1.000000000


正如我们前面所指出的那样。
现在让我们指定真实的数据生成过程并生成已解释变量y

如果我们假装不知道真正的关系,用x和d来解释y,我们对x和d的正确系数应该接近1。否则,我们的结果就错误了。

OLS

如果我们只使用OLS来估计系数:

## 
## Call:
## lm(formula = y ~ x + d)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.2395 -0.5952 -0.0308 0.6617 2.7592
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 9.99495 0.03105 321.89 <2e-16 ***
## x 1.01408 0.02992 33.89 <2e-16 ***
## d 1.31356 0.03023 43.46 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.9817 on 997 degrees of freedom
## Multiple R-squared: 0.7541, Adjusted R-squared: 0.7536
## F-statistic: 1528 on 2 and 997 DF, p-value: < 2.2e-16


b的估计系数为1.31,而不是1。

2SLS

现在我们使用2SLS来估计关系。我们用z作为d的工具变量

第1阶段:回归x和z上的d,并将d的拟合值保存为d

## 
## Call:
## lm(formula = d ~ x + z)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.59344 -0.52572 0.04978 0.53115 2.01555
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.01048 0.02383 -0.44 0.660
## x 0.01492 0.02296 0.65 0.516
## z 0.68594 0.02337 29.36 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7534 on 997 degrees of freedom
## Multiple R-squared: 0.4636, Adjusted R-squared: 0.4626
## F-statistic: 430.9 on 2 and 997 DF, p-value: < 2.2e-16


第2阶段:在x和d.hat上回归y

## 
## Call:
## lm(formula = y ~ x + d.hat)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.4531 -1.0333 0.0228 1.0657 4.0104
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 9.99507 0.04786 208.85 <2e-16 ***
## x 1.01609 0.04612 22.03 <2e-16 ***
## d.hat 1.00963 0.06842 14.76 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.513 on 997 degrees of freedom
## Multiple R-squared: 0.4158, Adjusted R-squared: 0.4146
## F-statistic: 354.8 on 2 and 997 DF, p-value: < 2.2e-16


结果

b的真值:1 ,b的OLS估计值:.00963 ,2SLS b的估计值:1.31356
如果治疗变量be是内生的,我们应该为治疗变量找到一个工具变量),并使用2SLS。

非常感谢您阅读本文,有任何问题请在下面留言!

点击标题查阅往期内容

R语言用标准最小二乘OLS,广义相加模型GAM ,样条函数进行逻辑回归LOGISTIC分类
R语言中实现广义相加模型GAM和普通最小二乘(OLS)回归
R语言中的偏最小二乘回归PLS-DA
R语言中的偏最小二乘PLS回归算法
偏最小二乘回归(PLSR)和主成分回归(PCR)
R语言用线性模型进行预测:加权泊松回归,普通最小二乘,加权负二项式模型,多重插补缺失值

欲获取全文文件,请点击左下角“阅读原文”。



欲获取全文文件,请点击左下角“阅读原文”。

文章转载自拓端数据部落,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论