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

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

我们要估计的模型是

Y = A + BX + CD + EY = A + BX + CD + E,

其中Y是解释变量,,和是我们想要估计的系数。


生成数据

首先,让我们生成数据。

假设的工具变量和之间的相关矩阵如下:


##       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,这意味着是的强大工具变量; zd
  3. cor(z,e)= 0.001,这意味着工具变量满足排除限制,因为它只影响到.zyd

现在,让我们使用指定的相关性为,,和生成数据.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

以及数据之间的相关性


##             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

如果我们假装我们不知道真正的关系并使用和来解释,我们对和正确系数应该接近到。  


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 instread of 1. ## 2SLS ##现在我们使用2SLS来估计这种关系。我们使用z作为d的工具变量

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


##
## 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阶段:在和上回归y x d.hat


##
## 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 OLS estiamte of b:.00963 2SLS estiamte of b:1.31356

如果治疗变量是内生的,我们使用2SLS。



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


相关文章
|
2月前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
55 3
|
2月前
|
机器学习/深度学习 并行计算 数据挖掘
R语言是一种强大的统计分析工具,广泛应用于数据分析和机器学习领域
【10月更文挑战第21天】R语言是一种强大的统计分析工具,广泛应用于数据分析和机器学习领域。本文将介绍R语言中的一些高级编程技巧,包括函数式编程、向量化运算、字符串处理、循环和条件语句、异常处理和性能优化等方面,以帮助读者更好地掌握R语言的编程技巧,提高数据分析的效率。
57 2
|
2月前
|
数据采集 数据可视化 数据挖掘
R语言与Python:比较两种数据分析工具
R语言和Python是目前最流行的两种数据分析工具。本文将对这两种工具进行比较,包括它们的历史、特点、应用场景、社区支持、学习资源、性能等方面,以帮助读者更好地了解和选择适合自己的数据分析工具。
49 2
|
3月前
|
数据采集
基于R语言的GD库实现地理探测器并自动将连续变量转为类别变量
【9月更文挑战第9天】在R语言中,可通过`gd`包实现地理探测器。首先,安装并加载`gd`包;其次,准备包含地理与因变量的数据框;然后,使用`cut`函数将连续变量转换为分类变量;最后,通过`gd`函数运行地理探测器,并打印结果以获取q值等统计信息。实际应用时需根据数据特点调整参数。
162 8
|
7月前
|
数据挖掘 数据建模
R语言指数加权模型EWMA预测股市多变量波动率
R语言指数加权模型EWMA预测股市多变量波动率
R语言指数加权模型EWMA预测股市多变量波动率
|
7月前
|
机器学习/深度学习 数据可视化
R语言lasso协变量改进Logistic逻辑回归对特发性黄斑前膜因素交叉验证可视化分析
R语言lasso协变量改进Logistic逻辑回归对特发性黄斑前膜因素交叉验证可视化分析
|
7月前
R语言偏最小二乘回归PLS回归分析制药产品化学制造过程数据、缺失值填充、变量重要性
R语言偏最小二乘回归PLS回归分析制药产品化学制造过程数据、缺失值填充、变量重要性
|
7月前
|
机器学习/深度学习 算法 数据可视化
R语言组lasso改进逻辑回归变量选择分析高血压、易感因素、2型糖尿病和LDL可视化
R语言组lasso改进逻辑回归变量选择分析高血压、易感因素、2型糖尿病和LDL可视化
|
7月前
|
数据可视化
R语言两阶段最小⼆乘法2SLS回归、工具变量法分析股息收益、股权溢价和surfaces曲面图可视化
R语言两阶段最小⼆乘法2SLS回归、工具变量法分析股息收益、股权溢价和surfaces曲面图可视化
|
3月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
下一篇
DataWorks