AttributeError: module 'statsmodels.sandbox' has no attribute 'stats'

AttributeError: module 'statsmodels.sandbox' has no attribute 'stats'

Statsmodels 似乎是 python(除 rpy2 之外)唯一提供 FDR-based BH adjustment for p-values 的库,但它似乎不再包含在内:

statsmodels.sandbox.stats.multicomp.fdrcorrection0()

AttributeError: module 'statsmodels.sandbox' has no attribute 'stats'

这个模块是从 0.6.1 中删除的吗? Besides using rpy2,还有其他广泛使用的 FDR p 值调整实现吗?

它在 0.8.0 版本中仍然存在:

import statsmodels
print(statsmodels.__version__)  
# 0.8.0rc1

from statsmodels.sandbox.stats.multicomp import fdrcorrection0
print(fdrcorrection0)
# <function fdrcorrection at 0x0E5A3E88>

您可能没有导入子模块 statsmultipcomp

相关代码已移出沙箱,现在位于 statsmodels.stats.multitest 沙盒函数只是非沙盒函数的别名。在线文档目前有点过时。

直接导入

>>> from statsmodels.stats.multitest import fdrcorrection
>>> fdrcorrection
<function fdrcorrection at 0x0000000008554B70>

通过 api

使用它
>>> import statsmodels.api as sm
>>> sm.stats.fdrcorrection
<function fdrcorrection at 0x0000000008554B70>

这是目前仍包含别名的旧位置

>>> from statsmodels.sandbox.stats.multicomp import fdrcorrection0
>>> fdrcorrection0
<function fdrcorrection at 0x0000000008554B70>

已编辑 statsmodels.stats.multitest 中的函数列表:

>>> import statsmodels.stats.multitest as multi
>>> dir(multi) # output edited
['NullDistribution', 'fdrcorrection', 'fdrcorrection_twostage', 'local_fdr', 'multipletests']