协方差的计算方法

版权声明:本文绝大部分引用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=iijj

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

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

用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

  • 4
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值