Автор оригинала: Pankaj Kumar.
Модель ARIMA демонстрация в Python
В этой статье мы узнаем о хорошо известном прогнозировании прогнозирования времени – Arima Model.
Данные временного ряда отличаются в том смысле, что данные записываются с постоянным интервалом времени. Данные временного ряда имеют добавленную временную компонент к нему, и каждая точка данных в серии зависит от предыдущих точек данных.
Широко используемый статистический метод прогнозирования временного ряда – это модель ARIMA.
Предположим, нам нужно прогнозировать продажи яблок, и у нас есть предыдущие записи продаж на каждый день. Эта проблема может быть классифицирована как моделирование серии Time.
В этой статье мы собираемся реализовать модель ARIMA.
Что такое арима?
Арима стоит за Авторегрессивный интегрированный скользящий средний Отказ Он основан на описании автокорреляций в данных и является одним из популярных и мощных алгоритмов временных серий для анализа и прогнозирования данных временных рядов.
Давайте сломаемся, что означает Арима:
- Авторегрессивный (Ar): зависимые отношения между наблюдением и некоторым количеством отсталых наблюдений. Это означает, что прошедшие значения, используемые для прогнозирования следующего значения.
- Интегрирован (I): относится к разнознению операции, выполненной на серии, чтобы сделать его неподвижным.
- Скользящий средний (MA): Это означает, что количество прогнозных ошибок прогноза, используемых для прогнозирования будущих ценностей.
1. Параметры модели ARIMA.
ARIMA требует трех компонентов, P , D и Q , чтобы построить модель.
- P : Это относится к количеству авторегрессивных лагов и требуется для Авторегрессивное аспект модели.
- D :
D
связан с интегрирован часть модели. Это порядок различий, необходимый для создания серии стационарных. - Q : q Относится к количеству скользящих средних лагов. Это связано с скользящий средний часть модели.
2. Стационарная серия
Стационарная серия – это серия, где свойства не меняются со временем. Это означает, что статистические свойства, такие как среднее, дисперсия, и ковариация временных рядов, все постоянно со временем.
Мы не можем построить модель временной серии, если наша серия не стационарная. Модель ARIMA требует данных, чтобы быть стационарной серией.
Некоторые из популярных методов для серии стационарных являются Дополненный тест Dickey-Fuller , Разнозма , Отрицание и т. Д.
Демонстрация модели Arima в Python
Мы будем реализовать auto_arima
функция. Он автоматически находит оптимальные параметры для модели ARIMA.
Другими словами, функция автоматически определяет параметры P
, D
и Q
Из модели ARIMA, которая очень удобна, поскольку процессы для подготовки данных и настройки параметров в конечном итоге, в конечном итоге, по-прежнему трудоемким.
Мы будем использовать PMDARIMA
Модуль, который имеет функцию auto_arima. Так что давайте правильно
1. Импорт набора данных
Набор данных, который мы будем использовать для этой демонстрации, это Electrical_Prodction DataSet ( загружены из Kaggle ).
import pandas as pd import numpy as np import matplotlib.pyplot as plt series = pd.read_csv('Electric_Production.csv' , index_col = 0) #divide into train and validation set train = series[:int(0.7*(len(series)))] valid = series[int(0.7*(len(series))):] #Plotting the data plt.figure(figsize = (8,5)) ax = plt.gca() ax.xaxis.set_major_locator(plt.MaxNLocator(20)) plt.xticks(rotation = 45) plt.plot(series) plt.show()
2. Проверьте, является ли серия стационарной
Давайте выполним «дополненное тест Dickey-Fuller», чтобы проверить, являются ли данные стационарными или нет.
# Importing required modules from pmdarima.arima import ADFTest adf_test = ADFTest(alpha = 0.05) adf_test.should_diff(series)
Output: (0.01, False)
PMDARIMA.ARIMA
есть Adftest
класс для выполнения дополненного теста Dickey-Fuller.
Мы также можем использовать statsmodels.tsa.stattools
Модуль, который имеет Adfuller
класс для выполнения теста.
Выход из приведенного выше кода означает, что серия не стационарная, и нам нужно сначала сделать его стационарным сериалом для реализации ARIMA.
Вот когда AUTO ARIMA полезна, он автоматически определяет разные параметр «D», чтобы сделать серию стационарной.
3. Реализация модели ARIMA
#Importing the module import pmdarima as pmd arima_model = pmd.auto_arima(train, start_p=0,d = 1,start_q=0, test="adf", supress_warnings = True, trace=True) #Summary of the model arima_model.summary()
Существуют некоторые важные входные аргументы, которые мы передали на функцию. Важные параметры функции:
- Временные серии, на которых подходит модель ARIMA.
start_p
: Орден моделей Auto-регрессивной (Ar).start_q
: Порядок скользящей средней (MA) модели.D
: Орден первого различия. По умолчанию установлено значение none.Тест
Тип корневого теста устройства для использования для обнаружения стационарности.
4. Проверка производительности модели с использованием Maпе Maпе
Теперь проверка, насколько хороша наша модель использовала среднюю абсолютную процентную ошибку как метрика производительности.
#Predict the future values valid['predicted'] = arima_model.predict(n_periods = len(valid)) def MAPE(true, pred): true, pred = np.array(true), np.array(pred) return np.mean(np.abs((true - pred) / true)) * 100 MAPE(valid.IPG2211A2N, valid.predicted)
выход:
12.44044096590272
Значение Mape должно быть максимально ниже, это показатель, который наша модель делает меньше ошибок.
Заключение
В этой статье мы узнали модель ARIMA для прогнозирования временной серии и внедрили его в Python. Мы определили стационарное состояние для набора данных серии Time для модели, чтобы выполнить хорошо и реализовать дополнительный тест Dickey-Fuller, чтобы проверить стационарность.
Счастливое обучение!