关于matlab:比较三个大矩阵-获得有意义且易于理解的矩阵之间关系指标的最佳方法?

Compare three big matrices - Best way to get a meaningful and easy to understand indicator of the relation between the matrices?

我有3个矩阵(55000x3的两倍),想对其进行比较。
我采用每个头寸价值的算术平均值,并希望提供一个指标,说明这三个矩阵之间的关系。

矩阵一个位置的值例如:

  • 矩阵1 pos(1:1):3.679
  • Matrix2 pos(1:1):3.721
  • Matrix3 pos(1:1):3.554

由于我不能只给出每个值的标准偏差,因为这将涉及很多信息,因此我正在寻找一种无需给出太多信息即可给出有意义的相关性说明的方法。

执行此操作的最佳方法是什么?


我认为您需要相关系数。您可以将每个矩阵整形为一个向量(使用(:)),然后使用corrcoef。计算每个向量对(原始矩阵)的相关系数。

例如,让:

1
2
3
Matrix1 =    [ 1   2;   3   4;   5   6   ];
Matrix2 = -2*[ 1   2;   3   4;   5   6   ];
Matrix3 =    [ 1.1 2.3; 3.4 4.1; 4.9 6.3 ];

然后

1
C = corrcoef([Matrix1(:) Matrix2(:) Matrix3(:)]);

给予

1
2
3
4
C =
    1.0000   -1.0000    0.9952
   -1.0000    1.0000   -0.9952
    0.9952   -0.9952    1.0000

在这种情况下,这告诉您

  • 这三个矩阵中的每一个都与自身完全相关(C(1,1)C(2,2)C(3,3)等于1)。这是显而易见的。
  • 矩阵1和2的相关系数C(1,2)等于-1。这是预料之中的,因为矩阵2是矩阵1的负整数倍。
  • 矩阵1和3高度相关(C(1,3)0.9952)。这是因为矩阵3被定义为具有一些随机"噪声"的矩阵1。
  • 矩阵2和3也高度相关,但是带有负号(C(2,3)-0.9952),如上所述。

您是否尝试过使用箱线图表示数据?

boxplot(([[data(:,1); data(:,2); data(:,3)])');