协方差cov计算公式推导:从砖头到高楼的数学脚手架
深入解析协方差公式推导全过程,结合真实案例、几何直观与统计本质,助你彻底掌握这一统计学核心工具——不是背公式,而是理解“为什么这样设计”。
什么是协方差cov计算公式推导?
把一堆数塞进数学公式里,实际上就像把一堆散乱的砖头强行拼成一座楼。协方差(Covariance)就是那根起核心功能的脚手架,它负责告诉你砖块 A 和砖块 B 之间是搭得紧还是松。
要是它们搭得越紧,协方差就越高;搭得松、就连反过来拉扯,那数值就变负了。这就好比两个人一起跑步,你迈大步他迈小步,跑得越远,他们之间的距离拉得就越长,协方差自然负数;要是你俩步调一致,那数值就是正的,意味着趋势同向。
正向协方差
当变量x上升时y也上升,或x下降时y也下降——两者呈现同向变动趋势。
负向协方差
当变量x上升时y反而下降——两者呈现反向变动趋势,即“此消彼长”。
例如:温度↑ → 暖气用量↓
协方差
变量间无明显线性关系。注意:零协方差 ≠ 独立!可能存在非线性关系(如抛物线关系)。
个真实生活类比
先不说那些高高在上的理论,咱们直接上手算一算。假设你有两组数据,一组是气温,一组是冰淇淋销量。
- 天气热的时候(比如 30 度),冰淇淋卖得特别好 → 气温与销量正相关 → 协方差为正数;
- 夏天到了,气温 30 度,冰淇淋销量反而暴跌 → 两者相斥 → 协方差为负数;
- 你家冰箱的温度和你家里的股票价格 → 彻底不相关 → 协方差为 0。
这种负号实际上挺有意思的,它不是单纯表示“大数乘小数”,而是表示这两个方向在“打架”——一个在推,一个在拉,形成反向合力。
协方差cov计算公式推导:从定义到本质
那到底如何推导呢?实际上能够从几何直觉启动想。协方差本质上是所有数据点都在二维坐标系里,它们分布在一条斜线上时,这个斜线的“陡峭程度”要么是“倾斜方向”。
要是斜线是往右上去的,说明两个变量同向变化,协方差为正;要是斜线是往左下去的,它们反向变化,协方差为负;垂直要么水平线,那就归零。
总体协方差定义式:
Cov(X, Y) = E[(X − μx)(Y − μy)] = E[XY] − E[X]E[Y]
在样本场景中,我们无法获取总体均值 μx, μy,只能用样本均值 x̄, ȳ 估计,因此推导出:
样本协方差(有偏估计,除以 n):
cov(X, Y) = 1/n Σi=1n (xi − x̄)(yi − ȳ)
而更常用于统计推断的是无偏估计(贝塞尔校正),即除以 n−1:
样本协方差(无偏估计,除以 n−1):
sxy = 1/(n−1) Σi=1n (xi − x̄)(yi − ȳ)
推导中的关键拆解:交叉项为何抵消?
展开核心项 (xi − x̄)(yi − ȳ):
对所有样本求和后除以 n:
注意到:
1/nΣxi = x̄,1/nΣyi = ȳ
所以中间两项变为:− ȳx̄ − x̄ȳ + x̄ȳ = − x̄ȳ
最终得:
这一整坨复杂的计算,本质上就是在算一组数据的“重心”——即两个变量联合分布的中心偏移程度。你看到的协方差公式 (1/n)Σ(xi−x̄)(yi−ȳ),实际上就是直接把这个重心的偏移量计算出来,然后求和。
因为原始乘积和会随样本量增大而无限放大,无法横向比较不同规模数据集的协变程度。除以 n 是为了“归一化”,使其具备可比性。
协方差公式推导举例:从理论到实践
为了更具体地展示,咱们手里只有一组样本,记作 (x1, y1), (x2, y2), ..., (xn, yn)。在数学上,这看起来像是一个线性方程的截距 b。而协方差就是那一个斜率参数,拍板了 y 对 x 的敏感度。
第一组数据:完美线性关系
数据点:(1, 2), (2, 3), (3, 4)
计算步骤:
- x̄ = (1+2+3)/3 = 2;ȳ = (2+3+4)/3 = 3
- 偏差乘积:
(1−2)(2−3) = (−1)(−1) = +1
(2−2)(3−3) = (0)(0) = 0
(3−2)(4−3) = (1)(1) = +1 - 协方差(除以 n)= (1 + 0 + 1)/3 = 2/3 ≈ 0.667
- 协方差(无偏)= (1 + 0 + 1)/(3−1) = 1
结论:正协方差,且数值较大——说明两个变量高度同步增长。
第二组数据:扰动增强
数据点:(1, 2.1), (2, 3.2), (3, 4.3)
对比第一组:每个点的 y 值都增加了 0.1、0.2、0.3——即整体“上抬”且斜率略增。
计算:
- x̄ = 2;ȳ = (2.1+3.2+4.3)/3 = 3.2
- 偏差乘积:
(1−2)(2.1−3.2) = (−1)(−1.1) = +1.1
(2−2)(3.2−3.2) = 0
(3−2)(4.3−3.2) = (1)(1.1) = +1.1 - 协方差(除以 n)= (1.1 + 0 + 1.1)/3 = 2.2/3 ≈ 0.733
- 协方差(无偏)= 2.2/2 = 1.1
结论:协方差比第一组更大——说明当 x 增添时,y 不仅增添,并且增添的幅度更“陡峭”,线性趋势更强。
第三组数据:非线性干扰
数据点:(1, 1), (2, 5), (3, 4)
看似乱了节奏:从 (1,1)→(2,5) 上升剧烈,但 (2,5)→(3,4) 反而下降。
计算:
- x̄ = 2;ȳ = (1+5+4)/3 = 3.333...
- 偏差乘积:
(1−2)(1−3.333) = (−1)(−2.333) = +2.333
(2−2)(5−3.333) = 0
(3−2)(4−3.333) = (1)(0.667) = +0.667 - 协方差(除以 n)= (2.333 + 0 + 0.667)/3 = 1.0
- 协方差(无偏)= 3/2 = 1.5
⚠️ 注意:尽管数据呈现“先升后降”的非线性,协方差仍为正!这说明——
协方差只捕捉线性趋势,无法识别非线性关系。
协方差的不变性:平移不改变协方差
要是这两个数据组实际上是彻底一样的,只是数字偏移了一下,那它们的协方差就会相等。
例如:
原数据:(1,2), (2,3), (3,4) → cov = 1(无偏)
平移后:(101,102), (102,103), (103,104) → cov 仍为 1
反之,要是第二组里的点有点乱,比如改成 (1, 1), (2, 5), (3, 4),这时候斜率就变平要么变负了,协方差自然会变负要么变小。
几何与物理直觉:协方差是“推力”,不是“速度”
这里有个挺直观的比喻:协方差就像是一个“推力”。
要是你有两个弹簧,一个是压缩的,一个是拉伸的(反向),它们之间形成的相互功本事是排斥的,这就是负协方差。
要是你俩都压缩要么都拉伸,那就是同向的,形成的是正协方差。
协方差 = √Var(X) × √Var(Y) × cosθ = σxσyρxy
其中 ρxy 就是后来引入的“相关系数”,即单位化后的协方差。
这个推力的大小取决于两个维度:
1. 各自方差大小:弹簧的劲度系数——方差越大,个体波动越剧烈;
2. 方向一致性:cosθ——衡量两个变量变动方向的夹角余弦。
种极端情形
- 完全同步:y = kx + b(k > 0)→ 协方差为正最大值(在给定方差下)
- 完全反向:y = −kx + b(k > 0)→ 协方差为负最大值
- 完全独立:任意 x 对应的 y 分布无规律 → 协方差为 0
弗朗西斯·高尔顿(Francis Galton)在研究遗传性状时,首次提出“共同变异”的思想,为协方差奠定思想基础。
卡尔·皮尔逊(Karl Pearson)在推导PCA时,明确使用协方差矩阵描述多维变量的线性关系结构。
罗纳德·费希尔(Ronald Fisher)引入“贝塞尔校正”,明确区分总体与样本协方差,推动无偏估计成为主流。
在机器学习中,协方差矩阵成为特征降维(如PCA)、风险建模(金融)、自然语言处理(词向量相关性)的核心工具。
常见误区辨析:协方差cov计算公式推导易错点
❌ 误区一:协方差为0 = 变量独立
反例:设 X ~ Uniform(−1,1),Y = X²。
显然 Y 完全由 X 决定,但 Cov(X,Y) = 0!
原因:分布对称,正负偏移相互抵消。
❌ 误区二:协方差大 = 关系强
单位不统一时无法比较:
Cov(身高, 体重) = 8.5 kg·cm
Cov(温度, 冰淇淋销量) = 120 度·个
无法直接说哪个“更强”。必须用相关系数 ρ。
❌ 误区三:协方差是距离
协方差不是距离度量!它不满足:
• 非负性(可为负)
• 对称性(Cov(X,Y)=Cov(Y,X),但非“距离”)
• 三角不等式
它是内积空间中的“角度+长度”组合。
为什么样本协方差除以 n−1?
这个 n−1 是如何回事?这叫贝塞尔校正,是为了让计算出的方差无偏估计。在样本估计总体参数时,我们总希望算出来的结果比真值更准、更诚实,而不是出于偷懒多算了一次。
但在简单的协方差推导里,这个 n−1 实际上是个“坑”。如果你不把它归一化掉,你会拿到的是总体协方差,而不是样本协方差。样本协方差需要除以 n−1,才能拿到一个无偏的估计量。
这一点在严谨的统计推导里挺关键,但在一些快速估算或者特定场景下,除以 n 也是可以的,只是精度会低一点点。
• 小样本(n < 50)→ 用 n−1(无偏)
• 大样本(n > 1000)→ n 与 n−1 差异可忽略
• 机器学习中(如协方差矩阵估计)→ 优先使用 n−1