當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python SciPy stats.combine_pvalues用法及代碼示例


本文簡要介紹 python 語言中 scipy.stats.combine_pvalues 的用法。

用法:

scipy.stats.combine_pvalues(pvalues, method='fisher', weights=None)#

合並基於相同假設的獨立檢驗的 p 值。

這些方法僅用於組合基於連續分布的假設檢驗的 p 值。

每種方法都假設在原假設下,p 值是從區間 [0, 1] 中獨立且均勻地采樣的。計算檢驗統計量(每種方法不同),並根據原假設下該檢驗統計量的分布計算組合 p 值。

參數

pvalues 數組,一維

假設 p 值數組來自基於連續分布的獨立測試。

method {‘fisher’, ‘pearson’, ‘tippett’, ‘stouffer’,‘mudholkar_george’}

用於組合 p 值的方法名稱。

可用的方法有(詳見注釋):

  • ‘fisher’:Fisher 方法(Fisher 組合概率檢驗)

  • ‘pearson’:皮爾遜方法

  • ‘mudholkar_george’:Mudholkar 和 George 的方法

  • ‘tippett’:蒂皮特方法

  • ‘stouffer’:斯托弗的Z-score方法

weights 類似數組,一維,可選

僅用於 Stouffer 的 Z-score 方法的可選權重數組。

返回

res SignificanceResult

包含屬性的對象:

統計 浮點數

通過指定方法計算的統計量。

p值 浮點數

合並的 p 值。

注意

如果此函數應用於具有離散統計量的測試,例如任何排名測試或contingency-table測試,它將產生係統錯誤的結果,例如Fisher 方法會係統性地高估 p 值 [1]。當離散分布變得近似連續時,對於大樣本量,這個問題變得不那麽嚴重。

這些方法之間的差異可以通過它們的統計數據以及它們在考慮顯著性時強調 p 值組合的哪些方麵來最好地說明 [2]。例如,強調大 p 值的方法對強假陰性和真陰性更敏感;相反,關注小 p 值的方法對正值敏感。

  • Fisher 方法(也稱為 Fisher 組合概率檢驗)[3] 的統計量為 ,它相當於(作為檢驗統計量)各個 p 值的乘積: 。在原假設下,此統計數據遵循 分布。此方法強調較小的 p 值。

  • Pearson 的方法使用 ,相當於 [2]。因此它強調大的 p 值。

  • Mudholkar 和 George 通過對統計數據進行平均,在費舍爾法和皮爾遜法之間進行折衷 [4]。他們的方法強調極端 p 值,均接近 1 和 0。

  • Stouffer 的方法 [5] 使用 Z-scores 和統計量: ,其中 是標準正態分布的 CDF。這種方法的優點是可以直接引入權重,當 p 值來自不同規模的研究時,這可以使 Stouffer 方法比 Fisher 方法更強大 [6] [7]。

  • Tippett 方法使用最小 p 值作為統計量。 (請注意,該最小值不是組合 p 值。)

Fisher 方法可以擴展為結合相關檢驗的 p 值 [8]。 Brown 方法和 Kost 方法等擴展目前尚未實現。

參考

[1]

Kincaid, W. M.,“基於離散分布的測試組合”。美國統計協會雜誌 57,第 1 期。 297(1962),10-19。

[2] (1,2)

Heard, N. 和 Rubin-Delanchey, P.“在組合 p 值的方法之間進行選擇。”生物計量學 105.1 (2018): 239-246。

[4]

喬治 (E. O.) 和 G. S. 穆德霍爾卡 (G. S. Mudholkar)。 “關於邏輯隨機變量的卷積。” Metrika 30.1 (1983):1-13。

[6]

Whitlock, M. C.“結合獨立測試的概率:加權Z-method優於費舍爾的方法。”進化生物學雜誌 18,沒有。 5(2005):1368-1373。

[7]

Zaykin,Dmitri V。“最佳加權 Z-test 是組合 meta-analysis 中概率的強大方法。”進化生物學雜誌 24,沒有。 8(2011):1836-1841。

例子

假設我們希望使用 Fisher 方法(默認)組合來自同一零假設的四個獨立檢驗的 p 值。

>>> from scipy.stats import combine_pvalues
>>> pvalues = [0.1, 0.05, 0.02, 0.3]
>>> combine_pvalues(pvalues)
SignificanceResult(statistic=20.828626352604235, pvalue=0.007616871850449092)

當各個 p 值具有不同的權重時,請考慮斯托弗方法。

>>> weights = [1, 2, 3, 4]
>>> res = combine_pvalues(pvalues, method='stouffer', weights=weights)
>>> res.pvalue
0.009578891494533616

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.stats.combine_pvalues。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。