文章目錄
- 協方差矩陣
- 計算原理
- 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= ?358?167?249? ?
樣本均值為:
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?1?0?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?11?BBT=3?11? ?100??11?1?0?11? ? ?1?10?01?1?0?11? ?=21? ?2?11??12?1?1?21? ?= ?1?0.50.5??0.51?1?0.5?11? ?
python實現
import numpy as npa = 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}')