數學建模——相關係數(4)——斯皮爾曼相關係數(spearman)

引述

經過之前幾節的學習,我們瞭解並掌握了皮爾遜相關係數。在學習中我們發現,皮爾遜相關係數的使用條件相當苛刻:兩組變量必須是連續數據、呈現正態分佈,且兩者間必須成線性關係。如果我們在數學建模中拿到一組數據無法滿足以上條件,那麼有沒有其他的方法去判斷兩組變量之間的相關性呢?答案是肯定的,它就是斯皮爾曼相關係數(spearman).

一、斯皮爾曼相關係數(spearman)

1.定義1

  • 定義:X和Y爲兩組數據,其斯皮爾曼(等級)相關係數:
    spearman相關係數
    其中,di爲Xi和Yi之間的等級差。可以證明:rs位於-1和1之間。
  • 等級差
    一個數的等級,就是將它所在的一列按照從小到大排序後,這個數所在的位置。
    等級差
    根據公式計算可得:
    X和Y的斯皮爾曼相關係數 rs = 0.875

2.定義2

另一種斯皮爾曼相關係數被定義成等級之間的皮爾遜相關係數。值得注意的是,MATLAB使用的是該定義下的計算方式
對於上圖,使用MATLAB求解皮爾遜相關係數

%% 使用MATLAB求解皮爾遜相關係數
RX = [2 5 3 4 1]
RY = [1 4.5 3 4.5 2]
R = corrcoef(RX,RY)

計算結果如下:
計算結果

3.使用MATLAB計算spearman相關係數

1. 兩種用法

  • 用法1:
corr(X, Y, 'type', 'Spearman') % X和Y必須是列向量!
  • 用法2:
corr(X, 'type', 'Spearman') % 這時計算X矩陣各列之間的斯皮爾曼相關係數

2. 使用MATLAB計算斯皮爾曼相關係數
注:我們所使用的測試數據即爲上圖。

%% 斯皮爾曼相關係數
X = [3 8 4 7 2]' % 一定要變成列向量," ' "表示求轉置。X = [3 8 4 7 2] 此時爲行向量,轉置後成爲列向量。
Y = [5 10 9 10 6]'
% 第一種計算方法
 1-6*(1+0.25+0.25+1)/5/24
 
% 第二種計算方法
coeff = corr(X , Y , 'type' , 'Spearman')
% 等價於:
RX = [2 5 3 4 1]
RY = [1 4.5 3 4.5 2]
R = corrcoef(RX,RY)

當使用第二種計算方法計算時,所得結果如下:
計算結果2
由此,說明MATLAB使用的是基於第二種定義的計算方法!

3. 皮爾遜相關係數與斯皮爾曼相關係數計算結果的對比

% 計算矩陣各列的斯皮爾曼相關係數
R = corr(Test, 'type' , 'Spearman')

斯皮爾曼相關係數表

% 計算矩陣各列的皮爾遜相關係數
R = corrcoef(Test)

皮爾遜相關係數表

4. 斯皮爾曼相關係數的假設檢驗

分爲兩種情況:小樣本和大樣本

  1. 小樣本情況(n ≤ 30),直接查臨界值表
    H0:rs = 0; H1:rs ≠ 0
    使用得出的斯皮爾曼相關係數 r 與對應的臨界值進行比較。
    斯皮爾曼等級相關的臨界值
  2. 大樣本情況下,統計量
    在這裏插入圖片描述
    H0:rs = 0; H1:rs ≠ 0,計算檢驗值z*,並求出對應的p值與0.05比較即可。
% 大樣本下的假設檢驗
% 計算檢驗值 z*
disp(sqrt(591-1)*0.0301) 

% 計算p值
disp((1-normcdf(0.7311))*2) % normcdf用來計算標準正態分佈的累積概率密度函數

% 直接給出相關係數和p值
[R,P]=corr(Test, 'type' , 'Spearman')

在這裏插入圖片描述
p > 0.05,因此無法拒絕原假設,即該相關係數和0沒有顯著的差異。

二、斯皮爾曼相關係數與皮爾遜相關係數的比較

  1. 連續數據,正態分佈,線性關係,用皮爾遜相關係數是最巧當的,當然用斯皮爾曼相關係數也可以,只是效率沒有皮爾遜相關係數高;

  2. 上述任一條件不滿足,就使用斯皮爾曼相關係數,不能使用皮爾遜相關係數。

  3. 兩個定序數據之間使用斯皮爾曼相關係數

    定序數據:指僅僅反映觀測對象等級、順序關係的數據,是由尺度計量形成的,表現爲類別,可以進行排序,屬於品質數據。
    例如:優、良、差,我們可以用1表示差,2表示良、3表示優,但是,用 2 / 1 = 2 得出的 2 不具有任何含義。定序數據最重要的意義是代表了一組數據中的某種邏輯順序。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章