Вопрос или проблема
Я пытаюсь прогнозировать временные ряды с помощью ARIMA. Как видно из графика, прогноз на один шаг опережает ожидаемые значения. Я читал в других темах, что такое поведение ожидаемо, но как? Как я могу синхронизировать?
Код, который я использовал:
history = [x for x in train]
predictions = list()
for t in range(len(test)):
model = ARIMA(history, order=(2, 2, 1))
model_fit = model.fit(disp=0)
output = model_fit.forecast(alpha=0.05)
yhat = output[0]
predictions.append(yhat)
obs = test[t]
history.append(obs)
print('предсказано=%f, ожидается=%f' % (yhat, obs))
rmse = sqrt(mean_squared_error(test, predictions))
print('Тест RMSE: %.3f' % rmse)
# построить
plt.plot(test, цвет="синий")
plt.plot(predictions, цвет="красный")
plt.show()
Похоже, вы используете ARIMA из statsmodel на Python ARIMA.
Есть два варианта:
- Измените аргумент
order=
. Гиперпараметрыp
,d
илиq
могут вызывать такой результат. - Вручную сдвиньте прогнозы
predictions = predictions[1:]
.
Ваша предсказанная кривая (красная) СЛЕДУЕТ за вашей входной (синей) кривой. В момент времени t, если синяя кривая идет вниз, то в момент времени t+1 красная пойдет вниз. Вы можете увидеть это поведение дважды очень четко на изображении, один раз около t = 10 и второй раз около t = 20. Кроме того, величина изменений в предсказанной кривой не так велика/мала, как у входной кривой.
Ответ или решение
Прогнозирование временных рядов с использованием ARIMA на один шаг вперед
Прогнозирование временных рядов является важной задачей в аналитике и бизнес-принятии решений. Использование модели ARIMA (АвтоРегрессионная Интегрированная Скользящая Средняя) для создания предсказаний является стандартной практикой. Однако многие пользователи сталкиваются с проблемой, когда прогноз оказывается на один шаг вперед по отношению к ожидаемым значениям. В данном ответе мы рассмотрим, почему это происходит и какие шаги можно предпринять для синхронизации прогнозов с фактическими значениями.
Причины расхождения прогнозов
-
Природа алгоритма ARIMA: Модели ARIMA основываются на использовании истории временного ряда для прогнозирования будущих значений. Прогноз, полученный с помощью ARIMA, действительно представляет собой предсказание для следующего шага (например, на t+1) на основе данных, доступных на текущий момент (t). Это объясняет, почему предсказания могут следовать за фактическими значениями, отражая изменения в них с опозданием.
-
Настройка параметров модели: Параметры (p, d, q) в функции ARIMA влияют на результаты. Неверно подобранные значения могут привести к тому, что модель будет реагировать на изменения временного ряда с запаздыванием.
-
Обработка данных: Важно убедиться, что значения тестовых данных корректно интегрируются в модель. Каждое новое значение из тестового набора добавляется к истории, что может искажать предсказания, если изменение во времени происходит слишком резко.
Подходы для решения проблемы
1. Изменение параметров модели
Учтите, что параметры модели ARIMA (p, d, q) могут быть изменены для оптимизации результатов. Экспериментирование с различными значениями и использование методов, таких как кросс-валидация, могут помочь определить наилучшие параметры для вашей модели.
2. Лагирование предсказаний
Вы можете вручную скорректировать прогнозы, добавив шаг с запаздыванием к результирующему списку предсказаний:
predictions = predictions[1:] # Удалите первый элемент, чтобы синхронизировать с фактическими значениями.
Данный метод позволяет сместить прогнозы так, чтобы они соответствовали ожидаемым значениям тестового набора.
3. Визуализация результатов
Ваша визуализация, как указано в фото, показывает, что красная линия (прогнозы) следует за синей линией (фактические значения). Это нормальное поведение, особенно если модель ARIMA не была должным образом настроена. Используйте графики, чтобы четко видеть, где и как модели ошибаются, и делать необходимые корректировки.
Заключение
Использование ARIMA для прогнозирования временных рядов может быть очень эффективным, но важно учитывать разобранные нюансы. Оптимизация параметров модели, корректировка предсказаний и наглядная интерпретация результатов могут значительно улучшить точность ваших прогнозов.ткрывая внимательных к детали. Настоятельно рекомендуем проводить тестирование и настройку модели, чтобы гарантировать, что она наилучшим образом отражает ваши данные и бизнес-цели.