两阶段最小二乘法
两阶段最小二乘法
文章目录
- 两阶段最小二乘法
- @[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。 整个公司当…...

Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...

2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...
LOOI机器人的技术实现解析:从手势识别到边缘检测
LOOI机器人作为一款创新的AI硬件产品,通过将智能手机转变为具有情感交互能力的桌面机器人,展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家,我将全面解析LOOI的技术实现架构,特别是其手势识别、物体识别和环境…...

消息队列系统设计与实践全解析
文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...