Python
Kolmogorov-Smirnov 檢驗:p 值和 ks 檢驗統計量隨著樣本量的增加而減少
為什麼 p 值和 ks 檢驗統計量會隨著樣本量的增加而減少?以這段 Python 代碼為例:
import numpy as np from scipy.stats import norm, ks_2samp np.random.seed(0) for n in [10, 100, 1000, 10000, 100000, 1000000]: x = norm(0, 4).rvs(n) y = norm(0, 4.1).rvs(n) print ks_2samp(x, y)
結果是:
Ks_2sampResult(statistic=0.30000000000000004, pvalue=0.67507815371659508) Ks_2sampResult(statistic=0.080000000000000071, pvalue=0.89375155241057247) Ks_2sampResult(statistic=0.03499999999999992, pvalue=0.5654378910227662) Ks_2sampResult(statistic=0.026599999999999957, pvalue=0.0016502962880920896) Ks_2sampResult(statistic=0.0081200000000000161, pvalue=0.0027192461984023855) Ks_2sampResult(statistic=0.0065240000000000853, pvalue=6.4573678008760032e-19)
直覺上我知道隨著 n 的增長,測試“更加確定”這兩個分佈是不同的。但是如果樣本量非常大,那麼在諸如 Anderson Darling 檢驗或 t 檢驗之類的相似性檢驗中有什麼意義,因為在這種情況下,當 n 非常大時,總是會發現分佈是“顯著”不同!?現在我想知道 p 值到底有什麼意義。這在很大程度上取決於樣本量…如果 p > 0.05 並且您希望它更低,則只需獲取更多數據;如果 p < 0.05 並且您希望它更高,只需刪除一些數據。
此外,如果兩個分佈相同,則 ks-test 統計量將為 0,p 值為 1。但在我的示例中,隨著 n 的增加,ks-test 統計量表明分佈隨著時間變得越來越相似(減少) ,但根據 p 值,它們會隨著時間的推移變得越來越不同(也越來越小)。
檢驗統計量減少是因為您的分佈非常相似並且較大的樣本具有較少的噪聲。如果您要比較您使用的兩個理論分佈,您應該得到“真實”的 KS 統計量。隨著您添加更多數據,您估計的 KS 統計量應該接近這個真實值。但是,即使您的 KS 統計量減少,您的信心也會增加,即它們實際上是兩個不同的分佈(即 p 值降低),因為您對各個分佈的估計有更大的信心。