协方差计算器

协方差衡量两列成对数据一起偏离各自平均值的方向与量级;填入 x、y 两列即可同屏得到样本协方差(÷ n−1,Excel COVARIANCE.S 口径)与总体协方差(÷ n,COVARIANCE.P 口径)、偏差乘积和、两组标准差、皮尔逊相关系数与逐对偏差明细,也可与相关系数互相换算。

计算方式

手上有两列成对数据选「原始数据」;已经有了协方差或相关系数、想在两者之间 换算,选后两种。切换模式不会清空已填的内容,x、y 的标准差两栏由后两种模式共用; 「原始数据」算出的结果不会自动填进换算模式——那会把内部的高精度值降级成 6 位小数展示值再参与二次计算。

支持逗号、空格、换行、顿号、分号分隔,可填小数与负数。共识别 3 个数。

个数必须与 x 列相同、顺序一一对应:第 1 个 y 配第 1 个 x。至少 2 对。共识别 3 个数。

样本协方差 cov(x, y) ÷ (n−1)
9.666667

正协方差:x 增大时 y 也倾向增大 3 对数据的偏差乘积和 SP = 19.333333, 除以 n−1 = 2 得样本协方差 9.666667, 除以 n = 3 得总体协方差 6.444444。 协方差有量纲,它的绝对大小不能跨数据集比大小;要比强弱看相关系数 r = 0.835766

总体协方差 ÷ n6.444444
偏差乘积和 Σ(x−x̄)(y−ȳ)19.333333
数据对数 n3
x 平均值 x̄4.666667
y 平均值 ȳ9.333333
样本标准差 sx ÷ (n−1)3.05505
样本标准差 sy ÷ (n−1)3.785939
总体标准差 σx ÷ n2.494438
总体标准差 σy ÷ n3.091206
皮尔逊相关系数 r0.835766
1. (2, 5)-2.666667-4.33333311.555556
2. (4, 11)-0.6666671.666667-1.111111
3. (8, 12)3.3333332.6666678.888889

明细里的每个数都是各自独立舍入到 6 位小数的展示值逐行相加可能与上面的「偏差乘积和」差最后一位(例如 2, 4, 8 与 5, 11, 12 那组:三行乘积相加是 19.333334,而 SP 显示 19.333333)。 这是展示层舍入的必然结果,不是算错——内部全程用高精度十进制运算,中途不做任何舍入。

读结果前先看这六条口径:协方差有量纲,单位是「x 的单位 × y 的单位」——x 是身高(cm)、y 是体重(kg)时, 协方差的单位就是 cm·kg;把 y 从「万元」换成「元」,协方差会乘 10000, 而相关系数一动不动。所以协方差的绝对大小不能跨数据集比较相关强弱, 要比强弱只能看无量纲的 r; ② 样本协方差除以 n−1,总体协方差除以 n:前者是对总体协方差的无偏估计 (贝塞尔校正),手上是抽样数据时用它,对应 Excel 的 COVARIANCE.S; 后者把手上的数据当作全部个体,对应 COVARIANCE.P; ③ 换算模式的三个数必须同口径:样本协方差配样本标准差、总体协方差配总体标准差。 三个孤立数字里没有任何信息能让工具判断你混没混口径,所以本页不猜也不自动换算; ④ 协方差为 0 只说明没有线性关系,不等于两个变量独立——y = x² 的数据(x = −2, −1, 0, 1, 2;y = 4, 1, 0, 1, 4)协方差精确为 0, 但 y 完全由 x 决定; ⑤ 逐对明细里的每个数都是各自独立舍入到 6 位小数的展示值, 逐行相加可能与「偏差乘积和」差最后一位,这是展示层的必然结果,不是算错; ⑥ 相关不等于因果,一个协方差数值也反映不出分组结构与离群点—— 分组数据可能出现整体与分组结论相反的情况,请先看散点图再下结论。

怎么用

  1. 选计算方式手上有两列成对数据(每个个体既有 x 又有 y),选「原始数据」,工具直接算协方差。已经有了协方差和两个标准差、想知道相关系数是多少,选「协方差 → 相关系数」。已经有了相关系数和两个标准差、要把协方差反算出来填进组合方差公式,选「相关系数 → 协方差」。三种方式的输入各自保留,切换不会清空。
  2. 填两列成对数据把 x 列和 y 列分别粘进两个输入框,支持逗号、空格、换行、顿号、分号分隔,可填小数和负数。两列个数必须相同、顺序一一对应:第 1 个 y 配第 1 个 x。至少要 2 对;个数对不上会直接报错,工具不会截断到较短的一列,也不会补 0——这和 Excel 里 COVARIANCE.S 返回 #N/A 是同一个口径。
  3. 读两个协方差:除数不同,是两个量顶部大字是样本协方差(除以 n−1),下面一行是总体协方差(除以 n)。手上的数据是从更大总体里抽出来的样本,用样本协方差(对应 Excel 的 COVARIANCE.S);手上的数据就是研究的全部个体,用总体协方差(对应 COVARIANCE.P)。两个数之比恒为 n/(n−1),不是谁算错了。
  4. 看逐对偏差明细核对手算明细表逐行列出第 i 对数据、x−x̄、y−ȳ 和两者的乘积,正好对应手算时列的那张表。注意每一格都是各自独立舍入到 6 位小数的展示值,逐行相加可能与「偏差乘积和」差最后一位——内部全程按高精度十进制计算,中途不做任何舍入。数据超过 200 对时明细会省略,统计量仍按全部数据算。
  5. 用相关系数判断强弱,别用协方差协方差有量纲,单位是「x 的单位 × y 的单位」:把 y 从万元换成元,协方差会乘 10000,而相关系数一动不动。所以两个数据集的协方差大小没法直接比,要比强弱只能看结果里那个无量纲的 r。协方差只告诉你方向:正数表示 x 增大时 y 倾向增大,负数表示反向,0 表示没有线性关系。
  6. 换算模式:三个数必须同口径填协方差(或相关系数)和 x、y 的两个标准差,工具按 r = cov ÷ (sx·sy) 或 cov = r·sx·sy 换算,并给出理论上界 sx·sy。关键前提是三个数同口径:样本协方差配样本标准差(都用 n−1),总体协方差配总体标准差(都用 n)。三个孤立数字里没有任何信息能让工具判断你混没混口径,所以本页不猜也不自动换算。协方差的绝对值超过 sx·sy 时会直接报错,不会把它压成 r = 1。

核心要点

协方差把两列成对数据各自对平均值的偏差相乘再平均:为正说明 x 增大时 y 倾向增大,为负则相反。 公式是 cov = Σ(x−x̄)(y−ȳ) ÷ 除数,除数取 n−1 得样本协方差、取 n 得总体协方差。把 x = 2, 4, 8 与 y = 5, 11, 12 代进去,样本协方差是 9.666667、总体协方差是 6.444444,两者相差正好 n/(n−1) = 1.5 倍。

  • 协方差有量纲,不能跨数据集比大小:单位是「x 的单位 × y 的单位」,y 从万元换成元,协方差乘 10000,而相关系数一动不动。
  • 两个除数是两个量,不是两套打架的口径:抽样数据用 n−1(Excel COVARIANCE.S),全部个体用 nCOVARIANCE.P),本页两个都算、同屏展示。
  • 负协方差只表示方向:x = 1, 2, 4, 7、y = 20, 18, 15, 7 的样本协方差是 -15,说明 x 增大时 y 倾向减小;强弱要看 r = -0.99195
  • 协方差为 0 ≠ 独立y = x² 的数据协方差精确为 0,可 y 完全由 x 决定。
  • 一步换算r = cov ÷ (sx·sy)cov = r·sx·sy,前提是三个数同口径;理论上界 |cov| ≤ sx·sy

原理与公式

协方差回答的是一个方向性的问题:x 比自己的平均值高的时候,y 是不是也 倾向于比自己的平均值高。把每一对数据的两个偏差乘起来——同方向偏离得 正积,反方向偏离得负积——再把这些乘积加总平均,就是协方差。

公式

记成对数据为 (x₁,y₁) … (xₙ,yₙ)n ≥ 2

① 两列均值x̄ = Σxᵢ / nȳ = Σyᵢ / n
② 逐对偏差与乘积dxᵢ = xᵢ − x̄dyᵢ = yᵢ − ȳpᵢ = dxᵢ·dyᵢ
③ 偏差乘积和SP = Σpᵢ = Σ(xᵢ−x̄)(yᵢ−ȳ)
④ 样本协方差s_xy = SP / (n − 1)(贝塞尔校正,对总体协方差的无偏估计;Excel COVARIANCE.S
⑤ 总体协方差σ_xy = SP / n(Excel COVARIANCE.P
⑥ 相关系数r = SP / √(SSx·SSy),其中 SSx = Σdxᵢ²SSy = Σdyᵢ²
⑦ 两个换算方向r = cov / (sx·sy)cov = r·sx·sy

④ 与 ⑤ 的比值恒为 n/(n−1),所以两个数字永远同号、只差一个固定 倍数。⑥ 与 ⑦ 是同一件事的两种写法:把 s_xy = SP/(n−1)sx = √(SSx/(n−1))sy = √(SSy/(n−1)) 代进 cov/(sx·sy)n−1 正好约掉,回到 SP/√(SSx·SSy)——这也是为什么样本口径和总体口径算出同一个 r

为什么偏差要显式作差

代数上 Σ(x−x̄)(y−ȳ) 等于 Σxy − ΣxΣy/n,很多教材用后者 当「简化算法」。本工具不用它:当一列是六位数的房价这种「又大又 接近」的数时,ΣxyΣxΣy/n 是两个几乎相等的巨大数字, 相减会发生灾难性抵消,把有效位数吃光。本页一律按 ②③ 先算偏差再求和。

计算示例一:样本口径 9.666667

x = 2, 4, 8;y = 5, 11, 12:
x̄ = 14/3ȳ = 28/3
SP = (2−14/3)(5−28/3) + (4−14/3)(11−28/3) + (8−14/3)(12−28/3) = 174/9 = 19.333333
样本协方差 = 19.3333… ÷ 2 = 9.666667总体协方差 = 19.3333… ÷ 3 = 6.444444
sx = 3.05505sy = 3.785939r = 174/(12√301) = 0.835766

计算示例二:总体口径 5.2(含小数列)

x = 3, 2, 4, 5, 6;y = 9, 7, 1.2, 15, 17:
x̄ = 4ȳ = 9.84SP = 26(精确)
总体协方差 = 26 ÷ 5 = 5.2样本协方差 = 26 ÷ 4 = 6.5
σx = 1.414214σy = 5.68r = 26/√1613.12 = 0.647351
6.5 ÷ (1.581139 × 6.350433) 5.2 ÷ (1.414214 × 5.68) 都会回到同一个 r

计算示例三:负协方差与换单位

x = 1, 2, 4, 7;y = 20, 18, 15, 7:
SP = −45样本协方差 = −15总体协方差 = −11.25r = −45/(7√42) = −0.99195
把 y 的单位从「万元」换成「元」(每个数乘 10000):样本协方差 = −150000总体协方差 = −112500,而 r 仍然是 −0.99195。这一条就是「协方差不能跨数据集比大小」的直接演示。

结果怎么读

  • 符号看方向:正数表示 x 增大时 y 倾向增大,负数表示反向, 0 表示没有线性关系。
  • 大小不看强弱:协方差的量级由单位决定,判断强弱请看 r(无量纲,恒在 −1 到 1 之间)。
  • 0 不等于独立y = x² 的协方差精确为 0, 但两者完全不独立。协方差只看得见直线形状的关联。
  • n = 2 时 r 恒为 ±1:两点必成一线,这个 1 说明点太少, 不说明关系强。
  • 某列是常数时 r 无定义:标准差为 0,r 变成 0/0; 但协方差仍然精确为 0 并正常给出。

协方差在别处的用法

协方差不是只用来看方向。最小二乘回归的斜率就是 b = SP / SSx(本页不出回归线,见站内线性回归计算器); 两资产组合的方差是 w₁²σ₁² + w₂²σ₂² + 2w₁w₂·cov(r₁,r₂)——协方差为负正是分散风险 起作用的地方。本页只提供公式里的那个 cov,不做组合方差求解。

本工具不做的事

不做显著性检验(t 值、p 值、自由度、置信区间)与相关强弱判读,这些请用站内的相关系数计算器;不做斯皮尔曼等秩相关的协方差版本; 不做三列及以上的协方差矩阵;不出回归斜率、截距与 R²; 不做加权协方差、滚动协方差、时间序列自协方差与协整;不做分组/分层协方差与 辛普森悖论检测;不做离群点检测、散点图与缺失值插补;不做两资产组合方差求解。

精度

全链路用高精度十进制引擎(decimal.js,默认 20 位有效数字)求值:均值 → 逐对偏差 → 偏差乘积和 → 两个协方差 → 四个标准差 → r 中间不做任何舍入,只在输出时统一收口到 6 位小数(四舍五入、去掉尾随零;非零但小于该精度的值改用 6 位有效数字显示, 避免一个很小但真实的协方差被显示成平坦的 0)。相关系数由 SP ÷ √(SSx·SSy) 一次算出,不是拿已经舍入的协方差 去除以已经舍入的标准差。逐对明细表的每一格都是各自独立舍入的 展示值,逐行相加可能与偏差乘积和差最后一位。
支持范围:数据对数 2 ~ 100000 对, 单个数据的绝对值不超过 1e150;逐对明细在 n ≤ 200 时给出,超过则明确说明已省略(统计量仍按全部数据计算)。换算模式要求两个标准差 大于 0、|r| ≤ 1|cov| ≤ sx·sy,超界一律报错而不是 压成 ±1。所有计算在浏览器本地完成,不上传数据。

常见问题

协方差怎么算?样本协方差和总体协方差的公式差在哪?
两步。第一步算出两列各自的平均值 x̄、ȳ,把每一对数据的偏差乘起来再求和,得到偏差乘积和 SP = Σ(xᵢ−x̄)(yᵢ−ȳ)。第二步除以除数:样本协方差除以 n−1,总体协方差除以 n。差别只在这个除数上。以 x = 2, 4, 8、y = 5, 11, 12 为例:x̄ = 14/3、ȳ = 28/3,三对的偏差乘积分别是 11.555556、−1.111111、8.888889,SP = 19.333333;样本协方差 = 19.333333 ÷ 2 = 9.666667,总体协方差 = 19.333333 ÷ 3 = 6.444444。两者之比恒为 n/(n−1),这里是 3/2 = 1.5。手算时注意别把 x̄ = 4.666667 先四舍五入再去求偏差,均值是无限小数时提前舍入会让结果在第 6 位上漂——本工具全程用高精度十进制计算,只在显示时才收口到 6 位小数。
样本协方差用 n−1、总体协方差用 n,我该用哪个?
看手上的数据是「抽出来的一部分」还是「研究对象的全部」。数据是从更大群体里抽样得到的(100 个客户样本、30 天的抽查记录),要用它估计整个总体的协方差,就用样本协方差、除以 n−1,这就是贝塞尔校正:直接除以 n 会系统性低估总体协方差,除以 n−1 才是无偏估计。数据本身就是全部个体(全班 45 个人的两科成绩、公司全部 12 个月的两项支出),没有推断问题,用总体协方差、除以 n。实践里绝大多数场景是抽样,所以样本协方差更常用,本页也把它作为主数字。对应到 Excel:样本用 COVARIANCE.S,总体用 COVARIANCE.P。论文和报告里写清楚用的是哪一个,比选哪一个更重要。
协方差的单位是什么?两个协方差数值能不能直接比大小?
协方差的单位是「x 的单位 × y 的单位」,不能直接比大小。x 是身高(cm)、y 是体重(kg),协方差的单位就是 cm·kg。这带来一个很容易踩的坑:单位一换,数值就变。把 y 从「万元」改成「元」,每个 y 都乘 10000,协方差跟着乘 10000——本页 x = 1, 2, 4, 7、y = 20, 18, 15, 7 时样本协方差是 −15,把 y 换成 200000, 180000, 150000, 70000 后就变成 −150000,可关系强弱一点没变。所以「协方差 500 比协方差 3 关系更紧密」这句话是错的,两个数可能只是单位不同。要跨数据集比强弱,只能用无量纲的相关系数 r:上面这个例子里,两组数据的 r 都是 −0.99195,一动不动。协方差真正能告诉你的只有方向和它在方差—协方差矩阵、组合方差公式里的角色。
协方差是负数说明什么?协方差为 0 可以说明两个变量没关系吗?
协方差为负说明方向相反:x 比自己的平均值大的时候,y 倾向于比自己的平均值小。比如 x = 1, 2, 4, 7、y = 20, 18, 15, 7,样本协方差是 −15,总体协方差是 −11.25,x 越大 y 越小。注意「负」只表示方向,不表示强弱——强弱要看 r(这组是 −0.99195,接近完全负相关)。协方差为 0 则要小心:它只说明没有线性关系,不等于两个变量独立。经典反例是 y = x²:取 x = −2, −1, 0, 1, 2,y = 4, 1, 0, 1, 4,协方差精确为 0,可 y 完全由 x 决定,两者一点也不独立。协方差(以及相关系数)只能看见直线形状的关联,抛物线、周期波动这类关系它一律看不见,所以下结论前先画一张散点图。
协方差和相关系数有什么区别?知道协方差怎么换算成相关系数?
换算只有一步:r = cov ÷ (sx · sy),反过来 cov = r · sx · sy。比如协方差 12、sx = 4、sy = 5,r = 12 ÷ 20 = 0.6;已知 r = −0.8、sx = 2.5、sy = 4,协方差 = −0.8 × 2.5 × 4 = −8。区别在于相关系数是把协方差用两个标准差归一化之后的结果:协方差有量纲、取值没有上下界,相关系数无量纲、恒在 −1 到 1 之间,因此只有 r 能跨数据集比较。柯西–施瓦茨不等式保证 |cov| ≤ sx·sy,取等号时 r = ±1,这个乘积就是本页给出的「协方差理论上界」。换算有一个硬前提:三个数必须同口径——样本协方差配样本标准差,总体协方差配总体标准差,混着填算出来的 r 是错的,而工具从三个孤立数字里看不出你混没混,所以不会替你换算。要 t 检验、p 值、置信区间和相关强弱判读,请用站内的相关系数计算器,本页只做协方差与换算。
Excel 里 COVARIANCE.S 和 COVARIANCE.P 有什么区别?算协方差该用哪个?
区别只在除数:COVARIANCE.S 是样本协方差(除以 n−1),COVARIANCE.P 是总体协方差(除以 n),判断标准和上面一样——抽样数据用 S,全部个体用 P。本页两个数字同屏给出,正好省掉来回切换函数,结果与 Excel 对得上。微软官方文档的示例可以直接对照:=COVARIANCE.S({2,4,8},{5,11,12}) 官方给的是 9.666666667,本页同一组数据的样本协方差显示 9.666667(6 位小数);COVARIANCE.P 官方示例 A 列 3, 2, 4, 5, 6、B 列 9, 7, 1.2, 15, 17 得 5.2,本页总体协方差也是 5.2,同时给出样本协方差 6.5。如果你的 Excel 结果和本页差了 n/(n−1) 倍,多半就是函数选反了。另外老版本里的 COVAR 等价于 COVARIANCE.P(除以 n),从旧表格迁移公式时特别容易搞混。还有两种情况 Excel 会直接报错:两个数组个数不等返回 #N/A,任一数组为空或只有 1 个数据点返回 #DIV/0!——本页对应地会提示两列个数必须相同、至少需要 2 对数据,而不是硬凑一个数出来。
手算协方差时逐行偏差乘积加起来和偏差乘积和差最后一位,是算错了吗?
不是算错,是舍入位置不同:明细表的每一格都是各自独立舍入到 6 位小数后的展示值,把这些已经舍过入的数再相加,末位会和「先精确求和再舍入」的结果差一点。x = 2, 4, 8、y = 5, 11, 12 就是个现成的例子:三行乘积显示为 11.555556、−1.111111、8.888889,加起来是 19.333334,而偏差乘积和显示 19.333333。差的这 0.000001 不是算错——真实的 SP 是 174/9 = 19.3333…,工具内部全程用高精度十进制运算(decimal.js),中间不做任何舍入,只在最后输出时统一收口到 6 位小数。手算核对时如果发现自己的合计和页面差最后一位,先检查是不是也在中途做了四舍五入。同样的道理,页面上的相关系数是直接由 SP ÷ √(SSx·SSy) 一次算出的,不是拿显示出来的协方差去除以显示出来的两个标准差——后者会引入 1e-7 量级的偏差。
只有 2 对数据能算协方差吗?某一列数值全都相同时协方差是多少?
2 对可以算,1 对不行。n = 1 时样本协方差的分母 n−1 = 0,总体协方差则恒等于 0,两个都不是可用答案,所以本页会直接报错(Excel 同样返回 #DIV/0!)。n = 2 能算出协方差,但要留神:两个点必定连成一条直线,相关系数恒为 ±1,这个 1 不代表关系强,只代表点太少,页面会专门提示。至于某一列的数全都一样(比如 x = 1, 1, 1),情况有点特别:这一列的标准差是 0,相关系数变成 0/0,确实无定义;但协方差本身仍然有定义并且精确等于 0——常数与任何变量的协方差都是 0。所以本页不报错,照常给出协方差 0,只把相关系数一栏标成「无定义」。这也是本页和站内相关系数计算器的一个关键差别:后者的主数字就是 r,遇到常数列只能直接报错。

来源与更新

公式与口径的依据(检索/核验日期 2026-08-28):

参考资料

  • 协方差定义与 n−1 除数: NIST/SEMATECH e-Handbook of Statistical Methods §6.5.4.1:Mean Vector and Covariance Matrix(美国国家标准与技术研究院)。原文给出 COV = Σ(Xᵢ − x̄)(Yᵢ − ȳ)/(n−1),并注明这是无偏(unbiased)的 方差–协方差矩阵。
  • 样本协方差(÷ n−1)的软件口径与错误行为: Microsoft Office 支持:COVARIANCE.S 函数。官方备注:两个数组数据点个数不等返回 #N/A;任一数组为空、 或只含 1 个数据点返回 #DIV/0!——本页「两列个数必须相同」 与「至少需要 2 对数据」两条即由此交叉验证。
  • 总体协方差(÷ n)的软件口径: Microsoft Office 支持:COVARIANCE.P 函数,原文公式为 Cov(X,Y) = Σ[(Xᵢ−X̄)(Yᵢ−Ȳ)]/n
  • r = cov/(σx·σy)、柯西–施瓦茨界 |cov| ≤ σx·σy 与「不相关不等于独立」的标准反例: Wikipedia: Covariance;相关系数口径与站内相关系数计算器同源于 NIST e-Handbook §1.3.5.13:Linear Correlation
  • 与 Excel 官方示例逐位一致:微软 COVARIANCE.S 文档的示例 {2,4,8} / {5,11,12} 给出 9.666666667,本页同一组数据的样本协方差为 9.666667(6 位小数);COVARIANCE.P 文档的示例 {3,2,4,5,6} / {9,7,1.2,15,17} 给出 5.2,本页总体协方差同为 5.2
  • 中文术语(协方差、相关系数、样本/总体等)依据 GB/T 3358.1-2009 《统计学词汇及符号 第 1 部分:一般统计术语与用于概率的术语》 (等同采用 ISO 3534-1:2006,2009-10-15 发布、2010-02-01 实施)。经 全国标准信息公共服务平台 核验为现行的推荐性国家标准(核验日期 2026-08-28)。 该标准只用于术语口径,不向计算提供任何参数
  • 高精度十进制求值与舍入依据 decimal.js 官方文档

本工具为纯统计计算,不含税率、利率、社保基数等会随政策变化的参数: 协方差是统计学定义,除数只有 n−1n 两个由数据对数 决定的整数,全部输入由使用者填写,代码与参数表中不存在任何内置默认值或经验值。 内容经本站编辑整理与核对,仅供学习与参考。

最近更新:2026-08-28

本工具按统计学定义计算成对数据的样本协方差与总体协方差,并做协方差与相关系数的换算,结果供学习、作业核对与分析参考。协方差只刻画线性关联的方向与量级,不能证明因果关系,也无法反映分组结构与离群点;用于论文、投资决策等正式场合时,请结合散点图与所在领域的方法学口径判断。