28

所以,我一直在寻找一种在 Python 中获得调整后的 p 值(又名校正的 p 值、q 值、FDR)的方法,但我还没有真正找到任何东西。有R函数p.adjust,但如果可能的话,我想坚持使用 Python 编码。Python有类似的东西吗?

如果这是一个不好的问题,请提前道歉!我确实首先搜索了答案,但没有找到(Matlab 版本除外)......感谢任何帮助!

4

4 回答 4

7

根据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
于 2015-06-10T06:42:32.580 回答
4

您可以尝试rpy2允许您导入 R 函数的模块(顺便说一句,基本搜索返回How to implement R's p.adjust in Python)。

另一种可能性是看数学然后自己重​​做,因为它仍然相对容易。

显然有一个正在进行的实施scipyhttp ://statsmodels.sourceforge.net/ipdirective/_modules/scikits/statsmodels/sandbox/stats/multicomp.html 。也许它已经可以使用了。

于 2014-08-07T15:01:46.980 回答
0

您在问题 q-values 中提到,没有答案提供解决此问题的链接。我相信这个包(至少从文档中看起来是这样)在 python 中计算 q-values

https://puolival.github.io/multipy/

还有这个

https://github.com/nfusi/qvalue

于 2021-06-26T15:04:33.113 回答