[我正在尝试使用SARIMAX
将34个元素的每月时间序列扩展到35个元素,并假设使用12个月的季节性成分。
但是,predict
方法失败,并且回溯:
<ipython-input-40-151295bf5e3e> in approach_4_stationarity(data_file_name)
27 sarima = SARIMAX( total_items_array, order = ( 1, 0, 0 ), seasonal_order = (0,0,0,12) )
28 sarima.fit()
---> 29 next_month_item_cnt = sarima.predict( (1, 0, 0 ), start = 34, end = 34 )
30 print( "next_month_item_cnt", next_month_item_cnt, file = sys.stderr )
31 total_items_array = total_items_array.append( next_month_item_cnt )
/opt/conda/lib/python3.6/site-packages/statsmodels/base/model.py in predict(self, params, exog, *args, **kwargs)
205 This is a placeholder intended to be overwritten by individual models.
206 """
--> 207 raise NotImplementedError
208
209
我该如何解决?
由于错误表明该方法尚未实现,我个人从未见过这样的事情。请务必查看official website上的文档或“常见问题”部分。
有解决方案。您可以使用auto_arima
中的pmdarima
功能。它可以完全自动识别SARIMA模型的参数,但是(根据我的经验)这很耗时,而且效率达不到100%。我建议您查看其所有参数,然后可以像这样使用它:
from pmdarima.arima import auto_arima
step_wise=auto_arima(train_y, exogenous= train_X, start_p=1, start_q=1,
max_p=7, max_q=7, d=1, max_d=7, trace=True, error_action=’ignore’,
suppress_warnings=True, stepwise=True)
fit
方法不影响模型对象,它返回一个新的结果对象。您可能想要以下内容:
model = SARIMAX(total_items_array, order=(1, 0, 0), seasonal_order=(0,0,0,12))
results = model.fit()
next_month_item_cnt = results.forecast(steps=1)