2015-10-25 31 views
3

我正在努力瞭解如何在statsmodels內使用ARIMA使用Statsmodels創建時間序列時的TypeError

我試圖將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) 

回答

2

以下可能是一個解決辦法。您應該包含足夠的代碼,以便可以複製並運行以重現問題。

在致brute,請將args=(opening_price)更改爲args=(opening_price,)。你不顯示什麼opening_price是,但我相信它是一個序列,當你寫args=(opening_price)(這相當於args=opening_price),傳遞給objfuncopening_price元素被擴展到獨立參數。正確的形式args=(opening_price,)確保args是包含單個元素的元組,opening_price