在腦科學領域的研究中,進行相關分析必不可少,比如說,我們想知道計算出來的某個名額是否與臨床資料或行為學資料之間存在正相關或負相關關系。計算相關系數,最常用的是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相關系數和偏相關系數進行了詳細論述,希望對大家的研究有所幫助。