协方差的计算方法

365bet软件下载 admin 2025-07-09 08:12:52

版权声明:本文绝大部分引用CSDN博主「lslrh_123」文章,在此感谢! 原文链接:https://blog.csdn.net/lslrh_123/article/details/80674536

协方差的定义

对于一般的分布,直接代入E(X)之类的就可以计算出来了,但真给你一个具体数值的分布,要计算协方差矩阵,根据这个公式来计算,还真不容易反应过来。网上值得参考的资料也不多,这里用一个例子说明协方差矩阵是怎么计算出来的吧。

如给出X、Y分别表示一个列向量,

计算方法

X,Y都为4行1列的向量,那么协方差矩阵的每个元素

Σ

i

j

=

c

o

v

(

X

i

,

X

j

)

=

E

[

(

X

i

μ

i

)

(

X

j

μ

j

)

]

\Sigma_{ij}={\rm cov}(X_i,X_j)={\rm E}[(X_i-\mu_i)(X_j-\mu_j)]

Σij​=cov(Xi​,Xj​)=E[(Xi​−μi​)(Xj​−μj​)] 用中文来描述,就是:

Σ

i

j

=

i

i

j

j

\Sigma_{ij}=(第i列的所有元素-第i列的均值)*(第j列的所有元素-第j列的均值)

Σij​=(第i列的所有元素−第i列的均值)∗(第j列的所有元素−第j列的均值)

这里只有X,Y两列,所以得到的协方差矩阵是2x2的矩阵,下面分别求出每一个元素: 所以,按照定义,给定的4个二维样本的协方差矩阵为:

Σ

=

(

8.75

1

1

12

)

\Sigma=\bigl( \begin{matrix} 8.75 & -1 \\ -1 & 12 \end{matrix} \bigr)

Σ=(8.75−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计算公式为:

Σ

i

j

\Sigma_{ij}

Σij​=(第i列所有元素-第i列均值)*(第j列所有元素-第j列均值)/(样本数-1)

下面在给出一个4维3样本的实例,注意4维样本与符号X,Y就没有关系了,X,Y表示两维的,4维就直接套用计算公式,不用X,Y那么具有迷惑性的表达了。

与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

R语言中的计算结果

是与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] http://en.wikipedia.org/wiki/Covariance_matrix

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

相关文章

17个高效体育游戏:提升灵活性与速度

[Win11测试反馈]照片全屏查看图片无法撑满屏幕,即使宽高比一致

赵文静个人资料最新消息 网红赵文静在哪里播真名叫什么怎么火的

当之无愧

王者v8要充多少?

德国40万球迷欢庆德国队凯旋 世界杯8强回国均受欢迎

糨糊的意思

什么是hard模式?Hard模式是什么意思?

win7装系统所需时间:究竟需要多长时间?