協方差的計算方法

2021-09-29 18:49:04 字數 2277 閱讀 9294

對於一般的分布,直接代入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...