r语言中最小二乘法,r语言偏最小二乘法
原文链接:R语言工具变量和两阶段最舒服的板凳乘法拓端数据技术/欢迎来到tecdat原文来源:拓端数据部落微信官方账号
我们要评估的模型是
其中是解释变量,是我们要估计的系数。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 0.001 1 1.000具体来说,相关性表明,
Cor(d,e)=0.3,说明d是内生的;Cor(d,z)=0.7,说明z是d的有力工具变量;Cor(z,e)=0.001,这意味着工具变量Z满足排除限制,因为它只影响y到D。现在,让我们用指定的相关性为X,D,Z和E生成数据。
nvars=dim(U)1 nu mobs=1000 random . normal=matrix(r norm(nvars * nu mobs,0,nrow=nvars,ncol=nu mobs);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 # # 0.57578135-0.3048125 0.8670061-0.1771。
# # x d Z e # # x 1.00000000000 0.00668391-0.012319595 0.016239235 # # d 0.0066683991 1.000000007.680741763 0.3121926 80 # # Z-0.0123196 0 0 # # e0.0009.009
现在让我们指定真实的数据生成过程,并生成解释的变量y。
如果我们假装不知道真实的关系,用X和D来解释Y,我们对X和D的正确系数应该接近1。否则,我们的结果将是错误的。
OLS如果我们只用OLS来估计系数:
####调用:## lm(公式=y ~ x d)####残差:# #最小1Q中值3Q最大# #-3.2395-0.5952-0.0308 0.6617 2.7592 # # # #系数:# #估计Std。误差t值Pr(t) ##(截距)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 * * * # #-# #有效。代码:0 * * 0.001 * * 0.01 * 0.05 0.1 1## ##剩余标准误差:997个自由度上的0.9817 # #倍数r平方:0.7541,调整r平方:0.7536 # # f统计:2和997 df上的1528,p值的估计系数:2.2e-16b是1.31。
现在我们用2SLS来估计关系。我们用z作为d的工具变量
第一阶段:在X和Z上回归D,将D的拟合值保存为D。
####调用:## lm(公式=d ~ x z)####残差:# #最小1Q中值3Q最大# #-2.59344-0.52572 0.04978 0.53115 2.01555 # # # #系数:# #估计Std。误差t值Pr(t) ##(截距)-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 * * * # #-# #有效。代码:0 * * 0.001 * * 0.01 * 0.05 0.1 1## ##剩余标准误差:997个自由度上的0.7534 # #倍数r平方:0.4636,调整后r平方:0.4626 # # f统计:430.9 on2和997 df,p值:2.2e-16第二阶段:X和d上返回d.hat
####调用:## lm(formula=y ~ x d.hat)####残差:# #最小1Q中值3Q最大# #-4.4531-1.0333 0.0228 1.0657 4.0104 # # # #系数:# #估计Std。误差t值Pr(t) ##(截距)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 * * * # #-# # signi。代码:0 * * 0.001 * * 0.01 * 0.05 0.1 1## ##残差标准误:997个自由度上1.513 # #倍数R平方:0.4158,调整R平方:0.4146 # # f统计量:354.8 on2和997 df,p值:2.2e-16结果B的真值:1,B的OLS估计值: 00963,2SLS b的估计值:1.31356。
如果治疗变量be是内生的,我们应该为治疗变量找一个工具变量)并使用2SLS。
非常感谢您阅读这篇文章。如有疑问请在下方留言!
参考
1.多元逻辑回归在r语言中的应用实例
2.PSTR分析案例的实现。
3.3.matlab中最舒适的台式乘法回归(PLSR)和主成分回归(PCR)
4.一个泊松回归模型的R语言分析案例
霍斯默-莱梅休拟合优度测试在5。r语言回归
LASSO回归、岭脊回归和弹性网模型在6.r语言中的实现
7.用R语言实现逻辑回归
8.python使用线性回归预测股票价格
9.R语言如何计算生存分析和Cox回归中的IDI和NRI指标?