如何忽略statsmodels最大似然收敛警告?

时间:2015-12-23 22:20:11

标签: python-2.7 statsmodels

我试图通过使用循环找到最佳参数顺序:

d = 1    
for p in range(3):
    for q in range(3):
        try:
           order = (p, 0, q)
           params = (p, d, q)
           arima_mod = ARIMA(ts.dropna(), order).fit(method = 'css-mle', disp = 0)
                arima_mod_aics[params] = arima_mod.aic
            except:
                pass

我已收到消息:

/usr/local/lib/python2.7/dist-packages/statsmodels-0.6.1-py2.7-linux-x86_64.egg/statsmodels/base/model.py:466: ConvergenceWarning: Maximum Likelihood optimization failed to converge. Check mle_retvals
"Check mle_retvals", ConvergenceWarning)

我想忽略这个警告,我该怎么办?有什么建议吗?

提前致谢。

3 个答案:

答案 0 :(得分:7)

请参阅statsmodels sourceforge中的此示例,尤其是In [17]:

import warnings

with warnings.catch_warnings():
    warnings.filterwarnings("ignore")
    # Line that is not converging
    likev = mdf.profile_re(0, dist_low=0.1, dist_high=0.1)

答案 1 :(得分:4)

要专门忽略ConvergenceWarnings,

import warnings
from statsmodels.tools.sm_exceptions import ConvergenceWarning
warnings.simplefilter('ignore', ConvergenceWarning)

答案 2 :(得分:0)

一个干净的方法是使用包含的 warn_convergence。您可以像这样将其传递给 fit 方法:

arima.fit(method_kwargs={"warn_convergence": False})