文章目录
- 协方差矩阵
- 计算原理
- python实现
协方差矩阵
协方差矩阵反映了两个随机变量变化时是同向还是反向的(相关性)。
如果协方差>0,则说明这两个随机变量同向变化。
协方差矩阵<0,则说明是反向变化。
协方差矩阵=0,则说明是两个随机变量的变化方向没有任何相似度。
计算原理
假设矩阵:
X
=
[
3
1
2
5
6
4
8
7
9
]
X = \begin{bmatrix} 3 & 1& 2 \\ 5 & 6 &4 \\8 & 7 &9 \end{bmatrix}
X=
358167249
样本均值为:
X
‾
=
1
3
(
[
3
5
8
]
+
[
1
6
7
]
+
[
2
4
9
]
)
=
[
3
5
8
]
\overline X = \frac{1}{3}(\begin{bmatrix} 3 \\ 5 \\ 8 \end{bmatrix}+\begin{bmatrix} 1\\ 6 \\ 7 \end{bmatrix}+\begin{bmatrix} 2 \\ 4 \\ 9 \end{bmatrix}) = \begin{bmatrix} 3 \\ 5 \\ 8 \end{bmatrix}
X=31(
358
+
167
+
249
)=
358
矩阵的每列都减去样本的均值:
B
=
X
−
X
‾
=
[
1
−
1
0
0
1
−
1
0
−
1
1
]
B = X - \overline X = \begin{bmatrix} 1 & -1 & 0 \\ 0 & 1 &-1 \\ 0 & -1 &1 \end{bmatrix}
B=X−X=
100−11−10−11
矩阵的协方差矩阵Y:
Y
=
1
N
−
1
B
B
T
=
1
3
−
1
[
1
−
1
0
0
1
−
1
0
−
1
1
]
[
1
0
0
−
1
1
−
1
0
−
1
1
]
=
1
2
[
2
−
1
1
−
1
2
−
2
1
−
1
1
]
=
[
1
−
0.5
0.5
−
0.5
1
−
1
0.5
−
1
1
]
Y = \frac{1}{N -1}BB^T = \frac{1}{3-1}\begin{bmatrix} 1 & -1 & 0 \\ 0 & 1 &-1 \\ 0 & -1 &1 \end{bmatrix}\begin{bmatrix} 1 & 0 & 0 \\ -1 & 1 &-1 \\ 0 & -1 &1 \end{bmatrix} = \frac{1}{2}\begin{bmatrix} 2 & -1 & 1 \\ -1 & 2 & -2 \\ 1 & -1 &1 \end{bmatrix} = \begin{bmatrix} 1 & -0.5 & 0.5 \\ -0.5 & 1 & -1 \\ 0.5 & -1 &1 \end{bmatrix}
Y=N−11BBT=3−11
100−11−10−11
1−1001−10−11
=21
2−11−12−11−21
=
1−0.50.5−0.51−10.5−11
python实现
import numpy as np
a = np.array([3, 1, 2])
b = np.array([5, 6, 4])
c = np.array([8, 7, 9])
X = np.vstack((a, b, c))
print(f'矩阵X: \n{X}')
Y = np.cov(X)
print(f'矩阵X的协方差矩阵为: \n{Y}')