基本上我有两个矩阵,像这样:
> 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/