0

疎行列があります。変数と観測値A(m,n)はどこにありますか。すべての n 変数間のピアソン相関を計算したいと思います。nm

たとえば、A(2,3)が利用できない場合は、そのような観測がないことを意味するため、たとえば、列 3 と列 4 の間の相関を計算する必要がある場合A(2,4)は、行 2 を破棄する必要があります。利用可能。これは、ピアソン相関が通常どのように計算されるかです。

代わりに、MATLAB では、関数corrcoef()は欠損値 (ゼロと見なされる) を含むすべての値を考慮します。これを回避する簡単な方法はありますか?非常によく似た質問が、Matlab でゼロ要素を使用しない Pearson Correlationで利用できますが、実用的な解決策は、2 つのベクトル間の比較のためだけに提供されており、一般的な行列A(m,n)ではありません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 に答える