兩組樣本柯爾莫哥洛夫-斯米爾諾夫適合度檢定 (Two Sample Kolmogorov-Smirnov Goodness of fit test)

套路50: 兩組樣本柯爾莫哥洛夫-斯米爾諾夫適合度檢定
(Two Sample Kolmogorov-Smirnov Goodness of fit test)

1. 使用時機: 兩組樣本柯爾莫哥洛夫-斯米爾諾夫適合度檢定用來分析兩組資料分佈型(distribution)之差異。
2. 分析類型: 無母數分析(non-parametric analysis)
3. 兩組樣本柯爾莫哥洛夫-斯米爾諾夫檢定前提假設: 無。
4. 範例資料: 某研究測量同一時間不同區域某種蛾翼展長度(cm)。資料如下:
1
0.22
0.87
2.39
1.79
0.37
1.54
1.28
0.31
0.74
1.72
0.38
0.17
0.62
1.1
0.3
2
5.13
2.19
2.43
3.83
0.5
3.25
4.32
1.63
5.18
0.43
7.11
4.87
3.1
5.81
3.76
試問此二區域某種蛾的翼展長度分佈(distribution)是否相似?
H0: 兩區域某種蛾的翼展長度分佈相似。HA: 兩區域某種蛾的翼展長度分佈不相似。

5. 使用R計算兩組樣本柯爾莫哥洛夫-斯米爾諾夫檢定,方法一:
第一步: 安裝EnvStats程式套件。
第二步: 呼叫EnvStats程式套件備用。
  library(EnvStats)
第三步: 閱讀gofTest函數使用說明。
  help(gofTest)
第四步: 輸入建立資料。
  v1 <- c(0.22, 0.87, 2.39, 1.79, 0.37, 1.54, 1.28, 0.31, 0.74, 1.72, 0.38, 0.17, 0.62, 1.10, 0.30)
  v2 <- c(5.13, 2.19, 2.43, 3.83, 0.50, 3.25, 4.32, 1.63, 5.18, 0.43, 7.11, 4.87, 3.10, 5.81, 3.76)
第五步: 使用EnvStats程式套件的gofTest函數代入v1v2計算柯爾莫哥洛夫-斯米爾諾夫檢定
  gofTest(v1~v2, test = "ks", alternative = "two.sided")
  # v1~v2兩組樣本(two-sample test)
  # test = "ks" 執行柯爾莫哥洛夫-斯米爾諾夫檢定
第六步: 判讀結果。
Results of Goodness-of-Fit Test
-------------------------------
Test Method:                     2-Sample K-S GOF
Hypothesized Distribution:          Equal
Data:                            x = v2
                                y = v1
Sample Sizes:                     n.x = 15
                                    n.y = 15
Test Statistic:                     ks = 0.7333333
Test Statistic Parameters:            n = 15
                                    m = 15
P-value:                         0.000353345
Alternative Hypothesis:          The cdf of 'v2' does not equal the cdf of 'v1'.
  # P-value < 0.05H0: 兩區域某種蛾的翼展長度分佈相似,不成立。
  # P-value > 0.05H0: 兩區域某種蛾的翼展長度分佈相似,成立。

6. 使用R計算兩組樣本柯爾莫哥洛夫-斯米爾諾夫檢定,方法二:
第一步: 安裝dgof程式套件。
第二步: 呼叫dgof程式套件備用。
  library(dgof)
第三步: 閱讀ks.test函數使用說明。
  help(ks.test)
第四步: 輸入建立資料。
  v1 <- c(0.22, 0.87, 2.39, 1.79, 0.37, 1.54, 1.28, 0.31, 0.74, 1.72, 0.38, 0.17, 0.62, 1.10, 0.30)
  v2 <- c(5.13, 2.19, 2.43, 3.83, 0.50, 3.25, 4.32, 1.63, 5.18, 0.43, 7.11, 4.87, 3.10, 5.81, 3.76)
第五步: 使用dgof程式套件的ks.test函數代入v1v2計算柯爾莫哥洛夫-斯米爾諾夫檢定
  dgof::ks.test(v1, v2, alternative = "two.sided", exact = TRUE, tol = 1e-8,
 simulate.p.value = TRUE, B = 2000)
  # dgof::ks.test 基本模組(base)也有ks.test函數,為了區別,再函數名稱前加程式套件dgof::
  # v1~v2兩組樣本(two-sample test)
  # exact = TRUE, simulate.p.value = TRUE, B = 2000估計p值。
第六步: 判讀結果。
        Two-sample Kolmogorov-Smirnov test
data:  v1 and v2
D = 0.73333, p-value = 0.0003533
alternative hypothesis: two-sided
  # p-value < 0.05H0: 兩區域某種蛾的翼展長度分佈相似,不成立。
  # p-value > 0.05H0: 兩區域某種蛾的翼展長度分佈相似,成立。

7. 使用R計算兩組樣本柯爾莫哥洛夫-斯米爾諾夫檢定,方法三:
第一步: 閱讀基本模組(base)中的ks.test函數使用說明。
  help(ks.test)
第二步: 輸入建立資料。
  v1 <- c(0.22, 0.87, 2.39, 1.79, 0.37, 1.54, 1.28, 0.31, 0.74, 1.72, 0.38, 0.17, 0.62, 1.10, 0.30)
  v2 <- c(5.13, 2.19, 2.43, 3.83, 0.50, 3.25, 4.32, 1.63, 5.18, 0.43, 7.11, 4.87, 3.10, 5.81, 3.76)
第三步: 使用基本模組(base)中的ks.test函數代入x計算柯爾莫哥洛夫-斯米爾諾夫檢定
  stats::ks.test(v1, v2, alternative = "two.sided", exact = TRUE)
  # v1~v2兩組樣本(two-sample test)
  # exact = TRUE估計p
第四步: 判讀結果。
        Two-sample Kolmogorov-Smirnov test
data:  v1 and v2
D = 0.73333, p-value = 0.0003533
alternative hypothesis: two-sided
  # p-value < 0.05H0: 兩區域某種蛾的翼展長度分佈相似,不成立。
  # p-value > 0.05H0: 兩區域某種蛾的翼展長度分佈相似,成立。

來勁了嗎? 想知道更多?? 補充資料(連結):
4. 柯爾莫哥洛夫-斯米爾諾夫檢驗計算公式 (https://en.wikipedia.org/wiki/Kolmogorov%E2%80%93Smirnov_test)
5. 關於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
6. Zar, JH. 2010. Biostatistical Analysis, Fifth Edition, Pearson.

留言

這個網誌中的熱門文章

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

如何選擇統計方法 1

如何檢查資料是否接近常態分布 (Normality Test using R)