R语言 使用regsubsets等函数进行回归模型的选择

两模型比较:

anova()函数:可以比较两个嵌套模型的拟合优度。

fit1<-lm(Murder~Population+Illiteracy+Income+Frost,data=states)
fit2<-lm(Murder~Population+Illiteracy,data=states)
anova(fit2,fit1)

 

 

结论:p=0.994,不显著,不需要将Income和Frost添加到线性模型中。

 

AIC()函数:考虑了模型的统计拟合度遗迹用来拟合的参数数目。

fit1<-lm(Murder~Population+Illiteracy+Income+Frost,data=states)
fit2<-lm(Murder~Population+Illiteracy,data=states)
AIC(fit2,fit1)

结论:AIC越小越优先选择,这个结果说明模型用较少的参数获得了足够的拟合度。

 

多模型比较:

使用stepAIC()函数作逐步回归:

library(MASS)
fit1<-lm(Murder~Population+Illiteracy+Income+Frost,data=states)
stepAIC(fit,direction = "backward")

 

 

 

 

例子中采用该向后逐步回归,从模型包含所有预测变量开始,一次删除一个变量直到会降低模型质量为止。

具体表现为:

第一步删除Frost,AIC:  97.75 --> 95.75

第二步删除Income,AIC: 95.75 --> 93.76

第三步删除之后AIC不下降,因此终止选择过程。

这种方法虽然或许可以找到更好一些的模型,但是并不能保证找到最佳模型,因此有了全子集回归法。

 

使用regsubsets()函数作全子集回归:

library(leaps)
leaps<-regsubsets(Murder~Population+Illiteracy+Income+Frost,data=states,nbest=4)
plot(leaps,scale="adjr2")

 

(R平方含义是预测变量解释响应变量的程度,但是会随着变量数目的增加而增加,所以这里使用R调整平方来展示更加真实的R平方估计)

可以从上图中看出,当变量只有Population和Illiteracy时,R调整平方是最大的,因此双预测变量模型是最佳的。

(对nbset参数的解释:若nbest=2,先展示两个最佳的单预测变量模型,然后展示两个最佳的双预测变量模型,以此类推,直到包含所有的预测变量。)

 

总的来说,regsubsets函数代表的全子集回归会优于逐步回归,但是对变量很多的时候会比较乏力。但是这几种方法只是辅助,对主题的深入理解才能最终找到最佳模型。

  • 14
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值