本文簡要介紹 python 語言中 scipy.stats.wilcoxon 的用法。
用法:
scipy.stats.wilcoxon(x, y=None, zero_method='wilcox', correction=False, alternative='two-sided', method='auto', *, axis=0, nan_policy='propagate', keepdims=False)#計算 Wilcoxon signed-rank 檢驗。
Wilcoxon signed-rank 檢驗測試兩個相關配對樣本來自同一分布的原假設。特別是,它測試差異
x - y的分布是否關於零對稱。它是配對T-test 的非參數版本。- x: array_like
第一組測量值(在這種情況下,
y是第二組測量值),或者兩組測量值之間的差異(在這種情況下,y不指定。)必須是一維的。- y: 數組,可選
第二組測量值(如果
x是第一組測量值)或未指定(如果x是兩組測量值之間的差異。)必須是一維的。警告
什麽時候y提供,
wilcoxon根據絕對值的排名計算檢驗統計量d = x - y。減法中的舍入誤差可能會導致以下元素d被分配不同的等級,即使它們與精確的算術並列。而不是通過x和y分別考慮計算差異x - y,根據需要進行舍入以確保隻有真正唯一的元素在數字上是不同的,並將結果傳遞為x,離開y默認(無)。- zero_method: {“wilcox”, “pratt”, “zsplit”},可選
處理具有相等值的觀測值對(“zero-differences” 或 “zeros”)有不同的約定。
“wilcox”:丟棄所有zero-differences(默認);參見[4]。
“pratt”:在排名過程中包括zero-differences,但降低零的排名(更保守);參見[3]。在這種情況下,正常近似值的調整如[5]中所示。
“zsplit”:在排名過程中包括zero-differences,並將零排名分為正排名和負排名。
- correction: 布爾型,可選
如果為真,如果使用正態近似值,則在計算 z-statistic 時,通過將 Wilcoxon 秩統計量向平均值調整 0.5 來應用連續性校正。默認為假。
- alternative: {“two-sided”, “greater”, “less”},可選
定義備擇假設。默認為“雙麵”。下麵,讓
d表示配對樣本之間的差異:如果同時提供了x和y,則為d = x - y,否則為d = x。“雙麵”:
d的底層分布關於零不對稱。‘less’:
d的底層分布隨機小於關於零對稱的分布。‘greater’:
d的底層分布隨機大於關於零對稱的分布。
- method: {“auto”, “exact”, “approx”},可選
p值的計算方法見注釋。默認為“auto”。
- axis: int 或無,默認值:0
如果是 int,則計算統計量的輸入軸。輸入的每個axis-slice(例如行)的統計信息將出現在輸出的相應元素中。如果
None,輸入將在計算統計數據之前被分解。- nan_policy: {‘propagate’, ‘omit’, ‘raise’}
定義如何處理輸入 NaN。
propagate:如果計算統計數據的軸切片(例如行)中存在NaN,則輸出的相應條目將為 NaN。omit: 計算時將省略NaNs。如果計算統計數據的軸切片中剩餘的數據不足,則輸出的相應條目將為 NaN。raise:如果存在 NaN,則會引發ValueError。
- keepdims: 布爾值,默認值:假
如果將其設置為 True,則縮小的軸將作為尺寸為 1 的尺寸留在結果中。使用此選項,結果將針對輸入數組正確廣播。
- 具有以下屬性的對象。
- statistic: array_like
如果替代是“two-sided”,則高於或低於零的差值的等級總和,以較小者為準。否則是大於零的差值的等級總和。
- pvalue: array_like
測試的 p 值取決於替代方案和方法。
- zstatistic: array_like
當
method = 'approx'時,這是標準化的 z-statistic:z = (T - mn - d) / se其中
T是統計如上所定義,mn是原假設下分布的均值,d是連續性修正,並且se是標準誤。什麽時候method != 'approx',該屬性不可用。
參數 ::
返回 ::
注意:
下麵,讓
d表示配對樣本之間的差異:如果同時提供了x和y,則為d = x - y,否則為d = x。假設d的所有元素都是獨立且同分布的觀測值,並且全部不同且非零。什麽時候
len(d)足夠大,歸一化檢驗統計量的零分布 (z統計量以上)大約是正常的,並且method = 'approx'可用於計算 p 值。當
len(d)很小時,正態近似可能不準確,首選method='exact'(以額外的執行時間為代價)。默認值
method='auto'在兩者之間進行選擇:當len(d) <= 50時,使用確切的方法;當len(d) <= 50時,使用確切的方法;否則,使用近似方法。
“ties” 的存在(即並非所有元素
d是唯一的)和“zeros”(即元素d為零)改變檢驗統計量的零分布,並且method='exact'不再計算精確的 p 值。如果method='approx',z-statistic 進行了調整,以便與標準正態進行更準確的比較,但是,對於有限的樣本大小,標準正態隻是 z-statistic 的真實零分布的近似值。對於在存在零和/或平局的情況下哪種方法最準確地近似小樣本的 p 值,參考文獻之間沒有明確的共識。無論如何,這都是wilcoxon當method='auto': ``method='exact'使用時len(d) <= 50並且沒有零;否則,method='approx'被使用。從 SciPy 1.9 開始,
np.matrix輸入(不建議用於新代碼)在執行計算之前轉換為np.ndarray。在這種情況下,輸出將是標量或適當形狀的np.ndarray而不是 2Dnp.matrix。同樣,雖然屏蔽數組的屏蔽元素被忽略,但輸出將是標量或np.ndarray而不是帶有mask=False的屏蔽數組。參考:
[2]Conover, W.J.,實用非參數統計,1971 年。
[3]Pratt, J.W.,關於 Wilcoxon 符號秩程序中的零點和關係的評論,美國統計協會雜誌,卷。 54,1959,第 655-667 頁。 DOI:10.1080/01621459.1959.10501526
[5]Cureton, E.E.,當存在零差異時,Signed-Rank 抽樣分布的正態近似,美國統計協會雜誌,卷。 62,1967,第 1068-1069 頁。 DOI:10.1080/01621459.1967.10500917
例子:
在[4]中,交叉和self-fertilized玉米植株之間的高度差異如下:
>>> d = [6, 8, 14, 16, 23, 24, 28, 29, 41, -48, 49, 56, 60, -67, 75]Cross-fertilized植物似乎更高。為了檢驗不存在高度差異的原假設,我們可以應用雙邊檢驗:
>>> from scipy.stats import wilcoxon >>> res = wilcoxon(d) >>> res.statistic, res.pvalue (24.0, 0.041259765625)因此,我們會以 5% 的置信水平拒絕原假設,得出組間存在身高差異的結論。為了確認可以假設差異的中位數為正,我們使用:
>>> res = wilcoxon(d, alternative='greater') >>> res.statistic, res.pvalue (96.0, 0.0206298828125)這表明中位數為負的零假設可以在 5% 的置信水平下被拒絕,而支持中位數大於零的替代方案。上麵的 p 值是準確的。使用正態近似給出非常相似的值:
>>> res = wilcoxon(d, method='approx') >>> res.statistic, res.pvalue (24.0, 0.04088813291185591)請注意,在單側情況下,統計量變為 96(正差異的秩和),而在雙向情況下,統計量變為 24(高於和低於零的秩和的最小值)。
在上麵的示例中,配對植物之間的高度差異直接提供給
wilcoxon。或者,wilcoxon接受兩個長度相等的樣本,計算配對元素之間的差異,然後執行測試。考慮示例x和y:>>> import numpy as np >>> x = np.array([0.5, 0.825, 0.375, 0.5]) >>> y = np.array([0.525, 0.775, 0.325, 0.55]) >>> res = wilcoxon(x, y, alternative='greater') >>> res WilcoxonResult(statistic=5.0, pvalue=0.5625)請注意,如果我們手動計算差異,測試會產生不同的結果:
>>> d = [-0.025, 0.05, 0.05, -0.05] >>> ref = wilcoxon(d, alternative='greater') >>> ref WilcoxonResult(statistic=6.0, pvalue=0.4375)顯著差異是由於
x-y結果中的舍入誤差造成的:>>> d - (x-y) array([2.08166817e-17, 6.93889390e-17, 1.38777878e-17, 4.16333634e-17])盡管我們期望
(x-y)[1:]的所有元素具有相同的量值0.05,但實際上它們的量值略有不同,因此在測試中分配了不同的等級。在執行測試之前,請考慮計算d並根據需要進行調整,以確保理論上相同的值在數值上不不同。例如:>>> d2 = np.around(x - y, decimals=3) >>> wilcoxon(d2, alternative='greater') WilcoxonResult(statistic=6.0, pvalue=0.4375)
相關用法
- Python SciPy stats.wishart用法及代碼示例
- Python SciPy stats.weightedtau用法及代碼示例
- Python SciPy stats.wrapcauchy用法及代碼示例
- Python SciPy stats.wasserstein_distance用法及代碼示例
- Python SciPy stats.weibull_min用法及代碼示例
- Python SciPy stats.weibull_max用法及代碼示例
- Python SciPy stats.wald用法及代碼示例
- Python SciPy stats.anderson用法及代碼示例
- Python SciPy stats.iqr用法及代碼示例
- Python SciPy stats.genpareto用法及代碼示例
- Python SciPy stats.skewnorm用法及代碼示例
- Python SciPy stats.cosine用法及代碼示例
- Python SciPy stats.norminvgauss用法及代碼示例
- Python SciPy stats.directional_stats用法及代碼示例
- Python SciPy stats.invwishart用法及代碼示例
- Python SciPy stats.bartlett用法及代碼示例
- Python SciPy stats.levy_stable用法及代碼示例
- Python SciPy stats.page_trend_test用法及代碼示例
- Python SciPy stats.itemfreq用法及代碼示例
- Python SciPy stats.exponpow用法及代碼示例
- Python SciPy stats.gumbel_l用法及代碼示例
- Python SciPy stats.chisquare用法及代碼示例
- Python SciPy stats.semicircular用法及代碼示例
- Python SciPy stats.gzscore用法及代碼示例
- Python SciPy stats.gompertz用法及代碼示例
注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.stats.wilcoxon。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
