常用于评价回归模型优劣的统计量包括( )。_第四十一讲 R-判断回归模型性能的指标...

65b005b67b8fa2b98d8b0f52c1ba9875.png

当回归模型建立好以后,如何评价该回归模型是否与另一个回归模型有区别,如何比较两个回归模型的性能?这一讲中,我们将给大家介绍几个评价回归模型性能的统计指标。

1. 模型性能指标

在回归模型中,最常用的评估指标包括:

  1. R平方(R2),它是预测变量能解释结果变量变异的百分比例,范围为0到1。 R2是观察到的实际结果与模型构建的预测值之间的相关系数的平方。R平方越高,模型越好。
  2. 均方根误差(root mean squared error, RMSE),它测量的是模型预测的结果与实际观察结果间的平均误差。从数学上讲,RMSE是均方误差(mean squared error, MSE)的平方根,该均方根是观察到的实际值与模型预测的值之间的均方差。因此,MSE = mean((observeds - predicteds)^2)和RMSE = sqrt(MSE)。RMSE越低,模型越好。
  3. 残差标准误/残留标准误差(residual standard error, RSE),也称为模型sigma(model sigma),是针对模型中预测变量数量进行调整的RMSE。RSE越低,模型越好。实际上,RMSE和RSE之间的差异很小,尤其是对于多元数据(含有多个预测变量的模型)而言。
  4. 像RMSE一样,平均绝对误差(mean absolute error, MAE)也可以测量预测误差。在数学上,它是观察到的结果与预测的结果之间的平均绝对差MAE = mean(abs(observeds - predicteds))。与RMSE相比,MAE对异常值的敏感性较低。
  5. F统计量:它提供了模型的整体重要性。它评估至少一个预测变量是否具有非零系数。F统计量越大, 对应的统计显着性p值(p <0.05)越小。

上述性能指标都存在一个问题,即预测变量在解释结果上即便没有显着贡献,但当加入新的预测变量进模型时,也会对上述性能指标产生影响,这些性能指标对模型的变化是非常敏感的。即,在模型中包括新加的变量时,将始终增加R2并降低RMSE。

因此,我们需要一个更加稳定的指标来指导最佳模型的选择。

关于R2,有一个调整预测变量数的指标,称为调整后的R方(Adjusted R-squared),它有效地考虑了模型中的预测变量数量的不同,从而使各个模型可比较。

此外,还有其他四个重要指标- AICAICcBIC和Mallows Cp –它们通常用于模型评估和选择,是MSE的无偏估计。这些指标数值越低,表示模型越好。

  1. AIC(Akaike‘s Information Criteria)的基本思想是对模型中包含额外变量的行为进行惩罚。每当增加一个新变量时,它将增加一个惩罚值,从而达到控制额外预测变量的效果。AIC越低,模型越好。
  2. AICc是AIC的变体版本,主要是针对小样本量进行了校正。
  3. BIC(Bayesian information criteria)是AIC的另一种变体,它利用了贝叶斯原理,当模型中增加新的变量时,它将受到比AIC更大的惩罚。
  4. Mallows Cp:是AIC的另一种变体,有Colin Mallows发明,因而称为Mallows Cp。

通常,用于测量回归模型性能,以及用于模型间的比较的最常用指标是:校正R方,AIC,BIC和Cp。

2. 加载所需的R包

  • tidyverse 用于数据处理和可视化
  • modelr 用于计算回归模型性能指标
  • broom 轻松创建包含模型统计指标的整洁数据框(数据集)
library(tidyverse)
library(modelr)
library(broom)

3. 数据示例

我们将使用R的内置数据集swiss。

# 加载数据
library(datasets)
data("swiss")
# 查看数据(随机选取3行数据来查看)
sample_n(swiss, 3)
Fertility Agriculture Examination Education Catholic Infant.Mortality
1      77.3        89.7           5         2   100.00             18.3
2      76.1        35.3           9         7    90.57             26.6
3      83.1        45.1           6         9    84.84             22.2

研究问题:根据社会经济相关的多个指标(Agriculture,Examination,Education,Catholic,Infant.Mortality)预测生育力得分(Fertility)。

4. 建立回归模型

我们首先创建两个模型:

  1. 模型1,包括所有预测变量([.]表示数据swiss中所有出了结果变量Fertility外所有的变量)
  2. 模型2,包括除变量Examination外的所有预测变量([.-Examination]表示所有的变量,减去Examination)
model1 <- lm(Fertility ~., data = swiss)
model2 <- lm(Fertility ~. -Examination, data = swiss)

5. 评估模型性能

有许多用于评估模型质量的R函数和软件包,包括:

5.1 Stats软件包

  • summary() [stats 软件包中],返回R平方,调整后的R方和RSE
  • AIC()和BIC()[stats 软件包中],分别计算AIC和BIC
summary(model1)
AIC(model1)
BIC(model1)

5.2 modelr软件包

  • rsquare(),rmse()和mae()[modelr软件包中],分别计算R2,RMSE和MAE。
library(modelr)
data.frame(R2 = rsquare(model1, data = swiss),RMSE = rmse(model1, data = swiss),MAE = mae(model1, data = swiss)
)

5.3 caret软件包

  • R2(),RMSE()并MAE()[caret软件包中],分别计算R2,RMSE和MAE。
library(caret)
predictions <- model1 %>% 
predict(swiss)
data.frame(R2 = R2(predictions, swiss$Fertility),RMSE = RMSE(predictions, swiss$Fertility),MAE = MAE(predictions, swiss$Fertility)
)

5.4 broom软件包

  • glance() [broom软件包中],可以一次性计算所有的指标:R2,调整后的R方,sigma(RSE),AIC,BIC。
library(broom)
glance(model1)

5.5 手动计算

  • 手动计算R2,RMSE和MAE:
swiss %>%add_predictions(model1) %>%summarise(R2 = cor(Fertility, pred)^2,MSE = mean((Fertility - pred)^2),RMSE = sqrt(MSE),MAE = mean(abs(Fertility - pred)))

6. 比较回归模型的性能

在这里,我们将使用该函数glance()来简单比较两个模型的整体质量:

# 计算model 1的各个参数
glance(model1) %>%dplyr::select(adj.r.squared, sigma, AIC, BIC, p.value)
##   adj.r.squared sigma AIC BIC  p.value
## 1         0.671  7.17 326 339 5.59e-10
# 计算model 2的各个参数
glance(model2) %>%dplyr::select(adj.r.squared, sigma, AIC, BIC, p.value)
##   adj.r.squared sigma AIC BIC  p.value
## 1         0.671  7.17 325 336 1.72e-10

从上面的输出中可以看出:

  1. 这两个模型的调整后的R方(0.67)完全相同,这意味着它们在解释结果(此处为生育力得分Fertility)方面是等效的。此外,它们具有相同的残留标准误差(RSE或sigma = 7.17)。但是,模型2比模型1更简单,因为它包含更少的变量。在统计学中,有一个原则就是,如果简单跟复杂效果一样,永远默认简单模型更好。
  2. 模型2的AIC和BIC低于模型1的AIC和BIC。在模型比较中,具有更低AIC和BIC分数的模型是首选。
  3. 最后,模型2的统计p值低于模型1的统计p值。这意味着模型2在统计上比模型1显著性差异更大,这也与上述结论一致。

请注意,RMSE和RSE的度量单位与结果变量是相同的。将RSE除以结果变量的平均值将得到预测误差率,该误差率应尽可能小:

sigma(model1)/mean(swiss$Fertility)
## [1] 0.102

在我们的示例中,平均预测错误率是10%。

7. 总结

请注意,以上例子中,这些回归指标都是对内部数据性能进行评价。即,它们是根据用于构建回归模型的相同数据计算得出的。他们表示的是该模型与现有数据(训练数据集)的拟合程度,但并不衡量模型与新的测试数据集的拟合程度。

通常,我们并不十分在乎模型在训练数据上的效果如何。我们更在乎的是,我们建的模型对另一个完全独立的测试数据集的预测准确性。

但是,并不是每个研究都能找个一个或者多个相对独立的测试数据集,因此,我们有了交叉验证法和自举重采样(bootstrap-resampling)验证来对该模型对测试数据集的预测准确性进行评估。

我们将在第四十二和四十三讲中进行解说。

参考内容:

1. Alboukadel Kassambara, Machine Learning Essentials: Practical Guide in R

如果您觉得我说的对您有帮助,请点赞让我感到您的支持,您的支持是我写作最大的动力~

ijournal:高颜值的期刊检索网站,助您快速找到理想目标期刊(weixin小程序也上线了哦)

投必得:全专业中英文论文润色编辑助力您的论文快速发表,点击了解业务详情

e2a9cbab0b9dbefcd6f8877c03197a47.png

专栏传送门:

投必得科研软件安装使用手册;投必得:SCI期刊介绍与选择;投必得,教你写论文;投必得统计分析大讲堂;投必得科研生活解忧杂货店

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

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

相关文章

python 常用包_Python常用指引

Python常用指引Python常用指引的形式来源于Linux文档项目的常用指引章节&#xff0c;是一系列独立、指定主题并尝试完全覆盖该主题的文章集合。致力于提供比Python库参考帮助更详尽的文档。Python 3 是 Python 的未来&#xff0c;但 Python 2 仍处于活跃使用阶段&#xff0c;最…

读取当前linux进程内存_(笔记)Linux上的内存分配

作者: LemonNan原文: https://juejin.im/post/5ee3c34a518825430c3ad31d前言本篇是对Linux内存分配的一个学习笔记.程序内存结构下面是在 Linux/x86-32 中典型的一个进程内存结构文本段包含了进程运行的程序机器语言指令. 文本段具有只读属性, 以防止进程通过勘误指针意外修改自…

php改成IP连接数据库,thinkphp,pdo连接数据库,host自动被替换成了本机ip

class DBAccess extends PDO{ private $charset; // 数据库字符集public $cacheDir_cache_$98sdf29fw!d#s4fef/; public $prename; public $time; function __construct($dsn, $user, $password){ try{ parent::__construct($dsn, $user, $pa…

django开源电子文档管理系统_「开源推荐」BookStack v2.8 发布,简洁美观的在线文档管理系统

程序介绍BookStack&#xff0c;基于 Mindoc、使用Go语言的Beego框架开发的功能类似GitBook和看云的在线文档管理系统&#xff0c;拥有简洁美观的页面布局&#xff0c;实现了文档采集、导入、电子书生成以及版本控制等强大的文档功能&#xff0c;并推出了配套的开源微信小程序 B…

matlab 随机森林算法_随机森林算法

随机森林是一种灵活&#xff0c;易于使用的机器学习算法&#xff0c;即使没有超参数调整&#xff0c;也能在大多数情况下产生出色的结果。它也是最常用的算法之一&#xff0c;因为它简单&#xff0c;并且可以用于分类和回归任务。在这篇文章中&#xff0c;您将学习随机森林算法…

opengl 纹理贴到对应的位置_一步步学OpenGL(27) -《公告牌技术与几何着色器》

教程 27公告牌技术与几何着色器原文&#xff1a; http://ogldev.atspace.co.uk/www/tutorial27/tutorial27.htmlCSDN完整版专栏&#xff1a; https://blog.csdn.net/cordova/article/category/9266966背景从最初的一系列教程我们已经应用过了顶点着色器和片段着色器&#xff0c…

python 当前目录_virtualenvwrapper打造多版本Python环境

前言面对多个 Python 开发项目时&#xff0c;需要针对不同的项目创建相应的开发环境。通常情况下&#xff0c;使用 virtualenv 创建一个虚拟的独立 Python 环境&#xff0c;但是 virtualenv 创建的环境相对分散不便于管理。这里推荐使用 virtualenvwrapper 来创建集中的便于管理…

oracle装了客户端怎么登陆账号,分享Oracle 11G Client 客户端安装步骤(图文详解)...

Oracle 11G Client 客户端安装步骤&#xff0c;具体如下&#xff1a;下载地址&#xff1a;http://www.gimoo.net/database/167737.html先将下载下来的ZIP文件解压&#xff0c;并运行setup.exe文件。执行到第四步之后&#xff0c;出现错误&#xff0c;直接点全部忽略就可以了。把…

python与excel互通_【python】python vs Excel ( 与mysql数据库之间的交互)

【python】python vs Excel ( 与mysql数据库之间的交互) 通过python与mysql数据库做交互 到目前为止大部分案例的演示数据都是基于文件进行读取的。那么python如何跟数据库之间做交互才是未来我们真正需要关心的。因为我们的数据最终还是要存储到数据库中去的。 python与数据库…

基于matlab的车牌识别系统程序,基于matlab的车牌识别系统的设计(附程序).doc

基于matlab的车牌识别系统的设计(附程序).doc 1车牌识别系统的设计1&#xff0e;摘要&#xff1a;汽车牌照自动识别系统是制约道路交通智能化的重要因素,包括车牌定位、字符分割和字符识别三个主要部分。本文首先确定车辆牌照在原始图像中的水平位置和垂直位置,从而定位车辆牌照…

python英文词云代码_使用python实现个性化词云的方法

先上图片词云图 需要模板 pip install jieba pip install wordcloud 还需要安装另外两个东西这两个我也不太懂借鉴百度写上去的 pip install scipy pip install matplotlib 因为用ubuntu系统所有没有windows那么麻烦&#xff0c;也没有那么多报错 看到好多人制作自己的词云有没…

linux监测node进程,通过node_exporter监控linux服务器一

前言&#xff1a;node_exporter用于监控*nux系统&#xff0c;使用go编写的收集器prometheus服务器&#xff1a;192.168.199.222监控服务器 192.168.199.221在192.168.199.221下载node_exporterwget https://github.com/prometheus/node_exporter/releases/download/v*/node_exp…

k8s 离线安装_阿里开源 k8s 事件通知服务

背景在 Kubernetes 开源生态中&#xff0c;资源监控有 metrics-server、Prometheus等&#xff0c;但这些监控并不能实时推送 Kubernetes 事件&#xff0c;监控准确性也不足。当 kubernetes 集群中发生 Pod因为 OOM 、拉取不到镜像、健康检查不通过等错误导致重启&#xff0c;集…

kali linux解密栅栏密码,最详细bugku加密小白解法---持续更新!

bugku加密&#xff01;安排本文持续更新1 摩斯密码2 栅栏密码3 Ook密码4 brain密码5 easycrypto密码6 base647 散乱的密文8 凯撒密码9 一段base6410 &#xff01;&#xff1f;11 []-12 奇怪的密码--凯撒变式13 托马斯杰斐逊--转轮加密14 伪加密15 告诉你个秘密16 这不是MD517 贝…

linux命令 重定向%3e,linux输出信息调试信息重定向

在运行linux的时候有所有的调试信息可以分为三个部分1、bootloader输出信息U-Boot 1.3.2(Nov 19 2016 - 22:02:08)DRAM: 64 MBFlash: 512 kBNAND: 64 MiBIn: serialOut: serialErr: serialHit any key to stop autoboot: 0[yqliu2410 #] tftpFound DM9000 ID:90000a46 at addre…

360加固一键脱壳工具2020_如何脱壳加固过的Apk并利用其API“走近数据库”

0x00 寻找突破口打开首页,emm就一个登录页面,没了随便写点东西提交看看天生手欠的我一不小心就多输了一个单引号WDNMD,除了数字和字母其他都不行?这叫我怎么测?刚刚要放弃,就在这时,首页的一个二维码吸引了我正是安卓端的软件,眼前一亮,仿佛找到了打开新世界的大门开开心心地…

python 函数递归_Python零基础之三元表达式、函数递归、匿名函数教程!超级详细!...

目录一、三元表达式二、函数递归 递归调用的定义递归分为两个阶段&#xff1a;递归&#xff0c;回溯三、匿名函数 什么是匿名函数&#xff1f;有名字的函数与匿名函数的对比lambda匿名函数的应用四、内置函数 #注意&#xff1a;内置函数id()可以返回一个对象的身份&#xff0c;…

linux 内核空间占用cpu百分比过高,linux下分析java程序占用CPU、内存过高

一、CPU过高分析1)使用TOP命令查看CPU、内存使用状态可以发现CPU占用主要分为两部分&#xff0c;一部分为系统内核空间占用CPU百分比&#xff0c;一部分为用户空间占用CPU百分比。其中CPU状态中标示id的为空闲CPU百分比。当空闲CPU百分比越低&#xff0c;说明CPU占用率越高。2)…

springboot 获取application参数_LOOK ! SpringBoot的外部化配置最全解析

本篇要点介绍各种配置方式的优先级。介绍各种外部化配置方式。介绍yaml的格式及原理。介绍如何绑定并测试类型安全的属性配置。介绍ConfigurationProperties与Value的区别。一、SpringBoot官方文档对于外部化配置的介绍及作用顺序SpringBoot支持多种外部化配置&#xff0c;以便…

spark入门_入门必读 | Spark 论文导读

Resilient Distributed Datasets: A fault-tolerant abstraction for in-Memory cluster computing&#xff0c; 是讲述 Spark RDD 的基础论文&#xff0c;通读论文能给我们带来全景的 Spark 知识面摘要&#xff1a;RDD,全称Resilient Distributed Dataset,可伸缩性数据集。使用…