关于matlab的相关性函数

前记

最近在狂找关于相关性的函数及使用,自己总结一下大佬们的理解。

matlab中自带函数

1、xcorr——互相关函数

 r = xcorr(x,y) 
 r = xcorr(x)
 [r,lags] = xcorr(___)		% r是输出数据,lags是移位量(滑动偏移值)
  • 可以通过该函数对两个有时延的信号进行对齐处理。
  • 其原理在于将被选指标相对于基准指标前后移动若干个时间单位,然后对移动后的序列和基准指标序列求相关系数,最大的相关系数所对应的移动时间就是该指标领先或延迟的时间段
  • 示例可参见—— 序列的相关性与基于Cross-Correlation互相关函数的信号同步方法
  • 参照上博客的第一部分,是将y从左向右平移,遍历所有位移求内积。对应的lags即为滑动偏移值。
  • 注:lags是滞后索引,且xcorr的本质其实为保持x不动,移动y,因此当lags为正时,说明y此时是超前于x的,也即x比y滞后的值是lags,此处可以参考示例中的互相关原理,因此正负值是y相对于x的位置来说的。当为负值时,y位于x左侧,为正值时,y位于x右侧,而且两个序列都是从0开始的,无法向右移动,所以当lags为正,将x向左移进行对齐,lags为负时,将y向左移对齐。(个人理解,有错误请指正)
  • 关于该函数,也可以进行归一化来进行:
% 来自官方程序
n = 0:15;
x = 0.84.^n;
y = circshift(x,5);
[c,lags] = xcorr(x,y,10,'normalized');
stem(lags,c)

以下图片来自—— 序列的相关性关于matlab的相关性函数_第1张图片
关于matlab的相关性函数_第2张图片

2、corrcoef——相关系数

  R = corrcoef(A) 
  R = corrcoef(A,B)
  • 该函数的输出
    • 对于两个输入参数,R 是 2×2 矩阵,其中对角线元素为 1,非对角线元素为相关系数。具体可见官方函数介绍。
  • 示例及代码可参见——皮尔逊相关分析的MATLAB实现,corr(),corrcoef()函数使用

3、corr函数——线性或秩相关性

 rho = corr(X) 
 rho = corr(X,Y) 
 [rho,pval] = corr(X,Y)
 [rho,pval] =corr(___,Name,Value)
  • 该函数中可以加入计算相关性的类型(‘Type’),有:

    • ’Pearson’ (默认) | ‘Kendall’ | 'Spearman’
    • 示例如下:
 corr(X,Y,'Type','Kendall','Rows','complete')
  • 该函数中可以加入备择假设(‘Tail’),有:
    • ’both’ 检验相关性不为 0 的备择假设。
    • ’right’ 检验相关性大于 0 的备择假设
    • ’left’ 检验相关性小于 0 的备择假设。
    • 示例如下:
    • 注:一般认为,当P值小于0.05时,说明两个序列与‘’Tail‘’中假设内容显著相关。
      • p 为非零相关的假设检验值(位置与 r 对应),如果值小于 0.05 则相关性显著。
  [rho,pval] = corr(X,Y,'Tail','left')
  % 对应的p值为0,低于显著性水平0.05。同样,这些结果表明拒绝原假设,并得出相关性小于零的结论。
  % 输出的r对应的是某类型(默认皮尔逊系数)的相关性值,p为备择假设的值。

几个常见的显著水平的参数设置:

关于matlab的相关性函数_第3张图片

注:

  • 使用corr函数的两个变量X、Y,必须是列向量,而不能是行向量。(会跳一个NaN的矩阵)
  • 关于相关性参数的问题:
    • Pearson相关系数:最常使用,当数据满足正态分布时会使用该系数。两个连续变量间呈线性相关时,使用Pearson积差相关系数。由于其是在原始数据的方差和协方差基础上计算得到,所以对离群值比较敏感

      • 两个变量的标准差都不为零
      • 两个变量之间是线性关系,都是连续数据。
      • 两个变量的总体是正态分布,或接近正态的单峰分布。
      • 两个变量的观测值是成对的,每对观测值之间相互独立
      • 样本中存在的极端值对Pearson积差相关系数的影响极大
    • Spearman相关系数:当数据不满足正态性时使用。对原始变量的分布不做要求,属于非参数统计方法

      • 异常值的秩次通常不会有明显的变化(比如过大或者过小,那要么排第一,要么排最后),所以异常值对Spearman相关性系数的影响也非常小
      • 对于服从Pearson相关系数的数据也可以计算Spearman相关系数,但统计效能比Pearson相关系数要低一些(不容易检测出两者事实上存在的相关关系)。
    • Kendall相关系数:用于判断数据一致性,比如裁判打分。同样是一种秩相关系数,用于反映分类变量相关性的指标,适用于两个变量均为有序分类(有序分类表示类间有强度的逐级递增关系)的情况
      下图来自知乎:相关性分析关于matlab的相关性函数_第4张图片

相关性值的解释:

第一种解释—— 出自相关性分析

  • |r|>0.95 存在显著性相关;
  • |r|≥0.8 高度相关;
  • 0.5≤|r|<0.8 中度相关;
  • 0.3≤|r|<0.5 低度相关;
  • |r|<0.3 关系极弱,认为不相关

第二种解释: ——出自Matlab计算皮尔逊相关系数corr、互相关系数xcorr

  • 取绝对值后0-0.09为没有相关性,0.3-弱,0.1-0.3为弱相关,0.3-0.5为中等相关,0.5-1.0为强相关。

参考网址

官方corr函数讲解
官方corrcoef函数讲解
官方corr函数讲解
如何用Matlab计算相关系数和偏相关系数
相关性分析
数据的相关性分析
关于相关性的7个最常见问题
皮尔逊相关分析的MATLAB实现,corr(),corrcoef()函数使用——感觉写的较清楚
序列的相关性——xcorr对齐时延信号

你可能感兴趣的:(matlab,相关性,xcorr)