Ram*_*ala 7 matlab pearson correlation
我想在Matlab中计算Pearson的相关系数(不使用Matlab的corr函数).
简单地说,我有两个向量A和B(每个向量都是1x100),我试图像这样计算Pearson系数:
P = cov(x, y)/std(x, 1)std(y,1)
Run Code Online (Sandbox Code Playgroud)
我正在使用Matlab cov和std函数.我没有得到的是,cov函数返回一个方形矩阵,如下所示:
corrAB =
0.8000 0.2000
0.2000 4.8000
Run Code Online (Sandbox Code Playgroud)
但我希望单个数字作为协方差,所以我可以得出一个P(皮尔逊系数)数.我错过了什么?
abc*_*bcd 10
我认为你只是与协方差和协方差矩阵混淆,数学符号和MATLAB的函数输入看起来很相似.在数学,cov(x,y)意味着协方差这两个变量的x和y.在MATLAB中,cov(x,y)计算协方差矩阵的x和y.这cov是一个功能,x而且y是输入.
为了使它更清楚,让我表示协方差C.MATLAB cov(x,y)返回一个表格矩阵
C_xx C_xy
C_yx C_yy
Run Code Online (Sandbox Code Playgroud)
正如RichC指出的那样,你需要非对角线C_xy(注意C_xy=C_yx对于实际变量x和y).MATLAB脚本,让您的皮尔森系数两个变量x和y,就是:
C=cov(x,y);
p=C(2)/(std(x)*std(y));
Run Code Online (Sandbox Code Playgroud)
小智 2
来自文档:
cov(X,Y)(其中 X 和 Y 是元素数量相同的矩阵)等价于 cov([X(:) Y(:)])。
使用:
C = cov(X,Y);
coeff = C(1,2) / sqrt(C(1,1) * C(2,2))
Run Code Online (Sandbox Code Playgroud)