原文链接: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
具体而言,相关性表明
- cor(d,e)= 0.3,这意味着d是内生的;
- cor(d,z)= 0.7,这意味着z是d的弱小工具变量;
- 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.normalnewX = 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
以及数据之间的相关性
## 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。
十分感谢您浏览本文,有任何问题请在上面留言!
参考文献
1.R语言多元Logistic逻辑回归 利用案例
2.面板平滑转移回归(PSTR)剖析案例实现
3.matlab中的偏最小二乘回归(PLSR)和主成分回归(PCR)
4.R语言泊松Poisson回归模型剖析案例
5.R语言回归中的Hosmer-Lemeshow拟合优度测验
6.r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现
7.在R语言中实现Logistic逻辑回归
8.python用线性回归预测股票价格
9.R语言如何在生存剖析与Cox回归中计算IDI,NRI指标