gpt4 book ai didi

python - 使用 numpy/h5py 进行内存高效的 Benjamini-Hochberg FDR 校正

转载 作者:行者123 更新时间:2023-12-01 17:32:27 32 4
gpt4 key购买 nike

我正在尝试使用 Benjamini & Hochberg 的方法计算一组经过 FDR 校正的 p 值。但是,我尝试运行此程序的向量包含超过 100 亿个值。

考虑到正常的数据量 method from statsmodel's多重计算模块很快就会耗尽内存。查看该函数的源代码,它似乎在内存中创建了多个长度为 100 亿的向量,这显然是行不通的,即使在具有 100GB RAM 的机器上也是如此。

有没有办法做到这一点,理想情况下不必将整个向量保留在内存中?我特别想知道是否可以重新实现 BH,使其能够使用 h5py 数据结构在磁盘上运行。

或者还有其他建议吗?

最佳答案

如果其他人偶然发现这个:

我解决这个问题的方法是首先提取所有有机会通过 FDR 校正阈值的 p 值(我使用 1e-5)。内存消耗不是问题,因为我可以迭代磁盘上的 p 值列表。

这给了我一组大约 400k 的最低 p 值。然后,我手动将 BH 过程应用于这些 p 值,但将原始测试数量插入到公式中。由于 BH 是一个升压过程,因此(据我所知)这相当于将 BH 应用于整个向量,而不需要我对 100 亿个值进行排序。

关于python - 使用 numpy/h5py 进行内存高效的 Benjamini-Hochberg FDR 校正,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30764325/

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