线性回归 · 深度手册
分类:预测类 | 难度:★☆☆ 入门 | 编号:
linreg
一、这是什么(一句话用途)
一个因变量对一个自变量的趋势拟合 / 预测
二、核心思想
线性回归是最基础的统计建模方法,假设因变量 与自变量 之间存在近似的线性关系 ,目标是找到一条直线使所有样本点到直线的"竖直距离"(残差)平方和最小。它的威力在于简单、可解释、有完整的统计推断理论(显著性、置信区间、决定系数),是几乎所有预测模型的起点和基准线(baseline)。即使真实关系非线性,先拟合一条线性基线也常是建模第一步。
三、数学原理与推导
设直线 ,残差平方和:
对 分别求偏导:
整理得正规方程组,解出:
决定系数 ,越接近 1 拟合越好; 即 每变动一单位对 的边际效应。
四、建模 / 求解步骤
- 散点观察线性趋势
- 最小二乘估计 a,b
- 显著性检验(R²/ p)
- 预测并给置信区间
五、关键公式速查
b=Cov(x,y)/Var(x);a=ȳ−b·x̄;R²=1−SSE/SST
六、典型示例
广告费 → 销售额,拟合直线做下期预测。
完整算例(数字演示,照着算一遍)
场景:广告投放 x(万) 与 销售额 y(万):(1,2),(2,3),(3,5),(4,6),(5,8)。
最小二乘:斜率 b=Σ(x-x̄)(y-ȳ)/Σ(x-x̄)²=1.5,截距 a=ȳ-bx̄=0.4 → ŷ=0.4+1.5x。
结论:广告每增 1 万,销售额平均增 1.5 万;R²≈0.97。
七、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","linreg.csv"))
x = df["ad"].to_numpy(dtype=float); y = df["sales"].to_numpy(dtype=float)
b, a = np.polyfit(x, y, 1)
yh = a + b*x
ss_res = ((y-yh)**2).sum(); ss_tot = ((y-y.mean())**2).sum()
print("y = %.2f + %.2f x"%(a,b))
print("R^2 = %.3f"%(1-ss_res/ss_tot))
print("广告费=120 时预测销量=%.1f"%(a+b*120))
配套文件:
py_linreg.py(需 numpy / pandas;与下方数据集配套练习)
八、MATLAB 实现示例
%% 线性回归示例(MATLAB/Octave)
df = readtable('..\datasets\linreg.csv');
x = table2array(df(:,1)); y = table2array(df(:,2));
p = polyfit(x,y,1); a=p(2); b=p(1);
yh = a+b*x;
R2 = 1 - sum((y-yh).^2)/sum((y-mean(y)).^2);
fprintf('y=%.2f+%.2f x, R2=%.3f\n', a,b,R2);
fprintf('x=120 -> y=%.1f\n', a+b*120);
配套文件:
m_linreg.m(基础 MATLAB / Octave 即可运行)
九、练手数据集(可下载)
广告费(x)与销售额(y)的 15 组观测。用于一元线性回归、求斜率与 R²、做下期预测。
- 字段:ad, sales
- 行数:15 行
- 下载:
linreg.csv
十、常见误区与避坑清单
- 先画散点看是否线性
- 异常点强烈影响
- 别外推太远
十一、结果怎么解读
R² 越接近 1 拟合越好;b 为边际效应。
十二、常与谁搭配
多变量用 multireg。
十三、论文写作技巧(怎么把它写进论文)
把 线性回归 写进论文,核心不是堆公式,而是讲清「为什么用它、结果怎么呈现、如何对比」三件事。
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.
十四、相关手册(延伸阅读)
- 多元回归 · 预测类
十五、本手册导航
- 上一篇:灰色预测 GM(1,1) · 预测类
- 下一篇:指数平滑 · 预测类
- 返回:算法深度手册库 | 资料站首页
本手册由「算法深度手册生成器」自动产出,配套提供 Python / MATLAB 双版本示例与可下载练手数据集。