当前位置:   article > 正文

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

相关矩阵

目录

前言

一、方差

二、协方差矩阵

①协方差

②自协方差矩阵

互协方差矩阵​编辑

③互协方差矩阵

Ⅰ、数学定义

Ⅱ、MATLAB运算

三、相关矩阵

①person相关系数

②自相关矩阵

③互相关矩阵

Ⅰ、数学定义

Ⅱ、matlab运算


前言

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

一、方差

        这是百度百科所给的定义

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

二、协方差矩阵

①协方差

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

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

②自协方差矩阵

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

互协方差矩阵

  1. a= [5 0 3 7; 1 -5 7 3; 4 9 8 10;1 0 9 8];
  2. b=a-mean(a);
  3. n=size(a);
  4. cx=zeros(n);
  5. for i=1:n(2)%遍历每一列
  6. for j=1:n(2)%遍历每一列
  7. cx(i,j)=b(:,i)'*b(:,j)/(n(1)-1);
  8. end
  9. end
  10. c=cov(a);%matlab中有cov,此处用来检验运算是否正确
  11. >> cx-c
  12. ans =
  13. 1.0e-14 *
  14. 0 0 0.0444 0
  15. 0 -0.7105 0 0
  16. 0.0444 0 0 0
  17. 0 0 0 0.1776

③互协方差矩阵

Ⅰ、数学定义

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

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

  1. x=rand(5,6);
  2. [m,n]=size(x);
  3. y=rand(5,6);
  4. c=zeros(n);
  5. for i=1:n
  6. for j=1:n
  7. c(i,j)=x(:,i)'*y(:,j)/(n-1);
  8. end
  9. end
  10. >> c
  11. c =
  12. 0.1880 0.1877 0.1157 0.1654 0.1283 0.2000
  13. 0.2199 0.2038 0.1970 0.3117 0.1446 0.3019
  14. 0.2576 0.3327 0.2605 0.2840 0.2559 0.3710
  15. 0.2513 0.2942 0.1550 0.2387 0.1472 0.2588
  16. 0.2119 0.2406 0.1538 0.2424 0.1280 0.2493
  17. 0.2305 0.2244 0.1704 0.2219 0.1873 0.2841

Ⅱ、MATLAB运算

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

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

 

  1. a=[1 2 3 0];
  2. b=[5,6,7,9];
  3. cab=cov(a,b);
  4. c=zeros(2);
  5. c(1,1)=cov(a);
  6. c(2,2)=cov(b);
  7. a=a-mean(a);
  8. b=b-mean(b);
  9. c(1,2)=a*b'/(4-1);
  10. c(2,1)=c(1,2);
  11. >> c
  12. c =
  13. 1.6667 -0.8333
  14. -0.8333 2.9167
  15. >> cab
  16. cab =
  17. 1.6667 -0.8333
  18. -0.8333 2.9167

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

  1. x=rand(2,3);
  2. y=rand(3,2);
  3. c1=cov(x,y)%按照数学公式应返回3×3协方差矩阵,但在matlab中会返回2×2矩阵
  4. c2=cov(x(:),y(:))
  5. c1 =
  6. 0.0571 -0.0009
  7. -0.0009 0.0440
  8. c2 =
  9. 0.0571 -0.0009
  10. -0.0009 0.0440

三、相关矩阵

person相关系数

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

 

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

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

②自相关矩阵

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

  1. a=rand(3,4);
  2. [m,n]=size(a);
  3. c1=zeros(n);
  4. for i=1:n
  5. for j=1:n
  6. c1(i,j)=corr(a(:,i),a(:,j));
  7. %c1(i,j)是原矩阵i列j列的相关系数
  8. end
  9. end
  10. c1
  11. c2=corrcoef(a)%返回a1的自相关矩阵
  12. c1 =%对角元都为1
  13. 1.0000 0.6911 -0.0058 -0.9390
  14. 0.6911 1.0000 0.7187 -0.8975
  15. -0.0058 0.7187 1.0000 -0.3385
  16. -0.9390 -0.8975 -0.3385 1.0000
  17. c2 =
  18. 1.0000 0.6911 -0.0058 -0.9390
  19. 0.6911 1.0000 0.7187 -0.8975
  20. -0.0058 0.7187 1.0000 -0.3385
  21. -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列的相关系数

  1. a=rand(3,4);
  2. b=rand(size(a));
  3. [m,n]=size(a);
  4. r1=zeros(n);
  5. for i =1:n
  6. for j=1:n
  7. r1(i,j)=corr(a(:,i),b(:,j));
  8. end
  9. end

Ⅱ、matlab运算

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

  1. a=rand(3,4);
  2. b=rand(size(a));
  3. r=corr(a(:),b(:))
  4. r2=corrcoef(a,b)
  5. r3=corrcoef(a(:),b(:))
  6. r =
  7. -0.1293
  8. r2 =%(1,2),(2,1)是a(:),b(:)的相关系数
  9. 1.0000 -0.1293
  10. -0.1293 1.0000
  11. r3 =
  12. 1.0000 -0.1293
  13. -0.1293 1.0000

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/182769
推荐阅读
相关标签
  

闽ICP备14008679号