首页 > 其他分享 >多重共线性的处理方法

多重共线性的处理方法

时间:2023-05-30 15:15:26浏览次数:35  
标签:共线性 多重 VIF 变量 处理 模型 自变量

回归分析需要考虑多重共线性问题。多重共线性是指自变量之间存在高度相关性,导致回归模型的系数估计不稳定和假设检验不可靠。在实际应用中,许多自变量之间都可能存在一定程度的相关性,如果没有进行控制,就会导致多重共线性问题的发生。今天来讨论一下,如何解决多元线性回归分析中,多重共线性的问题。

一、多重共线性含义

在多元线性回归模型中,自变量X之间线性相关的现象被称为多重共线性。

 

数学描述:对于模型

其基本假设之一是自变量X之间是相互独立的,如果某两个或者多个自变量之间出现相关性,则称为多重共线性。即如果存在不全为0的C,使得

则称自变量X之间存在多重共线性。

 

二、多重共线性检验方法

多重共线性的检验可以使用相关分析查看两两自变量之间的相关系数,或者计算VIF值进行诊断。下文将围绕一个案例进行演示讲解。


案例:从中国知网截取一篇案例,相关说明及数据如下:

 

范圣岗,奚书静. 多元线性回归模型中处理多重共线性方法对比——以人口迁移冲击教育资源模型为例[J].

将数据整理好上传至SPSSSAU系统,进行后续分析。

1、相关系数检验法

如果两个自变量之间相关系数较大且接近1,则可认为回归模型中存在多重共线性问题。相关系数检验法可作为初步判断共线性的一种方法。
以SPSSAU为例,进行自变量之间的相关分析,操作如下图:

SPSSAU输出相关分析结果如下:

 

从相关分析结果来看,各自变量之间相关系数都较大且接近于1(均在0.7以上且显著),说明各自变量之间相关性很强,可以初步认为自变量之间存在多重共线性问题。

2、VIF检验法

VIF值是方差膨胀因子,可以衡量多重共线性的严重程度。一般认为VIF值大于10,则存在多重共线性问题(严格大于5)。

第i个回归系数的方差膨胀因子可表示为:

其中Ri方表示将第i个变量作为因变量与其余自变量拟合回归方程所得到的决定系数,VIF值越大说明该变量与其余自变量具有较强的相关关系。

 

另外,有些文献也以容忍度作为判断共线性的指标,容忍度为VIF值的倒数,容忍度大于0.1则说明没有共线性(严格是大于0.2)。研究时二者选其一即可,一般描述VIF值。

 

VIF值和容忍度可以通过SPSSAU线性回归分析得到,如下图:

从分析结果可以看出,除变量2教师高级职称占比外,其余变量的VIF值均大于0,可以认为存在严重的多重共线性问题。

三、多重共线性处理方法

当模型中出现多重共线性问题时,常用的解决办法有以下4种:

(1)手动剔除变量

(2)逐步回归

(3)岭回归

(4)增大样本量

接下来,基于本案例分别进行演示说明。

1、手动剔除变量

手动剔除变量,最简单的方法就是对存在共线性的自变量进行一定的筛选。

首先将VIF值最大的两个自变量“人均图书”和“人均教学设备”进行剔除,再次分析,得到结果如下:

 

从上表可以看出,在手动剔除了VIF值最大的两个变量后,剩下四个变量的VIF值均呈现下降趋势。但此时“人均教学面积”的VIF值仍大于10,进一步进行剔除后,得到结果如下:

 

此时可以看到,剩余3个变量的VIF值均小于10,此时多元回归模型公式为:一本上线率=-0.039 + 1.009*师生比 + 0.012*教师高级职称占比 + 0.033*人均教育投入,各系数均与正常逻辑相符。且模型R方值为0.969,表明方程有较好的显著性及对模型很好的解释性。

2、逐步回归

逐步回归法是在模型中逐个引入自变量,自动筛选出有影响的变量。逐步回归根据模型统计意义的检验以及调整后R方的变化情况来判断新引入的变量是否引起共线性。如果新引入的变量使得模型统计意义检验能通过,且又能提高模型的调整后R方,则应该引入,否则不引入。

 

SPSSAU共提供3种自变量进入回归模型的方法,分别是forward向前法、backward向后法、逐步stepwise法。

 

① 向前法

向前法是指回归模型中的变量从无到有,从少到多逐个引入的变量构建回归模型的一种方法。
② 向后法

向后法是指回归模型的变量从有到无,由多到少的逐个剔除变量构建回归模型的一种方法。
③ 逐步法

逐步法是向前法和向后法两种方法的结合,一边选择,一边剔除,二者交叉进行。逐步法逐个引入新变量,每引入一个新变量同时又考虑是否剔除已选变量,这种方法即保留了有显著影响的变量,又剔除了不显著的变量,使用最为广泛。故通常使用逐步法进行分析。


SPSSAU使用逐步法进行逐步回归得到分析结果如下:

 

从上表可以看出,使用逐步回归进行分析,最终只保留了“师生比”和“人均教育投入”两个变量在模型中,VIF值均小于5。

 

【特别说明】:值得注意的一点是,手动剔除变量和使用逐步回归法进行分析时,虽然能够降低模型的共线性问题,但是可能会剔除本来希望保留在模型中的变量;可能会导致模型的原本意义发生变化,使用的时候需要注意。

3、岭回归

岭回归是利用岭估计来代替普通最小二乘估计,以损失部分信息为代价来寻找效果稍差但回归系数更符合实际情况的模型方程。当自变量之间存在多重共线性,岭回归是相对比较稳定的方法,且岭回归估计的回归系数的标准差也较小。

 

岭回归其研究步骤共分为两步:①结合岭迹图寻找最佳K值;②输入K值进行回归建模。

step1:结合岭迹图寻找最佳K值

岭回归时k值的判断非常重要,通常可查看岭迹图和VIF指标进行判断。岭迹图出现平稳那一刻的k值即为最佳值,岭迹图的判断带有较强主观性。与此同时可使用VIF指标进行判断,SPSSAU默认输出该指标值,如果出现各个X的VIF均小于10时对应的最小K值,此时则为最优K值。

 

SPSSAU结合VIF<=10和K值越小越好这两个标准进行评判,建议可取K值为0.02。

 

step2:输入K=0,02,再次进行分析,得到岭回归分析结果如下:

从岭回归分析结果可以看出,VIF值均小于10,解决了多重共线性问题。

4、增大样本量

在建立回归模型时,如果变量的样本数据太少,很容易产生多重共线性问题。所以可以通过增大样本量的方法,克服多重共线性。但是在实际研究中是不现实的,因为我们没有办法确定增加什么多少样本才能克服多重共线性,也有可能在增加了样本量的同时,产生了一些新的问题,导致模型的拟合变差,没有达到我们所期望的效果。

除以上方法外,还可以使用主成分回归、lasso回归、改变参数的约束形式、变换模型的形式、综合使用时序数据和截面数据等多种方法处理数据的多重共线性问题。

参考文献:

[1]刘芳,董奋义. 计量经济学中多重共线性的诊断及处理方法研究[J]. 中原工学院学报,2020,31(01):44-48+55.

[2]范圣岗,奚书静. 多元线性回归模型中处理多重共线性方法对比——以人口迁移冲击教育资源模型为例[J]. 科技风,2020,No.427(23):157+159.

标签:共线性,多重,VIF,变量,处理,模型,自变量
From: https://www.cnblogs.com/spssau/p/17443263.html

相关文章

  • Spring Boot 错误和异常处理
    在realtimeapplication开发中,我们使用Exceptionhandlingconcept,以平滑终止程序。它将systemerrormessages转换为userfriendlyerrormessages。但是在SpringBoot框架中,他们已经实现了Exceptionhandlingconcept,这里我们需要了解SpringBoot框架内部如何处......
  • JS判断视频Video的播放、暂停、结束完成及获取长度事件监听处理
    在日常应用场景中,可能会遇到这么一个情况,需要判断用户是否完整的观看完了一部视频,在这个场景中,和视频相关的事件大体涉及到几个部分,获取视频长度,视频开始播放,暂停播放和播放结束,下面来看下如何通过JavaScript来监听获取视频的这几种状态。(1)html页面视频标签大体如下<videoid="v......
  • springmvc请求处理流程分析入口
    1从浏览器发起请求,根据servlet原理会进入到service方法2根据HttpServlet实习了service方法,所以进入到HttpServlet的service方法3service方法根据post和get的请求方式,选择进入doGet和doPost方法4FrameworkServlet重写了doGet和doPost方法,又调用了processRequest5最后调用......
  • Java-Day-25( 字节输入流 + FileInputStream 和 FileOutputStream + FileReader 和 Fi
    Java-Day-25InputStream(字节输入流)InputStream抽象类是所有类字节输入流的超类InputStream常用的子类FileInputStream:文件输入流BufferedInputStream:缓冲字节输入流ObjectInputStream:对象字节输入流FileInputStream和FileOutputStreamFileInputStream(文......
  • < Python全景系列-8 > Python超薄感知,超强保护:异常处理的绝佳实践
    欢迎来到我们的系列博客《Python全景系列》!在这个系列中,我们将带领你从Python的基础知识开始,一步步深入到高级话题,帮助你掌握这门强大而灵活的编程语法。无论你是编程新手,还是有一定基础的开发者,这个系列都将提供你需要的知识和技能。欢迎来到系列第八篇,异常处理的深入探讨。本文......
  • < Python全景系列-8 > Python超薄感知,超强保护:异常处理的绝佳实践
    欢迎来到我们的系列博客《Python全景系列》!在这个系列中,我们将带领你从Python的基础知识开始,一步步深入到高级话题,帮助你掌握这门强大而灵活的编程语法。无论你是编程新手,还是有一定基础的开发者,这个系列都将提供你需要的知识和技能。**欢迎来到系列第八篇,异常处理的深入探讨。......
  • html数据处理
    实际工作中需要对html文件进行处理,处理要求:(1)所有的html保存在all目录。(2)通过python读取all目录下的html文件。(3)将html文件读取的内容保存在out.html中。第一个版本程序如下:importosfrombs4importBeautifulSoup#检查并创建output文件ifnotos.path.exists('out.txt'):......
  • SpringMVC学习系列(10) 之 异常处理
    在项目中如何处理出现的异常,在每个可能出现异常的地方都写代码捕捉异常?这显然是不合理的,当项目越来越大是也是不可维护的。那么如何保证我们处理异常的代码精简且便于维护呢?这就是本篇要讲的内容—>异常处理。在SpringMVC中我们可以通过以下2中途径来对异常进行集中处理:一.继承Han......
  • 批处理延时启动的几个方法
    [b]方法一:ping[/b]缺点:时间精度为1秒,不够精确@[email protected]>nulstartgdh.txt[b]方法二:vbsstart/wait[/b]缺点:生成临时文件优点:时间精度为0.001秒,精度高@echooffechowscript.sleep5000>sleep.vbsstart/waitsleep.vb......
  • 哈希处理字符串匹配
    问题A:【哈希和哈希表】子串查找时间限制:1Sec  内存限制:128MB提交:65  解决:18[提交][状态][讨论版][命题人:admin]题目描述这是一道模板题。给定一个字符串A和一个字符串B,求B在A中的出现次数。A和B中的字符均为英语大写字母或小写字母。A中不同位置出现的B......