matlab 相关性分析

Pearson相关系数函数

考察两个事物(在数据里咱们称之为变量)之间的相关程度,简单来讲就是衡量两个数据集合是否在一条线上面。其计算公式为: spa

N表示变量取值的个数。code

 

 

相关系数r的值介于–1与+1之间,即–1≤r≤+1。其性质以下:orm

 

  1. 当r>0时,表示两变量(当X的值增大(减少),Y值增大(减少))正相关,r<0时,两变量为负相关(当X的值增大(减少),Y值减少(增大))。
  2. 当|r|=1时,表示两变量为彻底线性相关,即为函数关系。
  3. 当r=0时,表示两变量间无线性相关关系。
  4. 当0<|r|<1时,表示两变量存在必定程度的线性相关。且|r|越接近1,两变量间线性关系越密切;|r|越接近于0,表示两变量的线性相关越弱。

通常可按三级划分:|r|<0.4为低度线性相关;0.4≤|r|<0.7为显著性相关;0.7≤|r|<1为高度线性相关。排序

 

 

当两个变量的标准差都不为零时,相关系数才有定义,皮尔逊相关系数适用于:class

 

  1. 两个变量之间是线性关系,都是连续数据。
  2. 两个变量的整体是正态分布,或接近正态的单峰分布。
  3. 两个变量的观测值是成对的,每对观测值之间相互独立。

 

 

一个具体的计算例子:变量

X Y 1 2 2 5 3 6im

而利用matlab计算的话则可使用函数 corrcoef或corr数据

先看一下help corrcoef的内容:margin

 

再看一下help corr的内容

对于前面提到的具体的计算例子,能够在matlab中实现以下:

 

x=[1;2;3];
y=[2;5;6];
r1=corr(x,y,'type','pearson');
r2=corrcoef(x,y);

最后能够看到

 

r1=0.9608

r2=

1.0000 0.9608

0.9608 1.0000

均与前面的计算结果相符。须要注意的是,使用corr函数时默认计算皮尔逊相关系数 

Spearman相关系数

斯皮尔曼相关系数用来估计两个变量X、Y之间的相关性,其中变量间的相关性可使用单调函数来描述。若是两个变量取值的两个集合中均不存在相同的两个元素,那么,当其中一个变量能够表示为另外一个变量的很好的单调函数时(即两个变量的变化趋势相同),两个变量之间的相关系数能够达到+1或-1。

假设两个随机变量分别为X、Y(也能够看作两个集合),它们的元素个数均为N,两个随机变量取的第i(1<=i<=N)个值分别用Xi、Yi表示。对X、Y进行排序(同时为升序或降序),获得两个元素排行集合x、y,其中元素xi、yi分别为Xi在X中的排行以及Yi在Y中的排行。将集合x、y中的元素对应相减获得一个排行差分集合d,其中di=xi-yi,1<=i<=N。随机变量X、Y之间的斯皮尔曼相关系数能够由x、y或者d计算获得,其计算方式以下所示:

由排行差分集合d计算而得(公式一):

 

由排行集合x、y计算而得(斯皮尔曼相关系数同时也被认为是通过排行的两个随机变量的皮尔逊相关系数,如下实际是计算x、y的皮尔逊相关系数)(公式二):

 

 

如下是一个计算集合中元素排行的例子(仅适用于斯皮尔曼相关系数的计算)

 

这里须要注意:当变量的两个值相同时,它们的排行是经过对它们位置进行平均而获得的。

斯皮尔曼相关系数对数据条件的要求没有皮尔逊相关系数严格,只要两个变量的观测值是成对的,或者是由连续变量观测资料转化获得的,不论两个变量的整体分布形态、样本容量的大小如何,均可以用斯皮尔曼相关系数来进行研究。

使用matlab计算spearman相关系数则比较简单,也是使用corr函数,以下:

r= corr(x, y, 'type' , 'Spearman');  

对于上面的例子,则能够计算出r=1。

注意:使用Matlab自带函数计算斯皮尔曼相关系数时,须要保证X、Y均为列向量;Matlab自带的函数是经过公式二计算序列的斯皮尔曼相关系数的。

相关文章
相关标签/搜索