把3层小楼改建成100层的摩天大楼,第一步绝不是在它之上直接加盖,而是把它全部拆掉,夯实好更结实的地基后,再重新开建。
在研究卡尔曼滤波的时候发现它使用了协方差,但要搞懂协方差首先要了解方差—
那我们就从“方差”说起—
假设你是体重测量员:
现在两个队的足球队员测量体重,A队足球运动员随机测五个(单位kg)
50, 60, 70, 80, 90
B队随机测5个球员体重是:
66, 65, 70, 74、75
分别对两组测量求平均值,都是70kg
问题来了:分别从A队和B队抽一个人测量,你觉得哪个队的队员体重更接近70
我猜你会选择B,因为B测量结果看起来更稳定,看起来测量结果离均值抖的不是那么厉害。
这两组值差别比较明显,所以我们可以靠感觉,若两组数据差异不大呢,靠感觉就很难感觉出来了~
这时候就人们就想有一个可以精确计算一组数字围绕均值波动的公式就好了,于是方差出现了
方差就是描述数据围绕平均值波动得有多厉害的一个值,方差越大抖动越厉害,
方差怎么计算呢?
我们使用这组 50, 60, 70, 80, 90作为示例来计算方差。
第一步:算平均值
μ = (50, 60, 70, 80, 90) / 5 =70
平均值的含义是:
“如果只能用一个数代表它们,那就是 70kg。”
但平均值看不出波动。
第二步:看每个数据偏离平均值多少
50→ -20
60→ 10
70 → 0.0
80→ 10
90→20
这些叫:
偏差(Deviation)
但问题来了:
- 正的有
- 负的也有
如果直接加起来,结果会互相抵消,还是看不出来波动
第三步:平方(这是关键动作)
(-20)² =400
( -10)² =100
( 0.0)² = 0.00
(10)² =100
( 20)² =400
平方有两个目的:
- 消除正负号
- 放大“偏得特别远”的点
第四步:求平均 → 方差
方差 = (400 + 100 + 0 + 100+ 400) / 5 =200
这就是:
方差 = 偏差平方的平均值
数学写法:
Var(x) = E[(x - μ)²]
小结
方差衡量的是一个随机变量在一组观测中(例如体重 x 的多次测量值),其取值相对于自身平均值的“偏离强度”。
用平方是为了让偏离方向不重要,只看偏离强度。
但方差有个小缺点:
- 原始数据单位是“米”
- 方差单位是“平方米”
于是我们常用:
标准差 = 方差的平方根
好处:
- 单位和原数据一致
- 更符合直觉
工程里你经常听到:
“这个传感器误差是 ±0.1 米”
其实说的就是 标准差的大小。
方差衡量的是“一个变量偏离中心的程度”,但现在问题升级了。
假设你同时测一群人的两个:
- x 身高
- y 体重
假设身高平均值170cm,体重平均值60kg
问题来了:
当身高相对于平均值变大的时候,体重是怎么变的,有没有一个相关性呢?
这就是协方差要解决的问题。
在讲方差时,我们关注的是:
👉 x 自己波动得厉不厉害?
也就是:
- 每个人的身高
- 相对于 170 cm
- 偏离得大不大
这是一个单变量的问题。
但在真实世界里,有时间 更常见问题是:
👉 当 x 发生偏离时,y 会怎么变化?
放到这个例子里,就是:
- 当某个人的身高 高于 170 cm 时,他的体重通常是高于 60 kg,还是低于 60 kg?
如果你沿着“方差的计算思路”继续往前走,答案会非常自然地出现。
方差:用的是 x 与均值的偏差 × x 与均值偏差
那现在我们关心的是:x 和均值的偏差,和 y 与均值偏差之间的关系
于是有数学提出来:
不再让一个变量和自己相乘, 而是让 x 的偏差 × y 的偏差,接下来,对这些乘积再求平均。
这一步把“自相关”,升级成了“互相关”,这就是协方差出现的真正原因。
协方差(Covariance)的定义公式是:
Cov(x, y) = E[(x - μx)(y - μy)]
你可以把它直接理解为:
两个变量“偏差乘积”的平均值
这和方差的关系非常直观:
Var(x) = Cov(x, x)
x偏小时候,y如果偏小,x偏大、y也偏大,那么协方差就是一个正值,代表x y正相关;
x偏小时候,y如果偏大,x偏大、y也偏小,那么协方差就是一个负值,代表x y负相关;
x偏小偏大的时候,y随机波动,那么协方差就会正负抵消,趋近于0,代表xy无关;
那能用协方差值代表相关性么,协方差越大相关性越高,稍微思考下就能发现若用协方差代表相关性是不行的——
因为如果单位变化了,计算就会差别很大,比如身高你用米和厘米计算出来跟体重的相关性就不一样。
所以伟大的数学家们在协方差和方差基础上发明了相关系数
ρ(x, y) = Cov(x, y) / (σx · σy)
其中:
- σx、σy 是标准差
结果范围固定:
-1 ≤ ρ ≤ 1
- ρ ≈ 1:强正相关
- ρ ≈ -1:强负相关
- ρ ≈ 0:几乎不相关
注意:
- 相关 ≠ 因果
工程里更多用协方差本身,而不是相关系数
在工程 / 感知 / 控制系统中,我们关心的往往不是:
- 身高 + 体重(2 个)
而是一个状态向量:
x = [位置, 速度, 加速度]
或者在定位里:
x = [x坐标, y坐标, 速度, 航向角]
此时问题不再是:
x 和 y 相关吗?
而是变成了:
这些变量之间,谁跟谁是一起波动的?波动得有多强?
假设我们有 3 个变量:
x1, x2, x3
你已经会算协方差了,于是你会得到:
- Cov(x1, x1)
- Cov(x1, x2)
- Cov(x1, x3)
- Cov(x2, x2)
- Cov(x2, x3)
- Cov(x3, x3)
你很快就会发现:
协方差不再是一个数,
而是一整张“关系表”。
这张表里:
- 每个变量和自己的协方差 → 方差
- 每个变量和别人的协方差 → 联动强度
到这一步,引入协方差矩阵已经是被逼的选择。
我们需要一个东西:
- 能系统性地存下:
- 所有变量的方差
- 所有变量之间的协方差
- 能保持“谁和谁”的结构不乱
- 能被算法直接使用(比如线性变换)
矩阵正好满足这三点。
于是我们把刚才那张“关系表”,写成一个矩阵:

当我们只关心两个变量时,协方差是一个数;
当我们关心的是一个“状态系统”时,
协方差必须升级为一个能描述“整体联动关系”的结构。
这个结构,不是被发明出来的,而是被现实系统逼出来的。
总结
在理解了方差与协方差的概念后,我们已经能够看出,协方差矩阵不仅仅是数学上的一个工具,而是将不确定性、相关性 结构化和量化的关键,它让我们能够全面地描述多变量系统中各个状态量之间的相互关系和波动范围。
在工程和科研领域,协方差矩阵的应用无处不在。无论是在自动驾驶、机器人定位,还是在金融风险分析、气象预测中,协方差矩阵都提供了对系统不确定性的精确刻画。通过它,我们能够更好地融合多种传感器数据,优化状态估计,并且更科学地进行误差分析和预测。