R语言 lm() 函数实战:3步手动计算 Multiple R、R-Squared 与 Adjusted R-Squared

R语言 lm() 函数实战:3步手动计算 Multiple R、R-Squared 与 Adjusted R-Squared
R语言实战手动计算线性回归三大核心指标1. 理解线性回归的核心指标在数据分析领域线性回归是最基础也最常用的统计方法之一。当我们使用R语言的lm()函数拟合线性回归模型后通常会调用summary()函数查看模型摘要。其中Multiple R、R-Squared和Adjusted R-Squared是评估模型拟合优度的三个核心指标。Multiple R多重相关系数衡量的是预测变量与响应变量之间的线性关系强度。对于简单线性回归只有一个预测变量它就是预测变量和响应变量的Pearson相关系数对于多元线性回归它表示响应变量的观测值与模型预测值之间的相关系数。R-Squared决定系数是Multiple R的平方值表示模型能够解释的响应变量方差比例。它的取值范围在0到1之间0表示模型完全不能解释响应变量的变异1表示模型完美解释响应变量的所有变异R-Squared的计算公式为R² 1 - (SSE/SST)其中SSESum of Squared Errors是残差平方和SSTTotal Sum of Squares是总平方和Adjusted R-Squared调整决定系数是对R-Squared的修正考虑了模型中预测变量的数量。随着预测变量的增加R-Squared总会增大即使新增变量与响应变量无关这可能导致过拟合。Adjusted R-Squared通过惩罚多余变量来解决这个问题其计算公式为Adj_R² 1 - [(1-R²)*(n-1)/(n-k-1)]其中n是观测值数量k是预测变量数量提示在实际应用中当比较不同模型的解释力时Adjusted R-Squared比R-Squared更为可靠特别是当模型包含不同数量的预测变量时。2. 准备示例数据为了演示如何手动计算这些指标我们使用一个教育领域的示例数据集包含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) )我们以考试成绩(e_score)作为响应变量学习时间(hours)和课程成绩(c_score)作为预测变量拟合多元线性回归模型fit - lm(e_score ~ hours c_score, data examResult) summary(fit)3. 手动计算Multiple Rsummary()函数的输出中并不直接显示Multiple R的值对于多元回归但我们可以手动计算响应变量观测值与模型预测值之间的相关系数来得到它。首先获取模型的预测值# 提取模型系数 coef(fit) # (Intercept) hours c_score # 17.175357 6.383963 0.486071 # 计算预测值 examResult$predicted - 17.1754 6.3840 * examResult$hours 0.4861 * examResult$c_score然后计算观测值与预测值的相关系数multiple_r - cor(examResult$e_score, examResult$predicted) multiple_r # [1] 0.97766764. 手动计算R-SquaredR-Squared可以直接通过Multiple R的平方得到r_squared - multiple_r^2 r_squared # [1] 0.955834或者通过方差分解公式计算# 计算总平方和(SST) mean_y - mean(examResult$e_score) SST - sum((examResult$e_score - mean_y)^2) # 计算残差平方和(SSE) SSE - sum((examResult$e_score - examResult$predicted)^2) # 计算R-Squared r_squared - 1 - (SSE/SST) r_squared # [1] 0.9558345. 手动计算Adjusted R-Squared根据调整R方的公式我们需要知道样本量(n)和预测变量数量(k)n - nrow(examResult) # 样本量12 k - 2 # 两个预测变量hours和c_score adjusted_r_squared - 1 - ((1 - r_squared)*(n-1)/(n-k-1)) adjusted_r_squared # [1] 0.94601936. 验证手动计算结果为了验证我们的手动计算是否正确可以将其与summary()函数的输出进行比较summary(fit) # ... # Multiple R-squared: 0.9558, Adjusted R-squared: 0.946 # ...对比结果显示手动计算的R-Squared: 0.955834 ≈ 0.9558手动计算的Adjusted R-Squared: 0.9460193 ≈ 0.946两者基本一致验证了我们的计算方法是正确的。7. 指标解释与应用理解这些指标的实际意义对于模型评估至关重要Multiple R (0.978): 表明预测变量与响应变量之间存在很强的线性关系。R-Squared (0.956): 模型可以解释考试成绩95.6%的变异拟合效果非常好。Adjusted R-Squared (0.946): 考虑变量数量后的解释力为94.6%与R-Squared接近表明新增的预测变量对模型有实质贡献。注意当预测变量增加时如果新增变量对模型没有实质贡献Adjusted R-Squared可能会下降这可以作为变量选择的依据。下表总结了三个指标的特点和用途指标计算公式特点主要用途Multiple R观测值与预测值的相关系数反映线性关系强度[-1,1]评估预测变量与响应变量的关联强度R-Squared1-SSE/SST 或 (Multiple R)^2[0,1]值越大拟合越好评估模型解释变异的能力Adjusted R-Squared1-[(1-R²)(n-1)/(n-k-1)]惩罚多余变量≤ R²比较不同复杂度模型的解释力8. 深入理解指标背后的数学原理为了更深入地理解这些指标我们需要了解一些关键的统计量总平方和(SST): 衡量响应变量的总变异SST Σ(y_i - ȳ)^2回归平方和(SSR): 衡量模型解释的变异SSR Σ(ŷ_i - ȳ)^2残差平方和(SSE): 衡量模型未能解释的变异SSE Σ(y_i - ŷ_i)^2它们之间的关系是SST SSR SSER-Squared实际上就是SSR与SST的比值R² SSR/SST 1 - SSE/SST在R中我们可以直接从模型对象中获取这些统计量# 获取ANOVA表 anova_result - anova(fit) anova_result # Analysis of Variance Table # # Response: e_score # Df Sum Sq Mean Sq F value Pr(F) # hours 1 698.34 698.34 121.680 7.996e-07 *** # c_score 1 41.29 41.29 7.195 0.02404 * # Residuals 9 51.66 5.74 # --- SSR - sum(anova_result$Sum Sq[1:2]) # 回归平方和 SSE - anova_result$Sum Sq[3] # 残差平方和 SST - SSR SSE # 总平方和 # 验证R-Squared计算 r_squared_verify - SSR / SST r_squared_verify # 应与之前结果一致9. 模型诊断与指标局限性虽然R-Squared和Adjusted R-Squared是评估模型拟合优度的重要指标但它们也有局限性不能反映模型是否正确设定即使R-Squared很高如果模型忽略了重要变量或包含不必要变量仍可能导致错误推断。对异常值敏感极端值可能人为地抬高或降低R-Squared值。不适用于非线性关系这些指标专为线性模型设计不适用于评估非线性模型的拟合优度。因此在实际应用中我们还应结合其他诊断方法# 绘制诊断图 par(mfrow c(2, 2)) plot(fit) par(mfrow c(1, 1))关键诊断检查包括残差是否随机分布无模式残差是否符合正态分布是否存在有影响的观测点方差是否恒定10. 实际应用建议基于这些指标在实际数据分析中可以遵循以下实践建议变量选择当比较不同模型时优先选择Adjusted R-Squared较高的模型。模型简化如果加入新变量后Adjusted R-Squared没有显著提高考虑简化模型。结果报告在学术论文或报告中应同时报告R-Squared和Adjusted R-Squared值。结合其他指标不要仅依赖这些指标还应考虑AIC、BIC、残差标准误等其他评估标准。# 计算AIC和BIC AIC(fit) BIC(fit) # 残差标准误 sigma(fit)领域知识结合统计指标只是工具最终模型选择还应考虑实际问题的背景知识和理论支持。通过手动计算这些指标我们不仅能够更深入地理解线性回归模型的评估原理还能在模型出现问题时更快地定位原因。这种理解对于数据科学家和统计分析师来说至关重要它使我们能够超越黑箱操作真正掌握模型评估的本质。