KS-檢驗(Kolmogorov-Smirnov test) -- 檢驗數據是否符合某種分佈

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-檢驗仍是至關精確有效的手段。html

KS檢驗是如何工做的?api

  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值的大小是不會變的。htm

  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-檢驗是最佳的檢驗方法。blog

如何使用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.htmlget

相關文章
相關標籤/搜索