01 模型简介
最优子集回归是多元线性回归方程的自变量选择的一类方法。从全部自变量所有可能的自变量组合的子集回归方程中挑选最优者。如m个自变量会拟合2m-1个子集回归方程,然后用回归方程的统计量作准则(如交叉验证误差、Cp、BIC、调整R2等指标)从中挑选。
采用的R包是leaps,函数是regsubsets()。
结合一个线性回归的例子,和大家分享一下如何运用R软件实现最优子集回归。
02 加载数据
#### 加载包和读取数据
library(glmnet)
load(file="Lineartest")
data
03 数据相关性可视化表达
library(corrplot)
data.cor
corrplot(data.cor, method = "ellipse") #是否提示多重共线性问题
运用cor()函数得到数据的相关系数矩阵,将相关系数矩阵作图,可以直观看出共线性:每个格子中椭圆面积越小,表示相关性越强。
04 采用regsubsets() 筛选
library(leaps)
sub.fit
best.summary
#按照模型评价标准找到评价指标
which.min(best.summary$cp)#马洛斯Cp值
which.max(best.summary$adjr2) #调整R2
which.min(best.summary$bic) #贝叶斯信息准则
执行最优子集回归后返回的是自变量组合的子集回归方程,以及每个回归方程对应的评价指标,采用which函数选取最优的回归方程。其中调整R2越大越好,