计算机系统应用教程网站

网站首页 > 技术文章 正文

一文读懂回归模型准确度评价指标:R-square, AIC, BIC, Cp

btikc 2024-10-25 10:53:49 技术文章 26 ℃ 0 评论

本文中,我将描述用于衡量回归模型性能的不同统计回归指标。并且使用R语言,提供实际的例子-在社会经济指标的基础上预测生育率得分-用于比较两个模型的性能,以便为我们的数据选择最佳的模型。

常见评价指标概览

在回归模型中,最常见的评价指标包括。

R方 R-squared(R2),即预测变量所能解释的结果变化的比例。在多元回归模型中,R2对应于观察到的结果值和模型预测值之间的平方关系。R-squared越高,模型就越好。

均方根误差 Root Mean Squared Error(RMSE),衡量模型在预测一个观察结果时产生的平均误差。在数学上,RMSE是平均平方误差(MSE)的平方根,即观察到的实际结果值与模型预测值之间的平均平方差。因此,MSE=平均值((观察值-预测值)^2),RMSE=sqrt(MSE)。RMSE越低,模型就越好。

残差标准误差 Residual Standard Error(RSE),也被称为模型西格玛,是RMSE的一个变体,根据模型中的预测因子数量进行调整。RSE越低,模型就越好。在实践中,RMSE和RSE之间的差异非常小,特别是对于大型多变量数据。

平均绝对误差 Mean Absolute Error(MAE),与RMSE一样,MAE测量预测误差。在数学上,它是观察和预测结果之间的平均绝对差异,MAE = mean(abs(observeds - predicteds))。与RMSE相比,MAE对离群值不太敏感。

以上指标的问题在于,它们对于模型中包含额外变量的敏感性,即使这些变量在解释结果方面没有显著的贡献。换句话说,即使这些变量没有实际意义,将它们包含在模型中仍会增加 R方 并降低 RMSE。因此,我们需要更稳健的指标来指导模型选择。
关于R方,有一个经过调整的版本称为
adjusted R方,它为模型中过多变量进行了调整。
此外,还有四个重要的指标 - AIC,AICc,BIC和Mallows Cp - 常用于模型评估和选择。这些指标是模型预测误差MSE的无偏估计。这些指标越低,模型越好。

AIC是(Akaike's Information Criteria)的缩写,是日本统计学家Hirotugu Akaike在1970年制定的一个指标。AIC的基本思想是惩罚将额外变量纳入模型的行为。它增加了一个惩罚,在包括额外条款时增加了误差。AIC越低,模型就越好。

AICc是AIC的另一个版本,针对小样本量进行修正。

BICBayesian information criteria)是AIC的一个变种,对包括额外变量的模型有更强的惩罚。

Mallows Cp 是由Colin Mallows开发的AIC的一个变体。

加载所需的R包

tidyverse用于数据处理和可视化

modelr提供了用于计算回归模型性能指标的辅助函数

broom创建了一个包含模型统计指标的整洁的数据框架

library(tidyverse)
library(modelr)
library(broom)

实例数据

我们将使用R内置的 swiss数据集,该数据集在社会经济指标的基础上预测生育率得分。

# Load the data
data("swiss")
# Inspect the data
sample_n(swiss, 3)

建立回归模型

我们首先建立两个模型。

模型1,包括所有预测因素

模型2,包括除 "考试 "变量外的所有预测因素

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

评估模型质量

有许多R函数和包用于评估模型质量,包括。

summary()函数,返回R平方、adjusted R-squared、RSE

AIC()和BIC()函数,分别计算AIC和BIC

summary(model1)
AIC(model1)
BIC(model1)

rsquare(), rmse()和mae()[函数],分别计算R2, RMSE和MAE。

library(modelr)
data.frame(
  R2 = rsquare(model1, data = swiss),
  RMSE = rmse(model1, data = swiss),
  MAE = mae(model1, data = swiss)
)

R2(), RMSE()和MAE()[函数],分别计算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)
)

比较回归模型的性能

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

模型一

# Metrics for 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

模型2

# Metrics for 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

从上面的输出可以看出:

这两个模型有完全相同的调整后的R2(0.67),意味着它们在解释生育率得分结果的效果是相等的。此外,它们的残差标准误差(RSE或sigma=7.17)也相同。然而,模型2比模型1更简单,因为它包含的变量更少。在同等条件下,简单的模型在统计学上总是更好。

模型2的AIC和BIC都比模型1的低。在模型比较策略中,AIC和BIC得分最低的模型是首选。

最后,模型2的F统计量p.值低于模型1的。这意味着与模型1相比,模型2在统计上更有意义,这与上述结论一致。

请注意,RMSE和RSE的测量尺度与结果变量相同。用RSE除以结果变量的平均值就可以得到预测错误率,这个错误率应该尽可能的小。

sigma(model1)/mean(swiss$Fertility)

结果

## [1] 0.102

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

讨论

本章介绍了评估回归模型整体性能的几个指标。

最重要的指标是调整后的R-square、RMSE、AIC和BIC。这些指标也被用来作为模型比较和优化模型选择的基础。

请注意,这些回归指标都是内部衡量标准,即它们是在用于建立回归模型的相同数据上计算出来的。它们告诉你模型与手中的数据(称为训练数据集)的匹配程度。

一般来说,我们并不真正关心该方法在训练数据上的效果如何。相反,我们感兴趣的是,当我们将方法应用于以前未见过的测试数据时,我们获得的预测的准确性。

然而,测试数据并不总是可用的,这使得测试误差非常难以估计。在这种情况下,交叉验证(cross-validation)和自举法(bootstrap-resampling)等方法被应用于使用训练数据来估计测试误差(或预测错误率)。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表