计算Pearson相关性,避免零值

时间:2016-02-01 11:58:11

标签: matlab correlation pearson

我有一个稀疏矩阵A(m,n),其中n是变量,m是观察值。我想计算所有n个变量之间的Pearson相关性。

我有一些遗漏的观察结果,例如:如果A(2,3)不可用,则意味着我没有这样的观察,因此,例如,如果我需要计算第3列和第4列之间的相关性,我必须丢弃第2行,即使{{1可用。这就是通常计算Pearson相关性的方法。

在MATLAB中,函数A(2,4)考虑所有值,包括缺失的值(被视为零)。有一种简单的方法可以避免这种情况吗?这里提供了一个非常类似的问题Pearson Correlation without using zero element in Matlab,但提供了一个工作解决方案,仅用于两个向量之间的比较,而不是corrcoef()所在的通用矩阵A(m,n)

1 个答案:

答案 0 :(得分:0)

关于您链接的问题的

Jonas's answer如果您将其概括起来也适用于您:

 db.collectionname.aggregate( { '$unwind' : '$grades' } , { '$group' : { '_id' : '$_id' , 'average' : { $avg : '$grades.score' } } } , { '$sort' : { 'average' : -1 } } , { '$limit' : 1 } )

因此,循环它将是:

Col1 = 2;
Col2 = 3;
A=magic(3); A(1,1)=0;
gooddata = A(:,Col1)~=0 & A(:,Col2)~=0;
pearson = corr(A(gooddata,Col1),A(gooddata,Col2));