R语言回归分析-选择最佳模型
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语言回归分析-选择最佳模型相关推荐
- R语言构建logistic回归模型并评估模型:构建基于混淆矩阵计算分类评估指标的自定义函数、阳性样本比例(垃圾邮件比例)变化对应的分类器性能的变化、基于数据阳性样本比例选择合适的分类评估指标
R语言构建logistic回归模型并评估模型:构建基于混淆矩阵计算分类评估指标的自定义函数.阳性样本比例(垃圾邮件比例)变化对应的分类器性能的变化.基于数据阳性样本比例选择合适的分类评估指标 目录
- R语言回归分析-回归诊断
R语言回归分析 回归分析可以说是统计学的核心,它其实是一个广义的概念,通指那些用一个或多个预测变量(也称自变量或解释变量)来预测响应变量(也称因变量.效标变量或结果变量)的方法.通常,回归分析可以用来 ...
- UA MATH571A R语言回归分析实践 多元回归1 医疗费用的决定
UA MATH571A R语言回归分析实践 多元回归1 医疗费用 基础回归分析 这一讲开始讨论多元回归,这里选择的例子是寻找家庭医疗费用的决定因素.家庭医疗费用由哪些因素决定是卫生经济学.保险精算等领 ...
- UA MATH571A R语言回归分析实践 一元回归4 NBA球员的工资
UA MATH571A R语言回归分析实践 一元回归4 NBA球员的工资 Box-Cox变换 Full Model 模型再诊断 总结 上一讲对一元线性回归模型进行了诊断,发现模型主要存在三个问题: 工 ...
- UA MATH571A R语言回归分析实践 一元回归2 NBA球员的工资
UA MATH571A R语言回归分析实践 一元回归2 NBA球员的工资 方差分析 相关性分析 上一讲完成了解释NBA球员工资的一个简单的一元线性回归模型的估计.分析,展示了一下简单的预测,这一讲我们 ...
- UA MATH571A R语言回归分析实践 一元回归1 NBA球员的工资
UA MATH571A R语言回归分析实践 一元回归1 NBA球员的工资 基础回归分析 571A另一个系列的文章介绍了回归分析的理论,这个系列的文章介绍R语言做回归分析的实践,但不会涉及R语言编程,只 ...
- R语言构建logistic回归模型:WVPlots包PRTPlot函数可视化获取logistic回归模型的最优阈值、优化(precision、enrichment)和recall之间的折衷
R语言构建logistic回归模型:WVPlots包PRTPlot函数可视化获取logistic回归模型的最佳阈值(改变阈值以优化精确度(precision.enrichment)和查全率(recal ...
- UA MATH571A R语言回归分析实践 多元回归2 医疗费用的决定
UA MATH571A R语言回归分析实践 多元回归2 医疗费用的决定 系数的推断与模型预测 模型诊断 这一讲展示一下一元回归中的模型诊断的手段怎么用在多元回归中,同时介绍一下多元回归做推断和预测的方 ...
- UA MATH571A R语言回归分析实践 一元回归3 NBA球员的工资
UA MATH571A R语言回归分析实践 一元回归3 NBA球员的工资 残差分析 正态性.同方差性的检验 欠拟合检验 前两讲已经完成了大致的分析了,我们已经明确了NBA球员名次与工资的负相关关系,接 ...
最新文章
- div模拟textarea文本域轻松实现高度自适应——张鑫旭
- textread函数_matlab基础textread函数实例
- Oracle Database基础
- 趁周末,来学点进阶知识:Java 动态编译
- AlertDialog.Builder 显示为白色 蓝色字
- python 库整理:toolz.curried (整理中)
- Linux之文件查找
- AJAX代码示例(不使用AJAX控件)
- 自动化设备的软件框架
- POJ 1172 DFS
- 武汉船舶职业技术学院计算机分数线,武汉船舶职业技术学院录取分数线2021是多少分(附历年录取分数线)...
- abstract类中不可以有private的成员_C++中public、protected、private的区别
- redux reducer_如何通过约定创建Redux reducer
- (转)MySQL命令行--导入导出数据库
- python变量存为matlab,将matlab变量导出为python用法的文本
- 正则式转化nfa 代码_从0到1打造正则表达式执行引擎(二)
- NV21转YUV420P的代码,测试通过
- 机器人动力学与控制学习笔记(十一)————机器人凯恩方程动力学建模
- 74ls20设计半加器_组合逻辑电路(半加器全加器及逻辑运算)实验报告
- FileOpen 及相关文件读写