我正在努力了解如何在 statsmodels
中使用 ARIMA
。
我正在尝试将 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)
最佳答案
以下可能是一个解决方案。您确实应该包含足够的代码,以便可以复制和运行以重现问题。
在 brute
的调用中,将 args=(opening_price)
更改为 args=(opening_price,)
。你没有显示 opening_price
是什么,但我假设它是一个序列,当你写 args=(opening_price)
(相当于 args= opening_price
),当传递给 objfunc
时,opening_price
的元素被扩展为单独的 参数。正确的形式 args=(opening_price,)
确保 args
是一个包含单个元素 opening_price
的元组。
关于python - 使用 Statsmodels 创建时间序列时出现 TypeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33326035/