協方差矩陣轉載

協方差矩陣

協方差的定義

 

對於一般的分佈,直接代入E(X)之類的就可以計算出來了,但真給你一個具體數值的分佈,要計算協方差矩陣,根據這個公式來計算,還真不容易反應過來。網上值得參考的資料也不多,這裏用一個例子說明協方差矩陣是怎麼計算出來的吧。

記住,X、Y是一個列向量,它表示了每種情況下每個樣本可能出現的數。比如給定

則X表示x軸可能出現的數,Y表示y軸可能出現的。注意這裏是關鍵,給定了4個樣本,每個樣本都是二維的,所以只可能有X和Y兩種維度。所以

 

 

用中文來描述,就是:

協方差(i,j)=(第i列的所有元素-第i列的均值)*(第j列的所有元素-第j列的均值)

這裏只有X,Y兩列,所以得到的協方差矩陣是2x2的矩陣,下面分別求出每一個元素:

       所以,按照定義,給定的4個二維樣本的協方差矩陣爲:

 

    

用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中還給出了計算協方差矩陣的源代碼,非常簡潔易懂,在此感謝一下!

 

參考:

[1] http://en.wikipedia.org/wiki/Covariance_matrix

[2] http://www.cnblogs.com/cvlabs/archive/2010/05/08/1730319.html

發佈了7 篇原創文章 · 獲贊 4 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章