KS-檢驗(Kolmogorov-Smirnov test)


轉:https://www.cnblogs.com/arkenstone/p/5496761.html

Kolmogorov-Smirnov是比較一個頻率分布f(x)與理論分布g(x)或者兩個觀測值分布的檢驗方法。其原假設H0:兩個數據分布一致或者數據符合理論分布。D=max| f(x)- g(x)|,當實際觀測值D>D(n,α)則拒絕H0,否則則接受H0假設。
KS檢驗與t-檢驗之類的其他方法不同是KS檢驗不需要知道數據的分布情況,可以算是一種非參數檢驗方法。當然這樣方便的代價就是當檢驗的數據分布符合特定的分布事,KS檢驗的靈敏度沒有相應的檢驗來的高。在樣本量比較小的時候,KS檢驗最為非參數檢驗在分析兩組數據之間是否不同時相當常用。
PS:t-檢驗的假設是檢驗的數據滿足正態分布,否則對於小樣本不滿足正態分布的數據用t-檢驗就會造成較大的偏差,雖然對於大樣本不滿足正態分布的數據而言t-檢驗還是相當精確有效的手段。

KS檢驗是如何工作的?

  1. 首先觀察下分析數據
    對於以下兩組數據:
    controlB={1.26, 0.34, 0.70, 1.75, 50.57, 1.55, 0.08, 0.42, 0.50, 3.20, 0.15, 0.49, 0.95, 0.24, 1.37, 0.17, 6.98, 0.10, 0.94, 0.38}
    treatmentB= {2.37, 2.16, 14.82, 1.73, 41.04, 0.23, 1.32, 2.91, 39.41, 0.11, 27.44, 4.51, 0.51, 4.50, 0.18, 14.68, 4.66, 1.30, 2.06, 1.19}
    對於controlB,這些數據的統計描述如下:
    Mean = 3.61
    Median = 0.60
    High = 50.6 Low = 0.08
    Standard Deviation = 11.2
    可以發現這組數據並不符合正態分布, 否則大約有15%的數據會小於均值-標准差(3.61-11.2),而數據中顯然沒有小於0的數。

  2. 觀察數據的累計分段函數(Cumulative Fraction Function)
    對controlB數據從小到大進行排序:
    sorted controlB={0.08, 0.10, 0.15, 0.17, 0.24, 0.34, 0.38, 0.42, 0.49, 0.50, 0.70, 0.94, 0.95, 1.26, 1.37, 1.55, 1.75, 3.20, 6.98, 50.57}。10%的數據(2/20)小於0.15,85%(17/20)的數據小於3。所以,對任何數x來說,其累計分段就是所有比x小的數在數據集中所占的比例。下圖就是controlB數據集的累計分段圖

    可以看到大多數數據都幾種在圖片左側(數據值比較小),這就是非正態分布的標志。為了更好的觀測數據在x軸上的分布,可以對x軸的坐標進行非等分的划分。在數據都為正的時候有一個很好的方法就是對x軸進行log轉換。下圖就是上圖做log轉換以后的圖:

    將treatmentB的數據也做相同的圖(如下),可以發現treatmentB和controlB的數據分布范圍大致相同(0.1 - 50)。但是對於大部分x值,在controlB數據集中比x小的數據所占的比例比在treatmentB中要高,也就是說達到相同累計比例的值在treatment組中比control中要高。KS檢驗使用的是兩條累計分布曲線之間的最大垂直差作為D值(statistic D)作為描述兩組數據之間的差異。在此圖中這個D值出現在x=1附近,而D值為0.45(0.65-0.25)。

    值得注意的是雖然累計分布曲線的性狀會隨着對數據做轉換處理而改變(如log轉換),但是D值的大小是不會變的。

  3. 百分比圖(percentile plot)
    估算分布函數肩形圖(Estimated Distribution Function Ogive)是一種累計分段圖的替代方式。其優勢在於可以讓你使用概率圖紙作圖(坐標軸經過特殊分段處理,y軸上的數值間隔符合正態分布),從而根據概率在y軸上的分布可以直觀的判斷數據到底有多符合正態分布,因為正態分布的數據在這種坐標上是呈一條直線。
    那么這種圖是如何畫的呢?
    假設我們有這5個數{-0.45, 1.11, 0.48, -0.82, -1.26},從小到大對它們進行排序,{ -1.26, -0.82, -0.45, 0.48, 1.11 }。0.45是中位數,百分比為0.5,而0.45的累計分布函數中占了0.4到0.6的區間。根據數據x在數據集(N)中排位r可以計算x的百分數(percentile)為r/(N+1)。將上述數據與他們的百分數配對,得到{ (-1.26,.167), (-0.82,.333), (-0.45,.5), (0.48,.667), (1.11,.833) }。然后將各點之間用直線連接就是百分比圖了。如下圖中紅線所示(另一條線為累計分段曲線)。

    treatmentB的數據近似對數正態分布,其幾何均值為2.563,標准差為6.795。該數據的百分圖(紅)與其近似的對數正態分布曲線(藍)如下。

    由於數據近似正態分布,所以對其采用t-檢驗是最佳的檢驗方法。

如何使用KS檢驗
在R中可以使用ks.test()函數。

與類似的分布檢驗方式比較

    • 經常使用的擬合優度檢驗和Kolmogorov-Smirnov檢驗的檢驗功效較低,在許多計算機軟件的Kolmogorov-Smirnov檢驗無論是大小樣本都用大樣本近似的公式,很不精准,一般使用Shapiro-Wilk檢驗和Lilliefor檢驗。
    • Kolmogorov-Smirnov檢驗只能檢驗是否一個樣本來自於一個已知樣本,而Lilliefor檢驗可以檢驗是否來自未知總體。
    • Shapiro-Wilk檢驗和Lilliefor檢驗都是進行大小排序后得到的,所以易受異常值的影響。
    • Shapiro-Wilk檢驗只適用於小樣本場合(3≤n≤50),其他方法的檢驗功效一般隨樣本容量的增大而增大。
    • 擬合優度檢驗和Kolmogorov-Smirnov檢驗都采用實際頻數和期望頻數進行檢驗,前者既可用於連續總體,又可用於離散總體,而Kolmogorov-Smirnov檢驗只適用於連續和定量數據。
    • 擬合優度檢驗的檢驗結果依賴於分組,而其他方法的檢驗結果與區間划分無關。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM