何晓群教授《应用回归分析 R语言版》 第5章
自变量的选择,是建模的重要工作。全模型是有偏估计,选模型预测的均方误差比全模型预测的方差更小,因此建立回归模型时,应当尽可能的剔除可有可无的自变量。
当自变量子集扩大时,残差平方和随之减小,复决定系数随之增加。如果按残差平方和越小越好的原则来选择自变量子集时,变量越多越好。由于变量的多重共线性,给变量的回归系数估计值带来不稳定性,加上变量的测量误差积累和参数数目增加,将使估计值的误差增大。因此残差平方和、复相关系数不能作为选择变量的准则。
常用准则:
准则1,自由度调整复决定系数达到最大。
当给模型增加自变量时,复决定系数随之逐渐增加,代价是残差自由度减少,自由度小意味着估计和预测的可靠性低。表明当一个回归模型涉及的自变量很多时,模型的拟合从表面上看很好,但区间预测和估计的精确度变低,失去实际意义。回归模型的拟合良好参杂了一些虚假成分,所以采用自由度调整复决定系数。
准则2,赤池信息量AIC达到最小
似然函数越大的估计量越好,AIC是似然函数的对数乘以-2再加上惩罚因子,因而AIC达到最小的模型是最优模型。
准则3,Cp统计量达到最小。
用R语言寻找最优子集,使用leaps包的regsubestes()
libraray(leaps)
Exps=regsubestes(y~.,data,nbest=1,readlly.big=T)
nbest为大于等于1的整数,表示用来展示nbest个最佳模型
Express=summary(exps)
Res=data.frame(express$outmat,r2=express$adjr2,Cp=express$cp)
Res
实际应用过程中,应当综合考虑几个准则。
逐步回归:R语言step(),采用AIC为判别准则。
Step(obj,scope,scale=0,direction=c("both","backward","forward"),trace=1,keep=NULL,steps=1000,k=2,…)
其中obj是初始的回归方程,scope是确定逐步搜索中模型的范围,scale=0指使用AIC统计量,direction确定搜索方式。
通过逐步回归选出的最优模型整体上最优,但可能会包含不显著的变量,需要删除不显著的变量,得到最终的模型。