第四十一讲 R-判断回归模型性能的指标

转载自https://mp.weixin.qq.com/s/GPXi6CrMjiY6HsTfDppLBw

第四十一讲 R-判断回归模型性能的指标

原创 跟投必得学 投必得医学 2020-07-13 07:38

图片

图片

 

在“R与生物统计专题”中,我们会从介绍R的基本知识展开到生物统计原理及其在R中的实现。以从浅入深,层层递进的形式在投必得医学公众号更新。

 

在前面几讲,我们介绍了线性回归及R的实现(第四十讲 R-线性回归:预测模型及可信区间、第三十九讲 R-线性回归:自变量中存在分类变量时、第三十八讲 R-线性回归模型的假设条件检验)。

 

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

 

 

 

1. 模型性能指标

 

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

图片

 

 

 R平方(R2),它是预测变量能解释结果变量变异的百分比例,范围为0到1。R2是观察到的实际结果与模型构建的预测值之间的相关系数的平方。R平方越高,模型越好。

 

 

 

图片

 

 

 均方根误差(rootmean squared error, RMSE),它测量的是模型预测的结果与实际观察结果间的平均误差。从数学上讲,RMSE是均方误差(mean squared error, MSE)的平方根,该均方根是观察到的实际值与模型预测的值之间的均方差。因此,MSE = mean((observeds -predicteds)^2)和RMSE = sqrt(MSE)。RMSE越低,模型越好。

 

 

 

图片

 

 

 残差标准误/残留标准误差(residual standard error, RSE),也称为模型sigma(model sigma),是针对模型中预测变量数量进行调整的RMSE。RSE越低,模型越好。实际上,RMSE和RSE之间的差异很小,尤其是对于多元数据(含有多个预测变量的模型)而言。

 

 

 

图片

 

 

 像RMSE一样,平均绝对误差(mean absolute error, MAE)也可以测量预测误差。在数学上,它是观察到的结果与预测的结果之间的平均绝对差MAE = mean(abs(observeds -predicteds))。与RMSE相比,MAE对异常值的敏感性较低。

 

 

 

图片

 

 

 F统计量:它提供了模型的整体重要性。它评估至少一个预测变量是否具有非零系数。F统计量越大,对应的统计显着性p值(p <0.05)越小。

 

 

 

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

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

 

关于R2,有一个调整预测变量数的指标,称为调整后的R方(Adjusted R-squared),它有效地考虑了模型中的预测变量数量的不同,从而使各个模型可比较。此外,还有其他四个重要指标- AIC,AICc,BIC和MallowsCp –它们通常用于模型评估和选择,是MSE的无偏估计。这些指标数值越低,表示模型越好。

1. AIC(Akaike‘sInformation Criteria)的基本思想是对模型中包含额外变量的行为进行惩罚。每当增加一个新变量时,它将增加一个惩罚值,从而达到控制额外预测变量的效果。AIC越低,模型越好。

2. AICc是AIC的变体版本,主要是针对小样本量进行了校正。

3. BIC(Bayesianinformation 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

 77.3 89.7 5 2 100.00 18.3

 76.1 35.3 9 7 90.57 26.6

 83.1 45.1 6 9 84.84 22.2

 

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

 

4. 建立回归模型

 

我们首先创建两个模型:

 

1. 模型1,包括所有预测变量([.]表示数据swiss中所有出了结果变量Fertility外所有的变量)

 

model1<-lm(Fertility~.,data=swiss)

 

2. 模型2,包括除变量Examination外的所有预测变量([.-Examination]表示所有的变量,减去Examination)

 

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 LearningEssentials: Practical Guide in R.

 

图片

好了,本期讲解就先到这里。小伙伴们赶紧试起来吧。

在之后的更新中,我们会进一步为您介绍R的入门,以及常用生物统计方法和R实现。欢迎关注,投必得医学手把手带您走入R和生物统计的世界。

提前预告一下,下一讲我们将学习R-线性回归:R-回归预测模型的交叉验证。

图片

第一讲 R-基本介绍及安装

第二讲 R-编程基础-运算、数据类型和向量等基本介绍

第三讲 R编程基础-矩阵和数据框

第四讲 R-描述性统计分析

第五讲 R-数据描述性统计分析作图

第六讲 R-数据正态分布检验

第七讲 R-相关性分析及作图

第八讲 R-单样本T检验

第九讲 R-单样本Wilcoxon检验

第十讲 R-两独立样本t检验

第十一讲 R-两独立样本Wilcoxon检验

第十二讲 R-配对样本t检验

第十三讲 R-配对样本Wilcoxon检验

第十四讲 R-单因素方差分析1

第十五讲 R-单因素方差分析2

第十六讲 R-双向方差分析1

第十七讲 R-双向方差分析2

第十八讲 R-多元方差分析

第十九讲 F检验:两样本方差比较

第二十讲 多样本间的方差比较

第二十一讲 单比例的Z检验

第二十二讲 两比例Z检验

第二十三讲 R-卡方检验之拟合度检验

第二十四讲 R-卡方检验之独立性检验

第二十五讲 生存分析基础概念

第二十六讲 R-生存分析:绘制KM生存曲线

第二十七讲 R-生存分析:生存函数的假设检验

第二十八讲 R-Cox比例风险模型(1)

第二十九讲 R-Cox比例风险模型(2)

第三十讲 R-Cox比例风险模型的假设检验条件

第三十一讲 R-机器学习与回归概述

第三十二讲 R-回归分析概述

第三十三讲 R-简单线性回归模型(1)

第三十四讲 R-简单线性回归模型(2)

第三十五讲 R-多元线性回归

第三十六讲 R-多元线性回归中的交互作用及更优模型选择

第三十七讲 R-多元线性回归中的多重共线性和方差膨胀因子

第三十八讲 R-线性回归模型的假设条件检验

第三十九讲 R-线性回归:自变量中存在分类变量时

第四十讲 R-线性回归:预测模型及可信区间

当然啦,R语言的掌握是在长期训练中慢慢积累的。一个人学习太累,不妨加入“R与统计交流群”,和数百位硕博一起学习。

快扫二维码撩客服,带你进入投必得医学交流群,让我们共同进步

图片

- END 

长按二维码关注「投必得医学」,更多科研干货在等你

阅读 310

文章已于2020-08-01修改

 

投必得医学

140篇原创内容

1个朋友关注

收藏此内容的人还喜欢

ChatGPT的胜利,是概率论的胜利,也是贝叶斯定理的胜利 

 

 

 

 

 

本文链接:https://my.lmcjl.com/post/11350.html

展开阅读全文

4 评论

留下您的评论.