协方差&协方差矩阵【matlab实例】

协方差矩阵

协方差也只能处理二维问题,那维数多了自然就需要计算多个协方差,比如n维的数据集就需要计算 n!(n2)!2 个协方差,那自然而然我们会想到使用矩阵来组织这些数据。给出协方差矩阵的定义:

Cnn=(ci,j,ci,j=cov(Dimi,Dimj))

这个定义还是很容易理解的,我们可以举一个三维的例子,假设数据集有三个维度,则协方差矩阵为:


这里写图片描述

必须要明确一点,协方差矩阵计算的是不同维度之间的协方差,而不是不同样本之间的。以下的演示将使用Matlab,为了说明计算原理,不直接调用Matlab的cov函数:

首先,随机生成一个10*3维的整数矩阵作为样本集,10为样本的个数,3为样本的维数。

>> mySample=fix(rand(10,3)*50)

mySample =

    40     7    32
    45    48     1
     6    47    42
    45    24    46
    31    40    33
     4     7    37
    13    21    37
    27    45    19
    47    39    32
    48    47     8

根据公式,计算协方差需要计算均值,前面特别强调了,协方差矩阵是计算不同维度之间的协方差,要时刻牢记这一点。样本矩阵的每行是一个样本,每列是一个维度,因此我们要按列计算均值。为了描述方便,我们先将三个维度的数据分别赋值:


>> dim1=mySample(:,1)

dim1 =

    40
    45
     6
    45
    31
     4
    13
    27
    47
    48

>> dim2=mySample(:,2)

dim2 =

     7
    48
    47
    24
    40
     7
    21
    45
    39
    47

>> dim3=mySample(:,3)

dim3 =

    32
     1
    42
    46
    33
    37
    37
    19
    32
     8

计算dim1与dim2,dim1与dim3,dim2与dim3的协方差:

>> cov12=sum((dim1-mean(dim1)).*(dim2-mean(dim2)))/(size(mySample,1)-1)

cov12 =

    78

>> cov13=sum((dim1-mean(dim1)).*(dim3-mean(dim3)))/(size(mySample,1)-1)

cov13 =

 -120.2444

>> cov13=sum((dim1-mean(dim1)).*(dim3-mean(dim3)))/(size(mySample,1)-1)

cov13 =

 -120.2444

>> cov13=sum((dim1-mean(dim1)).*(dim3-mean(dim3)))/(size(mySample,1)-1)

cov13 =

 -120.2444

>> cov23=sum((dim2-mean(dim2)).*(dim3-mean(dim3)))/(size(mySample,1)-1)

cov23 =

 -126.9444

协方差矩阵的对角线上的元素就是各个维度的方差,下面我们依次计算这些方差:

>> var1=std(dim1)^2

var1 =

  301.1556

>> var2=std(dim2)^2

var2 =

  268.9444

>> var3=std(dim3)^2

var3 =

  216.0111

这样,我们就得到了计算协方差矩阵所需要的所有数据,可以调用Matlab的cov函数直接得到协方差矩阵:

>> cov(mySample)

ans =

  301.1556   78.0000 -120.2444
   78.0000  268.9444 -126.9444
 -120.2444 -126.9444  216.0111

计算的结果,和之前的数据填入矩阵后的结果完全相同。

  • 12
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值