Tengo 2 matrices de correlación $A$ $B$ (mediante la prueba de Pearson el coeficiente de correlación lineal a través de Matlab corrcoef()). Me gustaría cuantificar cuánto "más de correlación" $A$ contiene en comparación con $B$. ¿Hay alguna norma métrica o prueba para que?
E. g. la matriz de correlación
contiene "más de correlación" que
Soy consciente de que el Cuadro de la M Prueba, que se utiliza para determinar si dos o más matrices de covarianza son iguales (y puede ser utilizado para matrices de correlación así, ya que éstas son el mismo como el de las matrices de covarianza de las variables aleatorias estandarizadas).
Ahora mismo estoy comparando $A$ $B$ a través de la media de los valores absolutos de sus no-diagonal de los elementos, es decir,$\frac{2}{n^2-n}\sum_{1 \leq i < j \leq n } \left | x_{i, j} \right |$. (Yo uso el de la simetría de la matriz de correlación en esta fórmula). Supongo que no podrían ser algunos de los más listos de métricas.
Siguiente Andy W el comentario sobre la matriz de determinante, me encontré con un experimento para comparar las métricas:
- Media de los valores absolutos de sus no-diagonal elementos: $\text{metric}_\text{mean}()$
- Matriz de determinante: $\text{metric}_\text{determinant}()$:
Deje $A$ $B$ dos aleatoria simétrica matriz con unos en la diagonal de dimensión $10 \times 10$. El triángulo superior (diagonal excluidos) de $A$ se rellena con una flota de 0 a 1. El triángulo superior (diagonal excluidos) de $B$ se rellena con una flota de 0 a 0.9. Puedo generar 10000 tales matrices y hacer algunos a contar:
- $\text{metric}_\text{mean}(B) \leq \text{metric}_\text{mean}(A) $ 80.75% del tiempo
- $\text{metric}_\text{determinant}(B) \leq \text{metric}_\text{determinant}(A)$ 63.01% del tiempo
Dado el resultado que yo tendería a pensar que $\text{metric}_\text{mean}(B)$ es una métrica mejor.
Código de 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
Ejemplo de un generadas $10 \times 10$ aleatoria simétrica matriz con unos en la diagonal:
>> 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