所以,我一直在寻找一种在 Python 中获得调整后的 p 值(又名校正的 p 值、q 值、FDR)的方法,但我还没有真正找到任何东西。有R
函数p.adjust
,但如果可能的话,我想坚持使用 Python 编码。Python有类似的东西吗?
如果这是一个不好的问题,请提前道歉!我确实首先搜索了答案,但没有找到(Matlab 版本除外)......感谢任何帮助!
所以,我一直在寻找一种在 Python 中获得调整后的 p 值(又名校正的 p 值、q 值、FDR)的方法,但我还没有真正找到任何东西。有R
函数p.adjust
,但如果可能的话,我想坚持使用 Python 编码。Python有类似的东西吗?
如果这是一个不好的问题,请提前道歉!我确实首先搜索了答案,但没有找到(Matlab 版本除外)......感谢任何帮助!
它在 statsmodels 中可用。
以及一些解释、示例和蒙特卡洛 http://jpktd.blogspot.com/2013/04/multiple-testing-p-value-corrections-in.html
根据biostathandbook,BH 很容易计算。
def fdr(p_vals):
from scipy.stats import rankdata
ranked_p_values = rankdata(p_vals)
fdr = p_vals * len(p_vals) / ranked_p_values
fdr[fdr > 1] = 1
return fdr
您可以尝试rpy2
允许您导入 R 函数的模块(顺便说一句,基本搜索返回How to implement R's p.adjust in Python)。
另一种可能性是看数学然后自己重做,因为它仍然相对容易。
显然有一个正在进行的实施scipy
:http ://statsmodels.sourceforge.net/ipdirective/_modules/scikits/statsmodels/sandbox/stats/multicomp.html 。也许它已经可以使用了。
您在问题 q-values 中提到,没有答案提供解决此问题的链接。我相信这个包(至少从文档中看起来是这样)在 python 中计算 q-values
https://puolival.github.io/multipy/
还有这个