Вопрос или проблема
Я работаю над прогнозированием финансового индекса, попробовал разложить временной ряд, используя:
from matplotlib import pyplot
from statsmodels.tsa.seasonal import seasonal_decompose
result = seasonal_decompose(dataset, model="multiplicative", freq=12)
result.plot()
pyplot.show()
И я получил следующий результат:
Результаты показывают, что временной ряд не является стационарным и у него есть единичный корень (я использовал тесты ADF и KPSS), и что среднее и стандартное отклонение постоянны во времени!
Я размышляю, стоит ли использовать ARIMA или SARIMA, так как они адаптированы для линейного тренда (мой тренд не линейный, как показано на изображении) или перейти к использованию LSTM, NN … ?
Или даже ARIMA или SARIMA не адаптированы для этого типа временного ряда?
Длинная краткосрочная память (LSTM) — это один из вариантов, учитывая, что у вас есть около 9 лет исторических данных.
Вы можете использовать подход сравнения моделей, где вы делите данные и смотрите, какой алгоритм лучше предсказывает отложенные данные.
Ответ или решение
Теория:
При прогнозировании временных рядов, особенно в области финансов, выбор правильной модели является ключевым фактором для обеспечения точности прогнозов. Модели ARIMA (АвтоРегрессивная Интегрированная Скользящая Средняя) и SARIMA (Сезонная ARIMA) являются стандартными инструментами для временных рядов с линейным трендом и сезонностью. Однако, если временной ряд демонстрирует нелинейный тренд, применение этих моделей может быть неэффективным. Одна из основных проблем заключается в большом остаточном шуме, который может указывать на недоподходящую модель. В таких случаях актуальны более сложные алгоритмы, такие как нейронные сети, включая модели LSTM (Long Short Term Memory), которые способны улавливать нелинейные зависимости.
Пример:
В вашем случае, результаты декомпозиции временного ряда показывают наличие нелинейного тренда. Вы используете тесты ADF и KPSS, чтобы убедиться, что временной ряд не является стационарным и имеет единичный корень. Это указывает на необходимость дифференцирования данных в моделях ARIMA/SARIMA, если вы решите их использовать. Однако, поскольку данные демонстрируют значительную сложность и остаточную ошибку, это может быть сигналом о необходимости использования моделей, способных обработать более сложные зависимости, таких как LSTM.
Применение:
Вы рассматриваете возможность использования моделей LSTM на данных за 9 лет, что является разумным подходом. Начните с разделения данных на обучающую и тестовую выборки для сравнения эффективности различных моделей. Используйте ARIMA/SARIMA в качестве базовых моделей, чтобы оценить качество линейного подхода. Параллельно, настройте модель LSTM, оптимизируя такие гиперпараметры, как количество слоев, нейронов в каждом слое и частоту обучения. Затем, сравните результаты по ключевым метрикам, таким как RMSE (Root Mean Square Error) или MAPE (Mean Absolute Percentage Error), чтобы определить наилучшую модель для ваших данных. Это позволит объективно оценить, насколько сложные модели, такие как LSTM, превосходят традиционные линейные подходы для временных рядов с нелинейным трендом.