皮爾森相關係數(Pearson correlation coefficient)

套路34: 皮爾森相關係數 (Pearson correlation coefficient)

1. 使用時機: 皮爾森相關係數是用以反映兩組變數之間關係密切程度的統計指標。
2. 分析類型: 母數分析(parametric analysis)直接使用資料數值算統計叫parametric方法,把資料排序之後用排序的名次算統計叫non-parametric方法。
3. 皮爾森相關係數前提假設: 兩組變數之資料均為常態分布(normal distribution)或接近常態分布
4. 範例資料1: 某研究餵食量對斑馬魚(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. 畫圖看資料分佈:
第一步: 輸入建立資料,儲存在變數名稱為datdata 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)
第四步: 使用函數ggplotx-y散佈圖及回歸線
  ggplot(dat, aes(x = v1, y = v2)) +
    geom_point(shape = 1) +    # 畫空心圓
    geom_smooth(method = lm)   # 加回歸線
  # 灰色區域是回歸線的95%信賴區間。
6. 檢查資料是否符合常態分佈(normal distribution):
第一步: 輸入建立資料
  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)函數shapiro.test代入v1v2檢查資料是否符合常態分佈
  shapiro.test(v1)
  shapiro.test(v2)
第三步: 判讀結果
        Shapiro-Wilk normality test
data:  v1
W = 0.97016, p-value = 0.8924
        Shapiro-Wilk normality test
data:  v2
W = 0.92593, p-value = 0.4091
  # 如計算結果p-value < 0.05H0:資料為常態分佈,不成立。
  # 如計算結果p-value > 0.05H0:資料為常態分佈,成立。
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)
第二步: 使用基本模組(base)函數cor代入v1v2計算皮爾森相關係數
  cor(v1, v2, method = "pearson")
[1] -0.9811093  # 計算結果皮爾森相關係數 = -0.9811093
  # 無提供p
第三步: 檢定皮爾森相關係數是否為零 (XY無關): H0: ρ = 0HA: ρ ≠ 0
使用基本(base)模組函數cor.test代入v1v2計算皮爾森相關係數並進行假設檢定
  cor.test(v1, v2, alternative = "two.sided", method = "pearson")
第四步: 判讀結果
         Pearson's product-moment correlation
data:  v1 and v2
t = -14.344, df = 8, p-value = 5.446e-07
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.995675 -0.919468
sample estimates:  cor: -0.9811093   # 計算結果皮爾森相關係數 = -0.9811093
  # 如計算結果p-value < 0.05H0: ρ = 0,不成立,XY有關
  # 如計算結果p-value > 0.05H0: ρ = 0,成立,XY無關
  # 如果要檢定: H0: ρ ≥ 0 & HA: ρ < 0H0: ρ > 0 & HA: ρ ≤ 0alternative = "less"
  # 如果要檢定: H0: ρ ≤ 0 & HA: ρ > 0H0: ρ < 0 & HA: ρ ≥ 0alternative = "greater"
8. 使用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模組的pearsonTest函數的使用說明
  help(pearsonTest)
第五步: 使用fBasics模組的pearsonTest函數代入v1v2計算皮爾森相關係數
  pearsonTest(v1, v2)
第六步: 判讀結果
Title:
 Pearson's Correlation Test
Test Results:
  PARAMETER:
    Degrees of Freedom: 8
  SAMPLE ESTIMATES:
     Correlation: -0.9811
  STATISTIC:
     t: -14.3445
   P VALUE:
     Alternative   Two-Sided: 5.446e-07
     Alternative   Less: 2.723e-07
     Alternative   Greater: 1
   CONFIDENCE INTERVAL:
     Two-Sided: -0.9957, -0.9195
     Less: -1, -0.936
     Greater: -0.9945, 1
  # 如計算結果p < 0.05H0: ρ = 0,不成立,XY有關
  # 如計算結果p > 0.05H0: ρ = 0,成立,XY無關
  # 如果要檢定: H0: ρ ≥ 0 & HA: ρ < 0H0: ρ > 0 & HA: ρ ≤ 0alternative = "less"
  # 如果要檢定: H0: ρ ≤ 0 & HA: ρ > 0H0: ρ < 0 & HA: ρ ≥ 0alternative = "greater"
9. 檢定二組樣本數不同之皮爾森相關係數統計上是否有差: H0: ρ1 = ρ2HA: ρ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代入v1v2v3v4算出兩組皮爾森相關係數r1r2
  r1 <- cor(v1, v2, method = "pearson")
  r2 <- cor(v3, v4, method = "pearson")
第三步: 安裝cocor程式套件。
第四步: 呼叫cocor程式套件備用。
  library(cocor)
第五步: 閱讀cocor程式套件cocor.indep.groups函數使用說明
  help(cocor.indep.groups)
第六步: 使用cocor程式套件cocor.indep.groups函數代入相關係數r1r2及樣本數(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.9801 and r2.hm = -0.9925
Difference: r1.jk - r2.hm = 0.0124
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 = 1.0161, p-value = 0.3096   # p-value > 0.05H0: ρ1 = ρ2成立,二相關係數統計上沒差
  Null hypothesis retained
zou2007: Zou's (2007) confidence interval
  95% confidence interval for r1.jk - r2.hm: -0.0103 0.0774
  Null hypothesis retained (Interval includes 0)
  # 如計算結果p-value < 0.05H0: ρ1 = ρ2,不成立,二相關係數統計上有差
  # 如計算結果p-value > 0.05H0: ρ1 = ρ2,成立,二相關係數統計上沒差
  # 如果要檢定: H0: ρ1ρ2 & HA: ρ1 < ρ2H0: ρ1 > ρ2 & HA: ρ1 ρ2alternative = "less"
  # 如果要檢定: H0: ρ1ρ2 & HA: ρ1 > ρ2H0: ρ1 < ρ2 & HA: ρ1 ρ2alternative = "greater"
10. 範例資料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) 是使用者自定。
11. 相關係數的應用I: 相關係數矩陣(correlation matrix)顯示多變數資料中任二變數間的相關性
第一步:使用as.matrix函數將dataset_g資料轉換成matrix資料型態(data type)放入變數m
  m <- as.matrix(dataset_g)
  # 變數名稱(m)是使用者自定。
第二步: 安裝Hmisc程式套件。
第三步: 呼叫Hmisc程式套件備用。
  library(Hmisc)
第四步: 閱讀Hmisc程式套件的rcorr函數使用說明
  help(rcorr)
第五步: 執行rcorr函數代入變數m資料計算任二變數資料之相關係數矩陣及相對應之p值矩陣
  rcorr(m, type = "pearson")
第六步: 判讀結果
12. 相關係數的應用II: 相關係數矩陣(correlation matrix)顯示多變數資料中任二變數間的相關性
第一步:使用前述cor函數代入dataset_g計算任二變數資料相關係數放入變數M
  M <- cor(dataset_g, method = "pearson")
# 變數名稱(M)是使用者自定。
第二步: 安裝corrplot程式套件。
第三步: 呼叫corrplot程式套件備用。
  library(corrplot)
第四步: 閱讀corrplot函數使用說明
  help(corrplot)
第五步: 執行corrplot函數代入M計算並畫出相關矩陣
  corrplot(M, type = "upper", method = "ellipse", order = "hclust", tl.col = "black")
第六步: 儲存圖檔
  # 右上往左下斜(藍色): 正相關。左上往右下斜(紅色): 負相關。橢圓越細長相關係數越接近+1-1
13. 相關係數的應用III: 數值分佈矩陣(scatter plot matrix)及相關係數矩陣顯示多變數資料中任二變數間的數值分佈及相關性
第一步: 使用as.matrix函數將資料dataset_g轉換成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 = "pearson", pch = 19)
第六步: 儲存圖檔
  # 上圖中每個變量的分佈顯示在對角線上。
  # 在對角線的底部(下三角): 顯示具有迴歸線的雙變量(X-Y)散佈圖。
  # 在對角線的頂端(上三角): 相關係數加上作為恆星的顯著性水準。
  # 每個顯著性級別都與一個符號相關聯: p(0: "***", 0.001: "**", 0.01: "*", 0.05: ".", 0.1: " ")
14. 相關係數的應用IV: 使用相關係數矩陣作變數群聚分析(cluster analysis)及相關係數熱圖(heatmap)
第一步: 使用基本模組(base)函數cor代入dataset_g計算相關係數矩陣放入變數res
  res <- cor(dataset_g, method = "pearson")
  # 變數名稱(res)是使用者自定。
第二步: 使用基本模組(base)函數colorRampPalette選擇顏色
  col <- colorRampPalette(c("blue", "white", "red"))(20)
  # 變數名稱(col)是使用者自定。
第三步: 使用基本模組(base)函數heatmap代入rescol進行群聚分析並繪製熱圖
  heatmap(x = res, col = col, symm = TRUE)
第四步: 儲存圖檔
  # 上圖中紅色為正相關(相關係數正值)藍色為反相關(相關係數負值)白色為無關(相關係數近0)

來勁了嗎? 想知道更多?? 補充資料(連結):
2. 關於correlation coefficient (https://en.wikipedia.org/wiki/Correlation_coefficient)
4. 關於R基礎R繪圖及統計快速入門:
   b. Cookbook for R: http://www.cookbook-r.com/
   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.

留言

這個網誌中的熱門文章

統計不球人 目錄 (Table of Contents)

如何選擇統計方法 1

單因子多樣本中位數差異檢定 (Kruskal-Wallis test)