想用MATLAB中的corrcoef函数求两个向量的相关系数-查字典问答网
分类选择

来自丛艳艳的问题

  想用MATLAB中的corrcoef函数求两个向量的相关系数.比如A=[123];B=[537];r=corrcoef(A,B)可以求出相关系数是0.5.为什么两个向量的元素都要是3个以上才行?而只有两个元素的向量如A=[12];B=[53];不管

  想用MATLAB中的corrcoef函数求两个向量的相关系数.

  比如A=[123];B=[537];r=corrcoef(A,B)可以求出相关系数是0.5.为什么两个向量的元素都要是3个以上才行?而只有两个元素的向量如A=[12];B=[53];不管怎么随机的取,相关系数都是1或-1啊?只含两个元素的向量,都一定相关吗?

3回答
2020-02-06 11:09
我要回答
请先登录
寇东生

  这是求相关度的结果,对于一般的矩阵X,执行A=corrcoef(X)后,A中每个值的所在行a和列b,反应的是原矩阵X中相应的第a个列向量和第b个列向量的相似程度(即相关系数).计算公式是:C(1,2)/SQRT(C(1,1)*C(2,2)),其中C表示矩阵[f,g]的协方差矩阵,假设f和g都是列向量(这两个序列的长度必须一样才能参与运算),则得到的(我们感兴趣的部分)是一个数.以默认的A=corrcoef(f,g)为例,输出A是一个二维矩阵(对角元恒为1),我们感兴趣的f和g的相关系数就存放在A(1,2)=A(2,1)上,其值在[-1,1]之间,1表示最大的正相关,-1表示绝对值最大的负相关

  >> A=[1 2 3];B=[5 3 7]; r= corrcoef(A,B)

  r =

  1.0000 0.5000

  0.5000 1.0000

  >> A=[1 2];B=[5 3];

  r= corrcoef(A,B)

  r =

  1.0000 -1.0000

  -1.0000 1.0000%%-1是算出来的,不是说二维向量就一定相关,根据图中r和协方差矩阵的关系

  cov(A,B)

  ans =

  0.5000 -1.0000

  -1.0000 2.0000%%%A和B的协方差矩阵,

  那么R(1,2)=C(1,2)/(sqrt(C(1,1)*C(2,2)))=-1,sqrt为开方的意思.

2020-02-06 11:12:27
丛艳艳

  非常感谢你的回答,真的是太详细了,我都抄在本子上了呵呵。但还是有一点不明白,“-1是算出来的,不是说二维向量就一定相关,”什么意思?为什么任何两个二维向量计算出来的相关系数都是1或者-1?你不是说“1表示最大的正相关,-1表示绝对值最大的负相关”吗?那么任何两个二维的向量都具有最大的正(负)相关性吗?相关系数为1,也就是相关的。我不是学数学的,是做课题的时候发现这个问题不明白。

2020-02-06 11:14:30
寇东生

  >>A=[10];B=[01];%%二维向量,不相关cov(A,B)ans=0.5000-0.5000-0.50000.5000A=[12];B=[510];%%二维向量,相关cov(A,B)ans=0.50002.50002.500012.5000正相关是指两列变量变动方向相同,一列变量由大到小或由小到大变化时,另一列变量亦由大到小或由小到大变化。负相关是指两列变量变动方向相反,一列变量由大到小或由小到大变化时,另一列变量反而由小到大或由大到小变化。matlab函数corrcoef也是根据上面的概念计算的,关于二维向量计算总得到-1或者1的问题,我仔细看了下,上面的测试两组数据,可以看出协方差矩阵中sqrt(C(1,1)*C(2,2))=C(1,2)or-C(1,2)。也就是说不管你怎么换数据sqrt(C(1,1)*C(2,2))=C(1,2)or-C(1,2)这个式子总是成立的,所以我个人认为是样本数量(向量维数)少或者是这个函数的缺陷。

2020-02-06 11:19:23

最新问答

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  •