相関行列Bと比較して、相関行列Aに含まれる「より多くの相関」の量の定量化


9

私は2つの相関行列とを持っています(Matlabのcorrcoef()によるピアソンの線形相関係数を使用)。と比較して含まれる「より多くの相関」の量を定量化したいと思います。そのための標準的なメトリックまたはテストはありますか?B A BABAB

たとえば、相関行列

ここに画像の説明を入力してください

「より多くの相関」を含む

ここに画像の説明を入力してください

私はボックスのM検定を知っています。これは、2つ以上の共分散行列が等しいかどうかを決定するために使用されます(相関行列は標準化された確率変数の共分散行列と同じであるため、相関行列にも使用できます)。

現在、非対角要素の絶対値の平均を介してとを比較しています。つまり、。(この式では、相関行列の対称性を使用しています)。いくつかのより巧妙なメトリックスがあるかもしれないと思います。B 2AB22Σ1<j|バツj|


アンディWの行列式に関するコメントに続いて、メトリックを比較する実験を行いました。

  • 非対角要素の絶対値の平均メトリック平均
  • 行列式::メトリック行列式

ましょうとの次元の対角線上のものと2つのランダム対称行列を。上三角(対角線を除く) 0から1までのランダムなフロートが取り込まれの上三角(対角線を除く) 0から0.9までのランダムなフロートが取り込まれています。私はそのような行列を10000生成し、いくつかのカウントを行います:B 10 × 10 A BB10×10B

  • メトリック平均Bメトリック平均時間の80.75%
  • メトリック行列式Bメトリック行列式 63.01%の確率

結果を考えると、がより良いメトリックであると思う傾向があります。メトリック平均B

Matlabコード:

function [  ] = correlation_metric(  )
%CORRELATION_METRIC Test some metric for
%   http://stats.stackexchange.com/q/110416/12359 :
%   I have 2 correlation matrices A and B (using the Pearson's linear 
%   correlation coefficient through Matlab's corrcoef()).
%   I would like to quantify how much "more correlation"
%   A contains compared to B. Is there any standard metric or test for that?

% Experiments' parameters
runs = 10000;
matrix_dimension = 10;

%% Experiment 1
results = zeros(runs, 3);
for i=1:runs
    dimension = matrix_dimension;
    M = generate_random_symmetric_matrix( dimension, 0.0, 1.0 );
    results(i, 1) = abs(det(M));
%     results(i, 2) = mean(triu(M, 1));
    results(i, 2) = mean2(M);
%     results(i, 3) = results(i, 2) < results(i, 2) ; 
end
mean(results(:, 1))
mean(results(:, 2))


%% Experiment 2
results = zeros(runs, 6);
for i=1:runs
    dimension = matrix_dimension;
    M = generate_random_symmetric_matrix( dimension, 0.0, 1.0 );
    results(i, 1) = abs(det(M));
    results(i, 2) = mean2(M);
    M = generate_random_symmetric_matrix( dimension, 0.0, 0.9 );
    results(i, 3) = abs(det(M));
    results(i, 4) = mean2(M);
    results(i, 5) = results(i, 1) > results(i, 3);
    results(i, 6) = results(i, 2) > results(i, 4);
end

mean(results(:, 5))
mean(results(:, 6))
boxplot(results(:, 1))
figure
boxplot(results(:, 2))


end

function [ random_symmetric_matrix ] = generate_random_symmetric_matrix( dimension, minimum, maximum )
% Based on http://www.mathworks.com/matlabcentral/answers/123643-how-to-create-a-symmetric-random-matrix
d = ones(dimension, 1); %rand(dimension,1); % The diagonal values
t = triu((maximum-minimum)*rand(dimension)+minimum,1); % The upper trianglar random values
random_symmetric_matrix = diag(d)+t+t.'; % Put them together in a symmetric matrix
end

生成されたランダムな対称行列の例で、対角要素は1です。10×10

>> random_symmetric_matrix

random_symmetric_matrix =

    1.0000    0.3984    0.1375    0.4372    0.2909    0.6172    0.2105    0.1737    0.2271    0.2219
    0.3984    1.0000    0.3836    0.1954    0.5077    0.4233    0.0936    0.2957    0.5256    0.6622
    0.1375    0.3836    1.0000    0.1517    0.9585    0.8102    0.6078    0.8669    0.5290    0.7665
    0.4372    0.1954    0.1517    1.0000    0.9531    0.2349    0.6232    0.6684    0.8945    0.2290
    0.2909    0.5077    0.9585    0.9531    1.0000    0.3058    0.0330    0.0174    0.9649    0.5313
    0.6172    0.4233    0.8102    0.2349    0.3058    1.0000    0.7483    0.2014    0.2164    0.2079
    0.2105    0.0936    0.6078    0.6232    0.0330    0.7483    1.0000    0.5814    0.8470    0.6858
    0.1737    0.2957    0.8669    0.6684    0.0174    0.2014    0.5814    1.0000    0.9223    0.0760
    0.2271    0.5256    0.5290    0.8945    0.9649    0.2164    0.8470    0.9223    1.0000    0.5758
    0.2219    0.6622    0.7665    0.2290    0.5313    0.2079    0.6858    0.0760    0.5758    1.0000

2
好奇心から、これでどんな質問に答えようとしていますか?
シャドウトーカー、2014

1
行列の行列式は、多次元空間における行列の体積と見なすことができます。ただし、条件の悪い相関行列を使用している場合、これは悪いことです。
アンディW 14


1
@AndyWありがとう、それは素晴らしいアイデアです。いくつかのテストを行いました(更新された質問を参照してください)。行列の行列式は、平均値よりも少し正確ではないようです。
フランクダーノンコート2014

2
@FranckDernoncourt、シミュレーションしている対称行列が必ずしも正定であるかどうかはわかりません。それらは常に正の固有値を持っていますか?
Andrew M

回答:


3

共分散の行列式はひどい考えではありませんが、おそらく行列式の逆を使用する必要があります。2変量分布の等高線(等確率密度の線)を描きます。行列式は、(およそ)与えられた輪郭のボリュームを測定することと考えることができます。次に、等高線が非常に引き伸ばされるため、相関性の高い変数のセットは実際にはボリュームが少なくなります。

バツN01Y=バツ+εεN0.01

CovバツY=[1111.01]
CorrバツY[1.995.9951]
.0099バツYN01

変数のペアがより線形に依存するようになると、行列式は相関行列の固有値の積であるため、行列式はゼロに近づきます。したがって、行列式では、多くのペアとは対照的に、ほぼ依存する変数の単一のペアを区別できない場合があり、これは、希望する動作ではない可能性があります。そのようなシナリオをシミュレートすることをお勧めします。次のようなスキームを使用できます。

  1. 次元P、近似ランクrを修正し、sを大きな定数とする
  2. A [1]、...、A [r]をランダムなベクトルとし、N(0、s)分布からiidを描画します
  3. Sigma = Identity(P)を設定します
  4. i = 1..rの場合:Sigma = Sigma + A [i] * A [i] ^ T
  5. rhoを相関行列としてシグマスケーリングするように設定します

次に、rhoは近似的にランクrを持ちます。これは、線形に独立した変数の数を決定します。行列式がおおよそのランクrとスケーリングsをどのように反映しているかを確認できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.