使用Statsmodels创建时间序列时的TypeError

时间:2015-10-25 03:56:37

标签: python scipy

我很难理解在ARIMA中如何使用statsmodels

我正在尝试将ARIMA模型与我拥有的一组数据相匹配,并使用与this question的答案中相同的想法。

但是,我不知道我的endog值是什么,它们是解释变量。

我的代码如下,我收到错误:

TypeError: objfunc() takes exactly 2 arguments (20 given)

在该行:

brute(objfunc, grid, args=(opening_price), finish=None)

我只是将这个时间序列中的20个数据点传递给它,并且因为这不合适而感到困惑。

def objfunc(order, endog):
    fit = ARIMA(endog, order).fit()
    return fit.aic()

from scipy.optimize import brute
grid = (slice(1, 3, 1), slice(1, 3, 1), slice(1, 3, 1))
brute(objfunc, grid, args=(opening_price), finish=None)

1 个答案:

答案 0 :(得分:2)

以下可能是一个解决方案。您应该真正包含足够的代码,以便可以复制并运行它来重现问题。

在致电brute时,将args=(opening_price)更改为args=(opening_price,)。您没有显示opening_price是什么,但我认为它是一个序列,当您编写args=(opening_price)(相当于args=opening_price)时,opening_price的元素传递给objfunc时会扩展为单独的参数。正确的表单args=(opening_price,)可确保args是包含单个元素的元组opening_price