两阶段最小二乘法
两阶段最小二乘法
文章目录
- 两阶段最小二乘法
- @[toc]
- 1、ivreg包介绍
- 2 、R语言实现
文章目录
- 两阶段最小二乘法
- @[toc]
- 1、ivreg包介绍
- 2 、R语言实现
1、ivreg包介绍
R语言计量包ivreg用以解决线性回归模型的内生性问题。
描述:工具变量估计的线性模型通过两阶段最小二乘(2SLS) 回归或通过稳健回归M估计(2SM)或MM估计(2SMM)。主要的ivreg()模型拟合函数旨在提供一个工作流程,尽可能类似于标准的lm()回归。大量的方法是被用来拟合ivreg模型对象,除了其他标准模型工具,还包括广泛的功能,计算和图形回归诊断。
作者:Author John Fox, Christian Kleiber, Achim Zeileis
2 、R语言实现
在利用工具变量法估计线性回归模型时,往往选择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
参考文献
陈强.高级计量经济学[M].高等教育出版社
https://cran.r-project.org/web/packages/gmm/gmm.pdf
http://www.econometrics-stata.com/col.jsp?id=101
相关文章:
两阶段最小二乘法
两阶段最小二乘法 文章目录 两阶段最小二乘法[toc]1、ivreg包介绍2 、R语言实现 1、ivreg包介绍 R语言计量包ivreg用以解决线性回归模型的内生性问题。 描述:工具变量估计的线性模型通过两阶段最小二乘(2SLS) 回归或通过稳健回归M估计(2SM)或MM估计(2SMM)。主要的…...
ArcMap创建格网统计图
目录 前言 一、人口数据获取 来源一:中科院地理所公开数据集 来源二:WorldPop数据集 二、人口格网统计步骤 1.创建渔网 2.人口数据处理 2.1 栅格转点 2.2 空间插值——处理人口缺失数据 2.3 空间连接——渔网人口统计 总结 前言 在科研中&am…...
[VAE] Auto-Encoding Variational Bayes
直接看paper看得云里雾里,李沐视频一语道破天机(建议从30min左右开始看GAN到Diffusion的串讲)。VAE的核心思路就是下面: 做生成,其实就是从随机向量(z)到目标图像(x)的过…...
《程序员面试金典(第6版)》面试题 16.19. 水域大小(深度优先搜索,类似棋盘类问题,八皇后的简化版本,C++)
题目描述 你有一个用于表示一片土地的整数矩阵land,该矩阵中每个点的值代表对应地点的海拔高度。若值为0则表示水域。由垂直、水平或对角连接的水域为池塘。池塘的大小是指相连接的水域的个数。编写一个方法来计算矩阵中所有池塘的大小,返回值需要从小到…...
Spring 注解之@RestController与@Controller的区别
目录 1:介绍 2:区别 3:总体来说 4:社区地址 1:介绍 RestController 和 Controller 是 Spring MVC 中常用的两个注解,它们都可以用于定义一个控制器类。 2:区别 返回值类型不同:…...
Java中的泛型是什么?如何使用泛型
Java中的泛型是指在定义类、接口和方法时使用类型参数,以使得这些类、接口和方法可以操作多种类型的数据,从而提高代码的重用性和安全性。Java的泛型机制是从JDK5开始引入的,它使得Java程序员能够编写更加通用和类型安全的代码。 什么是泛型…...
【飞行棋】多人游戏-微信小程序开发流程详解
可曾记得小时候玩过的飞行棋游戏,是90后的都有玩过吧,现在重温一下,这是一个可以二到四个人参与的游戏,通过投骰子走棋,一开始靠运气,后面还靠自己选择,谁抢占先机才能赢,还可以和小…...
力扣 146. LRU 缓存
一、题目描述 请你设计并实现一个满足LRU(最近最少使用)缓存约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以正整数作为容量 capacity 初始化LRU缓存。int get(int key) 如果关键字 key 存在于缓存中,则返回关键…...
关于Oracle SCN的最大阈值
SCN每秒增长的速度跟Oracle的版本有关,在Oracle 11.2.0.2之前是每秒允许最大增长16384,在Oracle 11.2.0.2之后是默认每秒允许增长32768,这个值跟新增的隐含参数_max_reasonable_scn_rate有关,如下所示: NAME …...
Linux多路转接之poll
文章目录 一、poll的认识二、编写poll方案服务器三、poll方案多路转接的总结 一、poll的认识 多路转接技术是在不断更新进步的,一开始多路转接采用的是select方案,但是select方案存在的缺点比较多,所以在此基础上改进,产生了poll…...
Webpack打包流程
轻松了解Webpack 打包流程 Webpack是一个现代的JavaScript应用程序的静态模块打包器。它将多个JavaScript文件打包成一个或多个静态资源文件,以便在浏览器中加载。Webpack将应用程序视为一个依赖项图,其中包括应用程序的所有模块,然后通过该…...
React事件委托
React 事件委托(Event Delegation)是一种优化事件处理的技术,它通过将事件监听器添加到父级元素(而不是子元素)来实现。当事件触发时,事件会向上冒泡到父元素,然后在父元素上调用事件处理函数。…...
Notion——构建个人知识库
前言 使用Notion快三年了,它All in one的理念在使用以后确实深有体会,一直想找一个契机将这个软件分享给大家,这款笔记软件在网上已经有很多的教程了,所以在这里我主要想分享框架方面的内容给大家,特别对于学生党、研究…...
ModuleNotFoundError: No module named ‘Multiscaledeformableattention‘
在实现DINO Detection方法时,我们可能会遇到以上问题。因为在DeformableAttention模块,为了加速,需要自己去编译这个模块。 如果你的环境变量中能够找到cuda路径,使用正确的torch版本和cuda版本的话,这个问题很容易解…...
【数据结构】链表(C语言实现)
创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!! 主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步! 🔥c语言系列专栏:c语言之路重点知识整合 &#x…...
【2023程序员必看】大数据行业分析
1、政策重点扶持,市场前景广阔 2014年,大数据首次写入政府工作报告,大数据逐渐成为各级政府关注的热点。 2015年9月,国务院发布《促进大数据发展的行动纲要》,大数据正式上升至国家战略层面,十九大报告提…...
通达信SCTR强势股选股公式,根据六个技术指标打分
SCTR指标(StockCharts Technical Rank)的思路来源于著名技术分析师约翰墨菲,该指标根据长、中、短三个周期的六个关键技术指标对股票进行打分,根据得分对一组股票进行排名,从而可以识别出强势股。 与其他技术指标一样,SCTR的设计…...
SpringBoot+Token+Redis+Lua+自动续签极简分布式锁Token登录方案
前言 用SpringBoot做一个项目,都要写登录注册之类的方案 使用Cookie或Session的话,它是有状态的,不符合现代的技术 使用Security或者Shiro框架实现起来比较复杂,一般项目无需用那么复杂 使用JWT它虽然是无状态的,也可…...
多模态:MiniGPT-4
多模态:MiniGPT-4 IntroductionMethodlimitation参考 Introduction GPT-4具有很好的多模态能力,但是不开源。大模型最近发展的也十分迅速,大模型的涌现能力可以很好的迁移到各类任务,于是作者猜想这种能力可不可以应用到多模态模…...
5年时间里,自动化测试于我带来的意义,希望你也能早点知道
摘要:在我有限的软件测试经历里,曾有一段专职的自动化测试经历。 接触自动化 那时第一次上手自动化测试,团队里用的是Python,接口自动化测试的框架是requestsExcelJenkins,APP自动化测试的框架是Appium。 整个公司当…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...
破解路内监管盲区:免布线低位视频桩重塑停车管理新标准
城市路内停车管理常因行道树遮挡、高位设备盲区等问题,导致车牌识别率低、逃费率高,传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法,正成为破局关键。该设备安装于车位侧方0.5-0.7米高度,直接规避树枝遮…...
【C++】纯虚函数类外可以写实现吗?
1. 答案 先说答案,可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...
LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用
中达瑞和自2005年成立以来,一直在光谱成像领域深度钻研和发展,始终致力于研发高性能、高可靠性的光谱成像相机,为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...
