决定系数与方差解释率

本文讲述了如何通过决定系数(R²或r²)评估回归线在预测一个变量时的表现,它表示预测变量解释总方差的比例。决定系数同时涵盖了驱动和预测的双重含义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何评估回归线究竟在以一个变量预测另一个变量的工作中做得怎么样,可以将已解释的方差除以总方差,这个比值就叫做决定系数(Coefficient of determination),它代表了总方差被预测变量所解释或决定的比率。决定系数等于r2(Squared Pearson’s Correlation Coeficient),r2也称为“方差解释率”。

“解释”在回归模型中对于XY包含两层含义,X驱动YX预测Y。简言之,“解释”有驱动和预测的两层含义。
### 方差贡献的定义及其计方法 方差贡献通常通过决定系数(Coefficient of Determination),也称为 \( R^2 \),来衡量。它反映了回归模型能够解释的因变量总变异数的比例。具体来说,\( R^2 \) 可以通过以下公式计得出: \[ R^2 = 1 - \frac{SSE}{SST} \] 其中: - \( SSE \) (Sum of Squared Errors):残差平方和,表示未能被模型解释的部分。 - \( SST \) (Total Sum of Squares):总离差平方和,表示因变量的实际值其均值之间的差异程度。 #### 计过程解析 给定一组观测数据 \( y \) 和对应的预测值 \( \hat{y} \),可以通过以下步骤计 \( R^2 \): 1. **计总离差平方和 (SST)**: \[ SST = \sum_{i=1}^{n}(y_i - \bar{y})^2 \] 其中,\( n \) 表示样本数量,\( y_i \) 是第 \( i \) 个实际观测值,而 \( \bar{y} \) 则代表所有观测值的平均数[^1]。 2. **计残差平方和 (SSE)**: \[ SSE = \sum_{i=1}^{n}(y_i - \hat{y}_i)^2 \] 这里的 \( \hat{y}_i \) 是依据所建立的回归方程得到的估计值[^2]。 3. **计决定系数 (\( R^2 \))**: 将上述两个量代入公式即可得: \[ R^2 = 1 - \frac{\text{SSE}}{\text{SST}} \] 如果 \( R^2 \) 接近于 1,则表明该回归模型对数据具有较高的解释能力;相反,若接近于 0,则意味着模型几乎无法解释目标变量的变化趋势[^3]。 以下是基于 Python 的实现代码片段用于演示这一流程: ```python import numpy as np def calculate_r_squared(y_true, y_pred): """ Calculate the coefficient of determination (R-squared). Parameters: y_true : array-like, shape (n_samples,) Ground truth (correct) target values. y_pred : array-like, shape (n_samples,) Estimated target values. Returns: r_squared : float Coefficient of determination (R-squared value). """ # Convert inputs to NumPy arrays for computation efficiency and consistency y_true = np.array(y_true) y_pred = np.array(y_pred) # Compute total sum of squares (TSS or SST) mean_y = np.mean(y_true) sst = np.sum((y_true - mean_y)**2) # Compute residual sum of squares (RSS or SSE) sse = np.sum((y_true - y_pred)**2) # Determine R-squared using formula r_squared = 1 - (sse / sst) return r_squared # Example usage with fabricated data points actual_values = [1.1, 2.0, 2.9, 4.0] predicted_values = [1.0, 2.5, 3.0, 3.8] result = calculate_r_squared(actual_values, predicted_values) print(f"Coefficient of Determination (R²): {result:.4f}") ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值