Matlab中的資料分布KS檢驗

2021-07-26 23:39:26 字數 2343 閱讀 1229

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檢驗是如何工作的?

首先觀察下分析資料

對於以下兩組資料:

controlb=

treatmentb=

對於controlb,這些資料的統計描述如下:

mean = 3.61

median = 0.60

high = 50.6 low = 0.08

standard deviation = 11.2

可以發現這組資料並不符合正態分佈, 否則大約有15%的資料會小於均值-標準差(3.61-11.2),而資料中顯然沒有小於0的數。

觀察資料的累計分段函式(cumulative fraction function)

對controlb資料從小到大進行排序:

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

百分比圖(percentile plot)

估算分布函式肩形圖(estimated distribution function ogive)是一種累計分段圖的替代方式。其優勢在於可以讓你使用概率圖紙作圖(座標軸經過特殊分段處理,y軸上的數值間隔符合正態分佈),從而根據概率在y軸上的分布可以直觀的判斷資料到底有多符合正態分佈,因為正態分佈的資料在這種座標上是呈一條直線。

那麼這種圖是如何畫的呢?

假設我們有這5個數,從小到大對它們進行排序,。0.45是中位數,百分比為0.5,而0.45的累計分布函式中佔了0.4到0.6的區間。根據資料x在資料集(n)中排位r可以計算x的百分數(percentile)為r/(n+1)。將上述資料與他們的百分數配對,得到。然後將各點之間用直線連線就是百分比圖了。如下圖中紅線所示(另一條線為累計分段曲線)。

treatmentb的資料近似對數正態分佈,其幾何均值為2.563,標準差為6.795。該資料的百分圖(紅)與其近似的對數正態分佈曲線(藍)如下。

由於資料近似正態分佈,所以對其採用t-檢驗是最佳的檢驗方法。

如何使用ks檢驗

在r中可以使用ks.test()函式。

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

MATLAB中資料資料擬合

x0,y0是原始資料 x0 1790 10 2000 y0 3929214,5308483,7239881,9638453,12866020,17069453,23191876,31443321,39818449,50189209,62979766,76212168,92228496,1060215...

python資料分布 Python中的資料分布

我有乙個大的資料集和已發生的損失 我想通過蒙特卡羅模擬計算未來損失的分布。在 首先計算頻率分布,然後計算嚴重性分布 在保險中,這稱為頻率 嚴重性模型 在 請檢視所附 from scipy.stats import lognorm,norm,poisson,gamma,expon from scipy...

SSD TensorFlow中的單次多重檢測器

ssd tensorflow中的單次多重檢測器 ssd notebook 包含 ssd tensorflow 的最小示例。很快,就檢測出了兩個主要步驟 在影象上執行ssd網路,並使用通用演算法 top k濾波和非最大抑制演算法 對輸出進行後處理。以下是成功檢測輸出的兩個示例 為了執行這個 noteb...