Что делает объекты ARIMA и XTS такими полезными для прогнозирования?

Объекты XTS

Если вы не используете объекты XTS для прогнозирования в R, вы, вероятно, упускаете возможность! Основные преимущества, которые мы рассмотрим, заключаются в том, что с этими объектами намного проще работать, когда дело доходит до моделирования, прогнозирования и визуализации.

Перейдем к деталям

Объекты XTS состоят из двух компонентов. Первый - это индекс даты, а второй - традиционная матрица данных.

Если вы хотите спрогнозировать отток, продажи, спрос или что-то еще, давайте приступим к делу!

Первое, что вам нужно сделать, это создать индекс даты. Мы делаем это с помощью функции seq. Очень просто эта функция берет дату начала, количество или длину записей, а затем временной интервал или параметр by. Для нас набор данных начинается со следующего.

days <- seq(as.Date("2014-01-01"), length = 668, by = "day")

Теперь, когда у нас есть индекс, мы можем использовать его для создания нашего объекта XTS. Для этого воспользуемся функцией xts.

Не забудьте install.packages('xts'), а затем загрузить библиотеку! library(xts)

Как только мы это сделаем, мы сделаем вызов xts и передадим нашу матрицу данных, а затем для индекса даты мы передадим индекс в параметр order.by.

sales_xts <- xts(sales, order.by = days)

Давайте сделаем прогноз с Аримой

Arima - это авторегрессивная интегрированная скользящая средняя. Очень популярный метод прогнозирования временных рядов. Мы могли бы часами говорить только об ARIMA, но в этом посте мы дадим подробное объяснение, а затем сразу перейдем к приложению.

AR: авторегрессивный

Здесь мы прогнозируем результаты, используя запаздывания или значения за предыдущие месяцы. Может случиться так, что результаты данного месяца имеют некоторую зависимость от предыдущих значений.

I: интегрированный

Когда дело доходит до прогнозирования временных рядов, подразумевается, что наша модель в некоторой степени зависит от времени. Это кажется довольно очевидным, поскольку иначе мы, вероятно, не построили бы наше модельное время;). С учетом этого предположения нам необходимо понять, где находится время в спектре зависимости по отношению к нашей модели. Да, наша модель зависит от времени, но насколько? В основе этого лежит идея стационарности; это означает, что влияние времени уменьшается с течением времени.

Если заглянуть глубже, историческое среднее значение набора данных, как правило, является лучшим предсказателем будущих результатов ... но, безусловно, бывают моменты, когда это не так ... можете ли вы вспомнить какие-либо ситуации, когда историческое среднее не было бы лучшим предсказателем?

  • Как насчет прогнозов продаж на декабрь? Сезонные тенденции
  • Как насчет продаж для быстрорастущей Saas-компании? Последовательные восходящие тенденции

Здесь мы познакомимся с процессом Различия! Дифференцирование используется для устранения влияния тенденций и сезонности.

MA: скользящая средняя.

модель скользящего среднего существует, чтобы иметь дело с ошибкой вашей модели.

Давайте приступим к моделированию!

Разделение на обучение / проверку

Перво-наперво, давайте разберем наши данные на обучающий набор данных, а затем на то, что мы будем называть нашим набором данных проверки.

Что отличает это от других проверочных тестов, таких как перекрестное проверочное тестирование, так это то, что здесь мы разбиваем его по времени, разбивая поезд до заданного момента времени и завершая проверку всего, что происходит после этого.

train <- sales_xts[index(sales_xts) <= "2015-07-01"] 
validation <- sales_xts[index(sales_xts) > "2015-07-01"]

Время построить модель

Функция auto.arima объединяет идеи, о которых мы только что говорили, чтобы приблизиться к лучшей arima модели. Я подробно расскажу о практическом подходе в другом посте, а ниже я расскажу о создании auto.arima модели и о том, как ее использовать для прогнозирования.

model <- auto.arima(train)

А теперь давайте составим прогноз. Как и раньше, мы создадим индекс даты, а затем создадим объект xts с матрицей данных.

Отсюда вы построите данные проверки, а затем поместите прогноз поверх графика.

forecast <- forecast(model, h = 121) 
forecast_dates <- seq(as.Date("2015-09-01"), length = 121, by = "day")
forecast_xts <- xts(forecast$mean, order.by = forecast_dates)
plot(validation, main = 'Forecast Comparison')
lines(forecast_xts, col = "blue")

Вывод

Надеюсь, это было полезным введением в прогнозирование ARIMA. Обязательно дайте мне знать, что вам полезно, а также любые дополнительные сведения, о которых вы хотели бы узнать.

Если вы нашли это полезным, обязательно ознакомьтесь с некоторыми другими моими сообщениями на datasciencelessons.com. Поздравления с наукой о данных!