协方差计算器
结果
协方差
- 相关系数 r
- 0.7746
- 第一组数据的平均数
- 3.0000
- 第二组数据的平均数
- 4.0000
- 第一组数据的标准差
- 1.5811
- 第二组数据的标准差
- 1.2247
- 个数
- 5
协方差衡量的是两组配对数据是不是一起动:第一组里某个值高于自己的平均数时,第二组同一位置上的值是不是也倾向于高于它自己的平均数?把两组数分别粘进来——一行一个,或者用分号、逗号、空格隔开——这个协方差计算器会给出协方差、它的正负号,以及紧挨着的皮尔逊相关系数。两组的平均数与标准差也一并印出来,屏幕上那个结果可以一步一步核对。两组都不排序:第一组的第 i 个数配第二组的第 i 个数,所以输入的顺序也是数据的一部分。
公式
协方差 = Σ(xᵢ − x̄)(yᵢ − ȳ) ÷ 除数,样本取 n − 1、总体取 n;相关系数 r = 协方差 ÷ (sₓ × s_y)
- xᵢ, yᵢ
- 成对出现的两个值:第一组第 i 个数配第二组第 i 个数。两组个数必须相同,而且都不排序——配对靠的是位置,把其中一组调换顺序,结果就会变
- x̄, ȳ
- 两组各自的平均数,都在结果里印着。每个值都是拿自己那一组的平均数去减的,所以整组数同时加上或减去同一个常数,协方差不变
- n
- 一共有多少对,也就是任一组数据的个数,本页最多 200 对。总体协方差除以它,样本协方差除以它减一
- sₓ, s_y
- 两组各自的标准差,口径与协方差一致。它们是把协方差变成相关系数的那一步,印出来是为了让 r 在面板上就能复算出来
- 协方差
- 协方差本身:两组同涨同落时为正,一组涨另一组落时为负,线性关系很弱时接近 0。它的单位是 x 的单位乘 y 的单位
- r
- 皮尔逊相关系数,等于协方差除以两个标准差之积,单位在这一步约掉,取值落在 −1 与 1 之间。它不随某一组数据换单位而改变,而且在样本与总体两种口径下完全相同
同一批对象上测了两个量、想知道它们是不是同步变化时,协方差就是自然的概括:身高与体重、学习时长与成绩、气温与用电量、同一支传感器在两个时刻的读数。它是标准差在「两个变量」上的推广,也是每一个相关系数、回归斜率与组合方差公式的原料——所以值得亲手算一遍,看看那些公式是从哪来的。要读的是符号而不是大小:一组用米、另一组用厘米,协方差会相差 100 倍,而两组数据之间的关系一点没变。下面印的相关系数是把单位约掉之后的版本,真正要说明「关系强不强」时报的是它。协方差也不说明因果,而且它只认直线:两组数据之间是完美的曲线关系时,协方差同样可以是 0。
算例
五对同涨的数据:协方差 1.5,r = 0.7746
- 平均数:x̄ = (1+2+3+4+5) ÷ 5 = 3,ȳ = (2+4+5+4+5) ÷ 5 = 4
- 各自的离差,x:−2、−1、0、1、2;y:−2、0、1、0、1
- 乘积之和:(−2)(−2) + (−1)(0) + (0)(1) + (1)(0) + (2)(1) = 4 + 0 + 0 + 0 + 2 = 6
- 样本除数是 n − 1 = 4:协方差 = 6 ÷ 4 = 1.5
- 两个标准差是 1.5811 与 1.2247,所以 r = 1.5 ÷ (1.5811 × 1.2247) = 0.7746
符号为正,而协方差真正被读的就是这一半:高于平均的 x 配着高于平均的 y。大小 1.5 的单位是 x 的单位乘 y 的单位,任一组换个单位它就会变,所以旁边印着相关系数。r 是 0.7746:向上走的趋势很明显,但离一条直线还远——(4, 4) 这一对掉在了趋势下面。
同样的数据按总体口径:协方差 1.2,r 一点没变
- 求和结果不变:乘积之和仍是 6,两个平均数仍是 3 与 4
- 总体除数是 n = 5:协方差 = 6 ÷ 5 = 1.2——比样本口径小,因为除数更大
- 两个标准差同样变小:1.4142 与 1.0954
- r = 1.2 ÷ (1.4142 × 1.0954) = 0.7746——与上面完全相同
换除数会改变协方差与两个标准差,却动不了相关系数:在那个比值里 n − 1 与 n 约掉了。所以样本与总体的选择对协方差要紧、对 r 完全不要紧——这一点值得先记住再拿这里的协方差与别处报的数作比较:两份材料可以一个说 1.5 一个说 1.2,而对「关系有多强」的判断分毫不差。
完美的曲线,协方差却是 0
- 平均数:两组都是 3
- 各自的离差,x:−2、−1、0、1、2;y:−2、1、2、1、−2
- 乘积之和:4 − 1 + 0 + 1 − 4 = 0
- 协方差:0 ÷ 4 = 0,r = 0 ÷ (1.5811 × 1.8708) 同样是 0
第二组是个倒过来的 U:1、4、5、4、1 是极其规整的形状,而它与 1 到 5 的协方差正好是 0。协方差只认直线关系——这里第二组先升后降,正负两部分的贡献精确地抵消了。所以「协方差接近 0」的意思是没有线性关系,绝不是「没有关系」,这也是散点图没有被一个数字取代的原因。
局限
协方差不是相关系数,不能当相关系数读。它的大小取决于两组的单位,所以不同量纲的变量之间没法直接比,而且它没有上界可供判断——能直接解释的只有符号。它也只测线性关联,关系很强但弯曲时协方差可以接近 0。由于它是按配对算的,两列必须对得齐:两组个数要相同,每个值都与同一位置上的那个值配对,所以某一组多一个或少一个,后面的配对就全错位了。任一组完全没有变化——每个值都相同——时相关系数没有定义,这一页拒绝作答,而不是印一个除零的结果。两个列表各上限 200 对;像 1,500 这样的写法会被拒收而不是替读者猜,因为夹在数字中间的逗号在有些国家是小数点、在另一些国家是千分位。这一页也不说明因果:一起变动的两组数据,可能是同时被第三个两者都没有包含的变量推着走。
常见问题
- 协方差怎么算?
- 先把两组数按位置配对,各自减去本组的平均数得到离差,把每一对的离差相乘,再把这些乘积加起来,最后除以 n − 1(样本)或 n(总体)。x = 1、2、3、4、5 与 y = 2、4、5、4、5 的乘积之和是 6,所以样本协方差是 6 ÷ 4 = 1.5。两个平均数、两个标准差与结果都印在面板上,每一步都能跟着走。
- 两组数据的个数必须一样吗?
- 必须一样,而且顺序也要对——第一组的第一个数配第二组的第一个数,两组都不排序。所以这一页遇到长度不等的两列会拒绝作答,而不是把短的那列补齐:一组 3 个数、另一组 2 个数时,无从判断少的是哪一个,把前面两个偷偷配上会给出一个看起来完全合理的错误答案。粘贴之前先确认两列来自同一批对象、行与行对得上。
- 协方差的正负号是什么意思?
- 协方差为正,说明某个值高于本组平均数时,与它配对的那个值也倾向于高于另一组的平均数——两组同涨同落。为负则相反:一个高于平均往往配着另一个低于平均。接近 0 说明没有直线规律,而这不等于没有关系:1、4、5、4、1 与 1、2、3、4、5 之间是一个规整的倒 U 形,协方差正好是 0。
- 为什么还要印一个相关系数?
- 因为协方差单看没法读。它的单位是第一组的单位乘第二组的单位,所以某一组从米换成厘米就会把它放大 100 倍,而两组之间的关系毫无变化。除以两个标准差之积把单位约掉,并把结果限制在 −1 与 1 之间,于是不同变量之间可以互相比较。协方差是公式推导里的那个量,而别人问「关系强不强」时该报的是 r。
- 为什么其中一组没有变化时它会拒绝作答?
- 因为相关系数会除以 0:某一组每个值都相同时,那组的标准差是 0,关系的强度就没有定义。协方差本身是有定义的(就是 0),但这一页把两个数放在一起印,只报一半会让人把没有意义的 r 当成真的。这个站上别处也是同样的处理:变异系数那一页在平均数不为正时同样拒绝作答,而不是印一个没有定义的比值。
- 该选样本还是总体?
- 两组数据是从更大的群体里抽出来的样本、而你想描述那个更大的群体时用样本口径(n − 1),这也是常见情形;两组数据就是你关心的全部时用总体口径(n)。这个选择会改变协方差与两个标准差,但永远不影响相关系数——在那个比值里 n − 1 与 n 约掉了。上面那五对数据,样本口径协方差是 1.5、总体口径是 1.2,而 r 两种都是 0.7746。
参考资料
- GB/T 3358.1-2009《统计学词汇及符号 第1部分:一般统计术语与用于概率的术语》(推荐性国家标准,现行:2009-10-15 发布 / 2010-02-01 实施,采标;该站注明因涉及国际版权不提供在线阅读,全文需另寻) — 国家市场监督管理总局 国家标准全文公开系统
- Correlation, Variance and Covariance (Matrices) — R stats 包参考文档(cov 与 cor 两个函数;写明协方差所用除数为 n − 1,并把相关系数定义为协方差除以两个标准差) — R 项目(The R Project for Statistical Computing)
- scipy.stats.pearsonr — SciPy 参考文档(皮尔逊系数的取值范围,以及它作为线性关联强度的含义) — SciPy
- The Regression Equation — Introductory Statistics 2e, section 12.3(相关系数 r 的定义:皮尔逊提出,用来度量两个变量之间线性关联的强度与方向) — OpenStax(莱斯大学)