以下脚本查找每对数据之间的相关性。
clear all
LName={'Name1','Name2','Name3','Name4','Name5'};
Data={rand(12,1),rand(12,1),rand(12,1),rand(12,1),rand(12,1)};
%place in a structure
d = [LName;Data];
Data = struct(d{:});
d1 = cell2mat(struct2cell(Data)');
[R,P] = corrcoef(d1);
Correlation = [LName(nchoosek(1:length(R),2)) num2cell(nonzeros(tril(R,-1)))]
此外,该脚本还在“相关性”中说明了在生成相关值时使用了哪种数据组合。由此我试图不仅找到一对数据之间的相关性而且还找到n个数据之间的相关性,所以除了上面的脚本我试图找到3组数据之间的相关性,然后四......等等,然后将其存储在Correlation中。我怎么会这样做?
答案 0 :(得分:-1)
由于你的数字都是非负的,我认为简单地将相关数组相乘,求和和归一化就足够了。这与corrcoef基本相同,只是它一次只能将两个数组相乘。
但请注意,这不适用于负数。例如,假设所有三个数组在某些时候都具有负值。从某种意义上讲它们是相关的很好。但是,简单地将它们相乘可以得到负相关,这表明在那一点上存在相反的相关性。