ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:20.43KB ,
资源ID:9607133      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9607133.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(协方差矩阵计算例子.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

协方差矩阵计算例子.docx

1、协方差矩阵计算例子协方差矩阵计算例子【篇一:协方差矩阵计算例子】浅谈协方差矩阵今天看论文的时候又看到了协方差矩阵这个破东西,以前看模式分类的时候就特困扰,没想到现在还是搞不清楚,索性开始查协方差矩阵的资料,恶补之后决定马上记录下来,嘿嘿本文我将用自认为循序渐进的方式谈谈协方差矩阵。统计学的基本概念学过概率统计的孩子都知道,统计里最基本的概念就是样本的均值,方差,或者再加个标准差。首先我们给你一个含有n个样本的集合,依次给出这些概念的公式描述,这些高中学过数学的孩子都应该知道吧,一带而过。均值:标准差:方差:很显然,均值描述的是样本集合的中间点,它告诉我们的信息是很有限的,而标准差给我们描述的则

2、是样本集合的各个样本点到均值的距离之平均。以这两个集合为例,0,8,12,20和8,9,11,12,两个集合的均值都是10,但显然两个集合差别是很大的,计算两者的标准差,前者是8.3,后者是1.8,显然后者较为集中,故其标准差小一些,标准差描述的就是这种“散布度”。之所以除以n-1而不是除以n,是因为这样能使我们以较小的样本集更好的逼近总体的标准差,即统计上所谓的“无偏估计”。而方差则仅仅是标准差的平方。为什么需要协方差?上面几个统计量看似已经描述的差不多了,但我们应该注意到,标准差和方差一般是用来描述一维数据的,但现实生活我们常常遇到含有多维数据的数据集,最简单的大家上学时免不了要统计多个学

3、科的考试成绩。面对这样的数据集,我们当然可以按照每一维独立的计算其方差,但是通常我们还想了解更多,比如,一个男孩子的猥琐程度跟他受女孩子欢迎程度是否存在一些联系啊,嘿嘿协方差就是这样一种用来度量两个随机变量关系的统计量,我们可以仿照方差的定义:来度量各个维度偏离其均值的程度,标准差可以这么来定义:协方差的结果有什么意义呢?如果结果为正值,则说明两者是正相关的(从协方差可以引出“相关系数”的定义),也就是说一个人越猥琐就越受女孩子欢迎,嘿嘿,那必须的结果为负值就说明负相关的,越猥琐女孩子越讨厌,可能吗?如果为0,也是就是统计上说的“相互独立”。从协方差的定义上我们也可以看出一些显而易见的性质,如

4、:协方差多了就是协方差矩阵上一节提到的猥琐和受欢迎的问题是典型二维问题,而协方差也只能处理二维问题,那维数多了自然就需要计算多个协方差,比如n维的数据集就需要计算个协方差,那自然而然的我们会想到使用矩阵来组织这些数据。给出协方差矩阵的定义:这个定义还是很容易理解的,我们可以举一个简单的三维的例子,假设数据集有三个维度,则协方差矩阵为可见,协方差矩阵是一个对称的矩阵,而且对角线是各个维度上的方差。matlab协方差实战上面涉及的内容都比较容易,协方差矩阵似乎也很简单,但实战起来就很容易让人迷茫了。必须要明确一点,协方差矩阵计算的是不同维度之间的协方差,而不是不同样本之间的。这个我将结合下面的例子

5、说明,以下的演示将使用matlab,为了说明计算原理,不直接调用matlab的cov函数(蓝色部分为matlab代码)。首先,随机产生一个10*3维的整数矩阵作为样本集,10为样本的个数,3为样本的维数。1mysample = fix(rand(10,3)*50)根据公式,计算协方差需要计算均值,那是按行计算均值还是按列呢,我一开始就老是困扰这个问题。前面我们也特别强调了,协方差矩阵是计算不同维度间的协方差,要时刻牢记这一点。样本矩阵的每行是一个样本,每列为一个维度,所以我们要按列计算均值。为了描述方便,我们先将三个维度的数据分别赋值:1dim1 = mysample(:,1);2dim2 =

6、 mysample(:,2);3dim3 = mysample(:,3);计算dim1与dim2,dim1与dim3,dim2与dim3的协方差:1sum( (dim1-mean(dim1) .* (dim2-mean(dim2) ) / ( size(mysample,1)-1 ) % 得到 74.53332sum( (dim1-mean(dim1) .* (dim3-mean(dim3) ) / ( size(mysample,1)-1 ) % 得到 -10.08893sum( (dim2-mean(dim2) .* (dim3-mean(dim3) ) / ( size(mysample

7、,1)-1 ) % 得到 -106.4000搞清楚了这个后面就容易多了,协方差矩阵的对角线就是各个维度上的方差,下面我们依次计算:1std(dim1)2 % 得到 108.32222std(dim2)2 % 得到 260.62223std(dim3)2 % 得到 94.1778这样,我们就得到了计算协方差矩阵所需要的所有数据,调用matlab自带的cov函数进行验证:1cov(mysample)把我们计算的数据对号入座,是不是一摸一样?update:今天突然发现,原来协方差矩阵还可以这样计算,先让样本矩阵中心化,即每一维度减去该维度的均值,使每一维度上的均值为0,然后直接用新的到的样本矩阵乘上

8、它的转置,然后除以(n-1)即可。其实这种方法也是由前面的公式通道而来,只不过理解起来不是很直观,但在抽象的公式推导时还是很常用的!同样给出matlab代码实现:1x = mysample - repmat(mean(mysample),10,1); % 中心化样本矩阵,使各维度均值为02c = (x*x)./(size(x,1)-1);【篇二:协方差矩阵计算例子】矩阵中的第个元素是与的协方差。这个概念是对于的一般化推广。二、理解的关键1、理解的关键是两个随机变量x1,x2的协方差如何计算,有cov(x1,x2)= e(x1-e(x1)x2-e(x2),对于离散的随机变量x1,x2,协方差矩阵

9、描述的x1,x2相互联系的偏差,所以两个随机变量是一一对应的,即假设有m个样本值,则分别为(x11,x21),(x12,x22),(x13,x23),.(x1m,x2m),这便可以写成一个2*m的矩阵的形式。则x1,x2协方差表示的是两个随机变量对应的样本值分别都减去各自均值后的乘积的均值(因为无偏性估计的缘故,除以的不是m而是m-1);2、所以对于一个n*m的样本矩阵,得出的协方差矩阵c是n*n的矩阵,协方差矩阵每个元素cij表示的随机变量xi,xj的协方差。所以协方差矩阵是一个对称矩阵,且对角线上元素为每个随机变量的方差(如果是信号的话可以看成是能量);如果各个变量相关性很小的话,互相的协

10、方差接近0,即协方差矩阵基本上为对角阵;3、可以证明,协方差矩阵是非负定矩阵,这可以有非负定矩阵的定义得到;4、同样地,为了表示各个随机变量相关性到底有多大,可以引入相关性矩阵。统计学的基本概念学过概率统计的孩子都知道,统计里最基本的概念就是样本的均值,方差,或者再加个标准差。首先我们给你一个含有n个样本的集合,依次给出这些概念的公式描述,这些高中学过数学的孩子都应该知道吧,一带而过。均值:标准差:方差:很显然,均值描述的是样本集合的中间点,它告诉我们的信息是很有限的,而标准差给我们描述的则是样本集合的各个样本点到均值的距离之平均。以这两个集合为例,0,8,12,20和8,9,11,12,两个

11、集合的均值都是10,但显然两个集合差别是很大的,计算两者的标准差,前者是8.3,后者是1.8,显然后者较为集中,故其标准差小一些,标准差描述的就是这种“散布度”。之所以除以n-1而不是除以n,是因为这样能使我们以较小的样本集更好的逼近总体的标准差,即统计上所谓的“无偏估计”。而方差则仅仅是标准差的平方。为什么需要协方差?上面几个统计量看似已经描述的差不多了,但我们应该注意到,标准差和方差一般是用来描述一维数据的,但现实生活我们常常遇到含有多维数据的数据集,最简单的大家上学时免不了要统计多个学科的考试成绩。面对这样的数据集,我们当然可以按照每一维独立的计算其方差,但是通常我们还想了解更多,比如,

12、一个男孩子的猥琐程度跟他受女孩子欢迎程度是否存在一些联系啊,协方差就是这样一种用来度量两个随机变量关系的统计量,我们可以仿照方差的定义:来度量各个维度偏离其均值的程度,标准差可以这么来定义:协方差的结果有什么意义呢?如果结果为正值,则说明两者是正相关的(从协方差可以引出“相关系数”的定义),也就是说一个人越猥琐就越受女孩子欢迎,那必须的结果为负值就说明负相关的,越猥琐女孩子越讨厌,可能吗?如果为0,也是就是统计上说的“相互独立”。从协方差的定义上我们也可以看出一些显而易见的性质,如:协方差多了就是协方差矩阵上一节提到的猥琐和受欢迎的问题是典型二维问题,而协方差也只能处理二维问题,那维数多了自然

13、就需要计算多个协方差,比如n维的数据集就需要计算个协方差,那自然而然的我们会想到使用矩阵来组织这些数据。给出协方差矩阵的定义:这个定义还是很容易理解的,我们可以举一个简单的三维的例子,假设数据集有三个维度,则协方差矩阵为可见,协方差矩阵是一个对称的矩阵,而且对角线是各个维度上的方差。matlab协方差实战上面涉及的内容都比较容易,协方差矩阵似乎也很简单,但实战起来就很容易让人迷茫了。必须要明确一点,协方差矩阵计算的是不同维度之间的协方差,而不是不同样本之间的。这个我将结合下面的例子说明,以下的演示将使用matlab,为了说明计算原理,不直接调用matlab的cov函数(蓝色部分为matlab代

14、码)。首先,随机产生一个10*3维的整数矩阵作为样本集,10为样本的个数,3为样本的维数。1mysample = fix(rand(10,3)*50)根据公式,计算协方差需要计算均值,那是按行计算均值还是按列呢,我一开始就老是困扰这个问题。前面我们也特别强调了,协方差矩阵是计算不同维度间的协方差,要时刻牢记这一点。样本矩阵的每行是一个样本,每列为一个维度,所以我们要按列计算均值。为了描述方便,我们先将三个维度的数据分别赋值:dim1 = mysample(:,1);dim2 = mysample(:,2);dim3 = mysample(:,3);计算dim1与dim2,dim1与dim3,d

15、im2与dim3的协方差:1sum( (dim1-mean(dim1) .* (dim2-mean(dim2) ) /( size(mysample,1)-1 ) %(10行;(10-1)) 得到74.53332;sum( (dim1-mean(dim1) .* (dim3-mean(dim3) ) / (size(mysample,1)-1 ) % 得到 -10.08893;sum(dim2-mean(dim2) .* (dim3-mean(dim3) ) / ( size(mysample,1)-1 ) %得到 -106.4000搞清楚了这个后面就容易多了,协方差矩阵的对角线就是各个维度上

16、的方差,下面我们依次计算:1std(dim1)2 % 得到 108.3222;2std(dim2)2 % 得到 260.6222;3std(dim3)2 %得到 94.1778这样,我们就得到了计算协方差矩阵所需要的所有数据,调用matlab自带的cov函数进行验证:1cov(mysample)把我们计算的数据对号入座,是不是一摸一样?update:今天突然发现,原来协方差矩阵还可以这样计算,先让样本矩阵中心化,即每一维度减去该维度的均值,使每一维度上的均值为0,然后直接用新的到的样本矩阵乘上它的转置,然后除以(n-1)即可。其实这种方法也是由前面的公式通道而来,只不过理解起来不是很直观,但在

17、抽象的公式推导时还是很常用的!同样给出matlab代码实现:1x = mysample -repmat(mean(mysample),10,1);% 中心化样本矩阵,使各维度均值为02c = (x*x)./(size(x,1)-1);%b = repmat(a,m,n)将矩阵a 复制 m n 块,即把 a 作为 b 的元素,b 由 m n 个 a 平铺而成。b 的维数是 size(a,1)*m,(size(a,2)*na = 1,2;3,4 b = repmat(a,2,3)1 2 1 23 4 3 41 2 1 2 13 4 3 4 3总结理解协方差矩阵的关键就在于牢记它计算的是不同维度之间

18、的协方差,而不是不同样本之间,拿到一个样本矩阵,我们最先要明确的就是一行是一个样本还是一个维度。matlab:1、均值数学定义:matlab 函数:meanx=1,2,3mean(x)=2如果x 是一个矩阵,则其均值是一个向量组。mean(x,1)为列向量的均值,mean(x,2)为行向量的均值。x=1 2 34 5 6mean(x,1)=2.5, 3.5, 4.5mean(x,2)=25若要求整个矩阵元素的均值,则为mean(mean(x)。mean(mean(x)=3.5也可使用mean2函数:mean2(x)=3.5median,求一组数据的中值,用法与mean 相同。x=1,2,9me

19、an(x)=4median(x)=22、方差数学定义:均方差:matlab 函数:var要注意的是var 函数所采用公式中,分母不是,而是。这是因为var 函数实际上求的并不是方差,而是误差理论中“有限次测量数据的标准偏差的估计值”。x=1,2,3,4var(x)=1.6667sum(x(1,:)-mean(x).2)/length(x)=1.2500sum(x(1,:)-mean(x).2)/(length(x)-1)=1.6667var 没有求矩阵的方差功能,可使用std 先求均方差,再平方得到方差。std,均方差,std(x,0,1)求列向量方差,std(x,0,2)求行向量方差。x=1

20、 23 4std(x,0,1)=1.4142 1.4142std(x,0,2)=0.70710.7071若要求整个矩阵所有元素的均方差,则要使用std2函数:std2(x)=1.29104、协方差矩阵a=61.45,55.9,61.95,59,58.14,53.61,55.48,54.21,61.52,54.92;b=40.36,39.8,49.2,48,51.5,49.39,51.13,58.06,61,62.35;c=8.61,8.91,10.43,13.32,13.48,15.75,18.14,19.95,21.95,23.53;d=14.31,14.72,15.28,15.91,14.

21、67,15,15.86,15.16,13.72,12.94;e=7.67,7.75,8.15,9.24,10.68,10.58,10.31,10,8.91,8.51;q=a,b,c,d,e;w=cov(q)w =10.3710 -4.7446 -6.6023 -0.1873 -1.8881-4.7446 59.1503 38.7606 -3.0743 3.0982-6.6023 38.7606 28.6966 -2.0199 2.4166-0.1873 -3.0743 -2.0199 0.8474 0.3936-1.8881 3.0982 2.4166 0.3936 1.3412例:a=-11

22、2-231403fori=1:size(a,2)%size(a,1)求矩阵的行数;size(a,2)求矩阵的列数,相当于length(a);size(a)同时求矩阵的行和列数forj=1:size(a,2)%a(1,:)表示这个矩阵的第一行;a(:,1)表示这个矩阵的第一列c(i,j)=sum(a(:,i)-mean(a(:,i).*(a(:,j)-mean(a(:,j)/(size(a,1)-1);endendc =10.3333 -4.1667 3.0000-4.1667 2.3333 -1.50003.0000 -1.5000 1.0000c为求得的协方差矩阵,在matlab以矩阵a的每

23、一列为变量,对应的每一行为样本。这样在矩阵a中就有3个列变量分别为a(:,1),a(:,2), a(:,3)。在协方差矩阵c中,每一个元素c(i,j)为对第i列与第j列的协方差,例如c(1,2) =-4.1667为第一列与第二列的协方差。拿c(1,2)的求解过程来说c(1,2)=sum(a(:,1)-mean(a(:,1).*(a(:,2)-mean(a(:,2)/(size(a,1)-1);1.a(:,1)-mean(a(:,1),第一列的元素减去该列的均值得到-1.3333-2.33333.66672,a(:,2)-mean(a(:,2),第二列的元素减去该列的均值得到-0.33331.6

24、667-1.33333,再将第一步与第二部的结果相乘-1.3333 -0.33330.4444-2.3333 .*1.6667 = -3.88896667 -1.3333 -4.88894,再将结果求和/size(a,1)-1 得 -4.1667,该值即为c(1,2)的值。再细看一下是不是与协方差公式:cov(x,y) = e (x-e(x) (y-e(y) 过程基本一致呢,只是在第4步的时候matlab做了稍微的调整,自由度为n-1,减少了一行的样本值个数。clear all;a =-1,1,2;-2,3,1;4,0,3b=cov(a)for i=1:size(a,2) %size(a,1)

25、求矩阵的行数;size(a,2)求矩阵的列数 forj=1:size(a,2) %a(1,:)表示这个矩阵的第一行;a(:,1)表示这个矩阵的第一列c(i,j)=sum(a(:,i)-mean(a(:,i).*(a(:,j)-mean(a(:,j)/(size(a,1)-1) endend【篇三:协方差矩阵计算例子】协方差的定义对于一般的分布,直接代入e(x)之类的就可以计算出来了,但真给你一个具体数值的分布,要计算协方差矩阵,根据这个公式来计算,还真不容易反应过来。网上值得参考的资料也不多,这里用一个例子说明协方差矩阵是怎么计算出来的吧。记住,x、y是一个列向量,它表示了每种情况下每个样本可

26、能出现的数。比如给定则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,2cov(z)ans = 2.9167 -0.3333 -0.3333 4.0000可以看出,matlab计算协方差过程中还将元素统一缩小了3倍。所以

27、,协方差的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 4cov(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

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1