R语言回归分析

回归分析可以说是统计学的核心,它其实是一个广义的概念,通指那些用一个或多个预测变量(也称自变量或解释变量)来预测响应变量(也称因变量、效标变量或结果变量)的方法。通常,回归分析可以用来挑选与响应变量相关的解释变量,可以描述两者的关系,也可以生成一个等式,通过解释变量来预测响应变量。
最小二乘法回归是通过预测变量的加权和来预测量化的因变量,其中权重是通过数据估计而得的参数,目标是通过减少响应变量的真实值与预测值的差值来获得模型参数(截距项和斜率),具体而言,即使得残差平方和最小。下面将通过几篇博客介绍回归分析,这是第五篇:选择最佳模型。

1、模型比较

1.1 anova()函数

用基础安装中的 anova() 函数可以比较两个嵌套模型的拟合优度。所谓嵌套模型,即它的一些项完全包含在另一个模型中。

states <- as.data.frame(state.x77[,c("Murder", "Population",
"Illiteracy", "Income", "Frost")])
fit1 <- lm(Murder ~ Population + Illiteracy + Income + Frost,
data=states)
fit2 <- lm(Murder ~ Population + Illiteracy, data=states)
anova(fit2, fit1) #结果显示不需要加入两个变量

1.2 AIC()函数

AIC(Akaike Information Criterion,赤池信息准则)也可以用来比较模型,它考虑了模型的统计拟合度以及用来拟合的参数数目。AIC值较小的模型要优先选择,它说明模型用较少的参数获得了足够的拟合度。

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

2、变量选择

从大量候选变量中选择最终的预测变量有以下两种流行的方法:逐步回归法(stepwise method)和全子集回归(all-subsets regression)

2.1 逐步回归

逐步回归中,模型会一次添加或者删除一个变量,直到达到某个判停准则为止。

  • 向前逐步回归(forward stepwise regression)每次添加一个预测变量到模型中,直到添加变量不会使模型有所改进为止。
  • 向后逐步回归(backward stepwise regression)从模型包含所有预测变量开始,一次删除一个变量直到会降低模型质量为止。
  • 向前向后逐步回归(stepwise stepwise regression),结合了向前逐步回归和向后逐步回归的方法,变量每次进入一个,但是每一步中,变量都会被重新评价,对模型没有贡献的变量将会被删除,预测变量可能会被添加、删除好几次,直到获得最优模型为止。

MASS 包中的 stepAIC() 函数可以实现逐步回归模型(向前、向后和向前向后),依据的是精确AIC准则。

library(MASS)
states <- as.data.frame(state.x77[,c("Murder", "Population","Illiteracy", "Income", "Frost")])
fit <- lm(Murder ~ Population + Illiteracy + Income + Frost,data=states)
stepAIC(fit, direction="backward")
fit1 <- lm(Murder ~ Population + Illiteracy + Income + Frost,data=states)
stepAIC(fit1,direction = "both")

逐步回归法其实存在争议,虽然它可能会找到一个好的模型,但是不能保证模型就是最佳模型,因为不是每一个可能的模型都被评价了,为克服这个限制,便有了全子集回归法。

全子集回归

全子集回归是指所有可能的模型都会被检验。分析员可以选择展示所有可能的结果,也可以展示n个不同子集大小(一个、两个或多个预测变量)的最佳模型。

全子集回归可用 leaps 包中的 regsubsets() 函数实现。可以通过R平方、调整R平方或allows Cp统计量等准则来选择“最佳”模型。

library(leaps)
states <- as.data.frame(state.x77[,c("Murder", "Population",
"Illiteracy", "Income", "Frost")])
leaps <-regsubsets(Murder ~ Population + Illiteracy + Income +
Frost, data=states, nbest=4)
plot(leaps, scale="adjr2")
library(car)
subsets(leaps, statistic="cp",
main="Cp Plot for All Subsets Regression")
abline(1,1,lty=2,col="red")

大部分情况中,全子集回归要优于逐步回归,因为考虑了更多模型。但是,当有大量预测变量时,全子集回归会很慢。

R语言回归分析-选择最佳模型相关推荐

  1. R语言构建logistic回归模型并评估模型:构建基于混淆矩阵计算分类评估指标的自定义函数、阳性样本比例(垃圾邮件比例)变化对应的分类器性能的变化、基于数据阳性样本比例选择合适的分类评估指标

    R语言构建logistic回归模型并评估模型:构建基于混淆矩阵计算分类评估指标的自定义函数.阳性样本比例(垃圾邮件比例)变化对应的分类器性能的变化.基于数据阳性样本比例选择合适的分类评估指标 目录

  2. R语言回归分析-回归诊断

    R语言回归分析 回归分析可以说是统计学的核心,它其实是一个广义的概念,通指那些用一个或多个预测变量(也称自变量或解释变量)来预测响应变量(也称因变量.效标变量或结果变量)的方法.通常,回归分析可以用来 ...

  3. UA MATH571A R语言回归分析实践 多元回归1 医疗费用的决定

    UA MATH571A R语言回归分析实践 多元回归1 医疗费用 基础回归分析 这一讲开始讨论多元回归,这里选择的例子是寻找家庭医疗费用的决定因素.家庭医疗费用由哪些因素决定是卫生经济学.保险精算等领 ...

  4. UA MATH571A R语言回归分析实践 一元回归4 NBA球员的工资

    UA MATH571A R语言回归分析实践 一元回归4 NBA球员的工资 Box-Cox变换 Full Model 模型再诊断 总结 上一讲对一元线性回归模型进行了诊断,发现模型主要存在三个问题: 工 ...

  5. UA MATH571A R语言回归分析实践 一元回归2 NBA球员的工资

    UA MATH571A R语言回归分析实践 一元回归2 NBA球员的工资 方差分析 相关性分析 上一讲完成了解释NBA球员工资的一个简单的一元线性回归模型的估计.分析,展示了一下简单的预测,这一讲我们 ...

  6. UA MATH571A R语言回归分析实践 一元回归1 NBA球员的工资

    UA MATH571A R语言回归分析实践 一元回归1 NBA球员的工资 基础回归分析 571A另一个系列的文章介绍了回归分析的理论,这个系列的文章介绍R语言做回归分析的实践,但不会涉及R语言编程,只 ...

  7. R语言构建logistic回归模型:WVPlots包PRTPlot函数可视化获取logistic回归模型的最优阈值、优化(precision、enrichment)和recall之间的折衷

    R语言构建logistic回归模型:WVPlots包PRTPlot函数可视化获取logistic回归模型的最佳阈值(改变阈值以优化精确度(precision.enrichment)和查全率(recal ...

  8. UA MATH571A R语言回归分析实践 多元回归2 医疗费用的决定

    UA MATH571A R语言回归分析实践 多元回归2 医疗费用的决定 系数的推断与模型预测 模型诊断 这一讲展示一下一元回归中的模型诊断的手段怎么用在多元回归中,同时介绍一下多元回归做推断和预测的方 ...

  9. UA MATH571A R语言回归分析实践 一元回归3 NBA球员的工资

    UA MATH571A R语言回归分析实践 一元回归3 NBA球员的工资 残差分析 正态性.同方差性的检验 欠拟合检验 前两讲已经完成了大致的分析了,我们已经明确了NBA球员名次与工资的负相关关系,接 ...

最新文章

  1. div模拟textarea文本域轻松实现高度自适应——张鑫旭
  2. textread函数_matlab基础textread函数实例
  3. Oracle Database基础
  4. 趁周末,来学点进阶知识:Java 动态编译
  5. AlertDialog.Builder 显示为白色 蓝色字
  6. python 库整理:toolz.curried (整理中)
  7. Linux之文件查找
  8. AJAX代码示例(不使用AJAX控件)
  9. 自动化设备的软件框架
  10. POJ 1172 DFS
  11. 武汉船舶职业技术学院计算机分数线,武汉船舶职业技术学院录取分数线2021是多少分(附历年录取分数线)...
  12. abstract类中不可以有private的成员_C++中public、protected、private的区别
  13. redux reducer_如何通过约定创建Redux reducer
  14. (转)MySQL命令行--导入导出数据库
  15. python变量存为matlab,将matlab变量导出为python用法的文本
  16. 正则式转化nfa 代码_从0到1打造正则表达式执行引擎(二)
  17. NV21转YUV420P的代码,测试通过
  18. 机器人动力学与控制学习笔记(十一)————机器人凯恩方程动力学建模
  19. 74ls20设计半加器_组合逻辑电路(半加器全加器及逻辑运算)实验报告
  20. FileOpen 及相关文件读写

热门文章

  1. 每日一练--IT冷知识C/C++--第二天
  2. 从零开始开发Python程序(四)—— 抓取每日早报新闻
  3. java高级课程设计报告书_java高级课程设计报告模板
  4. 超透镜消色差方法理解与总结
  5. 平台式惯性导航系统与捷联式惯性导航系统的区别
  6. mysql查询字段不为数字_MySQL查询指定字段不是数字与逗号的sql
  7. 中国嵌入式天花板灯具行业市场供需与战略研究报告
  8. 英语小学口语测试软件,小学英语口语测试方案.pdf
  9. 微信商城游戏被宝塔防CC攻击拦截
  10. 推荐一款 iOS 端黑科技自动化应用脚本