Skip to main content
 首页 » 人工智能

线性回归模型度量参数2- Multiple R R-Squared adjusted R-squared

2022年07月19日156jackei

本文解释线性回归模型的一些度量参数及其之间的关系,并通过示例说明其计算过程。

模型度量参数概述

当我们使用回归模型时,通常在输出包括一些度量拟合程度的参数。

  • Multiple R
    多个变量之间多重相关性。

    对于简单线性回归模型,表示预测变量与响应变量之间的相关性;对于多重线性回归模型,响应变量的观测值和预测值之间的相关性。其平方值为R-Squared。

  • R-Squared

也称为决定系数,它是衡量线性回归模型拟合数据集的程度,表示一定比例响应变量的方差能够被预测变量解释。R-Squared 取值范围是0 ~ 1。R-Squared 值越高,模型拟合数据集越好。0 表示响应变量完全不能被预测变量解释,1表示响应变量可以完美无误被预测变量解释。

R-Squared = (Multiple R)^2

实际应用中,我们通常更关注R-Squared ,因为它表示预测变量能够解释响应变量的比例。但每当增加新的预测变量至模型时,即使该预测变量不其作用R-Squared值也会增加。因此需要引入挑战R-Squared。

  • Adjusted R-squared

Adjusted R-squared 是 R-squared 的修正版本,它调整计算回归模型中预测变量的数量。公式如下:

Adjusted R^2 = 1 – [(1-R^2)*(n-1)/(n-k-1)]
在这里插入图片描述

-R2: 预测模型的R-squared
-n: 观测值数量
-k: 预测变量数量

既然随着预测变量增加R-squared值总是增加,Adjusted R-squared 可以作为更有效的度量参数,它根据模型中预测因子的数量进行调整,表示模型的拟合程度。

为了更好理解上述度量参数,下面通过示例进行说明。

示例说明 Multiple R, R-Squared, Adjusted R-Squared

假设我们有下面数据集,共包括12位学生的考试成绩情况:

examResult <- data.frame(hours=c(1,1,2,2,1,2,2,3,3,4,4,5),  
                         c_score=c(65,78,76,76,79,80,81,84,88,85,96,90), 
                         e_score=c(58,61,62,65,65,68,72,74,78,85,90,95)) 
 
fit <- lm(e_score~., examResult) 
summary(fit) 
 
# Call: 
# lm(formula = e_score ~ ., data = examResult) 
#  
# Residuals: 
#     Min      1Q  Median      3Q     Max  
# -4.8846 -1.2972  0.0766  2.2901  3.0411  
#  
# Coefficients: 
#             Estimate Std. Error t value Pr(>|t|)     
# (Intercept)  17.1754    12.5562   1.368 0.204527     
# hours         6.3840     1.0867   5.874 0.000236 *** 
# c_score       0.4861     0.1794   2.709 0.024037 *   
# --- 
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
#  
# Residual standard error: 2.79 on 9 degrees of freedom 
# Multiple R-squared:  0.9558,	Adjusted R-squared:  0.946  
# F-statistic: 97.39 on 2 and 9 DF,  p-value: 7.996e-07 
 

上面输出没有Multiple R,对于多个预测变量,Multiple R即响应变量与预测变量之间的相关性,下面我们自己计算,然后再计算Multiple R的平方:

library(tidyverse) 
fit 
# Call: 
# lm(formula = e_score ~ ., data = examResult) 
#  
# Coefficients: 
# (Intercept)        hours      c_score   
#     17.1754       6.3840       0.4861   
examResult <- examResult %>% mutate(yp = ( 17.1754 + 6.3840 * hours + 0.4861 * c_score)) 
examResult 
 
#    hours c_score e_score      yp 
# 1      1      65      58 55.1559 
# 2      1      78      61 61.4752 
# 3      2      76      62 66.8870 
# 4      2      76      65 66.8870 
# 5      1      79      65 61.9613 
# 6      2      80      68 68.8314 
# 7      2      81      72 69.3175 
# 8      3      84      74 77.1598 
# 9      3      88      78 79.1042 
# 10     4      85      85 84.0299 
# 11     4      96      90 89.3770 
# 12     5      90      95 92.8444 
 
mr <- cor(examResult$e_score, examResult$yp) 
mr 
 
# [1] 0.9776676 
 
R2 <- mr*mr 
R2 
 
# [1] 0.955834 
 
# Adjusted R2 = 1 – [(1-R2)*(n-1)/(n-k-1)]  
AR2 <- 1-((1-R2)*(12-1))/(12-2-1) 
AR2 
# [1] 0.9460193 

AR2 表示根据模型中预测变量数调整的R方值。

这些度量参数非常有用。假如另一个回归模型使用10个预测变量,对应的调整R方值位0.88。对比两者带两个预测参数的模型更好,因为它的调整R方值更高(值为0.946)。


本文参考链接:https://blog.csdn.net/neweastsun/article/details/122766516