scipy.stats.

levene#

scipy.stats.levene(*samples, center='median', proportiontocut=0.05, axis=0, nan_policy='propagate', keepdims=False)[原始碼]#

執行 Levene 檢定以檢測變異數是否相等。

Levene 檢定檢測虛無假設,即所有輸入樣本皆來自具有相等變異數的母體。Levene 檢定是 Bartlett 檢定 bartlett 的替代方案,適用於顯著偏離常態分佈的情況。

參數:
sample1, sample2, …array_like

樣本資料,可能具有不同長度。僅接受一維樣本。

center{‘mean’, ‘median’, ‘trimmed’}, optional

在檢定中使用的資料函數。預設值為 ‘median’。

proportiontocutfloat, optional

center 為 ‘trimmed’ 時,此參數給定從每一端切除的資料點比例。(請參閱 scipy.stats.trim_mean。)預設值為 0.05。

axisint 或 None,預設值:0

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

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

定義如何處理輸入的 NaN 值。

  • propagate:若軸切片(例如,列)中存在 NaN 值,則沿著該軸計算統計量,輸出的相應條目將為 NaN。

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

  • raise:若存在 NaN 值,則會引發 ValueError

keepdimsbool,預設值:False

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

回傳值:
statisticfloat

檢定統計量。

pvaluefloat

檢定的 p 值。

另請參閱

fligner

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

bartlett

一種用於檢定常態樣本中 k 個變異數是否相等的參數檢定

Levene 檢定變異數同質性

延伸範例

說明

Levene 檢定有三種變體。可能性及其建議用法如下

  • ‘median’:建議用於偏斜(非常態)分佈>

  • ‘mean’:建議用於對稱、中等尾部分佈。

  • ‘trimmed’:建議用於重尾分佈。

使用平均值的檢定版本在 Levene 的原始文章中提出 ([2]),而中位數和修剪平均值已由 Brown 和 Forsythe 研究 ([3]),有時也稱為 Brown-Forsythe 檢定。

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

參考文獻

[2]

Levene, H. (1960). In Contributions to Probability and Statistics: Essays in Honor of Harold Hotelling, I. Olkin et al. eds., Stanford University Press, pp. 278-292.

[3]

Brown, M. B. and Forsythe, A. B. (1974), Journal of the American Statistical Association, 69, 364-367

範例

檢測列表 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.levene(a, b, c)
>>> p
0.002431505967249681

小的 p 值表示母體不具有相等的變異數。

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

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

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