多重共线性

article/2025/9/19 23:56:40

1.回归模型自变量彼此相关称为多重共线性,它给模型提供重复信息

2.多重共线性会造成模型不稳定,可能会得到无法解释的现象

3.检测共线性的方法通常有相关性分析,显著性检验和方差膨胀因子分析

4.处理共线性的方法通常有提前筛选变量,逐步回归选择,正则化与数据降维

1.多重共线性产生的问题

当回归模型(线性回归,逻辑回归)中两个或两个以上的自变量彼此相关时,则称回归模型中存在多重共线性,也就是说共线性的自变量提供了重复的信息。

它会造成模型不稳定,会造成回归系数,截距系数的估计非常不稳定,这种不稳定的具体表现是:很可能回归系数原来正,但因为共线性而变为负。这对于一些自变量的可解释性来讲可能是致命的,因为得到错误系数无法解释正常发生的现象。

2.多重共线性检测方法

多重共线性有很多检测方法,最简单直接的就是计算各自变量之间的相关系数,并进行显著性检验。具体的,如果出现以下情况,可能存在多重共线性:

(1)模型中各对自变量之间显著性相关。

(2)当模型线性关系(F检验)显著时,几乎所有回归系数的t检验不显著。

(3)回归系数的正负号与预期的相反。

(4)方差膨胀因子(VIF)检测,一般认为VIF大于10,则存在严重的多重共线性。

前三点在以往的文章(假设检验专题,回归模型理论分析)都有详细介绍,这里我们侧重介绍第四点,方差膨胀因子(Variance Inflation Factor,VIF)

先给出方差膨胀因子的表达式:

如果VIF越大,那么表明可决系数R2越大,说明变量Xi与其他自变量的线性关系强,说明原模型存在多重共线性可能性越大。

经验判断方法表明:当0<VIF<10,不存在 多重共线性;当10≤VIF<100,存在较强的多重共线性;当VIF≥100,存在严重多重共线性

利用python可以实现方差膨胀因子的计算

from statsmodels.stats.outliers_influence import variance_inflation_factordef checkVIF_new(df):   ''':param df:仅包含所有自变量X的数据集,DataFrame形式:return: 返回每个变量对于的VIF值'''df.insert(0,'constant',1) #添加常数项name = df.columnsx = np.matrix(df)VIF_list = [variance_inflation_factor(x,i) for i in range(x.shape[1])]VIF = pd.DataFrame({'feature':name,"VIF":VIF_list})return VIF

3.多重共线性的处理

多重共线性对于线性回归是种灾难,并且我们不可能完全消除,而只能利用一些方法来减轻它的影响。对于多重共线性的处理方式,有以下几种思路:

(1)提前筛选变量:可以利用相关检验来或变量聚类的方法。

(2)子集选择:包括逐步回归和最优子集法。常用的是逐步回归。

(3)收缩方法:正则化方法。LASSO回归可以实现筛选变量的功能。

(4)维数缩减:数据的降维。

第一点在假设检验系列有详细介绍,以后聚类会专门讲解;第三点在介绍线性回归模型有介绍(传送门:线性回归之原理介绍),第四点在数据降维系列有介绍,这里我们侧重介绍第二点,逐步回归

逐步回归分为向前逐步和向后逐步,这里介绍向后逐步,其思想是:对入模的变量建立模型,从大到小逐步剔除不通过显著性检验p值的变量,再循环建立模型,直到所有变量都通过显著性检验。

以逻辑回归为例,用python接口statsmodels.api.smf可以实现这个过程:

# 后向逐步法~逻辑回归
import statsmodels.api as smfdef gra_reg(gra_data,X,y,a=0.01):''':param gra_data:要进行逐步回归的DataFrame数据集:param X:自变量列表:param y:因变量:param a:显著性水平,这里默认为0.01:return 返回不存在共线性的逐步回归结果与变量列表'''y_label = gra_data[y]while True:X_data = gra_data[X]# X_data = smf.add_constant(X_data)anal = smf.Logit(y_label, X_data).fit()P = anal.pvalues # 得到统计检验的P值P_di = dict(zip(P.keys(), P.values)) # 字典化变量与P值if max(P_di.values()) > a:X.remove(max(P_di, key=lambda x: P_di[x]))else:breakreturn anal, X

参考资料:

https://www.zhihu.com/question/270451437


http://chatgpt.dhexx.cn/article/qK6pEGpy.shtml

相关文章

多重共线性的影响、判定及消除的方法

目录 1 什么是多重共线性? 2 多重共线性的影响 3 共线性的判别指标(方差膨胀因子) 3.1 拟合优度 3.2 方差膨胀因子VIF 4 多重共线性处理方法 4.1 手动移除出共线性的变量 4.2 逐步回归法 4.2.1 向前法 4.2.2 后退法 4.2.3 逐步选…

如何处理多重共线性问题

一、说明 当回归模型中两个或者两个以上的自变量高度相关(比如相关系数大于0.7)时,则称为多重共线性。虽然在实际分析中,自变量高度相关是很常见的,但是在回归分析中存在多重共线性可能会导致一些问题,比如…

谈多重共线性

谈多重共线性 本文主要讨论古典假定中无多重共线性被违反的情况,主要情况包括多重共线性的实质和产生的原因、后果、检验方法及无多重共线性假定违反后的处置方法。 第一节 什么是多重共线性 一、多重共线性的含义 讨论多元线性回归模型的估计时,强调…

多重共线性详解

目录 解释变量与自变量,被解释变量与因变量 1、多重共线性的现象 2、出现的原因 3、判别标准 4、检验方法 5、多重共线性有什么影响 6、多重共线性处理方法 7、其他说明 8、多重共线性识别-python代码8.1、vif检验8.2 相关系数8.3 聚类 9、宏观把握共线性问题9.1、共…

浅谈共线性的产生以及解决方法(中篇——今生)

浅谈共线性的产生以及解决方法(中篇——今生) 上篇我们讲到共线性概念以及共线性问题存在时对模型的影响。那么如何对样本数据中存在的共线性问题进行诊断呢? 3 多重共线性的诊断方法 3.1 相关系数法 对于一个样本数据集,我们要了解解释变量&#xf…

共线性那些事儿

我们经常听说,建模时应当尽量避免共线性(collinearity),共线性会导致参数估计不稳定、模型不可靠等等。那么共线性究竟有多可怕?共线性具体会带来什么问题?共线性得到的模型是否真的不行?笔者通…

多元线性模型中共线性产生的原因解析

在很多书籍中谈到了共线性问题,作为多元统计中基本假设之一,却经常被违背,影响模型稳定性和统计power。在不少的论文中谈到了,国内的很多书籍往往一笔带过。因为,属于统计计算领域内容,非专业人士&#xff…

好好谈谈共线性问题

好好谈谈共线性问题 马东什么 算法工程师 8 人 赞同了该文章 共线性,即 同线性或同线型。统计学中,共线性即 多重共线性。 多重共线性(Multicollinearity)是指线性回归模型中的解释变量之间由于存在精确 相关关系或高度相关关系而…

树莓派中SIM7600G-H 4G DONGLE模块使用记录(一)PPP拨号上网/4G上网

项目场景: 如何使用SIM7600系列的4G通信模块进行PPP网上拨号以实现4G通信,在讲解前,未搭建好树莓派远程连接桌面的读者可以先转向树莓派4B环境搭建电脑远程连接打开文件管理闪退(上)。 模块简介: SIM7600X 4G DONGLE是一款工业级…

Linux系统下使用4G模块EC20实现拨号上网

驱动的实现过程 实现4G功能分为两步,第一步内核能成功识别出该设备,第二步实现拨号上网.最后提一下自带的定位功能 一.添加内核USB驱动 这里直接使用内核已经存在的USB驱动,只需要让内核能识别出该USB设备,并自动加载驱动生成对应的/devUSB*设备节点 获取EC20的PID和VID 把模块…

4G模块适配与调试

笔记目录 RK平台4G模块适配1、识别VID、PID2、添加VID\PID到android的option驱动中3、插上sim卡,4G模块一定要接上天线4、根据安卓系统和安卓版本发给模块厂要求其提供ril库5、预置ril库6、在framework中添加根据pid和vid关联ril库的代码7、可以通过一下命令查看ril…

Linux 4G模块pppd拨号上网脚本解析

在编写脚本之前,要先安装好ppp相关驱动,pppd 已知pppd位于 /usr/sbin , chat 位于 /usr/sbin , options 位于 /etc/ppp 。 要编写脚本,就要切换目录到 /etc/ppp/peers,若没有peers目录则自行创建。因为是在/etc目录之下&#xf…

4G模块的使用

一、4G相关知识 4G是第四代通讯技术。能够传输高质量视频图像。4G的下载速度达100Mbps,比目前的拨号上网快2000倍,上传的速度也能达到20Mbps,并能够满足几乎所有用户对于无线服务的要求。此外,4G可以在DSL和有线电视调…

4G模块使用总结

4G模块使用总结 一、APN名称 2G: 移动的CMWAP 联通的UNIWAP 移动的CMNET 联通的UNINET 3G/4G: 移动CMNET 联通3GNET 电信CTNET 二、模块信息参数获取 AT/r //检测串口通信状态 ATE设置回显功能 ATE0:回显关闭 ATE1:回显开启 ATCGMI 返回模块厂家信息 ATCGMM 返回模块型…

4G传输模块的功能应用

4G传输模块主要用在物联网中的数据传输方面,这种模块支持主动采集、多种协议、GPRS定位以及各种网络协议,并且接口丰富,还可以实时查看程序参数配置,接下来,安传物联的编辑就来为大家介绍一下这种常用的模块吧 一、主动…

同时挂载二维码模块与4G模块时,导致4G模块连不上网都是USB设备)

一、BUG现象 今天公司设备出现一个问题,在RK3399上的USB上插着三个设备,分别是4G模块、二维码模块与身份证模块,在这三个设备同时插在设备上时再开机,会出现4G模块连不上网络的情况,无论怎么插拔4G模块都无法联网。而…

工业4G路由器 小体积4G LTE通信模块转有线转WiFi充电桩视频安防监控物联网路由器上网CPE

4G LTE代表第四代长期演进,这是一种用于通过蜂窝网络提供高速数据传输的无线通信技术。它是移动网络技术的最新标准,提供比其前身3G更快的数据传输速度。它广泛用于移动设备、物联网设备和机器对机器通信。 近年来,随着物联网技术的快速发展…

如何在飞腾平台使用4G模块拨号上网

经常看到在笔记本上可以通过插无线网卡进行wifi连接上网,鲜有使用4G模块进行上网的。但是在某些场景下,没有wifi信号,要如何解决上网问题呢?一般可以通过usb共享手机网络,或者外接4G网卡进行上网。通常在windows 平台上…

windows10使用4G模块上网

1、硬件配置 1)华为4G模块:HUAWEI ME909s-821 2)PCIE转USB开发板 3)联通4G手机SIM卡 4)装有windows10的电脑 2、软件环境 下载安装华为4G模块驱动:http://www.ddooo.com/softdown/73296.htm 3、环境搭建…

实现4G模块EC20在linux系统下的拨号上网

前言: 为了方便查看博客,特意申请了一个公众号,附上二维码,有兴趣的朋友可以关注,和我一起讨论学习,一起享受技术,一起成长。 1.实验目的: 实现4G模块EC20在linux系统下的拨号上网…