R语言统计分析——如何选择最佳回归模型

news2024/9/21 6:04:06

参考资料:R语言实战【第2版】

        尝试获取一个回归方程时,实际上你就面对着从众多可能的模型中做选择的问题。是不是所有的变量都要包括?还是去掉那个对预测贡献不显著的变量?是否需要添加多项式项和/或交互项来提高拟合度?最终回归模型的选择总是会涉及预测精度(模型尽可能地拟合数据)与模型简洁度(一个简单且能复制的模型)的调和问题。如果有两个几乎相同预测精度的模型,你肯定喜欢简单的那个。本文讨论的就是如何在候选模型中进行筛选。注意,“最佳”是打引号的,因为没有评价的唯一标准,最终的决定需要调查者的评判。

1、模型比较

(1)anova()函数

        用R语言基础安装的anova()函数可以比较两个嵌套模型的拟合优度。所谓嵌套模型,即它的一些项完全包含在另一个模型中。用states的多元回归模型,进行具体分析,如下:

# 设置数据为数据框格式
states<-as.data.frame(state.x77[,c("Murder","Population","Illiteracy",
                                   "Income","Frost")])
# 多元回归拟合
fit1<-lm(Murder~Population+Illiteracy+Income+Frost,
         data=states).
# 查看拟合结果
summary(fit1)
# 由结果可知Income和Frost两个变量的回归系数是不显著的
# 重新拟合回归方程
fit2<-lm(Murder~Population+Illiteracy,data=states)
# 查看拟合结果
summary(fit2)
# 对两个拟合方程进行比较分析
anova(fit2,fit1)

        这里,模型1是嵌套在模型2中的,anova()函数是对Income和Frost变量是否应该添加到线性模型中进行检验。检验结果显示p=0.994,即这fit2和fit1这两个模型间差异不显著,保留fit2模型即可。

(2)AIC(Akaike Information Criterion,赤池信息准则)

        AIC也可以用来比较模型,它考虑了模型的统计拟合度以及用来拟合的参数数目。AIC值较小的模型要优先选择,它说明模型用较少的参数获得足够的拟合度。如下:

# AIC模型比较
AIC(fit1,fit2)

        由结果可知,fit2的AIC值比fIt1要小,说明fit2模型要优于fit1。

        注意:anova()函数需要用嵌套模型,而AIC()函数则不需要。

2、变量选择

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

(1)逐步回归

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

向前逐步回归(forward stepwise regression)每次添加一个预测变量到模型中,直到添加变量不会使模型有所改进为止。

向后逐步回归(backward stepwise regression)从模型包含所有预测变量开始,一次删除一个变量直到会降低模型质量为止。

向前向后逐步回归(stepwise stepwise regression,通常称作逐步回归)结合了向前逐步回归和向后逐步回归的方法,变量每次进入一个,但是每一步中,变量都会被重新评价,对模型没有贡献的变量将会被删除,预测变量可能会被添加、删除多次,直到获得最优模型位置。

        逐步回归法的实现依据增删变量的准则不同而不同。MASS包中的stepAIC()函数可以实现逐步回归模型(向前、向后、向前向后),依据的是精确AIC准则。如下:

# 加载MASS包
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")

        本例中,开始时模型中包含4个(全部)预测变量,然后每一步中,AIC提供了删除一个行中变量后模型的AIC值。<none>中的AIC值表示没有变量被删除时模型的AIC。向后逐步回归模型计算步骤如下:第一步,Frost被删除,AIC从97.75降至95.75;第二步,Income被删除,AIC继续下降为93.76;第三步,再删除变量将会增加AIC,因此终止选择过程。

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

(2)全子集回归

        全子集回归是指所有可能的模型都会被检验。我们可以选择展示所有可能的结果,也可以选择n个不同子集大小(一个、两个或多个预测变量)的最佳模型。例如,若nbest=2,表示先展示两个最佳的单预测变量模型,然后展示两个最佳的双预测变量模型,以此类推,直到包含所有的预测变量。

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

R平方含义是预测变量解释响应变量的程度。R平方会随着变量数目的增加而增加,当与样本量相比,预测变量数目很大时,容易导致过拟合。R平方很可能会丢失数据的偶然变异信息。

调整R平方与R平方类似,但考虑了模型的参数数目。调整R平方提供了更为真实的R平方估计

Mallows Cp统计量也可以作为逐步回归的判停规则。研究表明,对于一个好的模型,它的Cp统计量非常接近于模型的参数数目(包括截距项)

全子集回归操作如下:

# 加载leaps包
library(leaps)
# 设置数据为数据框格式
states<-as.data.frame(state.x77[,c("Murder","Population","Illiteracy",
                                   "Income","Frost")])
# 用regsubsets()函数进行全子集回归
leaps<-regsubsets(Murder~Population+Illiteracy+Income+Frost,
                  data=states,nbest=4)
# 结果展示,标准是调整R平方
plot(leaps,scale="adjr2")
# 结果的另一种展示方式
# 加载car包
library(car)
# 结果展示,标准为Cp统计量
subsets(leaps,statistic = 'cp',
        main="Cp Plot for All Subsets Regression")
abline(1,1,lty=2,col="red")

         第一行中(图底部开始),可以看到含intercept(截距项)和Income的模型调整R平方为0.33,含intercept和Population的模型调整R平方为0.1。跳至第12行,你会看到含intercept、 Population、 Illiteracy和Income的模型调整R平方值为0.54,而仅含intercept、 Population
和Illiteracy的模型调整R平方为0.55。此处,我们会发现含预测变量越少的模型调整R平方越大(对
于非调整的R平方,这是不可能的)。图形表明,双预测变量模型( Population和Illiteracy)是最佳模型

        越好的模型离截距项和斜率均为1的直线越近。上图中我们可以选择这几个模型:含Population和Illiteracy的双变量模型;含Population、Illiteracy和Frost的三变量模型或Population、 Illiteracy和Income的三变量模型(它们在图形上重叠了,不易分辨);含Population、 Illiteracy、 Income和Frost的四变量模型。

        大部分情况下,全子集回归要优于逐步回归,因为考虑了更多模型。但是当有大量预测变量时全子集回归会运行很慢。一般来说,变量自动选择应该被看作是对模型选择的一种辅助方法,而不是直接方法。拟合效果佳但没有意义的模型对我们来说毫无帮助,研究课题的背景知识的理解才能最终指引我们获得理想的模型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2080503.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

.NET WPF 抖动动画

.NET WPF 抖动动画 Demo Code <!-- 水平抖动 --> <Button Content"Hello World"><Button.RenderTransform><TranslateTransform x:Name"translateTransform" /></Button.RenderTransform><Button.Triggers><Even…

SP: eric

靶机搭建 靶机下载地址 在Virtualbox中打开下载好的靶机&#xff0c;网络配置修改为桥接模式&#xff0c;启动靶机即可。 信息收集 主机发现 nmap 192.168.31.0/24 -Pn -T4 靶机IP&#xff1a;192.168.31.244 端口扫描 nmap 192.168.31.244 -A -p- -T4 根据端口扫描结果…

Linux驱动学习之内核poll阻塞

在linux系统编程课程中学习过多路IO复用&#xff0c;简单来说就三个函数select&#xff0c;poll&#xff0c;epoll。 对于select 此函数是跨平台的&#xff0c;可以在windows&#xff0c;Linux中使用。 对于poll与epoll 只能在linux平台下使用&#xff0c; epoll底层实现是一个…

ArcGIS应用指南:近邻分析(点匹配到最近线段上)

近邻分析通常用于确定一个要素集中的要素与另一个要素集中最近要素的距离。当涉及到点匹配到最近的线时&#xff0c;这种分析可以用来确定每个点到最近线段的距离及位置&#xff0c;也就是我们常说的点匹配到最近线上&#xff0c;可以参考官方文档&#xff1a;近邻分析 (Covera…

EmguCV学习笔记 VB.Net 6.S 特别示例

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问…

深度学习基础(Datawhale X 李宏毅苹果书AI夏令营)

深度学习基础(Datawhale X 李宏毅苹果书AI夏令营) 3.1局部极小值和鞍点 3.1.1. 优化失败问题 在神经网络中&#xff0c;当优化到梯度为0的地方&#xff0c;梯度下降就无法继续更新参数了&#xff0c;训练也就停下来了&#xff0c;如图&#xff1a; 梯度为0的情况包含很多种情…

Anaconda3简介与安装步骤

目录 Anaconda3简介与功能 1.Anaconda3简介 2.主要功能和特点 3.使用场景 4.总结 Anaconda3安装 1.Anaconda3下载 1.1我的百度网盘 1.2官网下载 1.2.1访问官网 1.2.2输入邮箱 1.2.3登录你的邮箱下载&#xff08;你的噶&#xff09; 2.安装 2.1双击安装 2.2选择安…

分块矩阵的转置

证明 则 证明&#xff1a;令&#xff0c;有&#xff0c;对它做一个分块使得和后面的分块矩阵中的是同型矩阵&#xff0c;要证明&#xff08;任意的&#xff09;&#xff0c;需要证明1&#xff09;是一个的矩阵 2&#xff09;任意的 首先证明1&#xff09;我们先定义两个函…

HarmonyOS ArkUI工程框架解析

通过 HarmonyOS Developer 官网我们可以了解 ArkUI 是一套声明式开放框架&#xff0c;开发者可以基于 ArkTS 语法设计一套极简的 DSL 以及丰富的 UI 组件完成跨设备的界面开发。 那么 ArkUI 是如何实现这一套声明式开放框架的呢&#xff1f;本文将通过分析开源的 HarmonyOS 渲染…

记录devtmpfs:error mounting -2问题的解决

ext4文件系统制作有问题. 重新制作文件系统烧录 /dev文件夹丢失

软考攻略/超详细/系统集成项目管理工程师/基础知识分享04

第二章 信息技术发展 2.1信息技术及其发展 2.1.1 计算机软硬件&#xff08;了解&#xff09; 在许多情况下&#xff0c;计算机的某些功能既可以由硬件实现&#xff0c;也可以由软件来实现。 1、计算机硬件 计算机硬件主要分为&#xff1a;控制器、运算器、存储器、输入设备和…

开发中如何在运行/调试时将项目热部署到Tomcat

这里有一篇不错的博客&#xff0c;可以参考 http://t.csdnimg.cn/oWcgm 正常情况下&#xff0c;我们将web项目打包成war包后&#xff0c;需要放到tomcat的webapps路径下&#xff0c;然后启动tomcat&#xff0c;才能正常访问。但是这在开发阶段是极为不便的。因此可以使用两种方…

基于机器学习的工业制造缺陷分析预测系统

B站视频及代码下载&#xff1a;基于机器学习的工业制造缺陷分析预测系统-视频-代码 1. 项目简介 制造缺陷是工业生产过程中面临的重大挑战之一&#xff0c;对产品质量和生产效率产生直接影响。准确预测和分析制造缺陷的发生&#xff0c;可以帮助企业提高生产质量、降低成本&…

DNS 服务器的搭建(正向区域配置)

一、Windows DNS 正向区域配置 1.实验目标 2.拓扑结构 3.实验需求 4.配置要点 5.配置步骤 1.配置各主机 IP 地址及网关 2.DNS 服务器服务部署 3.验证实验 一、Windows DNS 正向区域配置 1.实验目标 掌握 DNS 的功能和基本操作 熟悉公网 DNS 架构 掌握 DNS …

豆瓣同城活动采集

可采集豆瓣同城活动&#xff0c;来辅助分析一个城市的文商旅体活跃繁荣程度。 示例数据&#xff1a; 活动网址&#xff1a;已屏蔽不显示 封图网址&#xff1a;已屏蔽不显示 标题&#xff1a;【百年老号-本地观众力捧】谦祥益相声茶馆-陆家嘴店 开始日期&#xff1a;2024-0…

tomcat在idea中 乱码(service ,catalina log)

我试了很多方法&#xff0c;把idea中的所有配置都改成了utf-8&#xff0c;&#xff08;包括修改vm配置&#xff0c;fileEndcoding&#xff0c;外部文件endcodeing ...等等&#xff09;都没有改好&#xff0c; 最后在修改了tomcat的配置文件&#xff0c;就好了 在tomcat的安装…

【C++ 第十六章】哈希

1. unordered系列关联式容器 在C98中&#xff0c;STL提供了底层为红黑树结构的一系列关联式容器&#xff0c;在查询时效率可达到 &#xff0c;即最差情况下需要比较红黑树的高度次&#xff0c;当树中的节点非常多时&#xff0c;查询效率也不理想。最好 的查询是&#xff0c;进行…

Modern C++——函数参数类型的分类和使用

大纲 基本定义值类型左值引用非常量左值引用常量左值引用 右值引用总结 在C中&#xff0c;函数参数主要有两种方式&#xff1a;值类型和引用类型。其中引用类型又分为&#xff1a;左值引用和C11引入的右值引用。下面我们分别对其进行介绍。 基本定义 要弄清楚这些概念&#x…

三级_网络技术_51_应用题

一、 请根据下图所示网络结构回答下列问题。 1.填写路由器RG的路由表项。 目的网络/掩码长度输出端口__________S0&#xff08;直接连接&#xff09;__________S1&#xff08;直接连接&#xff09;__________S0__________S1__________S0__________S1 2.如果需要监听路由器RE…

mysql理论学习上

1&#xff1a;常⻅的SQL语句 1.1sql介绍 SQL 是⽤于访问和处理数据库的标准的计算机语⾔。 SQL&#xff0c;指结构化查询语⾔&#xff0c;全称是 Structured Query Language。SQL 让您可以访问和处理数据库。 SQL 是⼀种 ANSI&#xff08;American National Standards Inst…