eri*_*fas 21 python statistics p-value q-value
所以,我花了一些时间寻找一种方法来获得Python中调整后的p值(也就是更正的p值,q值,FDR),但我还没有找到任何东西.有R功能p.adjust,但我想坚持Python编码,如果可能的话.Python有什么类似的东西吗?
如果这是一个不好的问题,请提前抱歉!我首先搜索了答案,但没有找到(除了Matlab版本)...感谢任何帮助!
Jos*_*sef 20
它在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
Run Code Online (Sandbox Code Playgroud)
我们还在 SciPy 中添加了 FDR(将在下一个版本 SciPy 1.11 中)。
https://scipy.github.io/devdocs/reference/ generated/scipy.stats.false_discovery_control.html
from scipy import stats
ps = [0.0001, 0.0004, 0.0019, 0.0095, 0.0201, 0.0278, 0.0298, 0.0344,
0.0459, 0.3240, 0.4262, 0.5719, 0.6528, 0.7590, 1.000]
stats.false_discovery_control(ps)
# array([0.0015 , 0.003 , 0.0095 , 0.035625 , 0.0603 ,
# 0.06385714, 0.06385714, 0.0645 , 0.0765 , 0.486 ,
# 0.58118182, 0.714875 , 0.75323077, 0.81321429, 1. ])
Run Code Online (Sandbox Code Playgroud)