我有一个稀疏矩阵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)
。
答案 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));