Pearson在Matlab中的系数和协方差计算

时间:2011-04-13 05:53:53

标签: matlab correlation pearson

我想在Matlab中计算Pearson's correlation coefficent(不使用Matlab的corr函数)。

简单地说,我有两个向量A和B(每个向量都是1x100),我试图像这样计算Pearson系数:

P = cov(x, y)/std(x, 1)std(y,1)

我正在使用Matlab的covstd函数。我没有得到的是,cov函数返回一个像这样的方阵:

corrAB =
    0.8000    0.2000
    0.2000    4.8000

但我希望单个数字作为协方差,所以我可以得出一个P(皮尔森系数)数。我错过了什么意思?

2 个答案:

答案 0 :(得分:10)

我认为你只是与协方差和协方差矩阵混淆,数学符号和MATLAB的函数输入看起来很相似。在数学中,cov(x,y)表示两个变量xy中的 covariance 。在MATLAB中,cov(x,y)计算xy covariance matrix 。此处cov是一个函数,xy是输入。

为了更清楚,让我用C来表示协方差。 MATLAB的cov(x,y)返回格式

的矩阵
C_xx    C_xy
C_yx    C_yy

正如RichC指出的那样,你需要非对角线C_xy(注意C_xy=C_yx对于实变量xy)。一个MATLAB脚本为您提供了两个变量xy的Pearson系数,是:

C=cov(x,y);
p=C(2)/(std(x)*std(y));

答案 1 :(得分:2)

来自文档:

  

cov(X,Y),其中X和Y是矩阵   具有相同数量的元素,是   相当于cov([X(:) Y(:)])。

使用:

C = cov(X,Y);
coeff = C(1,2) / sqrt(C(1,1) * C(2,2))