Как сделать прогноз ARIMA для массива будущих временных отметок в Python? - PullRequest
0 голосов
/ 06 января 2020

Пакет statsmodels для реализации наиболее предпочтителен для ARIMA в python. Тем не менее, я не могу найти ответ на пару, если основные c вопросы:

  1. Каковы компоненты вывода 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().

Как заставить его работать для массива временных меток?

...