协方差的计算方法 |
您所在的位置:网站首页 › 怎样根据分布列求方差 › 协方差的计算方法 |
版权声明:本文绝大部分引用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 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |