Linear Regression多重共线性

2023-12-20 02:20

本文主要是介绍Linear Regression多重共线性,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

介绍:

一、 corr

​二、pairplot 

三、VIF

3.1自带vif

 3.2自定义函数vif

四、heatmp(直观感受)

介绍:

多重共线性是指在线性回归模型中,自变量之间存在强相关性或线性关系,从而导致模型的稳定性和可解释性受到影响。

在线性回归中,我们希望自变量与因变量之间有一定的线性关系,且自变量之间尽可能不相关,这样可以更好地解释因变量的变化。然而,当自变量之间存在强相关性时,模型很难区分各自变量对因变量的独立贡献,导致估计结果不准确。

多重共线性会对线性回归模型产生以下影响:
1. 估计值不稳定:由于自变量之间存在强相关性,小的变动可能导致估计值发生较大变化,使得模型不稳定。
2. 估计值偏离:多重共线性会导致估计值偏离真实值,造成参数估计的失准。
3. 可解释性下降:由于自变量之间存在强相关性,我们无法准确判断每个自变量对因变量的独立贡献,从而降低了模型的可解释性。

为了解决多重共线性问题,可以采取以下方法:
1. 使用岭回归或Lasso回归:这些方法通过对系数加上惩罚项,可以减小系数估计值的方差,从而减轻多重共线性带来的影响。
2. 特征选择:通过选择具有较高解释性和较低相关性的自变量,可以降低多重共线性的影响。
3. 增加样本量:增加样本量可以减小参数估计的方差,从而降低多重共线性的影响。

总之,多重共线性是线性回归模型中常见的问题,会影响模型的稳定性和可解释性。通过合适的方法处理多重共线性,可以改善模型的效果并得到准确的估计结果。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns#多元共线性是指多元回归模型中两个或多个变量高度线性相关的情况,当回归模型中的自变量相互关联时,就会出现多重共线性,因为自变量应该是独立的,如果变量之间的相关程度足够高,那么在拟合模型和解释结果时就会出现问题
df=pd.read_csv('50_Startups.csv')
df.head()

 

一、 corr

df.corr()#相关性

X=X1=df.iloc[:,:-2]#取前三行为自变量
X.head()

 二、pairplot 

sns.pairplot(X)#两两对比,可以看到R&D Spend和Marketing Spend相关性高

 

三、VIF

3.1自带vif

from statsmodels.stats.outliers_influence import variance_inflation_factor
variance_inflation_factor(X.values,0)#第一项的共线性
#结果:8.384570754559961
variance_inflation_factor(X.values,1)#第二项的共线性
#结果:4.0264055178945535
variance_inflation_factor(X.values,2)#第三项的共线性
#结果:7.593983592680924

 3.2自定义函数vif

def vif(X):vif=pd.DataFrame()vif["variables"]=X.columnsvif["VIF"]=[variance_inflation_factor(X.values,i) for i in range(X.shape[1])]return(vif)vif(X)#共线性分析X=X.drop('R&D Spend',axis=1)#去掉R&D Spend
vif(X)#共线性降低

四、heatmp(直观感受)

X1.corr()
sns.heatmap(X1.corr())#热图

这篇关于Linear Regression多重共线性的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/514501

相关文章

Pandas中多重索引技巧的实现

《Pandas中多重索引技巧的实现》Pandas中的多重索引功能强大,适用于处理多维数据,本文就来介绍一下多重索引技巧,具有一定的参考价值,感兴趣的可以了解一下... 目录1.多重索引概述2.多重索引的基本操作2.1 选择和切片多重索引2.2 交换层级与重设索引3.多重索引的高级操作3.1 多重索引的分组聚

hdu1171(母函数或多重背包)

题意:把物品分成两份,使得价值最接近 可以用背包,或者是母函数来解,母函数(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v) 其中指数为价值,每一项的数目为(该物品数+1)个 代码如下: #include<iostream>#include<algorithm>

多重背包转换成0-1背包

http://acm.hdu.edu.cn/showproblem.php?pid=2191 多重背包特点: 一种物品有C个(既不是固定的1个,也不是无数个) 优化的方法: 运用神奇的二进制,进行物品拆分,转化成01背包 物品拆分,把13个相同的物品分成4组(1,2,4,6) 用这4组可以组成任意一个1~13之间的数! 原理:一个数总可以用2^

理解分类器(linear)为什么可以做语义方向的指导?(解纠缠)

Attribute Manipulation(属性编辑)、disentanglement(解纠缠)常用的两种做法:线性探针和PCA_disentanglement和alignment-CSDN博客 在解纠缠的过程中,有一种非常简单的方法来引导G向某个方向进行生成,然后我们通过向不同的方向进行行走,那么就会得到这个属性上的图像。那么你利用多个方向进行生成,便得到了各种方向的图像,每个方向对应了很多

perl的学习记录——仿真regression

1 记录的背景 之前只知道有这个强大语言的存在,但一直侥幸自己应该不会用到它,所以一直没有开始学习。然而人生这么长,怎就确定自己不会用到呢? 这次要搭建一个可以自动跑完所有case并且打印每个case的pass信息到指定的文件中。从而减轻手动跑仿真,手动查看log信息的重复无效低质量的操作。下面简单记录下自己的思路并贴出自己的代码,方便自己以后使用和修正。 2 思路整理 作为一个IC d

HDU 2191 珍惜现在,感恩生活(多重背包)

OJ题目 : click here ~~ 题目分析:就一个多重背包,在输入的时候进行二进制拆分,接下来就与01背包一样处理了。关于二进制拆分,这里讲解的不错~ AC_CODE int v[1002] , c[1002];int dp[1002];int main(){int t;cin >> t;while(t--){int n ,m , i , j , a , b , d ,k

【CSS渐变】背景中的百分比:深入理解`linear-gradient`,进度条填充

在现代网页设计中,CSS渐变是一种非常流行的视觉效果,它为网页背景或元素添加了深度和动态感。linear-gradient函数是实现线性渐变的关键工具,它允许我们创建从一种颜色平滑过渡到另一种颜色的视觉效果。在本篇博客中,我们将深入探讨linear-gradient函数中的百分比值,特别是像#C3002F 50%, #e8e8e8 0这样的用法,以及它们如何影响渐变效果。 什么是linear-g

spfa+多重约束

普通的spfa只是用来求单源最短路(也就是边权和最小),是通过不断松弛边权来求的。 但是在一些情况需要求点权和最大或最小的情况(或者是其他的约束条件) 我们只需要根据条件加几个约束条件就行 以下是例题: L2-001. 紧急救援 时间限制:200 ms 内存限制:65536 kB 代码长度限制:8000 B 作为一个城市的应急救援队伍的负责人,

mongoDB 多重数组查询

Mongodb官方没有提供3重数组及以上的查询方法,只提供了1-2重数组的查询方法。 当然,1重数组查询最简单,直接数组名.属性名就可以了; 2重数组的方法就必须使用到$符合了, array.$.属性名 未完...

mongoDB 多重数组查询 AngularJS绑定显示 nodejs

var Lesson = Schema({lessonName: String,intr: String,creTime: Date,sort: String, //分类imgUrl: String, //封面地址price: Number,teacher: String,//教师subTitle:[{lNo: Number,subLName: String,src: String,filter