http://blog.csdn.net/ybdesire/article/details/6270328/.net
協方差的定義blog
對於通常的分佈,直接代入E(X)之類的就能夠計算出來了,但真給你一個具體數值的分佈,要計算協方差矩陣,根據這個公式來計算,還真不容易反應過來。網上值得參考的資料也很少,這裏用一個例子說明協方差矩陣是怎麼計算出來的吧。get
記住,X、Y是一個列向量,它表示了每種狀況下每一個樣本可能出現的數。好比給定方法
則X表示x軸可能出現的數,Y表示y軸可能出現的。注意這裏是關鍵,給定了4個樣本,每一個樣本都是二維的,因此只可能有X和Y兩種維度。因此matlab
用中文來描述,就是:co
協方差(i,j)=(第i列的全部元素-第i列的均值)*(第j列的全部元素-第j列的均值)源代碼
這裏只有X,Y兩列,因此獲得的協方差矩陣是2x2的矩陣,下面分別求出每個元素:中文
因此,按照定義,給定的4個二維樣本的協方差矩陣爲:ab
用matlab計算這個例子實例
z=[1,2;3,6;4,2;5,2]
cov(z)
ans =
2.9167 -0.3333
-0.3333 4.0000
能夠看出,matlab計算協方差過程當中還將元素統一縮小了3倍。因此,協方差的matlab計算公式爲:
協方差(i,j)=(第i列全部元素-第i列均值)*(第j列全部元素-第j列均值)/(樣本數-1)
下面在給出一個4維3樣本的實例,注意4維樣本與符號X,Y就沒有關係了,X,Y表示兩維的,4維就直接套用計算公式,不用X,Y那麼具備迷惑性的表達了。
(3)與matlab計算驗證
Z=[1 2 3 4;3 4 1 2;2 3 1 4]
cov(Z)
ans =
1.0000 1.0000 -1.0000 -1.0000
1.0000 1.0000 -1.0000 -1.0000
-1.0000 -1.0000 1.3333 0.6667
-1.0000 -1.0000 0.6667 1.3333
可知該計算方法是正確的。咱們還能夠看出,協方差矩陣都是方陣,它的維度與樣本維度有關(相等)。參考2中還給出了計算協方差矩陣的源代碼,很是簡潔易懂,在此感謝一下!