当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。