對於一般的分布,直接代入e(x)之類的就可以計算出來了,但真給你乙個具體數值的分布,要計算協方差矩陣,根據這個公式來計算,還真不容易反應過來。網上值得參考的資料也不多,這裡用乙個例子說明協方差矩陣是怎麼計算出來的吧。
如給出x、y分別表示乙個列向量,
x,y都為4行1列的向量,那麼協方差矩陣的每個元素
σ ij
=cov
(xi,
xj)=
e[(x
i−μi
)(xj
−μj)
]\sigma_=(x_i,x_j)=[(x_i-\mu_i)(x_j-\mu_j)]
σij=c
ov(x
i,x
j)=
e[(x
i−μ
i)(
xj−
μj)
]用中文來描述,就是:
σ ij
=(第i
列的所有
元素−第
i列的均
值)∗(
第j列的
所有元素
−第j列
的均值)
\sigma_=(第i列的所有元素-第i列的均值)*(第j列的所有元素-第j列的均值)
σij=(
第i列的
所有元素
−第i列
的均值)
∗(第j
列的所有
元素−第
j列的均
值)這裡只有x,y兩列,所以得到的協方差矩陣是2x2的矩陣,下面分別求出每乙個元素:
所以,按照定義,給定的4個二維樣本的協方差矩陣為:
σ =(
8.75−1
−112)
\sigma=\bigl( \begin 8.75 & -1 \\ -1 & 12 \end \bigr)
σ=(8.7
5−1
−112
)用matlab計算這個例子
z=[1,2;3,6;4,2;5,2]
cov(z)
ans =
2.9167 -0.3333
-0.3333 4.0000
可以看出,matlab計算協方差過程中還將元素統一縮小了3倍。所以,協方差的matlab計算公式為:
σ ij
\sigma_
σij
=(第i列所有元素-第i列均值)*(第j列所有元素-第j列均值)/(樣本數-1)
下面在給出乙個4維3樣本的例項,注意4維樣本與符號x,y就沒有關係了,x,y表示兩維的,4維就直接套用計算公式,不用x,y那麼具有迷惑性的表達了。
是與matlab的結算結果相同的,驗證程式如下:
> c1=matrix(c(1,2,3,4, 3,4,1,2, 2,3,1,4),nrow = 3,byrow = t)
> cov(c1)
[,1] [,2] [,3] [,4]
[1,] 1 1 -1.0000000 -1.0000000
[2,] 1 1 -1.0000000 -1.0000000
[3,] -1 -1 1.3333333 0.6666667
[4,] -1 -1 0.6666667 1.3333333
可知該計算方法是正確的。我們還可以看出,協方差矩陣都是方陣,它的維度與樣本維度有關(相等)。參考2中還給出了計算協方差矩陣的源**,非常簡潔易懂,在此感謝一下!
參考:[1]
[2]
詳解協方差與協方差矩陣計算
協方差的定義 對於一般的分布,直接代入e x 之類的就可以計算出來了,但真給你乙個具體數值的分布,要計算協方差矩陣,根據這個公式來計算,還真不容易反應過來。網上值得參考的資料也不多,這裡用乙個例子說明協方差矩陣是怎麼計算出來的吧。記住,x y 是乙個列向量,它表示了每種情況下每個樣本可能出現的數。比...
協方差矩陣計算
cov x,y exy ex ey 協方差的定義,ex為隨機變數x的數學期望,同理,exy是xy的數學期望 舉例 xi 1.1 1.9 3 yi 5.0 10.4 14.6 e x 1.1 1.9 3 3 2 e y 5.0 10.4 14.6 3 10 e xy 1.1 5.0 1.9 10.4 ...
矩陣的協方差計算
矩陣的協方差矩陣是對稱陣,用公式cov x,y e x y e x e y 計算,其中e x 和e y 是列的平局值,e x y 是樣本方差,可以用變換成gramian矩陣減去e x e y 後除以n 1,這樣cov x,y e x y e x e y 變換為 g x y m 1 m m 1 e x...