兩組樣本柯爾莫哥洛夫-斯米爾諾夫適合度檢定 (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)

比較二或多組變異數Levene’s 檢定 (Levene’s Test for Comparing Two or More Variances)

三因子變異數分析 (Three Way ANOVA)