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

简介: 工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断

简介

两阶段最小二乘法(2SLS)回归拟合的线性模型是一种常用的工具变量估计方法。

本文的主要内容是将各种标准的回归诊断扩展到2SLS。

2SLS估计的回顾

我们需要2SLS回归的一些基本结果来开发诊断方法,因此我们在此简单回顾一下该方法。2SLS回归是由Basmann(1957)和Theil(引自Theil 1971)在20世纪50年代独立发明的,他们采取了略微不同但又相当的方法,都在下面描述,以得出2SLS估计器。

我们想估计线性模型y=Xβ+ε,其中y是因变量的n×1观察向量,X是回归因子的n×p矩阵,通常初始列1s为回归常数。β是一个p×1的回归系数向量,需要根据数据进行估计,ε是一个n×1的误差向量,假定其分布为Nn(0,σ2In),其中Nn是多变量正态分布,0是一个n×1的零向量,In是n阶单位矩阵。假设X中的一些(也许是全部)回归因子是内生的,即它们被认为不独立于ε的意义。因此,β的普通最小二乘法(OLS)估计值bOLS=(X⊤X)-1X⊤y通常是有偏的,而且不一致。

现在假设我们有另一组独立于ϵ的q工具变量(IVs)Z,其中q≥p。如果q=p,我们可以直接应用IV来估计β,但如果q>p,我们有更多的IV,而不是我们需要的。简单地抛弃IVs是低效的,2SLS回归是一个通过合理的方式将IVs的数量减少到p的程序。

2SLS的第一阶段通过多元普通最小二乘法对模型矩阵X中的所有回归变量进行回归,得到q×p的回归系数矩阵B=(Z⊤Z)-1Z⊤X,以及拟合值Xˆ=ZB。B的列相当于X的每一列对Z的单独最小二乘回归产生的系数。如果X的某些列是外生的,那么这些列也会出现在Z中,因此,XˆX^中与外生调节器有关的列只是复制了X的相应列。

由于XˆX^的列是Z的列的线性组合,它们(渐进地)与ε不相关,使它们成为估计回归方程的合适IV。这个IV步骤是Theil方法中2SLS的第二个阶段。

作为一种替代方法,我们可以通过对XˆX^进行OLS回归来获得完全相同的β的估计值b2SLS,产生b2SLS=(Xˆ⊤Xˆ)Xˆ⊤y。这就是巴斯曼的方法,也是 "2SLS "这个名字的由来。

无论我们把第二阶段看成是IV估计还是OLS回归,我们都可以把这两个阶段合并成一个公式。

这就是sem包中的tsls()函数(Fox, Nie, and Byrnes 2020)所做的,但是从开发回归诊断的角度来看,通过两个不同的OLS回归来计算2SLS估计值是有利的。

对2Sls回归异常-数据诊断

就我们所知,用2SLS拟合的回归模型的诊断是一个相对被忽视的话题,但Belsley, Kuh和Welsch(1980, 266-68)简要地讨论了这个问题。删除诊断法直接评估每个案例对拟合回归模型的影响,方法是删除案例,重新拟合模型,并注意到回归系数或其他回归输出,如残差标准差,如何变化。

对于有影响的数据,总是可以通过粗暴的计算来获得案例删除诊断,即用每个案例依次删除来重新拟合模型,但这种方法效率低下,因此在大样本中没有吸引力。对于某些类别的统计模型,如广义线性模型(如Pregibon 1981),对个案删除诊断的计算要求较低的近似值是可用的,而对于线性模型,有效的 "更新 "公式是可用的(如Belsley, Kuh, and Welsch 1980所描述的),允许精确计算个案删除诊断的。

事实证明,正如Belsley、Kuh和Welsch所指出的,Phillips(1977年,公式15和16)给出了2SLS回归的精确更新公式,允许有效地计算个案选择统计。

其中,b2SLS-i是去除第ii种情况后的2SLS回归系数向量,以及

这里,yi是第i个案例的因变量值,x⊤ixi⊤是模型矩阵X的第i行,z⊤izi⊤是工具变量模型矩阵Z的第i行。

Belsley, Kuh和Welsch特别研究了(用我们的符号)dfbetai=b2SLS-b2SLS-i的值。他们还讨论了残差标准差s-i的删除值。

然后,Belsley、Kuh和Welsch计算它们对拟合值(和回归系数)影响的综合度量dffits为

其中(如前)x⊤ixi⊤是模型矩阵X的第i行,XˆX^是第二阶段回归变量的模型矩阵。

代表将y转换为拟合值的n×n矩阵,yˆ=H∗y。在OLS回归中,类似的量是hat矩阵H=X(X⊤X)-1X⊤。Belsley, Kuh和Welsch指出,H∗与H不同,它不是一个正交投影矩阵,将y正交地投影到X的列所跨越的子空间上。特别是,尽管H∗和H一样,是等值的(H∗=H∗H∗),并且trace(H∗)=ptrace(H∗)=p,但H∗和H不同,是不对称的,因此它的对角线元素不能被当作杠杆的总结性措施,也就是说,不能被当作hat值。

Belsley, Kuh和Welsch建议简单地使用第二阶段回归的hat值。这些是H2=Xˆ(Xˆ⊤Xˆ)-1Xˆ⊤的对角线条目hi=hii。我们在下面讨论一些替代方案。

除了hatvalues、dfbeta、s-i和dfits之外,还计算cook距离Di,这基本上是dfits的一个稍有不同的比例版本,它使用总体残差标准差s来代替删除的标准差s-i。

因为它们具有相等的方差,并且在正态线性模型下近似于t分布,所以 studentized残差对于检测异常值和解决正态分布误差的假设非常有用。studentized残差与OLS回归相类似,定义为

其中ei=yi-x⊤ib 2SLS是第i种情况的因变量残差。

如前所述,Belsley, Kuh, and Welsch (1980)建议使用第二阶段回归的 hatvalues。这是一个合理的选择,但是它有可能遗漏那些在第一阶段有高杠杆率但在第二阶段回归中没有的案例。让h(1)i代表第一阶段的hatvalues,h(2)i代表第二阶段的hatvalues。如果模型包括一个截距,两组hatvalues都以1/n和1为界,但第一阶段的平均hatvalues是q/n,而第二阶段的平均hatvalues是p/n。为了使两个阶段的hatvalues具有可比性,我们将每个hatvalues除以其平均值,h(1∗)i=h(1)iq/n;h(2∗)i=h(2)ip/n。然后我们可以把两阶段的hatvalue定义为每种情况下两者中较大的一个,hi=(p/n)×max(h(1∗)i,h(2∗)i),或者定义为它们的几何平均。

异常数据诊断

标准的R回归模型通用方法,包括anova()(用于模型比较),predicted()用于计算预测值,model.matrix()(用于模型或第一或第二阶段的回归),print(),residuals()(有几种),summary(),update(),和vcov()。

例子

数据在Kmenta(1986年)中用来说明(通过2SLS和其他方法)对线性联立方程计量经济学模型的估计。这些数据代表了经济从1922年到1941年的年度时间序列,有以下变量。

  • Q,人均食品消费
  • P,食品价格与一般消费价格的比率
  • D, 可支配收入
  • F, 前一年农民收到的价格与一般消费价格的比率
  • A, 年为单位的时间

该数据集很小,我们可以对其进行检查。

估计以下两个方程式模型,第一个方程式代表需求,第二个代表供应。

变量D、F和A被视为外生变量,当然常数回归因子(一列1)也是如此,而两个结构方程中的P是内生解释变量。由于有四个工具变量可用,第一个结构方程有三个系数,是过度识别的,而第二个结构方程有四个系数,是刚刚识别的。

外生变量的数值是真实的,而内生变量的数值是由Kmenta根据模型生成(即模拟)的,参数的假设值如下。

解决内生变量P和Q的结构方程,可以得到模型的简化形式

Kmenta独立地从N(0,1)中抽出20个δ1和δ2的值,然后设定ν1=2δ1和

结构方程估计如下(比较Kmenta 1986, 686)。

默认情况下,summary()会输出2SLS回归的三个 "诊断 "测试的结果。这些测试不是本文的重点,所以我们只对它们进行简单的评论。

  • 一个好的工具变量与一个或多个解释变量高度相关,同时与误差保持不相关。如果一个内生的回归者与工具变量只有微弱的关系,那么它的系数将被不精确地估计。在弱工具的诊断测试中,我们希望有一个大的测试统计量和小的p值,Kmenta模型中的两个回归方程就是如此。
  • 应用于2SLS回归中,Wu-Hausman检验是对内生性的一种检验。如果所有的回归者都是外生的,那么OLS和2SLS的估计都是一致的,并且OLS的估计更有效,但是如果一个或多个回归者是内生的,那么OLS的估计就不一致了。大的检验统计量和小的p值,就像在这个例子中一样,表明OLS估计器是不一致的,因此,2SLS估计器是首选。
  • Sargan检验是对过度识别的检验。也就是说,在一个过度识别的回归方程中,如Kmenta的需求方程中,工具变量比要估计的系数多,工具变量有可能提供关于系数值的冲突信息。因此,大的检验统计量和小的Sargan检验的pp值表明,该模型被错误地指定了。在这个例子中,尽管我们知道(通过数据的构建方式)需求方程是正确的,但我们还是偶然得到了一个适度小的pp值0.084。Sargan检验不适用于刚刚确定的回归方程,其工具变量和系数的数量相等,如Kmenta的供给方程。

lm "类对象的几个方法与产生的对象正常工作。例如,对象的plot()方法调用了相应的 "lm "方法并产生了可解释的图,这里是Kmenta模型中需求方程的2SLS拟合。

par(mfrow=c(2, 2))
plot(deq)

然而,在这种情况下,我们更喜欢描述的这些诊断图的版本。

数据表现良好。例如,在第一个结构方程中,学生化残差的QQ图和hatvalues、学生化残差和库克cook距离的 "影响图 "都是不明显的,除了几个高杠杆但在一起的案例。

qqPlot

influence

相关文章
|
2月前
|
存储 消息中间件 人工智能
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
早期 MiniMax 基于 Grafana Loki 构建了日志系统,在资源消耗、写入性能及系统稳定性上都面临巨大的挑战。为此 MiniMax 开始寻找全新的日志系统方案,并基于阿里云数据库 SelectDB 版内核 Apache Doris 升级了日志系统,新系统已接入 MiniMax 内部所有业务线日志数据,数据规模为 PB 级, 整体可用性达到 99.9% 以上,10 亿级日志数据的检索速度可实现秒级响应。
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
|
15天前
|
缓存 监控 算法
分析慢日志文件来优化 PHP 脚本的性能
分析慢日志文件来优化 PHP 脚本的性能
|
2月前
|
缓存 NoSQL Linux
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
|
1月前
|
SQL 人工智能 运维
在阿里云日志服务轻松落地您的AI模型服务——让您的数据更容易产生洞见和实现价值
您有大量的数据,数据的存储和管理消耗您大量的成本,您知道这些数据隐藏着巨大的价值,但是您总觉得还没有把数据的价值变现出来,对吗?来吧,我们用一系列的案例帮您轻松落地AI模型服务,实现数据价值的变现......
132 3
08-06-06>pe_xscan 精简log分析代码 速度提升一倍
08-06-06>pe_xscan 精简log分析代码 速度提升一倍
|
2月前
|
存储 分布式计算 大数据
【Flume的大数据之旅】探索Flume如何成为大数据分析的得力助手,从日志收集到实时处理一网打尽!
【8月更文挑战第24天】Apache Flume是一款高效可靠的数据收集系统,专为Hadoop环境设计。它能在数据产生端与分析/存储端间搭建桥梁,适用于日志收集、数据集成、实时处理及数据备份等多种场景。通过监控不同来源的日志文件并将数据标准化后传输至Hadoop等平台,Flume支持了性能监控、数据分析等多种需求。此外,它还能与Apache Storm或Flink等实时处理框架集成,实现数据的即时分析。下面展示了一个简单的Flume配置示例,说明如何将日志数据导入HDFS进行存储。总之,Flume凭借其灵活性和强大的集成能力,在大数据处理流程中占据了重要地位。
37 3
|
2月前
|
存储 监控 网络协议
在Linux中,如何使用 tcpdump 监听主机为 192.168.1.1,tcp 端⼝为 80 的数据,并将将输出结果保存输出到tcpdump.log?
在Linux中,如何使用 tcpdump 监听主机为 192.168.1.1,tcp 端⼝为 80 的数据,并将将输出结果保存输出到tcpdump.log?
|
2月前
|
应用服务中间件 Linux nginx
在Linux中,如何统计ip访问情况?分析 nginx 访问日志?如何找出访问页面数量在前十位的ip?
在Linux中,如何统计ip访问情况?分析 nginx 访问日志?如何找出访问页面数量在前十位的ip?
|
2月前
|
监控 安全 关系型数据库
在Linux中,什么是系统日志和应用程序日志?如何分析它们?
在Linux中,什么是系统日志和应用程序日志?如何分析它们?
|
2月前
|
数据库 Java 监控
Struts 2 日志管理化身神秘魔法师,洞察应用运行乾坤,演绎奇幻篇章!
【8月更文挑战第31天】在软件开发中,了解应用运行状况至关重要。日志管理作为 Struts 2 应用的关键组件,记录着每个动作和决策,如同监控摄像头,帮助我们迅速定位问题、分析性能和使用情况,为优化提供依据。Struts 2 支持多种日志框架(如 Log4j、Logback),便于配置日志级别、格式和输出位置。通过在 Action 类中添加日志记录,我们能在开发过程中获取详细信息,及时发现并解决问题。合理配置日志不仅有助于调试,还能分析用户行为,提升应用性能和稳定性。
38 0
下一篇
无影云桌面