Quantifizierung, wie viel "mehr Korrelation" eine Korrelationsmatrix A im Vergleich zu einer Korrelationsmatrix B enthält


9

Ich habe 2 Korrelationsmatrizen und (unter Verwendung des linearen Korrelationskoeffizienten nach Pearson durch Matlab's corrcoef () ). Ich möchte quantifizieren, wie viel "mehr Korrelation" Vergleich zu enthält . Gibt es dafür eine Standardmetrik oder einen Standardtest?B.EINB.B.EINB.

ZB die Korrelationsmatrix

Geben Sie hier die Bildbeschreibung ein

enthält "mehr Korrelation" als

Geben Sie hier die Bildbeschreibung ein

Mir ist der M-Test der Box bekannt , mit dem bestimmt wird, ob zwei oder mehr Kovarianzmatrizen gleich sind (und der auch für Korrelationsmatrizen verwendet werden kann, da letztere mit den Kovarianzmatrizen standardisierter Zufallsvariablen identisch sind).

Im Moment vergleiche ich und über den Mittelwert der Absolutwerte ihrer nicht diagonalen Elemente, dh. (Ich verwende die Symmetrie der Korrelationsmatrix in dieser Formel). Ich denke, dass es einige klügere Metriken geben könnte.B 2EINB.2n2- -n1ich<jn|xich,j|


Nach dem Kommentar von Andy W zur Matrixdeterminante führte ich ein Experiment durch, um die Metriken zu vergleichen:

  • Mittelwert der absoluten Werte ihrer nicht diagonalen Elemente :metrischbedeuten()
  • Matrixdeterminante : :metrischbestimmend()

Sei und zwei zufällige symmetrische Matrix mit Einsen auf der Diagonale der Dimension . Das obere Dreieck (diagonal ausgeschlossen) von ist mit zufälligen Gleitkommazahlen von 0 bis 1 gefüllt. Das obere Dreieck (diagonal ausgeschlossen) von ist mit zufälligen Gleitkommazahlen von 0 bis 0,9 besetzt. Ich generiere 10000 solcher Matrizen und zähle:B 10 × 10 A B.EINB.10×10EINB.

  • metrischbedeuten(B.)metrischbedeuten(EIN) 80,75% der Zeit
  • metrischbestimmend(B.)metrischbestimmend(EIN) 63,01% der Zeit

Angesichts des Ergebnisses würde ich eher denken, dass eine bessere Metrik ist.metrischbedeuten(B.)

Matlab-Code:

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

Beispiel einer erzeugten zufälligen symmetrischen Matrix mit Einsen auf der Diagonale: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
Welche Art von Frage versuchen Sie aus Neugier damit zu beantworten?
Shadowtalker

1
Die Determinante der Matrix kann als das Volumen der Matrix im mehrdimensionalen Raum betrachtet werden. Dies kann jedoch schlecht sein, wenn Sie schlecht konditionierte Korrelationsmatrizen haben.
Andy W


1
@AndyW Danke, das ist eine großartige Idee, ich habe einige Tests durchgeführt (siehe die aktualisierte Frage), die Determinante der Matrix scheint etwas weniger genau zu sein als der Mittelwert.
Franck Dernoncourt

2
@FranckDernoncourt, es ist mir unklar, ob die symmetrischen Matrizen, die Sie simulieren, notwendigerweise positiv definitiv sind. Haben sie immer positive Eigenwerte?
Andrew M

Antworten:


3

Die Determinante der Kovarianz ist keine schreckliche Idee, aber Sie möchten wahrscheinlich die Umkehrung der Determinante verwenden. Stellen Sie sich die Konturen (Linien gleicher Wahrscheinlichkeitsdichte) einer bivariaten Verteilung vor. Sie können sich die Determinante als (ungefähr) Messung des Volumens einer bestimmten Kontur vorstellen. Dann hat ein stark korrelierter Satz von Variablen tatsächlich weniger Volumen, weil die Konturen so gedehnt sind.

XN(0,1)Y=X+ϵϵN(0,.01)

Cov(X,Y)=[1111.01]
Corr(X,Y)[1.995.9951]
.0099X,YN(0,1)

Wenn ein Variablenpaar nahezu linear abhängig wird, nähert sich die Determinante Null, da sie das Produkt der Eigenwerte der Korrelationsmatrix ist. Daher kann die Determinante im Gegensatz zu vielen Paaren möglicherweise nicht zwischen einem einzelnen Paar nahezu abhängiger Variablen unterscheiden, und es ist unwahrscheinlich, dass dies ein von Ihnen gewünschtes Verhalten ist. Ich würde vorschlagen, ein solches Szenario zu simulieren. Sie könnten ein Schema wie das folgende verwenden:

  1. Fixiere eine Dimension P, einen ungefähren Rang r, und sei eine große Konstante
  2. Sei A [1], ..., A [r] Zufallsvektoren, die aus der N (0, s) -Verteilung gezogen werden
  3. Setze Sigma = Identität (P)
  4. Für i = 1..r: Sigma = Sigma + A [i] * A [i] ^ T.
  5. Stellen Sie Rho als Sigma-skalierte Korrelationsmatrix ein

Dann hat rho den ungefähren Rang r, der bestimmt, wie viele nahezu linear unabhängige Variablen Sie haben. Sie können sehen, wie die Determinante den ungefähren Rang r und die Skalierung s widerspiegelt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.