相关性计算

在做曲线相关性计算时候,一般都会考虑皮尔森系数(pearson correlation),这个皮尔僧系数其实就是计算 两条曲线的相关系数。

回顾一下协方差:相关性计算_第1张图片

具体还是知识还是看看同济的概率论与数理统计把,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

相关性计算_第2张图片

其实corrcoef()是计算白化后的协方差矩阵,用cov(x)可以计算x得协方差矩阵,协方差矩阵就是计算所有样本每个维度之间的相关性

比如相关性计算_第3张图片

a,b向量的相关性系数就是0.3763

再比如,随机矩阵mtx
相关性计算_第4张图片
相关性计算_第5张图片
对角线处因为是自相关,故系数肯定为1,像r(1,4)=-0.3788代表第一列和第四列相关性为-0.3788

你可能感兴趣的:(数学,matlab,相关性计算,协方差,皮尔森系数)