线性回归计算器
在线线性回归计算器可粘贴 x、y 两列数据,计算一元回归方程、R²、显著性检验与残差,并估计指定 x 处的预测值、置信区间和预测区间。
分别粘贴 x(自变量)和 y(因变量)两列数字,两列个数必须相同、顺序一一对应。
支持逗号、空格、换行分隔,可填小数与负数。
个数必须与 x 列相同;第 1 个 y 对应第 1 个 x,依此类推。至少 3 对数据。
决定显著性判定的 α(= 1 − 置信水平)以及斜率、截距与预测区间的宽度。95%(α = 0.05)是论文与报告的默认口径。
填一个 x 值,得到回归预测 ŷ、均值置信区间与单点预测区间;留空则不做预测。
判定系数 R² = 0.980982,即 y 的总变动约有 98.10% 能由 x 的线性关系解释,其余来自模型之外的因素;调整后 R² = 0.977813。 斜率 b = 3.385862,含义是 x 每增加 1 个单位,y 平均增加 3.385862 个单位;截距 a = 17.500736,是 x = 0 时的拟合值。
斜率检验:t = 17.592556(df = 6),p = 0.000002 < α = 0.05,在 95% 水平上可以认为 x 对 y 有线性影响。 斜率的 95% 置信区间为 2.914929 ~ 3.856794,区间不含 0,与显著性结论一致。
当 x = 10 时,预测值 ŷ = 51.359352;均值的 95% 置信区间为 49.313369 ~ 53.405335, 单个新观测的 95% 预测区间为 46.562541 ~ 56.156163(后者更宽,因为还要算上单点自身的波动)。
方差分解:SST = 991.875 = SSR 973.011966 + SSE 18.863034;剩余标准误 s = 1.773087(即预测值与实测值的典型偏差,单位与 y 相同)。回归解释的是相关而非因果, 方向与机制需要另行论证。
残差表(逐点拟合值 ŷ 与偏差 y−ŷ)
| # | x | y 实测 | ŷ 拟合 | 残差 y−ŷ |
|---|---|---|---|---|
| 1 | 2 | 25 | 24.272459 | 0.727541 |
| 2 | 4 | 29 | 31.044183 | -2.044183 |
| 3 | 5 | 37 | 34.430044 | 2.569956 |
| 4 | 6 | 36 | 37.815906 | -1.815906 |
| 5 | 8 | 46 | 44.587629 | 1.412371 |
| 6 | 9 | 47 | 47.97349 | -0.97349 |
| 7 | 11 | 54 | 54.745214 | -0.745214 |
| 8 | 12 | 59 | 58.131075 | 0.868925 |
残差为正表示该点落在回归直线上方(实测高于预测)。最小二乘保证残差之和为 0, 因此不能用残差平均值判断拟合好坏,要看 SSE、s 与残差有没有系统性的形状: 围绕 0 随机散布才说明直线合适。
怎么用
- 分清自变量 x 与因变量 y:线性回归不像相关系数那样对称:换一下位置,算出来的直线会不同。把「先发生的、可控的、用来解释的」变量放 x(广告投入、施肥量、工龄、温度),把「想预测的结果」放 y(销售额、产量、工资、能耗)。两列必须成对:第 1 个 x 与第 1 个 y 来自同一家门店、同一天或同一次试验,缺失值请把整对一起删掉。
- 录入两列数据:默认「两列分开填」:x 列和 y 列分别粘贴进两个输入框,逗号、空格、换行分隔都可以。从 Excel/WPS 整块复制的两列,切到「成对粘贴」,每行「2 25」或「2,25」贴进来,制表符会自动识别。至少 3 对数据(只有 2 对时直线必然穿过两点,残差恒为 0,做不了检验)。
- 选置信水平并填预测点:90%、95%、99% 三档,决定显著性判定的 α(α = 1 − 置信水平)以及斜率、截距与预测区间的宽度,论文与行业报告默认 95%。「预测点 x」选填:填一个 x 就同时给出预测值 ŷ、均值置信区间和单点预测区间;留空则只拟合不预测。
- 读回归方程与 R²:顶部大字是最小二乘回归方程 y = a + bx。斜率 b 的含义是「x 每增加 1 个单位,y 平均变化 b 个单位」,单位是 y 的单位除以 x 的单位;截距 a 是 x = 0 时的拟合值,样本里 x 取不到 0 时它只是个数学定位点,不要硬解释。R² 是判定系数,表示 y 的总变动有多大比例被这条直线解释。
- 看斜率显著性与置信区间:结果给出斜率的标准误、t 值、自由度 df = n − 2、双尾 p 值和置信区间。p < α 表示有证据认为总体回归斜率不为 0,即 x 与 y 存在显著线性关联;斜率区间跨过 0,说明现有数据还不能确定线性关联的方向。一元回归里 F 统计量恰好等于斜率 t 的平方,两者结论必然一致,不用分别判读。
- 对照残差表再下结论:展开残差表逐点看 y − ŷ:残差应当围绕 0 无规律散布。若残差随 x 呈现明显的 U 形或倒 U 形,说明关系是曲线的,直线拟合不合适;若某一行残差远大于其余(超过 2~3 倍剩余标准误 s),先回头核对这个点是不是录错或属于异常情况。最后记住回归只描述相关,因果要另行论证。
核心要点
线性回归计算器用最小二乘法在成对数据中拟合一元回归直线,并同步给出 拟合优度、显著性和预测不确定性。回归方程为 y = a + bx,其中 b = Σ(x−x̄)(y−ȳ) / Σ(x−x̄)²、a = ȳ − b·x̄,这条直线必定经过 (x̄, ȳ)。
- 拟合优度:
R² = SSR/SST = 1 − SSE/SST, 表示 y 的变动被直线解释的比例;一元回归里R² = r²。「多少算好」按学科定,没有通用门槛。 - 显著性:
t = b/SE(b),SE(b) = s/√Sxx,df = n − 2,双尾p < α才算显著;一元回归的F = t²,两者结论必然一致。 - 两种区间别混用:均值置信区间估计直线本身的位置, 预测区间估计单个新观测;当
s > 0时,后者更宽,严格共线时 两种区间都退化为同一个点。 - 典型算例:本页默认数据
n = 8,y = 17.500736 + 3.385862x、R² ≈ 0.980982、s ≈ 1.773087、t ≈ 17.592556、p ≈ 0.0000022,x = 10处ŷ ≈ 51.359352。 - 三条红线:x 与 y 不能随便对调(回归不对称); 样本 x 范围之外是外推,区间会迅速变宽;回归只描述相关,不证明因果。
原理与公式
线性回归(linear regression)用一条直线概括两个变量的关系:给定自变量 x,预测因变量 y 的平均水平。与相关系数不同, 回归是有方向的——它假定用 x 解释 y,因此把 x 和 y 调换会得到 另一条直线。
最小二乘法:为什么是这两个公式
对任意一条候选直线 y = a + bx,第 i 个点的残差是 eᵢ = yᵢ − a − bxᵢ。最小二乘法选取使Q(a, b) = Σ(yᵢ − a − bxᵢ)²
最小的一组 (a, b)。令 ∂Q/∂a = 0 与 ∂Q/∂b = 0,整理得正规方程组,解出b = Sxy / Sxx = Σ(x−x̄)(y−ȳ) / Σ(x−x̄)²a = ȳ − b·x̄
等价的原始和写法(更适合手算与查表核对):b = (nΣxy − Σx·Σy) / (nΣx² − (Σx)²)
由 a = ȳ − b·x̄ 可见,回归直线必定经过点 (x̄, ȳ), 这是复核截距最快的办法。之所以取平方而不是绝对值,一是正负残差不会相互抵消, 二是平方处处可导、能解出上面这样的闭式解。
方差分解与判定系数 R²
把 y 的总变动拆成「直线解释的」与「没解释的」两部分:SST = Σ(y−ȳ)² = Σ(ŷ−ȳ)² + Σ(y−ŷ)² = SSR + SSER² = SSR/SST = 1 − SSE/SST,取值 0 ≤ R² ≤ 1
一元回归里 R² 恰好等于皮尔逊相关系数的平方,斜率的符号与 r 的符号相同。变量个数不同的模型之间比较要用调整后 R²:调整后 R² = 1 − (1−R²)·(n−1)/(n−2)(一元回归的分母自由度为 n − 2)
剩余标准误 s = √(SSE/(n−2)) 与 y 同单位,是「预测值与实测值的典型 偏差」,比无量纲的 R² 更适合回答「这条线能预测得多准」。
系数的标准误、t 检验与置信区间
SE(b) = s/√Sxx,SE(a) = s·√(1/n + x̄²/Sxx)
原假设 H₀: β = 0(x 对 y 无线性影响),统计量t = b/SE(b),df = n − 2,查双尾 p 值
系数区间:b ± t*·SE(b)、a ± t*·SE(a)(t* 为 df = n−2 的双尾临界值,95% 且 df = 6 时为 2.446912)
从 SE(b) = s/√Sxx 可以直接读出三条经验:数据越散(s 大)、 x 取值跨度越窄(Sxx 小)、样本越小,斜率就越不容易显著。
方差分析(ANOVA)与 F 检验
MSR = SSR/1,MSE = SSE/(n−2),F = MSR/MSE,服从 F(1, n−2)
一元回归里 F 恒等于斜率 t 的平方, 所以两个检验的 p 值完全相同,不必分别判读; F 检验的价值要到多元回归(同时检验全部系数)才体现出来。
预测:两种区间的区别
在新的 x₀ 处,点预测都是 ŷ = a + b·x₀, 但区间有两种,差别只在根号里多不多一个 1:
均值置信区间(直线本身在哪):ŷ ± t*·s·√(1/n + (x₀−x̄)²/Sxx)
单点预测区间(下一个观测落在哪):ŷ ± t*·s·√(1 + 1/n + (x₀−x̄)²/Sxx)
括号里的 1/n + (x₀−x̄)²/Sxx 叫杠杆,在 x₀ = x̄ 处最小、随距离平方增长——这正是外推越远区间越宽的原因。 样本量再大,预测区间也不会收缩到一个点,因为个体波动 s 不会消失。
计算示例(本页默认数据)
月广告投入 x = 2, 4, 5, 6, 8, 9, 11, 12(万元), 月销售额 y = 25, 29, 37, 36, 46, 47, 54, 59(万元),n = 8:Σx = 57,Σy = 333,Σxy = 2660,Σx² = 491,Σy² = 14853x̄ = 7.125,ȳ = 41.625Sxx = 84.875,Syy = SST = 991.875,Sxy = 287.375b = 287.375 / 84.875 = 3.385862,a = 41.625 − 3.385862 × 7.125 = 17.500736SSR = b·Sxy = 973.011966,SSE = 18.863034,R² = 0.980982,调整后 R² = 0.977813MSE = 18.863034/6 = 3.143839,s = 1.773087,SE(b) = 0.19246t = 3.385862/0.19246 = 17.592556,df = 6,p ≈ 0.0000022 < 0.05 → 显著,F = t² = 309.498029斜率 95% 区间 = [2.914929, 3.856794](不含 0)x₀ = 10:ŷ = 51.359352, 均值区间 [49.313369, 53.405335], 预测区间 [46.562541, 56.156163]
适用前提与常见误用
最小二乘估计要求:观测相互独立、关系近似线性、残差方差齐性(同方差)、 无强影响的离群点;做 t 检验与区间估计还额外要求残差近似正态。常见误用有五类:
① 只看 R² 不看残差图——安斯库姆四重奏的四组数据(直线、曲线、 单个离群点、单个杠杆点)回归线与 R² 几乎一样,图形却完全不同;
② 外推——把样本 x 范围之外的预测当结论, 直线在那里是否成立没有任何数据支持;
③ 硬解释截距——x 取不到 0 时,a 只是直线在纵轴上的位置;
④ 把回归当因果——反向因果、混杂变量、样本选择偏差 都能造出漂亮的直线;
⑤ 弄反 x 与 y——回归不对称, 两条回归线的斜率之积等于 R²,只有 |r| = 1 时才重合。
精度与支持范围
两列数据以原始文本直接交给高精度十进制引擎,不经浮点转换; 所有和、均值与平方和都按偏差形式 Σ(x−x̄)² 累加, 而不是 Σx² − (Σx)²/n——后者在数值大而彼此接近时(如 100000001~100000005)会发生灾难性抵消,把真值 10 算成 0 甚至负数。p 值与临界值 t* 由不完全贝塔函数表示的 t 分布尾概率求得 (相对误差约 1e-13)。
「严格共线」与「近似共线」怎么区分:SSE 由恒等式 SSE = SST − SSR 得到,而 b = Sxy/Sxx 往往不是有限小数,因此严格共线的数据也会留下 工作精度量级(约 1e-40)的残渣。本工具不用固定阈值去「抹平」它: 当 SSE/SST 小到该减法已无有效位数时(≤ 1e-20), 改用一个不做除法的精确共线判定——取 x 最小与最大的两点为参照,逐点检验交叉乘积恒等式 (yᵢ−y₀)(x₁−x₀) = (xᵢ−x₀)(y₁−y₀)(在 120 位有效数字下进行)。
恒等式对每个点都成立,才判定严格共线:此时 SSE = 0、s = 0,t 的分母为 0, 本工具明确标注「检验无意义」而不是给出一个天文数字(斜率是否为有限小数不影响判定, 如 y = 5 + x/3)。只要有一点不成立,说明偏离是数据里真实存在的, 此时 SSE 会按残差原式 Σ((y−ȳ) − b(x−x̄))² 在同样的扩展精度下重算,保留非零 SSE 并照常给出 t、p 与区间, 同时提示「近似共线」——例如 x = 0,1,2,3 配 y = 0,1,2,3.0000000000000001,真实的 SSE = 3e-33 不会被当成 0。
支持范围:数据点数 3 ≤ n ≤ 100000; 单个数据绝对值上限 1e150;置信水平 90%、95%、99%; 残差表最多列出 200 行,回归本身始终使用全部数据。x 列所有数值相同(Sxx = 0)时斜率无定义, 会明确报错。所有计算在浏览器本地完成,不上传数据。
常见问题
- 线性回归方程怎么求?最小二乘法的 a、b 公式是什么?
- 一元线性回归求的是 y = a + bx 中的斜率 b 与截距 a,最小二乘法的目标是让残差平方和 Σ(y − a − bx)² 最小,对 a、b 求偏导并令其为 0,解得 b = Sxy/Sxx = Σ(x−x̄)(y−ȳ) / Σ(x−x̄)²,a = ȳ − b·x̄。适合手算的等价写法是 b = (nΣxy − Σx·Σy) / (nΣx² − (Σx)²)。四步走:① 算 x̄、ȳ;② 算 Σxy、Σx²(或逐点偏差乘积);③ 代入求 b;④ 用 a = ȳ − b·x̄ 求截距。以本页默认数据(月广告投入 x 万元、月销售额 y 万元,n = 8)为例:Σx = 57、Σy = 333、Σxy = 2660、Σx² = 491,b = (8×2660 − 57×333)/(8×491 − 57²) = 2299/679 ≈ 3.385862,a = 41.625 − 3.385862×7.125 ≈ 17.500736,回归方程为 y = 17.500736 + 3.385862x。注意最小二乘线必定经过点 (x̄, ȳ),可用它复核截距。
- R² 判定系数怎么算?R² 多少算好、0.98 算高吗?
- R² = SSR/SST = 1 − SSE/SST,其中 SST = Σ(y−ȳ)² 是 y 的总变动,SSR 是回归直线解释掉的部分,SSE = Σ(y−ŷ)² 是没解释掉的残差平方和;一元回归里 R² 恰好等于相关系数 r 的平方,取值 0~1。本页默认数据 SST = 991.875、SSR ≈ 973.011966、SSE ≈ 18.863034,R² ≈ 0.980982,含义是销售额的变动约有 98.1% 能被广告投入的线性关系解释。「多少算好」没有统一门槛,完全取决于学科:物理、化学的标定曲线常要求 R² > 0.99,工程与计量经济的时间序列 0.8~0.9 很常见,而社会科学、市场营销、医学观察数据里 R² = 0.3 就可能是有价值的发现。三点提醒:① R² 高不等于模型对,把明显的曲线关系硬拟合成直线,R² 也可能很高;② R² 只会随变量增多而上升,做多元回归时要看调整后 R²(本页也给出,公式为 1 − (1−R²)(n−1)/(n−2));③ R² 高低与因果无关。
- 线性回归系数显著性怎么看?p 值大于 0.05、斜率不显著说明什么?
- 斜率检验的原假设是「总体斜率 β = 0」,即 x 与 y 不存在线性关联。统计量 t = b/SE(b),其中 SE(b) = s/√Sxx、s = √(SSE/(n−2)) 是剩余标准误,自由度 df = n − 2,查双尾 p 值,p < α(常用 0.05)表示有证据认为总体回归斜率不为 0。等价判据是斜率的置信区间是否跨过 0,跨过就是不显著。本页默认数据 s ≈ 1.773087、SE(b) ≈ 0.19246、t ≈ 17.592556、df = 6、p ≈ 0.0000022,95% 区间 [2.914929, 3.856794] 不含 0,说明 x 与 y 存在显著线性关联。斜率不显著通常来自四种情况:样本量太小(n 越小临界 t 越大,n = 5 时 df = 3,双尾 0.05 的临界 t 高达 3.182)、x 的取值跨度太窄导致 Sxx 太小、数据散得太开使 s 太大、以及两者本来就没有线性关系。不显著只说明「现有数据还不能拒绝斜率为 0」,不等于证明了没有关系。
- 线性回归的置信区间和预测区间有什么区别?预测某个 x 时该看哪一个?
- 两者回答的问题不同。均值置信区间估计的是「在 x₀ 处这条回归直线本身的位置」,即总体均值 E(y|x₀),公式为 ŷ ± t*·s·√(1/n + (x₀−x̄)²/Sxx);预测区间估计的是「在 x₀ 处再观测一个新个体,它的 y 会落在哪」,公式为 ŷ ± t*·s·√(1 + 1/n + (x₀−x̄)²/Sxx),根号里多出的那个 1 代表单个观测自身的随机波动。当剩余标准误 s 大于 0 时,预测区间比均值置信区间宽;严格共线、s = 0 时,两种区间都会退化为同一个点,此时区间推断没有实际意义。选哪个看你的问题:问「广告投入 10 万元的门店平均能做多少销售额」用置信区间;问「我这家店投 10 万元,销售额大概多少」用预测区间。本页默认数据在 x = 10 处 ŷ ≈ 51.359352,95% 均值置信区间 [49.313369, 53.405335],95% 预测区间 [46.562541, 56.156163]。两个区间都在 x = x̄ 处最窄,离 x̄ 越远越宽,这也是外推风险大的原因。
- 线性回归和相关系数有什么区别?x 和 y 调换位置结果一样吗?
- 相关系数 r 是对称的,衡量两个变量同步变动的紧密程度,无量纲,交换 x、y 完全不变;回归是不对称的,它假定用 x 解释 y,最小化的是 y 方向的残差,斜率 b = Sxy/Sxx 带单位(y 的单位/x 的单位)。把 x 与 y 调换,得到的是 x 对 y 的回归,斜率变成 Sxy/Syy,两条直线一般不重合——它们的斜率之积恰好等于 r²,只有 |r| = 1 时才合成同一条线。以本页默认数据为例,y 对 x 的斜率 ≈ 3.385862,x 对 y 的斜率 ≈ 0.289730,两者相乘 ≈ 0.980982,正是 R²。实操上:只想知道「两者有没有关系、有多紧」用相关系数;想写出方程、做预测、量化「x 每增加一个单位 y 变多少」就必须用回归,并且要先想清楚哪个变量该放在 x。
- 做线性回归至少需要几个数据点?数据不满足线性怎么办?
- 从代数上 2 个点就能定一条直线,但那条线必然穿过两点、残差恒为 0,自由度 df = n − 2 = 0,算不出剩余标准误、也做不了任何检验,所以本工具要求至少 3 对数据。实用上还要更宽松地看:小样本的斜率置信区间会宽得没有决策价值,做正式结论一般建议每个自变量至少 10~20 个观测。判断线性是否成立主要靠两样东西——散点图和残差表:残差应当围绕 0 随机散布,若随 x 呈 U 形或倒 U 形就是曲线关系,若离散程度随 x 增大而扩张(喇叭形)则是异方差。不满足线性时的常见处理:对 y 或 x 取对数(幂函数、指数增长常见)、改用多项式回归或非线性回归、按分组分别拟合。此外 x 列所有数值相同时 Sxx = 0,回归直线是竖直线、斜率无定义,本工具会直接报错而不是返回 0。
- R² = 1、数据看着完全落在一条直线上,为什么有时还给出 t 值和 p 值?
- 因为「显示出来的 R² 是 1」和「残差真的等于 0」是两件事。本工具把两种情况分开处理:① 严格共线——每个点都精确落在同一条直线上,此时 SSE = 0、剩余标准误 s = 0,t = b/SE(b) 的分母为 0,工具直接标注「显著性检验与区间估计在此没有意义」,并且这个判定与斜率是否为有限小数无关(y = 5 + x/3 一样算严格共线);② 近似共线——数据几乎在一条直线上,但确实有极小的真实偏离(常见于按公式生成后又四舍五入的数据、或小于测量精度的差异,例如 y = 0, 1, 2, 3.0000000000000001 这样只差 1e-16 的最后一位),此时 SSE 不为 0,只是小到 3e-33 这种量级,工具会保留真实的 SSE 并照常给出 t、p 与区间,同时提示「近似共线」。第二种情况下的 t 会大到 1e16 量级、p 小到接近 0,那不是「关系特别显著」,而是提醒你输入里带了无意义的尾数——请按数据真实的有效位数重新录入。另外 R² 显示为 1 也可能只是四舍五入到 6 位小数的结果(如 0.9999999 会显示成 1),要判断拟合是否真的完美,看 SSE 与 s 是不是 0 更可靠。
- 线性回归的斜率和截距怎么解释?截距为负数是不是算错了?
- 斜率 b 是「x 每增加 1 个单位,y 平均变化 b 个单位」,单位为 y 的单位除以 x 的单位。本页默认数据 b ≈ 3.385862,含义是广告每多投 1 万元,月销售额平均多约 3.39 万元——注意是「平均」且只在样本覆盖的 2~12 万元这个区间内有依据,不能推到投 100 万元。截距 a 是 x = 0 时的拟合值,只有当样本的 x 范围本身包含或贴近 0 时才有实际意义;本例 x 最小为 2 万元,a ≈ 17.500736 只表示直线在纵轴上的位置,不能直接读成「不投广告也能做 17.5 万元」。截距为负完全正常,它常见于 x 的取值远离 0 的数据(例如用身高预测体重、用工龄预测工资),只说明把直线延长回 x = 0 会落到轴下方,属于外推区域,不是计算错误;只有当负截距出现在 x 确实能取到 0 的场景(如剂量-反应、投入-产出从零开始)时,才提示模型设定需要检查,可考虑对数变换或强制过原点的回归。