阿白数模笔记之协方差矩阵与相关矩阵

目录

前言

一、方差

二、协方差矩阵

①协方差

②自协方差矩阵

互协方差矩阵​编辑

③互协方差矩阵

Ⅰ、数学定义

Ⅱ、MATLAB运算

三、相关矩阵

①person相关系数

②自相关矩阵

③互相关矩阵

Ⅰ、数学定义

Ⅱ、matlab运算


前言

        作为数模小白,前天在学习FA算法时看到协方差直接啥也不会,在查阅多方资料后,才算是有所了解,本文介绍数学上协方差矩阵和相关矩阵的定义以及在MATLAB中的运算。

一、方差

        这是百度百科所给的定义

n=input('请输入矩阵的行数:');
a=rand(n,1);
b=mean(a);
s1=0;
for i=1:n
    s1=s1+(a(i)-b)^2;
end
s1=s1/(n-1)%方差
s=s1^0.5%标准差
s2=cov(a)%方差
s3=var(a)%方差

二、协方差矩阵

①协方差

         该图来自如何直观地理解「协方差矩阵」?

a=[1,2,3,4];
a1=a-mean(a);
b=[5,6,7,8];
b1=b-mean(b);
c=a1*b1'/(size(a,1)-1);%即为a,b的协方差

②自协方差矩阵

        该图来自如何直观地理解「协方差矩阵」?

互协方差矩阵

a= [5 0 3 7; 1 -5 7 3; 4 9 8 10;1 0 9 8];
b=a-mean(a);
n=size(a);
cx=zeros(n);
for i=1:n(2)%遍历每一列
    for j=1:n(2)%遍历每一列
        cx(i,j)=b(:,i)'*b(:,j)/(n(1)-1);
    end
end
c=cov(a);%matlab中有cov,此处用来检验运算是否正确
>> cx-c

ans =

   1.0e-14 *

         0         0    0.0444         0
         0   -0.7105         0         0
    0.0444         0         0         0
         0         0         0    0.1776

③互协方差矩阵

Ⅰ、数学定义

        该图来自(自)协方差矩阵与互协方差矩阵简介

 x,y应为同型矩阵。这是根据数学定义计算出的cov(x,y)

x=rand(5,6);
[m,n]=size(x);
y=rand(5,6);
c=zeros(n);
for i=1:n
    for j=1:n
        c(i,j)=x(:,i)'*y(:,j)/(n-1);
    end
end
>> c

c =

    0.1880    0.1877    0.1157    0.1654    0.1283    0.2000
    0.2199    0.2038    0.1970    0.3117    0.1446    0.3019
    0.2576    0.3327    0.2605    0.2840    0.2559    0.3710
    0.2513    0.2942    0.1550    0.2387    0.1472    0.2588
    0.2119    0.2406    0.1538    0.2424    0.1280    0.2493
    0.2305    0.2244    0.1704    0.2219    0.1873    0.2841

Ⅱ、MATLAB运算

        但在MATLAB中,cov(A,B)的含义与数学中的并不相同

 ①的意思是,传入的A,B都是列向量或行向量,此图来自matlab协方差cov计算代码

 

a=[1 2 3 0];
b=[5,6,7,9];
cab=cov(a,b);
c=zeros(2);
c(1,1)=cov(a);
c(2,2)=cov(b);
a=a-mean(a);
b=b-mean(b);
c(1,2)=a*b'/(4-1);
c(2,1)=c(1,2);
>> c

c =

    1.6667   -0.8333
   -0.8333    2.9167

>> cab

cab =

    1.6667   -0.8333
   -0.8333    2.9167

②的意思是,A,B中元素总数相等(不要求同型),cov(A,B)=cov(A(:),B(:));

x=rand(2,3);
y=rand(3,2);
c1=cov(x,y)%按照数学公式应返回3×3协方差矩阵,但在matlab中会返回2×2矩阵
c2=cov(x(:),y(:))
c1 =

    0.0571   -0.0009
   -0.0009    0.0440


c2 =

    0.0571   -0.0009
   -0.0009    0.0440

三、相关矩阵

①person相关系数

        这是百度百科所给的定义:

 

 绝对值越接近1,线性相关性越强

x=rand(5,1);
y=rand(5,1);
r1=(x-mean(x))'*(y-mean(y))/(5-1)/(var(x)*var(y))^0.5
r2=corr(x,y)%返回两个等长矩阵的相关系数
r1 =

    0.3655


r2 =

    0.3655

②自相关矩阵

        相关矩阵也叫相关系数矩阵,是由矩阵各列间的相关系数构成的。也就是说,自相关矩阵第i行第j列的元素是原矩阵第i列和第j列的相关系数

a=rand(3,4);
[m,n]=size(a);
c1=zeros(n);
for i=1:n
    for j=1:n
        c1(i,j)=corr(a(:,i),a(:,j));
        %c1(i,j)是原矩阵i列j列的相关系数
    end
end
c1
c2=corrcoef(a)%返回a1的自相关矩阵
c1 =%对角元都为1

    1.0000    0.6911   -0.0058   -0.9390
    0.6911    1.0000    0.7187   -0.8975
   -0.0058    0.7187    1.0000   -0.3385
   -0.9390   -0.8975   -0.3385    1.0000


c2 =

    1.0000    0.6911   -0.0058   -0.9390
    0.6911    1.0000    0.7187   -0.8975
   -0.0058    0.7187    1.0000   -0.3385
   -0.9390   -0.8975   -0.3385    1.0000

③互相关矩阵

Ⅰ、数学定义

        对同型矩阵x,y(m×n)。R(x,y)表示x,y的互相关矩阵(n×n),rij=r(xi,yj),即x第i列与y第j列的相关系数

a=rand(3,4);
b=rand(size(a));
[m,n]=size(a);
r1=zeros(n);
for i =1:n
    for j=1:n
        r1(i,j)=corr(a(:,i),b(:,j));
    end
end

Ⅱ、matlab运算

        和上面说讲的MATLAB运算互协方差矩阵相似,corrcoef(a,b)=corrcoef(a(:),b(:))

a=rand(3,4);
b=rand(size(a));
r=corr(a(:),b(:))
r2=corrcoef(a,b)
r3=corrcoef(a(:),b(:))
r =

   -0.1293


r2 =%(1,2),(2,1)是a(:),b(:)的相关系数

    1.0000   -0.1293
   -0.1293    1.0000


r3 =

    1.0000   -0.1293
   -0.1293    1.0000

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿白啥也不会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值