首页 > 你问我答 >

问 协方差矩阵怎么求 计算方法

2026-10-14 14:53:37
最佳答案

答

协方差矩阵怎么求,核心做法就是先把每一列变量算出平均值,再把每个数据点减去对应平均值,然后用不同变量之间的协同波动量组成方阵。简单说,矩阵里的对角线位置放各个变量自己的方差,非对角线位置放两个变量之间的协方差。掌握这一套流程后,不管是手写计算、表格计算还是程序计算,都能按固定步骤把协方差矩阵整理出来。

一、先搞懂要算什么

协方差矩阵不是一个“新东西”,它就是把多个变量之间的波动关系排成表格。

假设有两个变量:

符号含义
x第一个变量的一组数据
y第二个变量的一组数据
x̄x 的平均值
ȳy 的平均值
Cov(x, x)x 自己的方差
Cov(y, y)y 自己的方差
Cov(x, y)x 和 y 之间的协方差

两个变量的协方差矩阵长这样:

xy
xCov(x, x)Cov(x, y)
yCov(y, x)Cov(y, y)

因为 Cov(x, y) 和 Cov(y, x) 数值相同,所以矩阵是对称的。

二、协方差矩阵怎么求的基础步骤

可以按下面这套顺序来。

1. 整理数据

把每个变量放进一列,样本放进一行。

样本xy
112
224
335

2. 求每个变量的平均值

以 x 为例:

x̄ = (1 + 2 + 3) / 3 = 2

y 同理:

ȳ = (2 + 4 + 5) / 3 = 11 / 3 ≈ 3.67

3. 做中心化处理

也就是每个数据减去自己的平均值。

样本x - x̄y - ȳ
11 - 2 = -12 - 3.67 = -1.67
22 - 2 = 04 - 3.67 = 0.33
33 - 2 = 15 - 3.67 = 1.33

中心化的作用是看每个数据点偏离平均值的程度。

4. 计算两两协方差

两个变量 x 和 y 的协方差可以用:

Cov(x, y) = Σ[(xᵢ - x̄)(yᵢ - ȳ)] / (n - 1)

这里使用 n - 1,是样本协方差常用口径。

对上面数据:

样本(x - x̄)(y - ȳ)乘积
1-1-1.671.67
200.330
311.331.33

求和:

1.67 + 0 + 1.33 = 3

除以 n - 1:

Cov(x, y) = 3 / (3 - 1) = 1.5

5. 计算对角线上的方差

方差就是变量和变量自己的协方差。

Cov(x, x) = Σ[(xᵢ - x̄)²] / (n - 1)

样本x - x̄(x - x̄)²
1-11
200
311

求和:

1 + 0 + 1 = 2

除以 n - 1:

Cov(x, x) = 2 / 2 = 1

y 同理:

样本y - ȳ(y - ȳ)²
1-1.672.79
20.330.11
31.331.77

求和:

2.79 + 0.11 + 1.77 = 4.67

除以 n - 1:

Cov(y, y) = 4.67 / 2 = 2.33

6. 把结果排进矩阵

xy
x11.5
y1.52.33

这个矩阵就是样本协方差矩阵。

三、多变量时怎么扩展

如果有三个变量 x、y、z,矩阵就是:

xyz
xCov(x, x)Cov(x, y)Cov(x, z)
yCov(y, x)Cov(y, y)Cov(y, z)
zCov(z, x)Cov(z, y)Cov(z, z)

计算思路没有变化,只是每两个变量都要算一次协方差。

变量数矩阵尺寸需要算的协方差单元格
22 × 24
33 × 39
44 × 416
pp × pp²

实际手写时可以只算上三角,再把下三角复制过去,因为矩阵是对称的。

四、公式口径要分清

常见有两种口径:总体协方差和样本协方差。

类型公式分母使用场景
总体协方差n数据代表全部总体
样本协方差n - 1数据只是抽样样本,更常用

在机器学习、统计分析、相关系数计算里,样本协方差更常见。

如果要把协方差变成相关系数,可以这样处理:

指标公式
相关系数Corr(x, y) = Cov(x, y) / (S_x × S_y)

其中 S_x 和 S_y 是标准差,也就是方差开平方。

五、用矩阵语言快速理解

如果数据矩阵 X 的每一列是一个变量,每一行是一个样本。

步骤如下:

  1. 求每一列均值。
  2. 每一列减去自己的均值,得到中心矩阵 Z。
  3. 计算 ZᵀZ / (n - 1)。
  4. 得到的方阵就是样本协方差矩阵。

可以用表格记住:

操作目的
列均值找到每个变量的中心
减去均值看波动大小
转置乘法计算变量之间的协同波动
除以 n - 1得到样本协方差

六、实际计算时常用工具

表格软件做法

在 Excel 或 WPS 里可以这样:

步骤做法
1把变量放成多列
2使用 AVERAGE 求每列均值
3使用 SUMPRODUCT 或协方差函数计算两两协方差
4把结果排成方阵

代码做法

如果有一张表格数据:

操作说明
读取数据每列是一个变量
求均值对列做平均
去均值得到中心数据
计算矩阵用中心数据转置乘法
除以 n - 1输出样本协方差矩阵

在代码里常见的思路是:

工具常用表达
Python用 pandas 计算 cov
R用 cov 函数
MATLAB用 cov 函数
NumPy用 np.cov

核心算法都是一致的:先中心化,再计算协同波动,再整理成方阵。

【常见问题】

问题1:协方差矩阵怎么求时第一步先看什么?

回答1:协方差矩阵怎么求,第一步先看每个变量的平均值。因为协方差矩阵怎么求依赖中心化处理,只有先把 x、y、z 各自的均值算出来,才能继续算协方差矩阵怎么求后面的乘积和矩阵排列。

问题2:样本协方差矩阵怎么求和总体协方差矩阵怎么求有什么差别?

回答2:样本协方差矩阵怎么求常用 n - 1 作为分母,总体协方差矩阵怎么求常用 n 作为分母。协方差矩阵怎么求的公式主体一样,都是均值、中心化、两两协同波动、排成方阵,区别主要在协方差矩阵怎么求时的分母口径。

问题3:只有两个变量时协方差矩阵怎么求更简单?

回答3:只有两个变量时,协方差矩阵怎么求可以只算四个格子:x 的方差、y 的方差、x 和 y 的协方差、y 和 x 的协方差。协方差矩阵怎么求时后两个格子数值相同,所以协方差矩阵怎么求可以只算一次 Cov(x, y),再复制到对称位置。

问题4:数据列方向放错会影响协方差矩阵怎么求吗?

回答4:数据列方向会影响协方差矩阵怎么求的读数。协方差矩阵怎么求时,通常把每个变量放成一列,把每个样本放成一行。这样算出的均值、中心化和矩阵行列含义都清楚,协方差矩阵怎么求也更容易检查。

免责声明:以上内容用于学习理解协方差矩阵怎么求的计算思路,实际使用可结合数据口径、统计目标和项目规范进行调整。

免责声明:本答案或内容为用户上传,不代表本网观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。 如遇侵权请及时联系本站删除。