两个矩阵之间的Matlab相关性

标签 matlab matrix correlation

基本上我有两个矩阵,像这样:

  > Matrix A (100 rows x 2 features)

  Height - Weight
  1.48      75
  1.55      65
  1.60      70
  etc...

和矩阵 B(矩阵 A 的维度相同,但值当然不同)

我想了解矩阵 A 和矩阵 B 之间是否存在某种相关性,您建议我采用哪种策略?

最佳答案

您正在寻找的概念称为 canonical correlation .它是多变量分析领域中发展良好的理论。本质上,这个想法是找到第一个矩阵中各列的线性组合和第二个矩阵中各列的线性组合,以使两个线性组合之间的相关性最大化。

这可以使用特征向量和特征值手动完成,但如果您有统计工具箱,那么 Matlab 已经将其打包并准备好为您服务。该函数称为 canoncorr,文档为 here

下面是这个函数用法的一个简短示例:

%# Set up some example data
CovMat = randi(5, 4, 4) + 20 * eye(4); %# Build a random covariance matrix
CovMat = (1/2) * (CovMat + CovMat'); %# Ensure random covriance matrix is symmetrix
X = mvnrnd(zeros(500, 4), CovMat); %# Simulate data using multivariate Normal

%# Partition the data into two matrices
X1 = X(:, 1:2);
X2 = X(:, 3:4);

%# Find the canonical correlations of the two matrices
[A, B, r] = canoncorr(X1, X2);

第一个典型相关是r的第一个元素,第二个典型相关是r的第二个元素。

canoncorr 函数还有很多其他输出。我不确定我是否足够聪明,可以在这里对它们提供令人满意但简洁的解释,所以我会变得蹩脚,并建议您阅读多变量分析教科书 - 大多数多变量分析教科书都有完整的内容专门讨论规范相关的章节。

最后,如果您没有统计工具箱,那么快速谷歌会显示以下内容 FEX submission声称提供典型相关分析 - 请注意,我自己还没有测试过。

关于两个矩阵之间的Matlab相关性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13960218/

相关文章:

java - Matlab:如何正确使用 Java ImageIO 类来获取 BufferedIMage

matlab - 将 Matlab GUI 转换为指南 GUI

c - 排列的矩阵和子矩阵

r - R中的findCorrelation函数

matlab - 将单元格(matlab)写入 CSV 文件

matlab - Lucas Kanade 光流,方向矢量

python - 通过对像素求和来重新调整矩阵

c - 在 C 中使用转置的矩阵乘法

r - 排列数据框以实现两两相关

r - 在两个矩阵上使用 'apply' 而不是嵌套循环