Пакет statsmodels для реализации наиболее предпочтителен для ARIMA в python. Тем не менее, я не могу найти ответ на пару, если основные c вопросы:
- Каковы компоненты вывода
arima.model.ARIMAResults.forecast()
?
A fit()
на модели ARIMA, statsmodels.tsa.arima.model.ARIMA.fit
, возвращает объект ARIMAResults
. Функция forecast()
этого объекта возвращает количество предсказаний в соответствии с числом steps
, указанным в качестве аргумента.
Выходные данные в соответствии с его документами являются «Массив вне выборочных прогнозов. Массив (steps x k_endog)». Я уверен, что endog означает входной массив, используемый в качестве истории для обучения, а steps - указанный целочисленный параметр. Я не уверен, что означает k_endog.
Как сделать прогноз ARIMA для заданного массива временных меток?
Функция forecast()
прогнозирует до заданного набора steps
, но я не могу его использовать для прогнозирования заданного массива временных меток.
Следующий код является адаптацией из этого источника .
from pandas import read_csv
from pandas import datetime
from statsmodels.tsa.arima_model import ARIMA
def parser(x):
return datetime.strptime('190'+x, '%Y-%m')
series = read_csv('data/shampoo.csv', header=0, parse_dates=[0], index_col=0, squeeze=True, date_parser=parser)
size = int(series.shape[0] * 0.66)
train, test = series[0:size], series[size:]
model = ARIMA(train, order=(5,1,0))
model_fit = model.fit()
output = model_fit.forecast(test.index)
Код выдает ошибку типа в последней строке.
TypeError Traceback (most recent call last)
<ipython-input-42-a64159639ac2> in <module>
14 model = ARIMA(train, order=(5,1,0))
15 model_fit = model.fit()
---> 16 output = model_fit.forecast(test.index)
...
...
TypeError: cannot perform __rmul__ with this index type: DatetimeIndex
Однако код работает, если указать количество шагов в forecast()
.
Как заставить его работать для массива временных меток?