gpt4 book ai didi

python - 使用 scipy 组合 p 值

转载 作者:行者123 更新时间:2023-12-02 02:50:28 25 4
gpt4 key购买 nike

我必须合并 p 值并得到一个 p 值。我正在使用 scipy.stats.combine_pvalues 函数,但它给出的组合 p 值非常小,这正常吗?

例如:

>>> import scipy
>>> p_values_list=[8.017444955844044e-06, 0.1067379119652372, 5.306374345615846e-05, 0.7234201655194492, 0.13050605094545614, 0.0066989543716175, 0.9541246420333787]
>>> test_statistic, combined_p_value = scipy.stats.combine_pvalues(p_values_list, method='fisher',weights=None)
>>> combined_p_value
4.331727536209026e-08

如您所见,combined_p_value 小于 p_values_list 中任何给定的 p 值?怎么可能?

提前致谢, bool 卡克

最佳答案

这是正确的,因为您正在测试所有 p 值都来自随机均匀分布。另一种假设是至少其中一个是正确的。在你的情况下这是很有可能的。

我们可以通过从随机均匀分布中抽取 1000 次 p 值的长度来模拟这一点:

import numpy as np
from scipy.stats import combine_pvalues
from matplotlib import pyplot as plt

random_p = np.random.uniform(0,1,(1000,len(p_values_list)))
res = np.array([combine_pvalues(i,method='fisher',weights=None) for i in random_p])
plt.hist(fisher_p)

enter image description here

根据您的结果,卡方为 62.456,这确实很大,与上面的模拟卡方相差甚远。

需要注意的一件事是,您在这里所做的组合没有考虑方向性,如果在您的测试中可能的话,您可能需要考虑使用斯托弗的 Z 和权重。另一种明智的检查方法是像上面一样运行模拟,生成原假设下的 p 值列表,并查看它们与您观察到的结果有何不同。

Interesting paper but maybe a bit on the statistics side

关于python - 使用 scipy 组合 p 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62077181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com