R语言(三)——多重共线性情况(岭回归、[适应性]lasso回归、偏最小二乘回归)
目录
一、数据
二、共线性检查
三、岭回归
四、lasso回归
五、适应性lasso回归
六、偏最小二乘回归
一、数据
糖尿病数据(diabetes.csv)包含在R程序包的lars中,是关于糖尿病的血液等化验指标。除了因变量y之外,还有两个自变量矩阵,前者经过标准化,后者包括前者及一些交互作用。
可以使用以下代码将数据保存为csv文件方便调用
#install.packages("lars")
library(lars)
data(diabetes) #加载数据
write.csv(diabetes,"diabetes.csv",row.names = FALSE)
二、共线性检查
在多元回归中,当两个或更多的自变量有些相关的时候,就可能出现多重共线性的情况。这种情况严重的时候,模型或数据的微小变化有可能造成系数估计的较大变化,使结果模型不稳定,也不易解释。
有一些关于多重共线性的度量,其中之一使容忍度(tolerance)或方差膨胀因子(VIF)【两者等价】
容忍度太小(按照一些文献,小于0.2或0.1)或VIF太大(如5或10),则有多重共线性的问题
还有一个是条件数,常用表示,大于15时有共线性问题,大于30时说明共线性严重
VIF可以通过程序包car的函数vif()得到,条件数可用R固有的函数kappa()得到
w=read.csv("diabetes.csv")
#w[,1:10]为x,w[,11]为y,w[,12:75]为x2
kappa(w[,12:75])
library(carData)
library(car)
vif(lm(y~.,w[,11:75]))
计算结果显示,数据x2的条件数=11427.09,x2最大的5个VIF都大于60000,共线性十分严重,因此直接修正,不尝试简单回归。
三、岭回归
普通最小二乘回归寻求使残差平方和最小的系数β,岭回归加入一个惩罚项来约束系数。使得残差平方和小,又不能使得系数太膨胀,这里需要确认系数λ。
w=read.csv("diabetes.csv")
library(ridge)
a=linearRidge(y~.,data=w[,11:75])
summary(a)
这里显示岭回归参数(5.363159)以及各个变量的系数。
四、lasso回归
原理上和岭回归相似,但是惩罚项不是系数的平方而是绝对值,在约束条件下,需满足
lasso回归不像岭回归那样把系数缩小,而是筛选掉一些系数。可以用k折交叉验证(CV)选择平均方误差最小的模型,也可以用Mallows Cp统计量来评价回归,即如果从k个自变量中选取p个参与回归,则Cp统计量的定义为:
对于糖尿病数据,使用lars程序包,代码如下:
#lasso回归
library(lars)
#lars函数只用于矩阵型数据
#自变量和因变量变为矩阵
x=as.matrix(w[,1:10])
y=as.matrix(w[,11])
x2=as.matrix(w[,12:75])
laa=lars(x2,y)
plot(laa)
summary(laa) #给出cp值
cva=cv.lars(x2,y,K=10) #10折交叉验证
best=cva$index[which.min(cva$cv)] #选合适值
coef=coef.lars(laa,mode="fraction",s=best)#使CV最小步时的系数
#plot(coef)
coef[coef!=0] #CV所选自变量
min(laa$Cp) #答案为15
coef1=coef.lars(laa,mode="step",s=15)
#plot(coef1)
coef1[coef1!=0] #Cp所选自变量
图1中,上面数据代表迭代次数,右边代表最终选择的变量。
图2中,可以看出应选取的λ值小于0.1的一半。
通过coef[coef!=0]和coef1[coef1!=0]查看由CV和Cp所确定的变量
五、适应性lasso回归
是lasso回归的改进模型,其系数β同样要满足
它的惩罚项是系数绝对值的加权平均,即约束条件,其中,γ>0是一个调整参数,适用于很大范围的损失函数及惩罚条件,岭回归和lasso回归仅仅是其方法的特例。这里使用包msgps,不仅包括适应性lasso(alasso)回归,还包括弹性网络和广义弹性网络等方法。程序包基于广义路径搜索方法寻求最优参数。
对于糖尿病的例子,有如下代码:
#适应性lasso回归
x=as.matrix(w[,1:10])
#y是向量
y=w[,11]
x2=as.matrix(w[,12:75])
library(msgps)
al=msgps(x2,y,penalty="alasso",gamma=1,lambda=0)
summary(al)
plot(al)
输出结果显示γ=45.41。各个准则的值和自由度为:
不同情况下参数的变化:
六、偏最小二乘回归
偏最小二乘回归类似于主成分回归。它在因变量(如果也有多个变量组成)和自变量中各自寻找一个因子(成分),条件是这两个因子在其他可能的成分中最相关,然后再选中的这一对因子的正交空间再选一对最相关的因子,直到这些对因子具有充分代表性(可用交叉验证)
使用包pls,该包也可做主成分分析,一些研究发现(Wold et al.,1984,Gartwaite,1994)偏最小二乘回归在预测上优于普通最小二乘回归及主成分回归。在观测数据相对较少(甚至少于变量数目)时,偏最小二乘回归依然可以使用。主成分回归的计算完全类似,只需把下面的函数plsr()换成pcr()。
#偏最小二乘回归
library(pls)
ap=plsr(y~x2,64,validation="CV") #求出所有可能的64个因子
ap$loadings #看代表性,前28个因子可以代表76.4%的方差
ap$coef #看各个因子作为原变量的线性组合系数
validationplot(ap) #根据CV所用准则最优的原则挑选因子
RMSEP(ap);MSEP(ap);R2(ap) #不同准则在不同因子数量的值
5个因子时RMSEP最小,用其他准则,如MSEP和R2都选择了5个因子
R语言(三)——多重共线性情况(岭回归、[适应性]lasso回归、偏最小二乘回归)相关推荐
- 主成分回归之后预测_回归分析|笔记整理(B)——主成分回归(下),偏最小二乘回归...
大家好! 上一节我们给主成分回归开了一个头,这一节我们会继续介绍它的有关内容,并且同时会介绍另一种新的回归方法:偏最小二乘回归.这一节的理论性也比较强,主要关注了相关回归的理论上的性质与相关证明. 提 ...
- 【读书笔记】数据出现多重共线性情况:岭回归,lasso回归,适应性lasso回归,偏最小二乘回归
# 2.2.3 数据出现多重共线性情况:岭回归,lasso回归,适应性lasso回归,偏最小二乘回归 # 有一些关于多重共线性的度量,其中之一是容忍度(tolerance)或(等价的)方差膨胀因子(v ...
- 应用预测建模第六章-线性回归-预测化合物溶解度练习-R语言(多元线性回归,稳健回归,偏最小二乘回归,岭回归,lasso回归,弹性网)
模型:多元线性回归,稳健回归,偏最小二乘回归,岭回归,lasso回归,弹性网 语言:R语言 参考书:应用预测建模 Applied Predictive Modeling (2013) by Max K ...
- 【R语言数据科学】:变量选择(三)主成分回归和偏最小二乘回归
变量选择(三)主成分回归和偏最小二乘回归
- R语言VaR市场风险计算方法与回测、用LOGIT逻辑回归、PROBIT模型信用风险与分类模型...
全文链接:http://tecdat.cn/?p=27530 市场风险指的是由金融市场中资产的价格下跌或价格波动增加所导致的可能损失. 相关视频 市场风险包含两种类型:相对风险和绝对风险.绝对风险关 ...
- R语言实现偏最小二乘回归法 partial least squares (PLS)回归
偏最小二乘回归是一种回归形式 . 当使用pls时,新的线性组合有助于解释模型中的自变量和因变量. 最近我们被客户要求撰写关于偏最小二乘回归的研究报告,包括一些图形和统计输出. 在本文中,我们将使用p ...
- 应用预测建模第六章线性回归习题6.1【主成分分析,模型的最优参数选择与模型对比 ,多元线性回归,稳健回归,偏最小二乘回归,岭回归,lasso回归,弹性网】
模型:多元线性回归,稳健回归,偏最小二乘回归,岭回归,lasso回归,弹性网 语言:R语言 参考书:应用预测建模 Applied Predictive Modeling (2013) by Max K ...
- 应用预测建模第六章线性回归习题6.3【缺失值插补,分层抽样,预测变量重要性,重要预测变量如何影响响应变量,多元线性回归,稳健回归,偏最小二乘回归,岭回归,lasso回归,弹性网】
模型:多元线性回归,稳健回归,偏最小二乘回归,岭回归,lasso回归,弹性网 语言:R语言 参考书:应用预测建模 Applied Predictive Modeling (2013) by Max K ...
- 偏最小二乘回归(三):身体特征与体能训练结果的 案例分析
偏最小二乘回归(一):模型介绍 偏最小二乘回归(二):一种更简洁的计算方法 本节采用兰纳胡德(Linnerud)给出的关于体能训练的数据进行偏最小二乘回归建 模.在这个数据系统中被测的样本点,是某健身 ...
最新文章
- 【Verilog HDL 训练】第 02 天
- 洛谷1197星球大战
- 字符设备驱动基本流程
- lisp 绘制立体感的五角星_几何作图的方法、例子、解答及札记
- android启动白屏的分析,Android 启动白屏,跳转黑屏以及冷启动优化
- 详细到没朋友,一文帮你理清Linux 用户与用户组关系~
- JAVAWEB入门tomcat服务器配置
- Netty工作笔记0019---Selector API介绍
- python入门经典代码-Python入门36道经典练习题
- 正态分布的前世今生:正态分布的各种推导
- hibernate 反向生实体类 and 为什么老是多一个id
- java教程 pdf_java教程合集(25本)
- python re.match函数的使用
- elasticsearch单机版安装及安装过程踩的坑整理
- 手机聊天记录备份与恢复的方法汇总
- 中文女和程序员的爱情奇遇
- springAOP 学习
- #踩过的坑# 企业微信被封了怎么办?
- win10开机自动打开http://go.microsoft.com/fwlink/?LinkID=219472clcid=0x409
- Ubuntu 常用小命令(持续更新~)