Эта статья была написана Алпарсланом Месри и Джемом ОЗЧЕЛИК.

В этом исследовании мы создадим модель 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. Теперь посмотрим прогноз и фактические значения на графике. Фактические значения будут показаны синей линией, а оценочные значения — красной линией.

Вывод:

Это видно на графике с красной линией, который мы можем описать как результат нашей модели для будущих периодов, и графике с синей линией, который действительно произошел, на выходном изображении. Ситуация, на которую мы можем обратить внимание здесь, можно рассматривать как то, что наша модель прогнозирования не полностью перекрывается с реальными значениями, чтобы делать как можно более последовательные прогнозы, не будучи слишком легкомысленными. Однако важным моментом здесь является то, что, хотя линии не перекрываются в точности, восходящий и нисходящий тренд прогнозируемых значений и реальных значений, зависящие от времени, демонстрируют последовательную закономерность. Это можно считать хорошим результатом с точки зрения предотвращения переобучения.

Мы подошли к концу нашей работы. Увидимся в нашей следующей статье :)

Для набора данных, использованного в исследовании:

https://www.kaggle.com/dromosys/shampoo-sales/data