Эта статья была написана Алпарсланом Месри и Джемом ОЗЧЕЛИК.
В этом исследовании мы создадим модель ARIMA для прогнозирования будущих объемов продаж на рынке с использованием Python.
Давайте импортируем необходимые библиотеки для операций и процедур, которые мы будем выполнять в нашей работе;
После импорта наших библиотек выполняем импорт набора данных:
Когда мы посмотрим на df, мы увидим, что данные даты в столбце «Месяц» не очень регулярны. Нам нужно отредактировать эти данные с помощью манипулирования данными.
С помощью следующего цикла for будет организована сложная структура в столбце «Месяц».
Теперь наши данные о дате стали такими:
Мы изменили название столбца, показывающего продажи, на «Продажи», а затем присвоили индексу столбец «Месяц», содержащий значения даты.
И набор данных теперь имеет новый вид:
Мы создаем distplot, чтобы увидеть распределение продаж:
Как видно на графике выше, месячные объемы продаж имеют нормальное распределение. Хотя объемы продаж показывают кластеризацию в 200 единиц, мы можем сказать, что плотность продаж в 400 и 600 единиц также неоспорима.
Статистический тест
Мы можем выполнить статистическое тестирование, используя приведенный ниже код, чтобы убедиться, что данные стационарны. Стационарность во временном ряду означает, что дисперсия и среднее значение постоянны во времени.
Пока достаточно просто взглянуть на значение p.
Если P ‹0,05; Данные стационарные.
Если p› 0,05; Данные не являются стационарными.
Вывод:
Мы видим, что наши данные не являются стационарными. Чтобы сделать эти данные стационарными, нам нужно указать значение «d» модели ARIMA 1.
Модель АРИМА
При создании модели ARIMA задаются соответственно 3 параметра; р, д и к.
p: На сколько шагов вперед значения в момент времени x(t) будут учитываться в процессе оценки, q: На сколько шагов назад ошибка оценки в момент времени x(t) будет подвергнута скользящему среднему значению со значениями, d: степень разность взятия, чтобы сделать данные стационарными средствами.
В основном он использует то, что называется оценкой AIC, чтобы решить, насколько хороша конкретная модель прогнозирования с функцией auto_arima. Он только пытается минимизировать оценку AIC.
Вывод:
Функция предоставила параметры ARIMA (1,1,2) для получения наилучшего результата.
ARIMA (1,1,2) означает, что вы определяете некоторую переменную отклика (Y), комбинируя авторегрессионную модель 1-го порядка и модель скользящего среднего 2-го порядка.
Разделение набора данных на тестовый и обучающий.
Установка модели ARIMA:
Вывод:
Как видно из выходных значений, между прогнозируемыми значениями установленной модели ARIMA (которые на выходном изображении можно увидеть как «Предсказанный») и ожидаемыми значениями (обозначенными как « Ожидается» на выходном изображении). Теперь для оценки производительности построенной нами модели мы будем вычислять RMSE, то есть квадратный корень из среднеквадратичной ошибки, который используется в качестве показателя производительности в моделях линейной регрессии и описывает уровни отклонения предсказанные значения от идеального состояния.
СКО
Мы сравнили фактические значения с оценочными значениями под рукой. Сумма ошибки RMSE составила 90 986. Теперь посмотрим прогноз и фактические значения на графике. Фактические значения будут показаны синей линией, а оценочные значения — красной линией.
Вывод:
Это видно на графике с красной линией, который мы можем описать как результат нашей модели для будущих периодов, и графике с синей линией, который действительно произошел, на выходном изображении. Ситуация, на которую мы можем обратить внимание здесь, можно рассматривать как то, что наша модель прогнозирования не полностью перекрывается с реальными значениями, чтобы делать как можно более последовательные прогнозы, не будучи слишком легкомысленными. Однако важным моментом здесь является то, что, хотя линии не перекрываются в точности, восходящий и нисходящий тренд прогнозируемых значений и реальных значений, зависящие от времени, демонстрируют последовательную закономерность. Это можно считать хорошим результатом с точки зрения предотвращения переобучения.
Мы подошли к концу нашей работы. Увидимся в нашей следующей статье :)
Для набора данных, использованного в исследовании: