0

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

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

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

4

1 回答 1

0

如果您将其概括,乔纳斯对您链接的问题的回答也适用于您:

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));

因此,循环它将是:

for ii = 1:length(A(1,:))
    for jj = ii:length(A(1,:))
       gooddata = A(:,ii)~=0 & A(:,jj)~=0;
       pearson(ii,jj) = corr(A(gooddata,ii),A(gooddata,jj));
    end
end
于 2016-02-01T12:10:10.507 回答