我在Matlab中有2个示例向量:
A = [5,3,3,0,4,1,5,0,2,5,5,0,5,3,4,0,1,4,4,0,4,2]; B = [1,0,0,0,1,0,4,0,0,0,0,4,4,0,1,0,0,0,0,0,0,0];
什么时候,我尝试用手动方法计算皮尔森相关性并用excel做,我有相同的结果( 0.667 )
1 0,667 0,667 1
但是当我用简单的代码在MatLab中尝试时:
pearson = corr(A',B');
它以不同的分数返回结果( 0,2139 ) .
1 0,2139 0,2139 1
也许它的发生是因为零分(0)用于计算它 . 发生的原因是缺少的值将在matlab中替换为零(0) .
在Pearson Correlation中,仅使用共同评估值来计算它 . (见粗体值)
A = [ 5 ,3,3,0, 4 ,1, 5 ,0,2,5,5,0, 5 ,3, 4 ,0,1,4,4,0,4,2]; B = [ 1 ,0,0,0, 1 ,0, 4 ,0,0,0,0,4, 4 ,0, 1 ,0,0,0,0,0,0,0];
或者它可以变得简单:
A = [ 5 , 4 , 5 , 5 , 4 ]; B = [ 1 , 1 , 4 , 4 , 1 ];
有谁知道,如何为此制作简单的代码?我在程序代码中尝试了它:首先,使函数指定,average_corated,然后最后计算相似性 . 它花费了太多时间 .
谢谢之前:)
2 回答
您必须首先获取好数据所在位置的索引:
我认为这是一个班轮:
pearson = corr(A(B ~= 0)', B(B ~= 0)')
B ~= 0
创建一个大小为size(B)
的二进制矩阵,如果B
中的相应条目不为零,则为1
,否则为0
. 您也可以使用相同大小的二进制矩阵索引到矩阵,因此如果size(A) == size(B)
,这应该始终有效 .