当前位置: 首页 > news >正文

两阶段最小二乘法

两阶段最小二乘法

文章目录

  • 两阶段最小二乘法
    • @[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 

-END-

参考文献

陈强.高级计量经济学[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用以解决线性回归模型的内生性问题。 描述&#xff1a;工具变量估计的线性模型通过两阶段最小二乘(2SLS) 回归或通过稳健回归M估计(2SM)或MM估计(2SMM)。主要的…...

ArcMap创建格网统计图

目录 前言 一、人口数据获取 来源一&#xff1a;中科院地理所公开数据集 来源二&#xff1a;WorldPop数据集 二、人口格网统计步骤 1.创建渔网 2.人口数据处理 2.1 栅格转点 2.2 空间插值——处理人口缺失数据 2.3 空间连接——渔网人口统计 总结 前言 在科研中&am…...

[VAE] Auto-Encoding Variational Bayes

直接看paper看得云里雾里&#xff0c;李沐视频一语道破天机&#xff08;建议从30min左右开始看GAN到Diffusion的串讲&#xff09;。VAE的核心思路就是下面&#xff1a; 做生成&#xff0c;其实就是从随机向量&#xff08;z&#xff09;到目标图像&#xff08;x&#xff09;的过…...

《程序员面试金典(第6版)》面试题 16.19. 水域大小(深度优先搜索,类似棋盘类问题,八皇后的简化版本,C++)

题目描述 你有一个用于表示一片土地的整数矩阵land&#xff0c;该矩阵中每个点的值代表对应地点的海拔高度。若值为0则表示水域。由垂直、水平或对角连接的水域为池塘。池塘的大小是指相连接的水域的个数。编写一个方法来计算矩阵中所有池塘的大小&#xff0c;返回值需要从小到…...

Spring 注解之@RestController与@Controller的区别

目录 1&#xff1a;介绍 2&#xff1a;区别 3&#xff1a;总体来说 4&#xff1a;社区地址 1&#xff1a;介绍 RestController 和 Controller 是 Spring MVC 中常用的两个注解&#xff0c;它们都可以用于定义一个控制器类。 2&#xff1a;区别 返回值类型不同&#xff1a;…...

Java中的泛型是什么?如何使用泛型

Java中的泛型是指在定义类、接口和方法时使用类型参数&#xff0c;以使得这些类、接口和方法可以操作多种类型的数据&#xff0c;从而提高代码的重用性和安全性。Java的泛型机制是从JDK5开始引入的&#xff0c;它使得Java程序员能够编写更加通用和类型安全的代码。 什么是泛型…...

【飞行棋】多人游戏-微信小程序开发流程详解

可曾记得小时候玩过的飞行棋游戏&#xff0c;是90后的都有玩过吧&#xff0c;现在重温一下&#xff0c;这是一个可以二到四个人参与的游戏&#xff0c;通过投骰子走棋&#xff0c;一开始靠运气&#xff0c;后面还靠自己选择&#xff0c;谁抢占先机才能赢&#xff0c;还可以和小…...

力扣 146. LRU 缓存

一、题目描述 请你设计并实现一个满足LRU&#xff08;最近最少使用&#xff09;缓存约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以正整数作为容量 capacity 初始化LRU缓存。int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关键…...

关于Oracle SCN的最大阈值

SCN每秒增长的速度跟Oracle的版本有关&#xff0c;在Oracle 11.2.0.2之前是每秒允许最大增长16384&#xff0c;在Oracle 11.2.0.2之后是默认每秒允许增长32768&#xff0c;这个值跟新增的隐含参数_max_reasonable_scn_rate有关&#xff0c;如下所示&#xff1a; NAME …...

Linux多路转接之poll

文章目录 一、poll的认识二、编写poll方案服务器三、poll方案多路转接的总结 一、poll的认识 多路转接技术是在不断更新进步的&#xff0c;一开始多路转接采用的是select方案&#xff0c;但是select方案存在的缺点比较多&#xff0c;所以在此基础上改进&#xff0c;产生了poll…...

Webpack打包流程

轻松了解Webpack 打包流程 Webpack是一个现代的JavaScript应用程序的静态模块打包器。它将多个JavaScript文件打包成一个或多个静态资源文件&#xff0c;以便在浏览器中加载。Webpack将应用程序视为一个依赖项图&#xff0c;其中包括应用程序的所有模块&#xff0c;然后通过该…...

React事件委托

React 事件委托&#xff08;Event Delegation&#xff09;是一种优化事件处理的技术&#xff0c;它通过将事件监听器添加到父级元素&#xff08;而不是子元素&#xff09;来实现。当事件触发时&#xff0c;事件会向上冒泡到父元素&#xff0c;然后在父元素上调用事件处理函数。…...

Notion——构建个人知识库

前言 使用Notion快三年了&#xff0c;它All in one的理念在使用以后确实深有体会&#xff0c;一直想找一个契机将这个软件分享给大家&#xff0c;这款笔记软件在网上已经有很多的教程了&#xff0c;所以在这里我主要想分享框架方面的内容给大家&#xff0c;特别对于学生党、研究…...

ModuleNotFoundError: No module named ‘Multiscaledeformableattention‘

在实现DINO Detection方法时&#xff0c;我们可能会遇到以上问题。因为在DeformableAttention模块&#xff0c;为了加速&#xff0c;需要自己去编译这个模块。 如果你的环境变量中能够找到cuda路径&#xff0c;使用正确的torch版本和cuda版本的话&#xff0c;这个问题很容易解…...

【数据结构】链表(C语言实现)

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c语言系列专栏&#xff1a;c语言之路重点知识整合 &#x…...

【2023程序员必看】大数据行业分析

1、政策重点扶持&#xff0c;市场前景广阔 2014年&#xff0c;大数据首次写入政府工作报告&#xff0c;大数据逐渐成为各级政府关注的热点。 2015年9月&#xff0c;国务院发布《促进大数据发展的行动纲要》&#xff0c;大数据正式上升至国家战略层面&#xff0c;十九大报告提…...

通达信SCTR强势股选股公式,根据六个技术指标打分

SCTR指标(StockCharts Technical Rank)的思路来源于著名技术分析师约翰墨菲&#xff0c;该指标根据长、中、短三个周期的六个关键技术指标对股票进行打分&#xff0c;根据得分对一组股票进行排名&#xff0c;从而可以识别出强势股。 与其他技术指标一样&#xff0c;SCTR的设计…...

SpringBoot+Token+Redis+Lua+自动续签极简分布式锁Token登录方案

前言 用SpringBoot做一个项目&#xff0c;都要写登录注册之类的方案 使用Cookie或Session的话&#xff0c;它是有状态的&#xff0c;不符合现代的技术 使用Security或者Shiro框架实现起来比较复杂&#xff0c;一般项目无需用那么复杂 使用JWT它虽然是无状态的&#xff0c;也可…...

多模态:MiniGPT-4

多模态&#xff1a;MiniGPT-4 IntroductionMethodlimitation参考 Introduction GPT-4具有很好的多模态能力&#xff0c;但是不开源。大模型最近发展的也十分迅速&#xff0c;大模型的涌现能力可以很好的迁移到各类任务&#xff0c;于是作者猜想这种能力可不可以应用到多模态模…...

5年时间里,自动化测试于我带来的意义,希望你也能早点知道

摘要&#xff1a;在我有限的软件测试经历里&#xff0c;曾有一段专职的自动化测试经历。 接触自动化 那时第一次上手自动化测试&#xff0c;团队里用的是Python&#xff0c;接口自动化测试的框架是requestsExcelJenkins&#xff0c;APP自动化测试的框架是Appium。 整个公司当…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制

目录 节点的功能承载层&#xff08;GATT/Adv&#xff09;局限性&#xff1a; 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能&#xff0c;如 Configuration …...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品&#xff0c;通过将智能手机转变为具有情感交互能力的桌面机器人&#xff0c;展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家&#xff0c;我将全面解析LOOI的技术实现架构&#xff0c;特别是其手势识别、物体识别和环境…...

消息队列系统设计与实践全解析

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