scipy.stats.

bartlett#

scipy.stats.bartlett(*samples, axis=0, nan_policy='propagate', keepdims=False)[source]#

執行 Bartlett 變異數同質性檢定。

Bartlett 檢定會檢驗虛無假設,即所有輸入樣本皆來自具有相同變異數的母體。對於來自顯著非常態母體的樣本,Levene 檢定 levene 更為穩健。

參數:
sample1、sample2、…array_like

樣本資料陣列。僅接受 1 維陣列,它們可以有不同的長度。

axisint 或 None,預設值:0

若為 int,則為計算統計量的輸入軸。輸入的每個軸切片(例如,列)的統計量將會出現在輸出的對應元素中。若為 None,輸入將在計算統計量之前被展平。

nan_policy{‘propagate’、‘omit’、‘raise’}

定義如何處理輸入的 NaN。

  • propagate:若軸切片(例如,列)中存在 NaN,則輸出的對應條目將為 NaN。

  • omit:執行計算時將省略 NaN。若軸切片中剩餘的資料不足以計算統計量,則輸出的對應條目將為 NaN。

  • raise:若存在 NaN,將引發 ValueError

keepdimsbool,預設值:False

若設定為 True,則縮減的軸將保留在結果中,作為大小為一的維度。使用此選項,結果將會針對輸入陣列正確廣播。

傳回值:
statisticfloat

檢定統計量。

pvaluefloat

檢定的 p 值。

另請參閱

fligner

一種用於檢定 k 個變異數是否相等的非參數檢定

levene

一種用於檢定 k 個變異數是否相等的穩健參數檢定

Bartlett 變異數同質性檢定

擴展範例

註解

Conover 等人 (1981) 透過廣泛的模擬檢驗了許多現有的參數和非參數檢定,他們的結論是 Fligner 和 Killeen (1976) 以及 Levene (1960) 提出的檢定在偏離常態性和檢定力方面似乎更為優越 ([3])。

從 SciPy 1.9 開始,np.matrix 輸入(不建議用於新程式碼)會在執行計算之前轉換為 np.ndarray。在這種情況下,輸出將會是純量或具有適當形狀的 np.ndarray,而不是 2D np.matrix。同樣地,雖然會忽略遮罩陣列的遮罩元素,但輸出將會是純量或 np.ndarray,而不是 mask=False 的遮罩陣列。

參考文獻

[2]

Snedecor, George W. and Cochran, William G. (1989), Statistical Methods, Eighth Edition, Iowa State University Press.

[3]

Park, C. and Lindsay, B. G. (1999). Robust Scale Estimation and Hypothesis Testing based on Quadratic Inference Function. Technical Report #99-03, Center for Likelihood Studies, Pennsylvania State University.

[4]

Bartlett, M. S. (1937). Properties of Sufficiency and Statistical Tests. Proceedings of the Royal Society of London. Series A, Mathematical and Physical Sciences, Vol. 160, No.901, pp. 268-282.

範例

檢定列表 abc 是否來自具有相同變異數的母體。

>>> import numpy as np
>>> from scipy import stats
>>> a = [8.88, 9.12, 9.04, 8.98, 9.00, 9.08, 9.01, 8.85, 9.06, 8.99]
>>> b = [8.88, 8.95, 9.29, 9.44, 9.15, 9.58, 8.36, 9.18, 8.67, 9.05]
>>> c = [8.95, 9.12, 8.95, 8.85, 9.03, 8.84, 9.07, 8.98, 8.86, 8.98]
>>> stat, p = stats.bartlett(a, b, c)
>>> p
1.1254782518834628e-05

非常小的 p 值表示這些母體不具有相同的變異數。

這並不令人意外,因為 b 的樣本變異數遠大於 ac 的樣本變異數

>>> [np.var(x, ddof=1) for x in [a, b, c]]
[0.007054444444444413, 0.13073888888888888, 0.008890000000000002]

如需更詳細的範例,請參閱 Bartlett 變異數同質性檢定