Distributions

Kolmogorov Smirnov檢驗的直觀解釋

  • June 12, 2020

向某人解釋 Kolmogorov Smirnov 測試概念的最簡潔、最簡單的方法是什麼?直觀上是什麼意思?

這是一個我難以表達的概念——尤其是在向某人解釋時。

有人可以用圖表和/或使用簡單的例子來解釋它嗎?

Kolmogorov-Smirnov 檢驗評估隨機樣本(數值數據)來自連續分佈的假設,該連續分佈完全指定而無需參考數據。

這是這種分佈的累積分佈函數 (CDF) 的圖表。

圖 1:從 -3 到 3 的標準正態 CDF 圖表

樣本可以通過其經驗(累積)分佈函數或 ECDF 來完全描述。它繪製小於或等於水平值的數據分數。因此,隨機抽樣 $ n $ 值,當我們從左到右掃描時,它向上跳躍 $ 1/n $ 每次我們跨越一個數據值。

下圖顯示了樣本的 ECDF $ n=10 $ 取自該分佈的值。點符號定位數據。繪製線條以提供點之間的視覺連接,類似於連續 CDF 的圖形。

圖 2:ECDF 圖表

KS 測試使用它們的圖表之間的最大垂直差異來比較 CDF 和 ECDF。金額(正數)是Kolmogorov-Smirnov 檢驗統計量。

我們可以通過定位位於 CDF 上方或下方最遠的數據點來可視化 KS 檢驗統計量。 此處以紅色突出顯示。檢驗統計量是極值點與參考 CDF 值之間的垂直距離。繪製了兩條位於 CDF 上方和下方此距離的限製曲線以供參考。因此,ECDF 位於這些曲線之間,並且至少與其中一條曲線相接觸。

圖 3:CDF、ECDF 和極限曲線

為了評估 KS 檢驗統計量的重要性,我們像往常一樣將其與 KS 檢驗統計量進行比較,KS 檢驗統計量往往會出現在假設分佈的完全隨機樣本中。 可視化它們的一種方法是繪製許多此類(獨立)樣本的 ECDF,以表明它們的KS 統計數據是什麼。這形成了 KS 統計量的“零分佈”。

圖 4:許多 ECDF,顯示為空分佈

每個的 ECDF $ 200 $ 樣本與單個紅色標記一起顯示,該標記位於它與假設的 CDF 最不同的位置。在這種情況下,與大多數隨機樣本相比,原始樣本(藍色)與 CDF 的偏差明顯較小。(73% 的隨機樣本比藍色樣本更遠離 CDF。從視覺上看,這意味著 73% 的紅點落在由兩條紅色曲線分隔的區域之外。)因此,我們(在此基礎上)沒有結論我們的(藍色)樣本的證據不是由該 CDF 生成的。也就是說,差異“在統計上不顯著”。

更抽像地說,我們可以在這組大的隨機樣本中繪製 KS 統計量的分佈。 這稱為*檢驗統計量的零分佈。*這裡是:

圖 5:200 KS 測試統計的直方圖

垂直藍線定位原始樣本的 KS 檢驗統計量。27% 的隨機 KS 測試統計量較小,73% 的隨機統計量較大。掃一掃,看起來數據集(這個大小,這個假設的 CDF)的 KS 統計量必須超過 0.4 左右才能得出結論它非常大(因此構成假設的 CDF 不正確的重要證據) .


雖然可以說更多——特別是關於為什麼 KS 測試以相同的方式工作並產生相同的零分佈,對於任何連續 CDF——這足以理解測試並將其與概率圖一起使用來評估數據分佈。


應要求,這是R我用於計算和繪圖的基本代碼。它使用標準正態分佈 ( pnorm) 作為參考。註釋掉的行表明我的計算與內置ks.test函數的計算一致。我不得不修改它的代碼以提取有助於 KS 統計的特定數據點。

ecdf.ks <- function(x, f=pnorm, col2="#00000010", accent="#d02020", cex=0.6,
                   limits=FALSE, ...) {
 obj <- ecdf(x)
 x <- sort(x)
 n <- length(x)
 y <- f(x) - (0:(n - 1))/n
 p <- pmax(y, 1/n - y)
 dp <- max(p)
 i <- which(p >= dp)[1]
 q <- ifelse(f(x[i]) > (i-1)/n, (i-1)/n, i/n)

 # if (dp != ks.test(x, f)$statistic) stop("Incorrect.")

 plot(obj, col=col2, cex=cex, ...)
 points(x[i], q, col=accent, pch=19, cex=cex)
 if (limits) {
   curve(pmin(1, f(x)+dp), add=TRUE, col=accent)
   curve(pmax(0, f(x)-dp), add=TRUE, col=accent)
 }
 c(i, dp)
}

引用自:https://stats.stackexchange.com/questions/471732

comments powered by Disqus