Рубрики
Без рубрики

Модель ARIMA демонстрация в Python

В этой статье мы узнаем о хорошо известном прогнозировании прогнозирования времени – Arima Model.

Автор оригинала: 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()
Сводная статистика установленного модели

Существуют некоторые важные входные аргументы, которые мы передали на функцию. Важные параметры функции:

  1. Временные серии, на которых подходит модель ARIMA.
  2. start_p : Орден моделей Auto-регрессивной (Ar).
  3. start_q : Порядок скользящей средней (MA) модели.
  4. D : Орден первого различия. По умолчанию установлено значение none.
  5. Тест Тип корневого теста устройства для использования для обнаружения стационарности.

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, чтобы проверить стационарность.

Счастливое обучение!