如何用Matlab计算相关系数和偏相关系数
在脑科学领域的研究中,进行相关分析必不可少,比如说,我们想知道计算出来的某个指标是否与临床数据或行为学数据之间存在正相关或负相关关系。计算相关系数,最常用的是Pearson相关系数和Spearman相关系数。此外,在研究中,偏相关分析也很常用,其在计算两个变量的相关系数的同时把第三个变量当成协变量来排除这个变量的影响。本文,笔者对相关系数和偏相关系数的原理进行简单论述,并重点说明如何用Matlab实现相关系数和偏相关系数的计算。
Pearson和Spearman相关系数
Pearson相关系数。Pearson相关系数是一种反映两个变量线性相关程度的统计量,两个变量的线性相关程度用相关系数r表示,r的计算公式如下所示:
相关系数r的值属于[-1,+1]之间。关于Pearson相关系数具体的说明,大家可以自行百度,这里笔者重点介绍如何用Matlab实现Pearson相关系数的计算。
例1:用Matlab计算变量A和B之间的Pearson相关系数r,以及A、B之间是否显著相关,
A=[41,63,83,71,94,62,60,42,55,67],
B=[10,16,26,29,20,9,8,13,18,14]。
在Matlab命令窗口中输入以下命令即可:
A=[41,63,83,71,94,62,60,42,55,67];
B=[10,16,26,29,20,9,8,13,18,14];
[r,p]=corr(A’,B’)
r =0.5997
p =0.0669
注意:这里计算相关系数r以及相应的p值用的是corr函数。实际上,corr函数既可以计算Pearson相关系数也可以计算Spearman相关系数,默认情况下计算的是Pearson相关系数,格式如下:
Pearson相关系数:[r,p]=corr(X,Y,‘type’,‘Pearson’)
Spearman相关系数:[r,p]=corr(X,Y,‘type’,‘Spearman’)
另外,需要注意的是,corr函数中两个变量X、Y必须是列向量,而不能是行向量,如例1中用[r,p]=corr(A’,B’)的命令,需要对A、B进行转置。
Spearman相关系数。又称秩相关系数,是利用两变量的秩次大小作线性相关分析,具体的原理这里不展开说,需要进一步了解的可以自行百度。在例1中已经说到,Matlab中的corr函数同时可以计算Spearman相关系数。
例2:用Matlab计算变量A和B之间的Spearman相关系数r,以及A、B之间是否显著相关,
A=[41,63,83,71,94,62,60,42,55,67],
B=[10,16,26,29,20,9,8,13,18,14]。
在Matlab命令窗口中直接输入以下命令即可:
A=[41,63,83,71,94,62,60,42,55,67];
B=[10,16,26,29,20,9,8,13,18,14];
[r,p]=corr(A’,B’,‘type’,‘Spearman’)
r =0.6727
p =0.0394
结果显示A、B之间的相关系数r=0.6727,p=0.0394,存在显著的正相关。
偏相关分析
偏相关分析(Partial correlation analysis),简单地说,是在消除其他变量C影响的条件下,计算的A、B两变量之间的相关系数。Matlab中,计算偏相关系数所用的函数是partialcorr,使用方法如下:
[R,P] = partialcorr(X,Y,Z); %在控制变量Z的影响下,计算变量X、Y的偏相关系数。
例3:在消除变量C的影响下,用Matlab计算变量A和B之间的偏相关系数R。
A=[41,63,83,71,94,62,60,42,55,67],
B=[10,16,26,29,20,9,8,13,18,14];
C=[0.81,0.90,0.12,0.91,0.63,0.09,0.27,0.54,0.95,0.96]。
直接在Matlab命令窗口中输入如下命令即可:
A=[41,63,83,71,94,62,60,42,55,67];
B=[10,16,26,29,20,9,8,13,18,14];
C= [0.81,0.90,0.12,0.91,0.63,0.09,0.27,0.54,0.95,0.96];
[R,P] = partialcorr(A’,B’,C’)
R =0.6614
P =0.0524
结果表明,在控制变量C影响的条件下,计算得到A、B之间的相关系数R=0.6614,P=0.0524,A、B之间不存在显著相关。
总结
本文,笔者对如何用Matlab计算Pearson相关系数、Spearman相关系数和偏相关系数进行了详细论述,希望对大家的研究有所帮助。