在做曲线相关性计算时候,一般都会考虑皮尔森系数(pearson correlation),这个皮尔僧系数其实就是计算 两条曲线的相关系数。
回顾一下协方差:
具体还是知识还是看看同济的概率论与数理统计把,P106
在matlab中很方便计算两条曲线的相关系数,r=corrcoef(x,y)
在这儿我自己写了个计算协方差矩阵的函数,算出来的结果和用matlab的cov(x)结果一样
function learn_cov()
% 学习协方差矩阵,自己计算协方差矩阵系数。
% 协方差矩阵就是计算所有样本每个维度之间的相关性,这儿的相关性用的协方差来表示
mtx=fix(rand(10,3)*50);
dm1=mtx(:,1);
dm2=mtx(:,2);
dm3=mtx(:,3);
cov12=sum((dm1-mean(dm1)).*(dm2-mean(dm2)))/(size(dm1,1)-1); % 计算协方差矩阵C12
cov13=sum((dm1-mean(dm1)).*(dm3-mean(dm3)))/(size(dm1,1)-1);
cov23=sum((dm2-mean(dm2)).*(dm3-mean(dm3)))/(size(dm1,1)-1);
cov11=sum((dm1-mean(dm1)).*(dm1-mean(dm1)))/(size(dm1,1)-1);
cov22=sum((dm2-mean(dm2)).*(dm2-mean(dm2)))/(size(dm1,1)-1);
cov33=sum((dm3-mean(dm3)).*(dm3-mean(dm3)))/(size(dm1,1)-1);
cov_my=[cov11,cov12,cov13;cov12,cov22,cov23;cov13,cov23,cov33]; % 自己计算得到的协方差矩阵
cov_matlab=cov(mtx); % matlab计算得到的
disp(cov_my);
disp(cov_matlab);% 结果一致
end
其实corrcoef()是计算白化后的协方差矩阵,用cov(x)可以计算x得协方差矩阵,协方差矩阵就是计算所有样本每个维度之间的相关性
比如
a,b向量的相关性系数就是0.3763
再比如,随机矩阵mtx
对角线处因为是自相关,故系数肯定为1,像r(1,4)=-0.3788代表第一列和第四列相关性为-0.3788