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
適當的形狀,而不是 2Dnp.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
範例
檢測列表 a、b 和 c 是否來自具有相等變異數的母體。
>>> 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 的樣本變異數遠大於 a 和 c 的樣本變異數
>>> [np.var(x, ddof=1) for x in [a, b, c]] [0.007054444444444413, 0.13073888888888888, 0.008890000000000002]
如需更詳細的範例,請參閱 Levene 檢定變異數同質性。