我很难理解在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)
答案 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
。