MCM520 ← 资料站首页 多元回归 · 深度手册 打开交互阅读器 →

多元回归 · 深度手册

分类:预测类 | 难度:★★☆ 进阶 | 编号:multireg

一、这是什么(一句话用途)

一个因变量对多个自变量的解释 / 预测

二、核心思想

多元线性回归把一元推广到多个自变量,形式 y=Xβ+εy=X\beta+\varepsilon,其中 XX 是包含截距列的 n×pn\times p 设计矩阵。它一次性估计所有自变量对因变量的联合边际效应,并可用偏回归系数比较"控制其他变量后,某变量单独的影响"。建模核心难点不在拟合本身,而在变量筛选、多重共线性诊断与残差假设检验——一个系数显著但 VIF 爆表的模型是不可信的。

三、数学原理与推导

模型 y=Xβ+εy=X\beta+\varepsilon,ε∼N(0,σ2I)\varepsilon\sim N(0,\sigma^2 I)。SSE=(y−Xβ)T(y−Xβ)(y-X\beta)^T(y-X\beta)。对 β\beta 求导并令为零:

−2XT(y−Xβ)=0 ⇒ XTXβ=XTy -2X^T(y-X\beta)=0\ \Rightarrow\ X^T X\beta=X^T y

当 XTXX^T X 可逆(列满秩、无完全共线性)时:

β^=(XTX)−1XTy \hat{\beta}=(X^T X)^{-1}X^T y

若存在多重共线性使 XTXX^T X 近似奇异,改用岭回归:

β^ridge=(XTX+λI)−1XTy, λ>0 \hat{\beta}_{\text{ridge}}=(X^T X+\lambda I)^{-1}X^T y,\ \lambda>0

决定系数 R2=1−∥y−Xβ^∥2∥y−yˉ1∥2R^2=1-\frac{\|y-X\hat{\beta}\|^2}{\|y-\bar{y}\mathbf{1}\|^2};用 VIFj=11−Rj2_j=\frac{1}{1-R_j^2}(Rj2R_j^2 为第 jj 变量对其余变量回归的 R2R^2)诊断共线性,VIF>10 视为严重。

四、建模 / 求解步骤

  1. 变量筛选 / 共线性诊断(VIF)
  2. 标准化或中心化
  3. OLS 估计 β
  4. 检验显著性与 R²
  5. 残差诊断

五、关键公式速查

β=(XᵀX)^(−1)Xᵀy;R²=1−SSE/SST

六、典型示例

房价 ~ 面积 + 房龄 + 地段 多变量回归。

完整算例(数字演示,照着算一遍)

场景:y 由 x1(价格)、x2(营销投入) 解释,10 组样本。

估计:ŷ=20.3−1.2x1+0.8x2,R²=0.86;x1 系数显著为负(提价降销量),x2 为正。

结论:营销投入的边际拉动小于降价的边际损失,优先控价。

七、Python 实现示例

import os, numpy as np
import pandas as pd
HERE = os.path.dirname(os.path.abspath(__file__))
df = pd.read_csv(os.path.join(HERE,"..","datasets","multireg.csv"))
y = df["price"].to_numpy(dtype=float)
X = df.drop(columns=["price"]).to_numpy(dtype=float)
X = (X-X.mean(0))/X.std(0)
X = np.hstack([np.ones((len(X),1)), X])
beta, *_ = np.linalg.lstsq(X, y, rcond=None)
print("系数(截距,面积,房龄,地段):", np.round(beta,3))
yh = X@beta
print("R^2=%.3f"%(1-((y-X@beta)**2).sum()/((y-y.mean())**2).sum()))

配套文件:py_multireg.py(需 numpy / pandas;与下方数据集配套练习)

八、MATLAB 实现示例

%% 多元回归示例(MATLAB/Octave)
df = readtable('..\datasets\multireg.csv');
y = table2array(df(:,1)); X = table2array(df(:,2:end));
X = (X-mean(X,1))./std(X,1); X = [ones(height(X),1), X];
beta = X\y;
fprintf('系数: '); disp(beta');
R2 = 1 - sum((y-X*beta).^2)/sum((y-mean(y)).^2);
fprintf('R2=%.3f\n', R2);

配套文件:m_multireg.m(基础 MATLAB / Octave 即可运行)

九、练手数据集(可下载)

房价(y)与面积/房龄/地段(3 自变量)的 20 组观测。用于多元线性回归与系数解读。

  • 字段:price, area, age, loc
  • 行数:20 行
  • 下载:multireg.csv

十、常见误区与避坑清单

  • 多重共线性(VIF>10)
  • 遗漏重要变量
  • 异方差影响推断

十一、结果怎么解读

系数 = 边际效应;看 p 与 R²。

十二、常与谁搭配

降维可用 pca_reg。

十三、论文写作技巧(怎么把它写进论文)

把 多元回归 写进论文,核心不是堆公式,而是讲清「为什么用它、结果怎么呈现、如何对比」三件事。

1. 动机怎么写(为什么用它而不是别的)

先说明你的数据具有时间 / 序列依赖,或需要由已知推断未知,因此采用预测类方法。交代输入特征与预测目标,并说明为何选 多元回归(如非线性强、含季节性、小样本等),对比朴素法(如移动平均)点出优势。

2. 结果怎么写(图表与指标)

结果必须给「预测值 vs 真实值」对比曲线 + 误差指标表(MAE / RMSE / MAPE),最好附训练 / 验证分段。若有多个模型,用一张表横向对比误差,突出 多元回归 更优。

3. 可直接套用的写作话术

  • 中文模板:针对<问题>,本文采用 多元回归 进行一个因变量对多个自变量的解释 / 预测。该方法能够自动刻画<优势>,在处理<场景>时相较<对比方法>更具<特点>。
  • 英文模板:To address , we adopt 多元回归 to 一个因变量对多个自变量的解释 / 预测. Benefiting from its ability to , it outperforms on .

4. 同类易踩的写作坑

不可只报 R² 不看外推;时间序列要显式说明训练 / 测试切分方式,避免用未来信息泄漏(look-ahead bias)。

5. 典型论文段落范例(可直接参考 / 改写)

下面是一段可直接套用的论文表述,已按本算法定制,填空处(…)替换成你的真实数值即可。

由于日用电量具有明显的时间依赖与周期波动,本文采用 多元回归 对未来 30 天负荷进行预测,以 RMSE=…、MAPE=… 的精度优于 ARIMA 基线,验证了模型对非线性趋势的捕捉能力。

Given the strong temporal dependence and periodic fluctuation of daily load, we employ 多元回归 to forecast the next 30 days, achieving RMSE=… and MAPE=… and outperforming the ARIMA baseline, which confirms its strength in capturing nonlinear trends.

十四、相关手册(延伸阅读)

十五、本手册导航


本手册由「算法深度手册生成器」自动产出,配套提供 Python / MATLAB 双版本示例与可下载练手数据集。