anderson_ksamp#
- scipy.stats.anderson_ksamp(samples, midrank=True, *, method=None)[source]#
k 個樣本的 Anderson-Darling 檢定。
k 樣本 Anderson-Darling 檢定是單樣本 Anderson-Darling 檢定的修改版。它檢定虛無假設:k 個樣本是從同一個母體中抽取的,而無需指定該母體的分布函數。臨界值取決於樣本數。
- 參數:
- samples一維類陣列序列
陣列形式的樣本資料。
- midrank布林值,選用項
計算的 Anderson-Darling 檢定類型。預設值 (True) 是適用於連續和離散母體的 midrank 檢定。若為 False,則使用右側經驗分布。
- methodPermutationMethod,選用項
定義用於計算 p 值的method。如果 method 是
PermutationMethod
的實例,則 p 值會使用scipy.stats.permutation_test
以及提供的配置選項和其他適當設定來計算。否則,p 值會從表格值中內插。
- 回傳值:
- resAnderson_ksampResult
包含屬性的物件
- statistic浮點數
正規化 k 樣本 Anderson-Darling 檢定統計量。
- critical_values陣列
顯著性水準 25%、10%、5%、2.5%、1%、0.5%、0.1% 的臨界值。
- pvalue浮點數
檢定的近似 p 值。如果未提供 method,則該值會被向下/向上限制在 0.1%/25%。
- 引發:
- ValueError
如果提供的樣本少於 2 個、樣本為空,或樣本中沒有不同的觀測值。
註解
[1] 定義了 k 樣本 Anderson-Darling 檢定的三個版本:一個用於連續分布,另兩個用於離散分布,其中樣本之間可能發生 ties。此常式預設計算基於 midrank 經驗分布函數的版本。此檢定適用於連續和離散資料。如果 midrank 設定為 False,則右側經驗分布用於離散資料的檢定。根據 [1],如果未針對樣本之間的 ties 進行調整的檢定中,由於捨入誤差而發生少量衝突,則兩個離散檢定統計量僅略有差異。
對應於顯著性水準 0.01 到 0.25 的臨界值取自 [1]。p 值會向下/向上限制在 0.1%/25%。由於臨界值的範圍可能會在未來版本中擴展,因此建議不要測試
p == 0.25
,而是p >= 0.25
(下限也類似)。在版本 0.14.0 中新增。
參考文獻
範例
>>> import numpy as np >>> from scipy import stats >>> rng = np.random.default_rng() >>> res = stats.anderson_ksamp([rng.normal(size=50), ... rng.normal(loc=0.5, size=30)]) >>> res.statistic, res.pvalue (1.974403288713695, 0.04991293614572478) >>> res.critical_values array([0.325, 1.226, 1.961, 2.718, 3.752, 4.592, 6.546])
虛無假設:兩個隨機樣本來自相同的分布,可以在 5% 的顯著性水準下被拒絕,因為回傳的檢定值大於 5% 的臨界值 (1.961),但在 2.5% 的水準下則否。內插法給出的近似 p 值為 4.99%。
>>> samples = [rng.normal(size=50), rng.normal(size=30), ... rng.normal(size=20)] >>> res = stats.anderson_ksamp(samples) >>> res.statistic, res.pvalue (-0.29103725200789504, 0.25) >>> res.critical_values array([ 0.44925884, 1.3052767 , 1.9434184 , 2.57696569, 3.41634856, 4.07210043, 5.56419101])
對於來自相同分布的三個樣本,虛無假設無法被拒絕。報告的 p 值 (25%) 已被向上限制,可能不是很準確 (因為它對應於值 0.449,而統計量為 -0.291)。
在 p 值被向上限制或樣本大小較小的情況下,置換檢定可能會更準確。
>>> method = stats.PermutationMethod(n_resamples=9999, random_state=rng) >>> res = stats.anderson_ksamp(samples, method=method) >>> res.pvalue 0.5254