肯德爾等級相關係數 (Kendall tau rank correlation coefficient)
套路36: 肯德爾等級相關係數 (Kendall tau rank correlation
coefficient)
1. 使用時機: 肯德爾等級相關係數是用以反映兩組變數之間關係密切程度的統計指標。
2. 分析類型: 無母數分析(non-parametric analysis)。直接使用資料數值算統計叫parametric方法,把資料排序之後用排序的名次算統計叫non-parametric方法。
3. 肯德爾等級相關係數前提假設: 無。
4. 範例資料: 某研究餵食量對斑馬魚(zebrafish)存活的影響。在恆溫下,投入飼料X (mg),斑馬魚存活比例Y的資料如下:
X (mg)
|
0.1
|
0.15
|
0.2
|
0.25
|
0.3
|
0.35
|
0.4
|
0.45
|
0.5
|
0.55
|
Y (存活比)
|
1
|
0.95
|
0.95
|
0.9
|
0.85
|
0.7
|
0.65
|
0.6
|
0.55
|
0.42
|
5. 畫圖看資料分佈:
第一步: 輸入建立資料,儲存在變數名稱為dat的data frame中。
v1 <- c(0.1, 0.15,
0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55)
v2 <- c(1, 0.95,
0.95, 0.9, 0.85, 0.7, 0.65, 0.6, 0.55, 0.42)
dat <- data.frame(v1,
v2)
第二步: 安裝ggplot2程式套件。
第三步: 呼叫ggplot2程式套件備用。
library(ggplot2)
第四步: 使用函數ggplot代入dat及v1、v2畫x-y散佈圖及回歸線。
ggplot(dat, aes(x = v1,
y = v2)) +
geom_point(shape = 1)
+ # 畫空心圓
geom_smooth(method = lm) # 加回歸線
# 灰色區域是回歸線的95%信賴區間。
6. 使用R計算肯德爾等級相關係數,方法一:
第一步: 輸入建立資料。
v1 <- c(0.1, 0.15,
0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55)
v2 <- c(1, 0.95,
0.95, 0.9, 0.85, 0.7, 0.65, 0.6, 0.55, 0.42)
第二步: 使用基本模組(base)函數cor代入v1及v2計算肯德爾等級相關係數。
cor(v1, v2, method =
"kendall")
[1] -0. 9888265 # 計算結果
# 無提供p值。
第三步: 檢定肯德爾等級相關係數是否為零(X、Y無關): H0: ρ = 0,HA: ρ
≠ 0。使用基本(base)模組函數cor.test代入v1及v2計算肯德爾等級相關係數並進行假設檢定。
cor.test(v1, v2,
alternative = "two.sided", method = "kendall", exact =
FALSE)
第四步: 判讀結果。
Kendall's rank correlation tau
data: v1 and v2
z = -3.9513, p-value = 7.772e-05
# p < 0.05,H0: ρ
= 0不成立,X、Y有關。
alternative hypothesis: true tau is not equal to 0
sample estimates: tau -0.9888265
# 計算結果肯德爾等級相關係數 = -0.9888265
# 如計算結果p < 0.05,H0: ρ
= 0,不成立,X、Y有關。
# 如計算結果p > 0.05,H0: ρ
= 0,成立,X、Y無關。
# 如果要檢定: H0: ρ ≥ 0 & HA: ρ < 0或H0: ρ > 0 & HA: ρ ≤ 0,alternative = "less"。
# 如果要檢定: H0: ρ ≤ 0 & HA: ρ > 0或H0: ρ < 0 & HA: ρ ≥ 0,alternative = "greater"。
# 由於有數值相同資料(排序相同: tied rank)所以要設定exact = FALSE。
7. 使用R計算肯德爾等級相關係數,方法二:
第一步: 輸入建立資料。
v1 <- c(0.1, 0.15,
0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55)
v2 <- c(1, 0.95,
0.95, 0.9, 0.85, 0.7, 0.65, 0.6, 0.55, 0.42)
第二步: 安裝fBasics程式套件。
第三步: 呼叫fBasics程式套件備用。
library(fBasics)
第四步: 閱讀fBasics程式套件kendallTest函數的使用說明。
help(kendallTest)
第五步: 使用fBasics程式套件kendallTest函數代入v1及v2計算斯皮爾曼等級相關係數。
kendallTest(v1, v2)
第六步: 判讀結果。
Title:
Kendall's tau Correlation
Test
Test Results:
SAMPLE ESTIMATES:
tau: -0.9888
STATISTIC:
z:
-3.9513
T |
Exact: -3.9513
P
VALUE:
Alternative
Two-Sided: 7.772e-05
Alternative
Two-Sided | Exact: 7.772e-05
Alternative
Less: 3.886e-05
Alternative
Less | Exact: 3.886e-05
Alternative
Greater: 1
Alternative
Greater | Exact: 1
# 如計算結果p < 0.05,H0: ρ
= 0,不成立,X、Y有關。
# 如計算結果p > 0.05,H0: ρ
= 0,成立,X、Y無關。
# 如果要檢定: H0: ρ ≥ 0 & HA: ρ < 0或H0: ρ > 0 & HA: ρ ≤ 0,alternative = "less"。
# 如果要檢定: H0: ρ ≤ 0 & HA: ρ > 0或H0: ρ < 0 & HA: ρ ≥ 0,alternative = "greater"。
# 由於有數值相同資料(排序相同: tied rank)此方法無法計算exact p value。
8. 檢定二組樣本數不同之肯德爾等級相關係數統計上是否有差: H0:
ρ1 = ρ2,HA: ρ1
≠ ρ2。
第一步: 輸入建立資料。
v1 <- c(0.1, 0.15,
0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55)
v2 <- c(1, 0.95,
0.95, 0.9, 0.85, 0.7, 0.65, 0.6, 0.55, 0.41)
v3 <- c(0.1, 0.16,
0.21, 0.26, 0.31, 0.37, 0.41, 0.47, 0.51, 0.56, 0.6, 0.64, 0.69, 0.74)
v4 <- c(0.99, 0.94,
0.93, 0.9, 0.86, 0.74, 0.66, 0.6, 0.55, 0.5, 0.45, 0.4, 0.35, 0.3)
第二步: 使用基本(base)模組函數cor,代入v1、v2及v3、v4算出兩組肯德爾等級相關係數r1、r2。
r1 <- cor(v1, v2,
method = "kendall")
r2 <- cor(v3, v4,
method = "kendall")
第三步: 安裝cocor程式套件。
第四步: 呼叫cocor程式套件備用。
library(cocor)
第五步: 閱讀cocor程式套件cocor.indep.groups函數使用說明。
help(cocor.indep.groups)
第六步: 使用cocor程式套件cocor.indep.groups函數,代入相關係數r1、r2及樣本數(n1 = 10, n2 = 14),進行假設檢定。
cocor.indep.groups(r1,
r2, 10, 14, alternative = "two.sided", test = "all", alpha
= 0.05, conf.level = 0.95, null.value = 0, data.name = NULL, var.labels = NULL,
return.htest = FALSE)
第七步: 判讀結果。
Results of a comparison of
two correlations based on independent groups
Comparison between r1.jk = -0.9888 and r2.hm = -1
Difference: r1.jk - r2.hm = 0.0112
Group sizes: n1 = 10, n2 = 14
Null hypothesis: r1.jk is equal to r2.hm
Alternative hypothesis: r1.jk is not equal to r2.hm (two-sided)
Alpha: 0.05
fisher1925: Fisher's z (1925)
z =
Inf, p-value = 0.0000
Null
hypothesis rejected
zou2007: Zou's (2007) confidence interval
95%
confidence interval for r1.jk - r2.hm: 0.0026 0.0482
Null
hypothesis rejected (Interval does not include 0)
# 如計算結果p < 0.05,H0: ρ1
= ρ2,不成立,二相關係數統計上有差。
# 如計算結果p > 0.05,H0: ρ1
= ρ2,成立,二相關係數統計上沒差。
# 如果要檢定: H0: ρ1 ≥ ρ2 & HA:
ρ1 < ρ2或H0: ρ1
> ρ2 & HA: ρ1 ≤ ρ2,alternative = "less"。
# 如果要檢定: H0: ρ1 ≤ ρ2 & HA:
ρ1 > ρ2或H0: ρ1
< ρ2 & HA: ρ1 ≥ ρ2,alternative = "greater"。
9. 範例資料2: Bacteria_Genera.txt為空白分隔純文字資料檔,內含不同實驗樣本中細菌組成比例。
第一步: 輸入建立資料,使用read.table函數直接從檔案讀入資料或將資料貼到函數中如下所示,然後將資料放入變數dataset_g。
dataset_g <- read.table(header = T, text = "
Acidipila Aciditerrimonas
Acinetobacter Amaricoccus Aminicenantes Angustibacter
A1 0 0 0 0 0.046488287 0
A2 0.019110994 0 0 0.027027027 0.019110994 0
A3 0 0 0 0 0.016568013 0
B1 0.091030514 0.016349563 0 0 0 0.032699126
B2 0.09476955 0 0.032037955 0.027745683 0 0
B3 0.097683083 0 0.017834409 0 0 0.017834409
C1 0.090243422 0.018420861 0 0 0.026051032 0
C2 0.08234428 0 0.023290479 0.016468856 0 0.016468856
C3 0.06573422 0 0.017568209 0.017568209 0 0
D1 0.122666303 0.025039154 0 0 0 0
D2 0.099660276 0.022011273 0.026958193 0.022011273 0 0
D3 0.082080737 0.013874177 0 0 0 0
E1 0.05484085 0.019389168 0 0.027420425 0 0
E2 0.096534949 0.015457963 0.026773978 0.037864122 0 0
E3 0.072001213 0 0 0 0 0.033036422")
# 資料為空白分隔的純文字。
# header = T資料有標題。
# 資料第一列Acidipila前有一空白。
# 變數名稱(dataset_g) 是使用者自定。
10. 相關係數的應用I: 相關係數矩陣(correlation matrix),顯示多變數資料中任二變數間的相關性。
第一步:使用前述cor函數代入dataset_g計算任二變數資料相關係數放入變數M。
M <- cor(dataset_g,
method = "kendall")
# 變數名稱(M)是使用者自定。
第二步: 安裝corrplot程式套件。
第三步: 呼叫corrplot程式套件備用。
library(corrplot)
第四步: 閱讀corrplot函數使用說明。
help(corrplot)
第五步: 執行corrplot函數代入M計算並畫出相關矩陣。
corrplot(M, type =
"upper", method = "ellipse", order = "hclust",
tl.col = "black")
第六步: 儲存圖檔。
# 右上往左下斜(藍色): 正相關。左上往右下斜(紅色): 負相關。橢圓越細長相關係數越接近+1或-1。
11. 相關係數的應用II: 數值分佈矩陣(scatter plot matrix)及相關係數矩陣,顯示多變數資料中任二變數間的數值分佈及相關性。
第一步: 使用as.matrix函數代入dataset_g將資料轉換成R的matrix資料型態(data type),放入變數m。
m <-
as.matrix(dataset_g)
# 變數名稱(m)是使用者自定。
第二步: 安裝PerformanceAnalytics程式套件。
第三步: 呼叫PerformanceAnalytics程式套件備用。
library(PerformanceAnalytics)
第四步: 閱讀PerformanceAnalytics程式套件chart.Correlation函數的使用說明。
help(chart.Correlation)
第五步: 執行PerformanceAnalytics程式套件的chart.Correlation函數代入變數m資料,計算任二變數資料之數值分佈矩陣及相關係數矩陣。
chart.Correlation(m,
histogram = TRUE, method = "kendall", pch=19)
第六步: 儲存圖檔。
# 上圖中每個變量的分佈顯示在對角線上。
# 在對角線的底部(下三角): 顯示具有迴歸線的雙變量(X-Y)散佈圖。
# 在對角線的頂端(上三角): 相關係數加上作為恆星的顯著性水準。
# 每個顯著性級別都與一個符號相關聯: p值(0: "***", 0.001: "**", 0.01: "*", 0.05:
".", 0.1: " ")。
12. 相關係數的應用III: 使用相關係數矩陣作變數群聚分析(cluster analysis)及相關係數熱圖(heatmap)。
第一步: 使用基本模組(base)函數cor代入dataset_g計算相關係數矩陣,放入變數res。
res <- cor(dataset_g,
method = "kendall")
# 變數名稱(res)是使用者自定。
第二步: 使用基本模組(base)函數colorRampPalette選擇顏色。
col <-
colorRampPalette(c("blue", "white", "red"))(20)
# 變數名稱(col)是使用者自定。
第三步: 使用heatmap函數代入res及col進行群聚分析並繪製熱圖。
heatmap(x = res, col =
col, symm = TRUE)
第四步: 儲存圖檔。
# 上圖中紅色為正相關(相關係數正值),藍色為反相關(相關係數負值),白色為無關(相關係數近0)。
來勁了嗎? 想知道更多?? 補充資料(連結):
4. 關於R基礎,R繪圖及統計快速入門:
a. R Tutorial: https://www.tutorialspoint.com/r/index.htm
b. Cookbook for R: http://www.cookbook-r.com/
c. Quick-R: https://www.statmethods.net/
d. Statistical tools
for high-throughput data analysis (STHDA): http://www.sthda.com/english/
e. The Handbook of Biological Statistics: http://www.biostathandbook.com/
f. An R Companion for the Handbook of
Biological Statistics: http://rcompanion.org/rcompanion/index.html
5. 關於cocor Diedenhofen B, Musch J. 2015. cocor: a comprehensive solution
for the statistical comparison of correlations. PLoS One. 10(3):e0121945. doi:
10.1371/journal.pone.0121945.
6. Zar, JH. 2010. Biostatistical Analysis, Fifth Edition,
Pearson.
留言
張貼留言