【问题标题】:Calculating adjusted p-values in Python在 Python 中计算调整后的 p 值
【发布时间】:2014-09-30 20:29:13
【问题描述】:

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

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

【问题讨论】:

    标签: python statistics p-value q-value


    【解决方案1】:

    【讨论】:

    • 在 statsmodels 0.80 中,使用import statsmodels.stats.multitest as multi; multi.multipletests(...)
    【解决方案2】:

    根据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
    

    【讨论】:

    • 使用 fdr_bh 方法会导致调整后的 p 值数组与 statsmodels.stats.multitest.multipletests 不同
    • 只有最低限度。我也可以给出他们的版本,并在周一解释原因
    • 这将非常有帮助!谢谢
    • 我今天正在交付我的博士学位,所以我很忙,但这个答案完成了最后一步(IMO 不必要的步骤):stackoverflow.com/a/33532498/992687
    • 没问题!非常感谢您的链接,祝您获得博士学位!
    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

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

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

      还有这个

      https://github.com/nfusi/qvalue

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-06-23
        • 2017-11-13
        • 2014-04-13
        • 2013-05-04
        • 2017-11-30
        • 1970-01-01
        • 2021-05-27
        相关资源
        最近更新 更多