ks-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檢驗只適用於連續和定量數據。
  • 擬合優度檢驗的檢驗結果依賴於分組,而其他方法的檢驗結果與區間劃分無關。

參考鏈接:
http://www.physics.csbsju.edu/stats/KS-test.html
http://blog.sina.com.cn/s/blog_403aa80a01019ly5.html

cdf=p(X<=x)是pdf的積分

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章