解决多元线性回归的多重共线性问题
在上一章我们提到多重共线性的影响以及产生的原因,因为在解释变量存在多重共线性的情况下,使用普通最小二乘法估计参数会导致参数估计方差太大,使普通最小二乘法的效果很不理想。在这篇文章中我们将讨论如何解决多元线性回归中的多重共线性问题。
一、岭回归(Ridge Regression)
岭回归是一种专门用于共线性数据分析的有偏估计回归方法,是一种改良的最小二乘法。通过放弃最小二乘的无偏性,以损失部分信息、降低精度为代价获得回归系数更为符合实际的回归方法。它可以缓解多重共线问题,以及过拟合问题。
当解释变量之间存在多重共线性时,矩阵是一个非满秩矩阵,也即矩阵(为什么非满秩方阵的行列式等于 0 呢?)。而由公式可知,参数无意义。为了解决这个问题,我们很自然地想到给矩阵加上一个正数矩阵,我们一般称该正数矩阵为扰动项。那么接近奇异解的可能性较以前要小得多,于是参数可以用来进行估计。
在线性回归中,我们选用来选择训练模型。对于岭回归而言,我们采用在的基础上加上对系数的惩罚,即
1.1 岭回归的定义
设,满足式子的称为的岭估计。由的岭估计建立的回归方程称为岭回归方程。其中称为岭参数。对于回归系数的分量来说,在直角坐标系的图像是条曲线,称为岭迹。当时,即为原来的最小二乘估计。
1.2 岭估计的一些性质
- 岭估计不再是无偏估计,即
- 岭估计是压缩估计,即,即有偏估计回归系数向量长度<无偏估计回归系数向量长度
1.3 岭参数的选择
- 岭迹法:观察岭迹曲线,原则上取使得稳定的最小的值,同时残差平方和也比增加太多。
- 均方误差法:岭估计的均方误差是的函数,可以证明它能在某处取得最小值。计算观察,开始它下降,达到最小值后它开始上升,取它最小处的作为岭参数。
1.4 岭迹图
岭迹图的横轴是岭参数,纵坐标是岭估计。在很小时,通常各系数取值较大;而如果,则跟普通意义的多元线性回归的最小二乘解完全一样;当略有增大,则各系数取值迅速减小,即从不稳定趋于稳定。 上图类似喇叭形状的岭迹图,一般都存在多重共线性。
根据岭迹图选择岭参数,选取喇叭口附近的值,此时各值已趋于稳定,但总的又不是很大。
根据岭迹图选择变量,删除那些β取值一直趋于0的变量。
但是根据岭迹图筛选变量不是十分靠谱。
二、岭回归的代码实现(Python)
咱们依旧以上篇学生计量经济学成绩分析的例子。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression as LM
import statsmodels.api as sm
from sklearn.linear_model import Ridge,RidgeCV
from scipy.stats import zscore
import sklearn.preprocessing as pp
data=pd.read_csv("eg2.1.csv")
data.head()
data=pp.scale(data) #对数据进行0-1标准化
data
X=data[:,1:]
Y=data[:,0]
K=np.arange(2,50) #设置岭参数
coefs=[]
for k in K:ridge = Ridge(alpha=k, fit_intercept=False)ridge.fit(X, Y)coefs.append(ridge.coef_)
fig,axes=plt.subplots(figsize=(12,5))
axes.grid(True,linestyle='-.')
axes.plot(K,coefs)
plt.savefig("RidgeRegression.jpg")
plt.show()
mdcv=RidgeCV(alphas=np.logspace(-4,0,100)).fit(X,Y)
print("最优的alpha:\n",mdcv.alpha_)
md0=Ridge(mdcv.alpha_).fit(X,Y)
md0=Ridge(20).fit(X,Y)
cs0=md0.coef_
print("标准化数据的所有回归系数为:",cs0)
print("拟合优度:\n",md0.score(X,Y))
解决多元线性回归的多重共线性问题相关推荐
- 多元线性回归中多重共线性_多重共线性如何在线性回归中成为问题。
多元线性回归中多重共线性 Linear Regression is one of the simplest and most widely used algorithms for Supervised ...
- 多元线性回归算法: 线性回归Linear Regression、岭回归Ridge regression、Lasso回归、主成分回归PCR、偏最小二乘PLS
0. 问题描述 输入数据:X=(x1,x2,....,xm)\mathbf{X} = (x_1, x_2,...., x_m)X=(x1,x2,....,xm), 相应标签 Y=(y1,y2,. ...
- 十二、案例:加利福尼亚房屋价值数据集(多元线性回归) Lasso 岭回归 分箱处理非线性问题 多项式回归
案例:加利福尼亚房屋价值数据集(线性回归)& Lasso & 岭回归 & 分箱处理非线性问题 点击标题即可获取文章源代码和笔记 1. 导入需要的模块和库 from sklear ...
- ML - 多元线性回归
文章目录 关于 多元线性回归 求解 算法封装 使用 sklearn 处理 boston 房价回归问题 使用 kNN 解决多元线性回归问题 关于 多元线性回归 简单线性回归:假设样本只有一个特征值: 多 ...
- 基于Python多元线性回归模型
提示:基于Python的多元线性回归模型 文章目录 前言 一.读取数据 二.建立模型 三.预测新值 四.去截距模型 总结 前言 本文主要是基于多元回归线性模型,然后建立模型和分析,解决多元线性回归模型 ...
- 多元线性回归模型中多重共线性问题处理方法
转载自:http://datakung.com/?p=46 多重共线性指自变量问存在线性相关关系,即一个自变量可以用其他一个或几个自变量的线性表达式进行表示.若存在多重共线性,计算自变量的偏回归系数β ...
- 线性回归的多重共线性问题及其解决
Content 线性回归的多重共线性 1. 前提 2. 由损失函数推导ω(基于最小二乘法OLS) 3. 上述计算结果不成立 3.1 多重共线性的机器学习解释 3.2 多重共线性的解决 4. Ridge ...
- 多元线性模型分类变量方差_第三十一讲 R多元线性回归中的多重共线性和方差膨胀因子...
在前两讲中,我们介绍了多元线性回归的概念以及多元线性回归中的交互作用.今天学习的主要内容是多元线性回归中的多重共线性和方差膨胀因子. 1. 共线性的概念 1 共线性 在多元回归中,两个或多个预测变量可 ...
- 多元线性回归—多重共线性
多重共线性 文章目录 多重共线性 @[toc] 1 什么是多重共线性 1.1 多重共线性含义 1.2 多重共线性产生原因 2 多重共线性后果 2.1 完全型 2.2 不完全型 3 多重共线性检验 3. ...
最新文章
- CPU,GPU,Memory调度
- Linux-chown and chmod 命令的使用
- pythonmsgbox怎么使用_如何使用tkinter的messagebox
- Linux下批量修改文件名
- openssh 虚拟机linux_Alpine Linux虚拟机安装过程
- java 非法字符: \65279
- VS2017 winform 打包(使用 Microsoft Visual Studio 2017 Installer Project)
- [毕业生的商业软件开发之路]解决方案资源管理器
- 1t硬盘怎么分区最好_还在用128G Macbook?699元升级1T英睿达SSD
- <Linux开发> -之-系统移植 uboot移植过程详细记录(第一部分)
- 电量分析 —— 优化耗电
- 关于电商平台推出无门槛优惠券不得不说的几个问题
- python基础-craps赌牌游戏
- win10开始菜单 此计算机,如何将win10电脑中的开始菜单设置成智能版
- Mac电脑上Android Studio自带模拟器无法关闭
- Pspice仿真实验 例B-1
- Linux版本Java卸载
- c语言用指针分离字符串数字与字符,c语言实验报告,指针的应用分别输出字符串中的数字和其他字符(共10篇).docx...
- 十分有用的CSS样式解决y轴滚动条隐藏功能
- Chaos Mesh Test(在k8s对mysql,redis zookeeper 进行chaos 测试)
热门文章
- 疑难杂症篇(十六)--虚拟机出现“The system is running in low-graphics mode“问题的解决方案
- OSChina 周二乱弹 —— 你一辈子都不可能跟她这么亲近
- oracle rfs进程过多,oracle 11.2 DataGuard少了日志应用进程RFS
- Promise(解决回调地狱)
- 利用Jenkins pipeline配置测试工具
- 如何从网上下载一段视频(iawia002)
- Cannot get property '......' on extra properties extension as it does not exist
- 发布:世界上第一个小米平板4上的Debian Linux 刷机包
- Pycharm 系统找不到指定的路径 报错!!
- Vue.js基础(极简、自用)