两阶段最小二乘法与R

文章目录

  • 两阶段最小二乘法与R
    • @[toc]
    • 1、ivreg包介绍
    • 2 、操作流程

1、ivreg包介绍

R语言计量包ivreg用以解决线性回归模型的内生性问题。

描述:工具变量估计的线性模型通过两阶段最小二乘(2SLS) 回归或通过稳健回归M估计(2SM)或MM估计(2SMM)。主要的ivreg()模型拟合函数旨在提供一个工作流程,尽可能类似于标准的lm()回归。大量的方法是被用来拟合ivreg模型对象,除了其他标准模型工具,还包括广泛的功能,计算和图形回归诊断。

作者:Author John Fox, Christian Kleiber, Achim Zeileis


2 、操作流程

在利用工具变量法估计线性回归模型时,往往选择Stata操作,现在介绍R的操作方法:首先,我们先安装工具变量回归安装包ivreg,并加载相关其他计量包;

setwd("D:/Allcode/Rstudy/model/IV_estimate")  # 先设置路径
install.packages("ivreg")    # 安装ivreg
install.packages("haven")    # 用于stata数据导入,默认存在,可以不安装
install.packages("lmtest")   # 用于线性回归检验
install.packages("sandwich") # 提供相关异方差稳健标准误
#加载以上所有包
library("haven")
library("ivreg")
library("lmtest")
library("sandwich")

接下来准备数据集,我选用的是陈强老师主页(陈强教授的计量经济学及Stata主页 (econometrics-stata.com))上的数据集grilic,它是stata的dta格式,因此需要转换导入

grilic <- read_dta("grilic.dta")
names(grilic)  # 查看数据框的变量名# [1] "rns"      "rns80"    "mrt"      "mrt80"    "smsa"     "smsa80"
# [7] "med"      "iq"       "kww"      "year"     "age"      "age80"
# [13] "s"        "s80"      "expr"     "expr80"   "tenure"   "tenure80"
# [19] "lw"       "lw80"

该数据集中包括以下变量:lw(工资对数),s (受教育年限) , age(年龄) , expr(工龄) , tenure(在现单位的工作年数),q(智商), med(母亲的受教育年限),kww(在"knowledge of the World ofWork"测试中的成绩),mt(婚姻虚拟变量,已婚=1),rns (美国南方虚拟变量,住在南方=1),smsa(大城市虚拟变量,住在大城市=1),year (有数据的最早年份, 1966-1973年中的某一年)。我们选择lw为被解释变量,其余变量为解释变量。先利用OLS回归作为基准模型

fit_ols1 <- lm(lw ~ s+expr+tenure+rns+smsa,data = grilic)  # 没有加入智商iq变量# Call:
#   lm(formula = lw ~ s + expr + tenure + rns + smsa, data = grilic)
#
# Residuals:
#   Min       1Q   Median       3Q      Max
# -1.11684 -0.22626 -0.01511  0.23103  1.23738
#
# Coefficients:
#   Estimate Std. Error t value Pr(>|t|)
# (Intercept)  4.103675   0.085097  48.223  < 2e-16 ***
#   s            0.102643   0.005849  17.549  < 2e-16 ***
#   expr         0.038119   0.006327   6.025 2.65e-09 ***
#   tenure       0.035615   0.007742   4.600 4.96e-06 ***
#   rns         -0.084080   0.028797  -2.920  0.00361 **
#   smsa         0.139667   0.028082   4.974 8.15e-07 ***
#   ---
#   Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
# Residual standard error: 0.3464 on 752 degrees of freedom
# Multiple R-squared:  0.3521,  Adjusted R-squared:  0.3478
# F-statistic: 81.75 on 5 and 752 DF,  p-value: < 2.2e-16
#由于没有加入iq,存在遗漏变量问题,因此加入iqfit_ols2 <- lm(lw ~ iq+s+expr+tenure+rns+smsa,data = grilic)# Call:
#   lm(formula = lw ~ iq + s + expr + tenure + rns + smsa, data = grilic)
#
# Residuals:
#   Min       1Q   Median       3Q      Max
# -1.16056 -0.21786 -0.00622  0.22771  1.20580
#
# Coefficients:
#   Estimate Std. Error t value Pr(>|t|)
# (Intercept)  3.895172   0.109110  35.699  < 2e-16 ***
#   iq           0.003279   0.001083   3.028  0.00255 **
#   s            0.092787   0.006666  13.920  < 2e-16 ***
#   expr         0.039344   0.006306   6.239 7.33e-10 ***
#   tenure       0.034209   0.007715   4.434 1.06e-05 ***
#   rns         -0.074532   0.028815  -2.587  0.00988 **
#   smsa         0.136737   0.027948   4.893 1.22e-06 ***
#   ---
#   Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
# Residual standard error: 0.3445 on 751 degrees of freedom
# Multiple R-squared:   0.36,   Adjusted R-squared:  0.3548
# F-statistic: 70.39 on 6 and 751 DF,  p-value: < 2.2e-16
# 以上回归都是基于同方差假设条件下的结果,我们将系数转换为异方差稳健标准误;这里以fit_ols2为例coeftest(fit_ols2, vcov = vcovHC, type = "HC1") # 异方差稳健标准误# t test of coefficients:
#
#   Estimate Std. Error t value  Pr(>|t|)
# (Intercept)  3.8951718  0.1159286 33.5997 < 2.2e-16 ***
#   iq           0.0032792  0.0011321  2.8965  0.003883 **
#   s            0.0927874  0.0069763 13.3004 < 2.2e-16 ***
#   expr         0.0393443  0.0066603  5.9072 5.272e-09 ***
#   tenure       0.0342090  0.0078957  4.3326 1.674e-05 ***
#   rns         -0.0745325  0.0299772 -2.4863  0.013124 *
#   smsa         0.1367369  0.0277712  4.9237 1.045e-06 ***
#   ---
#   Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

使用工具变量法回归,内生解释变量为iq,工具变量选择med、kww、mrt、age;其余控制变量自身视为自身的工具变量;代码如下:

fit_iv <- ivreg(lw ~ iq+s+expr+tenure+rns+smsa | s+ med+ kww+mrt+age+expr+tenure+rns+smsa ,data = grilic)# 这里用"|"分隔内生解释变量与工具变量
# 提取稳健标准误
coeftest(fit_iv, vcov = vcovHC, type = "HC0")  # 异方差稳健标准误# t test of coefficients:
#
#   Estimate Std. Error t value  Pr(>|t|)
# (Intercept)  4.8378747  0.3799432 12.7332 < 2.2e-16 ***
#   iq          -0.0115468  0.0056376 -2.0482  0.040887 *
#   s            0.1373477  0.0174989  7.8489 1.446e-14 ***
#   expr         0.0338041  0.0074844  4.5166 7.295e-06 ***
#   tenure       0.0405640  0.0095848  4.2321 2.602e-05 ***
#   rns         -0.1176984  0.0359582 -3.2732  0.001112 **
#   smsa         0.1499830  0.0322276  4.6539 3.850e-06 ***
#   ---
#   Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1# 工具变量法回归还要进行诊断
summary(fit_iv,test = TRUE) # 诊断# Call:
#   ivreg(formula = lw ~ iq + s + expr + tenure + rns + smsa | s +
#           med + kww + mrt + age + expr + tenure + rns + smsa, data = grilic)
#
# Residuals:
#   Min         1Q     Median         3Q        Max
# -1.3825405 -0.2437078  0.0009735  0.2514625  1.4609417
#
# Coefficients:
#   Estimate Std. Error t value Pr(>|t|)
# (Intercept)  4.837875   0.346424  13.965  < 2e-16 ***
#   iq          -0.011547   0.005241  -2.203 0.027889 *
#   s            0.137348   0.017042   8.059 3.02e-15 ***
#   expr         0.033804   0.007302   4.630 4.32e-06 ***
#   tenure       0.040564   0.008896   4.560 5.98e-06 ***
#   rns         -0.117698   0.035468  -3.318 0.000949 ***
#   smsa         0.149983   0.031572   4.751 2.43e-06 ***
#
#   Diagnostic tests:
#   df1 df2 statistic  p-value
# Weak instruments   4 748     10.54 2.61e-08 ***    # 弱工具变量检验(通过)
#   Wu-Hausman         1 750     10.70  0.00112 **   # 内生性检验(通过)
#   Sargan             3  NA     61.14 3.36e-13 ***  # 过度识别检验(未通过)
#   ---
#   Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
# Residual standard error: 0.3851 on 751 degrees of freedom
# Multiple R-Squared: 0.2002,   Adjusted R-squared: 0.1938
# Wald test: 55.92 on 6 and 751 DF,  p-value: < 2.2e-16

由于工具变量个数大于内生解释变量个数,且工具变量过度识别检验未通过,因此需要调整工具变量;这里怀疑age与tenure可能存在过度识别,剔除后进行ivreg回归

fit_iv2 <- ivreg(lw ~ iq+s+expr+tenure+rns+smsa | med+ kww + s + expr + tenure + rns + smsa ,data = grilic)
summary(fit_iv2,test = TRUE)
# Call:
#   ivreg(formula = lw ~ iq + s + expr + tenure + rns + smsa | med +
#           kww + s + expr + tenure + rns + smsa, data = grilic)
#
# Residuals:
#   Min         1Q     Median         3Q        Max
# -1.3025533 -0.2405658  0.0005969  0.2349962  1.2621665
#
# Coefficients:
#   Estimate Std. Error t value Pr(>|t|)
# (Intercept)  3.218043   0.384814   8.363 2.97e-16 ***
#   iq           0.013928   0.005884   2.367 0.018186 *
#   s            0.060780   0.018735   3.244 0.001230 **
#   expr         0.043324   0.007038   6.156 1.22e-09 ***
#   tenure       0.029644   0.008561   3.463 0.000565 ***
#   rns         -0.043527   0.034922  -1.246 0.213000
# smsa         0.127222   0.030137   4.221 2.72e-05 ***
#
#   Diagnostic tests:
#   df1 df2 statistic  p-value
# Weak instruments   2 750    14.906 4.49e-07 *** (通过)
#   Wu-Hausman         1 750     3.858   0.0499 *  (通过)
#   Sargan             1  NA     0.130   0.7185    (通过)
# ---
#   Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
# Residual standard error: 0.3661 on 751 degrees of freedom
# Multiple R-Squared: 0.2775,   Adjusted R-squared: 0.2718
# Wald test: 61.94 on 6 and 751 DF,  p-value: < 2.2e-16

-END-

参考文献

陈强.高级计量经济学[M].高等教育出版社
https://cran.r-project.org/web/packages/gmm/gmm.pdf
http://www.econometrics-stata.com/col.jsp?id=101

两阶段最小二乘法与R相关推荐

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

    最近我们被客户要求撰写关于计量经济学的研究报告,包括一些图形和统计输出. 简介 两阶段最小二乘法(2SLS)回归拟合的线性模型是一种常用的工具变量估计方法. 本文的主要内容是将各种标准的回归诊断扩展到 ...

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

    我们要估计的模型是 其中是解释变量,和是我们想要估计的系数. x是控制变量,d是治疗变量.我们对我们治疗d对y的影响特别感兴趣. 生成数据 首先,让我们生成数据. 假设x,d,z(d的工具变量)和e之 ...

  3. 两阶段最小二乘法原理_R语言代写工具变量与两阶段最小二乘法

    我们要估计的模型是 y=a+bx+cd+ey=a+bx+cd+e, 其中是解释变量,,和是我们想要估计的系数.是控制变量,是治疗变量.我们特别关注我们的治疗效果对. 生成数据 首先,让我们生成数据. ...

  4. 两阶段最小二乘法原理_两阶段最小二乘法.PPT

    估计是逐个方程展开.以EViews附带的工作文件cs.wf为例.工作文件界面为: 其中CS(人均消费).INV(投资)和GDP为内生变量.Gov_net为外生变量. 建立模型如下: cs=c(1)+c ...

  5. 两阶段提交实际项目V1

    项目介绍 两阶段提交项目主要是实际用代码演示复现一下,两阶段提交的执行过程,仅供学习参考.本次主要分析的版本为V1版本,主要实现的流程包括服务端的基础架构编写,客户端的基础架构编写,完成事务提交的过程 ...

  6. 运筹学两阶段法编程c语言,运筹学上机实验 - 单纯形方法的两阶段法

    理论部分不解释了, 就是粘个实验课的代码,按照书上的算法写的,仅仅是把课本上的样例过了,有bug可能难免,欢迎指出. Sample 1. $$ \left\{ \begin{aligned} min ...

  7. 搜索,然后学习:两阶段的无监督文本生成

    论文标题: Unsupervised Text Generation by Learning from Search 论文作者: Jingjing Li, Zichao Li, Lili Mou, X ...

  8. 运筹学上机实验 - 单纯形方法的两阶段法

    理论部分不解释了, 就是粘个实验课的代码,按照书上的算法写的,仅仅是把课本上的样例过了,有bug可能难免,欢迎指出. Sample 1. $$ \left\{ \begin{aligned} min ...

  9. 两阶段3D目标检测网络 SIENet: Spatial Information Enhancement Network for 3D Object Detection from Point Cloud

    本文介绍一篇两阶段的3D目标检测网络:SIENet. 这里重点是理解本文提出的 Hybrid-Paradigm Region Proposal Network 和 Spatial Informatio ...

  10. 详解两阶段3D目标检测网络 Voxel R-CNN:Towards High Performance Voxel-based 3D Object Detection

    本文介绍一篇两阶段的3D目标检测网络:Voxel R-CNN,论文已收录于AAAI 2021. 这里重点是理解本文提出的 Voxel RoI pooling. 论文链接为:https://arxiv. ...

最新文章

  1. poj 2677 tour
  2. Delphi Qjson
  3. 在Linux中对硬盘进行分区、格式化和挂载
  4. HDOJ 1286 HDU 1286 找新朋友 ACM 1286 IN HDU
  5. phoenixframework自动化测试平台webUI代码示例
  6. python之配置日志的几种方式
  7. qt自定义qtablemodel实现改变item的背景色
  8. web前端开发常用工具有哪些?
  9. 人工智能、机器学习、深度学习和神经网络的关系
  10. 在emwin中显示字库芯片GT23L24M0140的字模
  11. python 已知三条边求三角形的角度
  12. DFMEA \FTA
  13. 关于阿里云的直播API开发
  14. java电话簿_JAVA实现简单电话簿功能
  15. 租车新玩法 神州租车打造行业标杆
  16. Tetrate万凯:SkyWalking MAL的监控虚拟机和Kubernetes实践
  17. java自定义数组_Java自定义数组
  18. 计算机网络时间同步技术原理介绍
  19. 计算机中,为什么一个字节是8位?
  20. 如何快速转行产品经理 少走弯路

热门文章

  1. matlab可以做什么,matlab仿真用来干什么
  2. qpython3 l_QPython 3(com.hipipal.qpy3) - 3.0.0 - 应用 - 酷安网
  3. ANC降噪耳机量产测试方案
  4. ppt插入 html,PPT中嵌入网页的方法:使用webbrowser控件
  5. 亲密爱人:《亲密关系 - 通往灵魂的桥梁》读后感
  6. 高版本linux安装gamit,Ubuntu14下Gamit安装(示例代码)
  7. 《大学》与威斯敏斯特大教堂的无名墓碑
  8. wps改照片底色有红边_Excel怎么给证件照换底色?Excel中快速将证件照蓝底换红底的方法介绍...
  9. 计算机专业论文选题的8个方法
  10. win7 增加Internet时间服务器