前记
最近在狂找关于相关性的函数及使用,自己总结一下大佬们的理解。
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)
以下图片来自—— 序列的相关性
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为备择假设的值。
几个常见的显著水平的参数设置:
注:
- 使用corr函数的两个变量X、Y,必须是列向量,而不能是行向量。(会跳一个NaN的矩阵)
- 关于相关性参数的问题:
- Pearson相关系数:最常使用,当数据满足正态分布时会使用该系数。两个连续变量间呈线性相关时,使用Pearson积差相关系数。由于其是在原始数据的方差和协方差基础上计算得到,所以对离群值比较敏感。
- 两个变量的标准差都不为零
- 两个变量之间是线性关系,都是连续数据。
- 两个变量的总体是正态分布,或接近正态的单峰分布。
- 两个变量的观测值是成对的,每对观测值之间相互独立。
- 样本中存在的极端值对Pearson积差相关系数的影响极大。
- Spearman相关系数:当数据不满足正态性时使用。对原始变量的分布不做要求,属于非参数统计方法。
- 异常值的秩次通常不会有明显的变化(比如过大或者过小,那要么排第一,要么排最后),所以异常值对Spearman相关性系数的影响也非常小。
- 对于服从Pearson相关系数的数据也可以计算Spearman相关系数,但统计效能比Pearson相关系数要低一些(不容易检测出两者事实上存在的相关关系)。
- Kendall相关系数:用于判断数据一致性,比如裁判打分。同样是一种秩相关系数,用于反映分类变量相关性的指标,适用于两个变量均为有序分类(有序分类表示类间有强度的逐级递增关系)的情况
下图来自知乎:相关性分析
相关性值的解释:
第一种解释—— 出自相关性分析
- |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为强相关。