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

目录

前言

一、方差

二、协方差矩阵

①协方差

②自协方差矩阵

互协方差矩阵​编辑

③互协方差矩阵

Ⅰ、数学定义

Ⅱ、MATLAB运算

三、相关矩阵

①person相关系数

②自相关矩阵

③互相关矩阵

Ⅰ、数学定义

Ⅱ、matlab运算


前言

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

一、方差

        这是百度百科所给的定义

阿白数模笔记之协方差矩阵与相关矩阵_第1张图片

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)%方差

二、协方差矩阵

①协方差

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

阿白数模笔记之协方差矩阵与相关矩阵_第2张图片

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的协方差

②自协方差矩阵

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

互协方差矩阵阿白数模笔记之协方差矩阵与相关矩阵_第3张图片

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

③互协方差矩阵

Ⅰ、数学定义

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

阿白数模笔记之协方差矩阵与相关矩阵_第4张图片

 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计算代码

阿白数模笔记之协方差矩阵与相关矩阵_第5张图片

 

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相关系数

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

阿白数模笔记之协方差矩阵与相关矩阵_第6张图片

 阿白数模笔记之协方差矩阵与相关矩阵_第7张图片

 绝对值越接近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

你可能感兴趣的:(阿白数模笔记,矩阵,matlab,线性代数)