Авторегрессия

Авторегрессия (AR, autoregression)

Авторегрессия

Обновление статьи от 04.07.2019г.

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

О причинах отказа от сравнения с использованием ошибок прогнозирования, читайте в статье Почему мы не считаем MAPE, RMSE и другие математические ошибки при прогнозировании спроса Рекомендуемый способ сравнения – имитационное моделирование.

Метод Авторегрессии (AR, autoregression) относится к алгоритмам прогнозирования 1 поколения (либо 2-го поколения при наличии страхового запаса по модельному распределению спроса).

Он подходит только для прогнозирования товаров с гладким регулярным спросом, который характерен приблизительно 6% ассортимента типового продуктового супермаркета и не характерен практически ни для каких товаров других отраслей.

Поэтому мы рекомендуем прогнозировать товарные запасы, а не спрос.

Подробнее о поколениях алгоритмов прогнозирования в видео «Эволюция алгоритмов прогнозирования спроса»

Также рекомендуем прочитать статью «Почему нужно прогнозировать товарные запасы, а не спрос?»

Результаты сравнения обобщены на графике ниже, по оси Х – товары, по оси Y – на сколько процентов Forecast NOW! оказывается лучше, чем алгоритм авторегрессии. Как можно видеть, почти всегда, алгоритм Forecast NOW! прогнозирует точнее на 10-20%. Подробнее об алгоритме и сравнении читайте ниже.

Общее описание модели авторегрессии

 Прогнозирование с использованием модели авторегрессии опирается на предыдущие значения продаж. Слово авторегрессия означает зависимость последующего значения продажи от предыдущих продаж.

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

Сколько дней (периодов в общем случае) таких продаж из прошлого мы будем брать, чтобы пытаться спрогнозировать будущие продажи называется порядком модели авторегрессии p.

Например, хотим на вход давать продажи за предыдущие три дня, а прогнозировать, сколько будет продано в следующий день. Тогда, порядок модели p = 3. Кратко это часто записывается как AR(3). Формула будет иметь вид 

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

Не вдаваясь в детали,   – это белый шум, случайная компонента. Это тоже последовательность чисел, также как и продажи. И для прогнозирования на 10ый день, в формулу подставляется значение вот этого ряда, белого шума в 10-ый «день» (период).

Вот как выглядит на картинке белый шум   (Рисунок 1)

Рисунок 1а. Белый шум в авторегрессии

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

На плечи пользователя ложится ответственность за выбор порядка модели авторегрессии. Сколько и какие дни включать в модель.

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

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

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

Давайте посмотрим, как выглядит в общем виде модель авторегрессии.

 Пусть наши продажи это Y. Тогда продажи в первый день это , продажи во второй день  и так далее. Пусть мы хотим узнать прогноз на день t. На языке формул это выглядит следующим образом 

Теперь давайте посмотрим, как данный метод работает в реальных условиях.  Весь процесс начинается с «подгонки» выбранной модели, а именно ее порядка, к исходным данным. Казалось бы, чем точнее мы подгоним модель к исходным данным, тем лучше должен быть прогноз. На самом деле, это не так.

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

И спрогнозирует не спрос, а проблемы со складом и резкие выбросы. 

Как же определить ту грань, когда стоит прекратить увеличивать порядок авторегрессии и включать все больше дней в модель прогнозирования? Для этого существует множество разных методик. Например, вводится штраф за сложность модели.

Но тут тоже таится трудность, какой назначить штраф? Что лучше авторегрессия с двумя параметрами и точностью 75% или авторегрессия с тремя параметрами и точностью 92%.

Различных видов штрафа тоже очень много, они активно исследуются, но это уже другая история.

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

Модели авторегресии

  На рисунке 1а и всех последующих реальные данные о продажах представлены, синим цветом. По оси X откладывается номер периода (в данном случае день), а по оси Y–объем продажи.  Рисунок 1б.

Авторегрессия, порядок модели  p = 1 

Как можно видеть из рисунка 1б и 2 низкий порядок авторегрессии обеспечивает приближение только к самым незначительным пикам.

Очевидно, будущие продажи определяются не только тем, что было продано вчера и позавчера.

Рисунок 2. Авторегрессия, порядок модели  p = 2

Давайте увеличим порядок авторегрессии до восьми в надежде учесть недельную сезонность продаж. Обратите внимание на график, представленный на рисунке 3. Модель стала гораздо более точной. Но значит ли, что она даст самый лучший прогноз? К сожалению, ответ здесь не очевиден. 

Рисунок 3. Авторегрессия, порядок модели  p = 8

Теперь давайте увеличим показатель авторегрессии до 14, здесь уже может быть учтена двухнедельная сезонность, а также все 14 дней прошлых продаж. Ведь мы не ограничивали модель на то, чтобы какие-то дни из этих 14 не учитывались.

 Так что в ходе подстройки модели под исторические данные она сама решила, продажам каких дней назначить коэффициент больше, а каким меньше. Вместе с увеличением числа учитываемых дней, мы, конечно же, увеличиваем и число шума, которое закладываем в наш будущий прогноз.

Авторегрессия порядка 14 представлена на рисунке 4.

Рисунок 4. Авторегрессия, порядок модели  p = 14

Ну и для завершения картины, чтобы иметь представление как замечательно выглядит модель при порядке авторегрессии равным 28, посмотрите на рисунок 5. Все пики почти в точности повторяются моделью. Но, еще раз повторюсь, это не означает, что данная модель даст нам отличный прогноз. Использование штрафов, скорее всего, не пропустило бы данную модель даже в тройку лидеров.

 Рисунок 5. Авторегрессия, порядок модели  p = 28

Прогнозы

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

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

 Рисунок 6. Прогноз на 56 дней вперед, авторегрессия порядка 1, AR(1)

Прогноз с использованием 4 прошлых значений уже больше отличается от простого среднего. Он представлен на рисунке 7.

 Рисунок 7. Прогноз на 56 дней вперед, авторегрессия порядка 4, AR(4)

На рисунке 8 можно заметить, что система становится более изменчивой. Все больше появляется пиков и провалов в прогнозе. Если посчитать ошибки по всем прогнозам, то можно заметить, что это самый лучший прогноз. Имеет ошибку 6.96. Оно и не удивительно, учитывая недельную сезонность данного товара, нам удается получить большую часть информации и минимизировать шум.

Рисунок 8. Прогноз на 56 дней вперед, авторегрессия порядка 8, AR(8)

На рисунках 9 и 10 представлены примеры прогнозов для моделей авторегрессии с большими значениями порядка 14 и 32. Ошибки для них соответственно составляют 7.03 и 7.45. Увеличение порядка начинает отрицательно сказываться на качестве прогноза.

 Рисунок 9. Прогноз на 56 дней вперед, авторегрессия порядка 14, AR(14)

 Рисунок 10. Прогноз на 56 дней вперед, авторегрессия порядка 32, AR(32)

В заключение наглядного обзора алгоритма прогнозирования на основе авторегрессии приведем сводную таблицу по ошибкам прогнозирования для рассмотренного примера. Минимум как мы можем видеть из таблицы 2, достигается при порядке модели, равным 7ми.
 

Таблица 1. Ошибки прогнозирования авторегрессии при различных порядках модели

Сравнение

Ошибки прогнозирования авторегрессии при различных порядках модели.

 Для сравнения с алгоритмом ForecastNOW! были построены прогнозы методом авторегрессии с различными параметрами, выбиралась лучшая модель, исходя из ошибки на известных данных (модели) с учетом модели штрафов за сложность системы. Для выбора оптимальных параметров была написана программа на языкепрограммирования R. Ошибки прогнозирования (RMSE) представлены в таблице 3.

На рисунке 11 представлен график сравнения ForecastNOW! и авторегрессии (AR). По оси Х отложены товары, по оси Y на сколько алгоритм ForecastNOW! лучше или хуже алгоритма авторегрессии в процентах.

Положительный процент показывает, что ForecastNOW! лучше на обозначенное число процентов, отрицательный – хуже. Как можно видеть из графика почти во всех случаях алгоритм ForecastNOW! оказывается значительно лучше (в среднем на 10-20%), то есть предоставляет более точный прогноз.

А более точный прогноз в свою очередь позволяет точнее планировать необходимые товарные запасы.

 Рисунок 11. Сравнение точности прогнозирования авторегрессии и алгоритма ForecastNOW!

Таблица 2. Ошибки прогнозирования авторегрессии и алгоритма ForecastNOW!, а также процентное соотношение качества прогнозов

Обзор других методов:

Источник: https://fnow.ru/algorithm-comparison/avtoregressia

Модели авторегрессии для прогнозирования временных рядов с помощью Python

Авторегрессия

Дата публикации 2017-01-02

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

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

В этом руководстве вы узнаете, как реализовать авторегрессионную модель для прогнозирования временных рядов с помощью Python.

После завершения этого урока вы узнаете:

  • Как изучить данные временных рядов для автокорреляции.
  • Как разработать модель автокорреляции и использовать ее для прогнозирования.
  • Как использовать разработанную модель автокорреляции для прогнозирования.

Давайте начнем.

  • Обновление май / 2017: Исправлена ​​небольшая опечатка в уравнении авторегрессии.

авторегрессии

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

Например:

yhat = b0 + b1*X1

Где yhat — прогноз, b0 и b1 — коэффициенты, найденные путем оптимизации модели на тренировочных данных, а X — входное значение.

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

Например, мы можем предсказать значение для следующего временного шага (t + 1), учитывая наблюдения на двух последних временных шагах (t-1 и t-2). В качестве регрессионной модели это будет выглядеть следующим образом:

X(t+1) = b0 + b1*X(t-1) + b2*X(t-2)

Поскольку регрессионная модель использует данные из той же входной переменной на предыдущих временных шагах, она называется авторегрессией (регрессия себя).

автокорреляция

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

Эта связь между переменными называется корреляцией.

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

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

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

Статистика корреляции также может помочь выбрать, какие переменные запаздывания будут полезны в модели, а какие нет.

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

В этом уроке мы исследуем автокорреляцию одномерного временного ряда, затем разработаем модель авторегрессии и используем ее для прогнозирования.

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

Набор данных минимальных суточных температур

Этот набор данных описывает минимальные дневные температуры за 10 лет (1981-1990) в городе Мельбурн, Австралия.

Единицы измерения — градусы Цельсия, 3650 наблюдений. Источник данных зачисляется в Австралийское бюро метеорологии.

Узнайте больше о наборе данных здесь,

Загрузите набор данных в текущий рабочий каталог с именем файла «ежедневно минимальной temperatures.csv«.

Заметка: Загруженный файл содержит несколько знаков вопроса («?»), Которые необходимо удалить, прежде чем вы сможете использовать набор данных. Откройте файл в текстовом редакторе и удалите символы «?». Также удалите любую информацию нижнего колонтитула в файле.

Приведенный ниже код загрузит набор данных в виде серии Pandas.

from pandas import Series from matplotlib import pyplot series = Series.from_csv('daily-minimum-temperatures.csv', header=0) print(series.head()) series.plot() pyplot.show()

При выполнении примера печатаются первые 5 строк из загруженного набора данных.

Date 1981-01-01 20.7 1981-01-02 17.9 1981-01-03 18.8 1981-01-04 14.6 1981-01-05 15.8 Name: Temp, dtype: float64

Затем создается линейный график набора данных.

Быстрая проверка автокорреляции

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

Мы можем построить наблюдение на предыдущем временном шаге (t-1) с наблюдением на следующем временном шаге (t + 1) как график рассеяния.

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

Но есть более простой способ.

Pandas предоставляет встроенный сюжет, чтобы сделать именно это, называетсяlag_plot ()функция.

Ниже приведен пример создания графика задержки для набора данных «Минимальные дневные температуры».

from pandas import Series from matplotlib import pyplot from pandas.tools.plotting import lag_plot series = Series.from_csv('daily-minimum-temperatures.csv', header=0) lag_plot(series) pyplot.show()

При выполнении примера строятся графики данных температуры (t) по оси X и температуры в предыдущий день (t-1) по оси Y

Мы видим большой шар наблюдений вдоль диагональной линии графика. Это ясно показывает отношения или некоторую корреляцию.

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

Еще одна быстрая проверка, которую мы можем сделать, — это непосредственно рассчитать корреляцию между наблюдением и переменной отставания.

Мы можем использовать статистический тест, какКоэффициент корреляции Пирсона, Это дает число для суммирования того, насколько коррелированные две переменные находятся между -1 (отрицательно коррелированные) и +1 (положительно коррелированные) с небольшими значениями, близкими к нулю, указывающими на низкую корреляцию, и высокими значениями выше 0,5 или ниже -0,5, показывающими высокую корреляцию.

Корреляция может быть легко рассчитана с помощьюкорр ()функция на DataFrame набора данных с задержкой.

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

from pandas import Series from pandas import DataFrame from pandas import concat from matplotlib import pyplot series = Series.from_csv('daily-minimum-temperatures.csv', header=0) values = DataFrame(series.values) dataframe = concat([values.shift(1), values], axis=1) dataframe.columns = ['t-1', 't+1'] result = dataframe.corr() print(result)

Это хорошее подтверждение для сюжета выше.

Это показывает сильную положительную корреляцию (0,77) между наблюдением и значением лаг = 1.

t-1 t+1 t-1 1.00000 0.77487 t+1 0.77487 1.00000

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

Далее мы рассмотрим уменьшенную версию этого подхода.

Автокорреляционные участки

Мы можем построить коэффициент корреляции для каждой переменной отставания.

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

Мы могли бы вручную рассчитать значения корреляции для каждой переменной отставания и построить график результата. К счастью, Pandas предоставляет встроенный сюжет под названиемautocorrelation_plot ()функция.

График показывает число запаздываний вдоль оси x и значение коэффициента корреляции между -1 и 1 на оси y.

График также включает сплошные и пунктирные линии, которые указывают 95% и 99% доверительный интервал для значений корреляции.

Значения корреляции над этими линиями являются более значимыми, чем значения под линией, обеспечивая пороговое значение или ограничение для выбора более значимых значений запаздывания.

from pandas import Series from matplotlib import pyplot from pandas.tools.plotting import autocorrelation_plot series = Series.from_csv('daily-minimum-temperatures.csv', header=0) autocorrelation_plot(series) pyplot.show()

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

Библиотека statsmodels также предоставляет версию графика вplot_acf ()функционировать как линейный график.

from pandas import Series from matplotlib import pyplot from statsmodels.graphics.tsaplots import plot_acf series = Series.from_csv('daily-minimum-temperatures.csv', header=0) plot_acf(series, lags=31) pyplot.show()

В этом примере мы ограничиваем переменные лага, оцениваемые как 31, для удобства чтения.

Теперь, когда мы знаем, как проверить автокорреляцию в наших временных рядах, давайте рассмотрим моделирование с помощью авторегрессии.

Прежде чем мы это сделаем, давайте установим базовую производительность.

Модель постоянства

Допустим, мы хотим разработать модель для прогнозирования минимальных температур за последние 7 дней в наборе данных с учетом всех предыдущих наблюдений.

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

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

Прогнозы сделаны с использованием модели валидации, чтобы мы могли сохранить самые последние наблюдения на следующий день. Это означает, что мы делаем не 7-дневный прогноз, а 7-дневный прогноз.

from pandas import Series from pandas import DataFrame from pandas import concat from matplotlib import pyplot from sklearn.metrics import mean_squared_error series = Series.from_csv('daily-minimum-temperatures.csv', header=0) # create lagged dataset values = DataFrame(series.values) dataframe = concat([values.shift(1), values], axis=1) dataframe.columns = ['t-1', 't+1'] # split into train and test sets X = dataframe.values train, test = X[1:len(X)-7], X[len(X)-7:] train_X, train_y = train[:,0], train[:,1] test_X, test_y = test[:,0], test[:,1] # persistence model def model_persistence(x): return x # walk-forward validation predictions = list() for x in test_X: yhat = model_persistence(x) predictions.append(yhat) test_score = mean_squared_error(test_y, predictions) print('Test MSE: %.3f' % test_score) # plot predictions vs expected pyplot.plot(test_y) pyplot.plot(predictions, color='red') pyplot.show()

При выполнении примера выводится среднеквадратическая ошибка (MSE).

Значение обеспечивает базовую производительность для проблемы.

Test MSE: 3.423

Ожидаемые значения для следующих 7 дней нанесены (синим цветом) по сравнению с прогнозами из модели (красным).

Модель авторегрессии

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

Мы могли бы вычислить модель линейной регрессии вручную, используя класс LinearRegession в scikit-learn, и вручную указать входные переменные лага, которые нужно использовать.

Кроме того, библиотека statsmodels предоставляет модель авторегрессии, которая автоматически выбирает подходящее значение лага с помощью статистических тестов и обучает модель линейной регрессии. Это предусмотрено вAR класс,

Мы можем использовать эту модель, сначала создав модель AR (), а затем вызвав fit (), чтобы обучить ее в нашем наборе данных. Это возвращаетARResultобъект.

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

Полный пример приведен ниже

from pandas import Series from matplotlib import pyplot from statsmodels.tsa.ar_model import AR from sklearn.metrics import mean_squared_error series = Series.from_csv('daily-minimum-temperatures.csv', header=0) # split dataset X = series.values train, test = X[1:len(X)-7], X[len(X)-7:] # train autoregression model = AR(train) model_fit = model.fit() print('Lag: %s' % model_fit.k_ar) print('Coefficients: %s' % model_fit.params) # make predictions predictions = model_fit.predict(start=len(train), end=len(train)+len(test)-1, dynamic=False) for i in range(len(predictions)): print('predicted=%f, expected=%f' % (predictions[i], test[i])) error = mean_squared_error(test, predictions) print('Test MSE: %.3f' % error) # plot results pyplot.plot(test) pyplot.plot(predictions, color='red') pyplot.show()

При выполнении примера сначала выводится выбранное оптимальное отставание и список коэффициентов в обученной модели линейной регрессии.

Мы можем видеть, что модель с 29 лагами была выбрана и обучена. , учитывая, насколько близко это отставание к среднему количеству дней в месяце.

Затем распечатывается 7-дневный прогноз и суммируется среднеквадратическая ошибка прогноза.

Источник: https://www.machinelearningmastery.ru/autoregression-models-time-series-forecasting-python/

Archie Goodwin

Авторегрессия

Урок по построению линейной авторегрессионной модели первого-третьего порядков для динамических рядов с целью прогнозирования.

В предыдущей статье о линейной регрессии мы попытались разобраться в том как выразить зависимость итогового показателя Y от влияющих факторов с помощью линейной модели.

А что если показать зависимость Y от самого себя, вернее от того каков был Y в прошлом периоде (день, месяц, год и т.п.

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

Структура модели

Общий вид модели авторегрессии:

Yi = a0 + Ʃai*Yi-1+Ɛi

где a0 — постоянная — коэффициент описывающий ситуацию прохождение влияющих факторов через начало координат, то есть показывает каким будет итог модели в случае, когда влияющие факторы равны нулю;

ai — коэффициенты, которые описывают степень зависимости итогового Y от влияющих факторов, в данном случае, от того каким был Y в прошлом периоде регрессии;

Yi-1 — влияющие факторы, которые в данном случае и есть итоговый Y, но тот, каким он был раньше.

Ɛi — случайная компонента или как еще ее принято называть погрешность модели (по сути, это разница между расчетным значением модели за известные периоды и между самими известными значениями, то есть Yрасч. — Y).

AR I — Авторегрессия первого порядка

Yi = a0 + ai*Yi-1+Ɛi

Как видно из формулы выше, линейная модель авторегрессии первого порядка состоит только из одного влияющего фактора, а именно из Y-1, то есть изучается наиболее тесная зависимость только от того каким был итоговый показатель периодом с шагом назад.

Рассмотрим построение модели с помощью «пакета анализа» в эксель (вся процедура и поочередность шагов аналогичны описанным в статье Линейная регрессия в Excel через Анализ данных) на примере ряда динамики ВВП Украины с 2004 по 2012 гг.

Исходные данные предварительно нужно подготовить, а именно прописать x(Yi-1) указав предыдущий Y — это, как мы уже выяснили, и будет нашим влияющим фактором. Таким образом наша совокупность, то есть динамический ряд который будет использоваться для регрессии сократился на одну позицию (обратите внимание на столбец t), то есть с 2005 по 2012 гг.

Далее в экселе активируем вкладку «Данные» и нажимаем «Анализ данных», указываем диапазон исходных данных по примеру как на скриншоте выше и жмем кнопку ОК. (Если по указанному пути нет кнопки «Анализ данных», то пакет анализа нужно активировать, как это сделать описано в статье Линейная регрессия в Excel через Анализ данных)

Результаты расчетов пакет анализа выдает нам на новом листе (если в настройках не было указано иначе), первоочередные по важности ячейки выделил желтым цветом, и из этих данных собираем модель, подставляя в уравнение общего вида рассчитанные коэффициенты:

Y = 113436,67 + 1,033*X

или

Y = 113436,67 + 1,033*Yi-1

Возвращаемся в нашу табличку с исходными данными и подставляем полученное уравнение в столбец в качестве формулы, таким образом, получаем расчетные значения по модели, что мы и сделали в столбце Y(расчетный), протягивая формулу на период ниже, получаем прогноз (в табличке строка выделена желтым).

Сравнить реальные данные с смоделированными можно с помощью графика:

AR II — Авторегрессия второго порядка

Yi = a0 + ai*Yi-1 + ai*Yi-2 +Ɛi

Модель авторегрессии второго порядка отличается от первой тем, что она включает в себя еще один влияющий фактор Yi-2, то есть показывается зависимость от того каким был Y не только один период назад, но и от того каким он был два периода назад. Порой это позволяет выявить большую взаимосвязь и соответственно построить более точный прогноз.

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

Также стоит обратить внимание на то что на этот раз диапазон динамического ряда исходных данных используемых для построения модели сократится не на один период, а уже на два (обратите внимание на столбец t) В нашем случае, полученная модель Y=151395,987+0,724*x1+0,32*x2 или Y=151395,987+0,724*Yi-1+0,32*Yi-2, имеет показатель детерминации R2 ниже чем у модели первого порядка (0,927 против 0,94) да и среднее отклонение у нее больше (64 837,91 против 58 139,90), что значит что модель первого порядка более точная. Это может быть связано с тем, что диапазон исходных данных достаточно мал, чтобы его сокращение на один период имело значительные последствия для точности модели.

AR III — Авторегрессия третьего порядка

Yi = a0 + ai*Yi-1 + ai*Yi-2 + ai*Yi-3 +Ɛi

Модель авторегрессии третьего порядка наиболее тесно описывает зависимость от того каким был итоговый показатель раньше, так как в качестве влияющих факторов используется три отправные точки — каким Y был 1 период назад, 2 периода назад и 3 периода назад. То есть, она больше актуальна для анализа тех сфер деятельности, где полученный результат влияет на размер долгосрочных инвестиций, к примеру — ВВП, доходы по отраслям, продажи крупных корпораций и т.п.

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

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

В нашем случае, коэффициент детерминации R2 наиболее низкий (0,89), да и среднее отклонение больше чем в модели первого порядка, опять таки, это обьясняется тем, что исследуемый период достаточно короткий, чтобы его уменьшение давало значительное влияние на качество построения модели.

Итоги

ПЛЮСЫ:

1. Получение высококачественной модели с адекватным прогнозом при минимуме временных затрат и требований к исходным данным.

МИНУСЫ:

1. Прогноз по исходным данным возможен только на один период вперед. Если нужно сделать прогноз на более длительный срок, то в качестве влияющих факторов для расчета придется брать не реально существующий Y, а тот который рассчитан по модели, что в итоге даст прогноз на прогнозе, а значит адекватность такого прогноза, как минимум, в два раза меньше.

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

Источник: http://archie-goodwin.net/load/specializirovannye_blogi/ms_office/avtoregressija_modelirovanie_i_prognozirovanie_v_excel/28-1-0-422

Документация

Авторегрессия

vector autoregression (VAR) model является многомерной моделью временных рядов, содержащей систему уравнений n n отличные, стационарные переменные отклика как линейные функции изолированных ответов и других условий. Модели VAR также характеризуются их степенью p; каждое уравнение в модели VAR (p) содержит задержки p всех переменных в системе.

Модели VAR принадлежат классу многомерных линейных моделей временных рядов под названием vector autoregression moving average (VARMA) models. Несмотря на то, что Econometrics Toolbox™ обеспечивает функциональность, чтобы провести всесторонний анализ модели VAR (p) (от оценки модели до прогнозирования и симуляции), тулбокс оказывает ограниченную поддержку для других моделей в классе VARMA.

В общем случае многомерные линейные модели временных рядов хорошо подходят для:

  • Моделирование перемещений нескольких стационарных временных рядов одновременно.

  • Измерение задержанных эффектов среди переменных отклика в системе.

  • Измерение эффектов внешнего ряда на переменных в системе. Например, определите, влияет ли присутствие недавно наложенного тарифа значительно на несколько эконометрических рядов.

  • Генерация одновременных прогнозов переменных отклика.

Эта таблица содержит формы многомерных линейных моделей временных рядов и описывает их поддерживаемую функциональность в Econometrics Toolbox.

МодельСокращениеУравнениеПоддерживаемая функциональность
Векторная авторегрессияVAR (p)
  • Представляйте модель при помощи varm объект:

    1. Создайте шаблон для оценки или полностью заданной модели при помощи varm.

    2. Оцените любые неизвестные параметры при помощи estimate.

    3. Работа с полностью заданной моделью путем применения объектных функций.

  • Получите содействующие матрицы модели VAR из содействующих матриц его VARMA (p, q) эквивалентный при помощи arma2ar.

  • Учитывая содействующие матрицы, выполните динамический анализ множителя при помощи armairf и armafevd.

Векторная авторегрессия с линейным трендом времениVAR (p)

Представляйте модель при помощи varm объект. estimate и все другие объектные функции поддерживают эту модель.

Векторная авторегрессия с внешним рядомVARX (p)

Представляйте модель при помощи varm объект. estimate и все другие объектные функции поддерживают эту модель.

Векторное скользящее среднее значениеVMA (q)
  • Получите содействующие матрицы модели VMA из содействующих матриц его VARMA (p, q) эквивалентный при помощи arma2ma.

  • Учитывая содействующие матрицы, выполните динамический анализ множителя при помощи armairf и armafevd.

Векторное скользящее среднее значение авторегрессииВАРМА (p, q)
  • Получите содействующие матрицы модели VAR или VMA из содействующих матриц его VARMA (p, q) эквивалентный при помощи arma2ar или arma2ma, соответственно.

  • Учитывая содействующие матрицы, выполните динамический анализ множителя при помощи armairf и armafevd.

Структурное векторное скользящее среднее значение авторегрессииSVARMA (p, q)Та же поддержка что касается моделей VARMA

Следующие переменные появляются в уравнениях:

  • y t является n-by-1 вектор из отличных серийных переменных времени отклика во время t.

  • c является n-by-1 вектор из постоянных смещений в каждом уравнении.

  • Φj является n-by-n матрица коэффициентов AR, где j = 1…, p и Φp не является матрицей, содержащей только нули.

  • xt является m-by-1 вектор из значений, соответствующих m внешние переменные или предикторы. В дополнение к изолированным ответам внешние переменные не моделируются входные параметры к системе. Каждая внешняя переменная появляется во всех уравнениях ответа по умолчанию.

  • β является n-by-m матрица коэффициентов регрессии. Строка j содержит коэффициенты в уравнении переменной отклика j и столбец k, содержит коэффициенты внешней переменной k среди всех уравнений.

  • δ является n-by-1 вектор из линейных значений тренда времени.

  • εt является n-by-1 вектор из случайных Гауссовых инноваций, каждого со средним значением 0 и коллективно n-by-n ковариационная матрица Σ. Для t ≠ s, εt и εs независимы.

  • Θk является n-by-n матрица коэффициентов MA, где k = 1…, q и Θq не является матрицей, содержащей только нули.

  • Φ0 и Θ0 являются AR и MA структурные коэффициенты, соответственно.

Обычно y временных рядов t и xt заметны, потому что у вас есть данные, представляющие ряд. Значения c, δ, β и авторегрессивных матриц Φj не всегда известны. Вы обычно хотите соответствовать этим параметрам к своим данным.

Смотрите estimate для способов оценить неизвестные параметры или как содержать некоторых из них зафиксированный к значениям (устанавливает equality constraints) во время оценки.

Инновации εt не заметен в данных, но они могут быть заметными в симуляциях.

В предыдущей таблице модели представлены в обозначении разностного уравнения. Lag operator notation является эквивалентом и большим сжатым представлением многомерных линейных уравнений временных рядов.

Оператор задержки L уменьшает индекс времени одним модулем: L y t = y t –1. Оператор Lj уменьшает индекс времени модулями j: Lj y t = y t –j.

В форме оператора задержки, уравнении для SVARMAX (p, q) модель:

Уравнение выражается более кратко в этой форме:

где

и

Многомерным полиномом AR является stable если

Со всеми равными нулю инновациями это условие подразумевает, что процесс VAR сходится к c как бесконечность подходов t (для получения дополнительной информации, см. [1], Ch. 2).

Многомерным полиномом MA является invertible если

Это условие подразумевает, что чистое представление VAR процесса VMA устойчиво (для получения дополнительной информации, см. [1], Ch. 11).

Модель ВАРМЫ устойчива, если ее полином AR устойчив. Точно так же модель VARMA является обратимой, если ее полином MA является обратимым.

Модели с внешними входными параметрами (например, модели VARMAX) не имеют никакого четко определенного понятия устойчивости или обратимости. Внешний вход может дестабилизировать модель.

Включите обратную связь от внешних предикторов или изучите их линейные связи с рядом ответа включением компонента регрессии в многомерной линейной модели временных рядов. По приказу увеличивающейся сложности, примеров приложений, которые используют такие модели:

  • Моделирование эффектов вмешательства, которое подразумевает, что внешний ряд является переменной индикатора.

  • Моделирование одновременных линейных ассоциаций между подмножеством внешнего ряда к каждому ответу. Приложения включают анализ CAPM и изучение эффектов цен на элементы на их требовании.

    Эти приложения являются примерами на вид несвязанной регрессии (SUR).

    Для получения дополнительной информации смотрите Реализацию На вид Несвязанная модель оценки финансовых активов Регрессии и Оценки Используя SUR.

  • Моделирование линейных ассоциаций между одновременным и изолировало внешний ряд и ответ как часть распределенной модели задержки. Приложения включают определение, как изменение в денежном росте влияет на действительный валовой внутренний продукт (ВВП) и грубый национальный доход (GNI).

  • Любая комбинация SUR и распределенной модели задержки, которая включает изолированные эффекты ответов, также известных как одновременные модели уравнения.

Общее уравнение для модели VARX(p)

где

  • xt является m-by-1 вектор из наблюдений от m внешние переменные во время t. Векторный xt может содержать изолированный внешний ряд.

  • β является n-by-m вектор из коэффициентов регрессии. Строка j β содержит коэффициенты регрессии в уравнении серии j ответа для всех внешних переменных. Столбец k β содержит коэффициенты регрессии среди последовательных уравнений ответа для внешней переменной k. Этот рисунок показывает систему с расширенным компонентом регрессии:

Этот рабочий процесс описывает, как анализировать многомерные временные ряды при помощи функциональности модели Econometrics Toolbox VAR. Если вы полагаете, что ряды ответа являются cointegrated, используют функциональность модели VEC вместо этого (см. vecm).

  1. Загрузите, предварительно обработайте и разделите набор данных. Для получения дополнительной информации смотрите Многомерные Форматы Данных временных рядов.

  2. Создайте varm объект модели, который характеризует модель VAR.

    varm объект модели является переменной MATLAB®, содержащей свойства, которые описывают модель, такую как степень полинома AR p, размерность ответа n и содействующие значения.

    varm должен смочь вывести n и p из ваших технических требований; n и p не являются допускающими оценку. Можно обновить структуру задержки полинома AR после создания модели VAR, но вы не можете изменить n.

    varm позволяет вам создать эти типы моделей:

    • Модель Fully specified, в которой все параметры, включая коэффициенты и инновационную ковариационную матрицу, являются числовыми значениями.

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

      После создания полностью заданной модели можно передать модель всем объектным функциям кроме estimate.

    • Model template, в котором n и p являются известными значениями, но все коэффициенты и инновационная ковариационная матрица являются неизвестными, допускающими оценку параметрами.

      Свойства, соответствующие допускающим оценку параметрам, состоят из NaN значения. Передайте шаблон модели и данные к estimate получить предполагаемое (полностью заданный) модель VAR.

      Затем можно передать предполагаемую модель любой другой объектной функции.

    • Модель Partially specified обрабатывает по шаблону, в котором известны некоторые параметры, и другие являются неизвестными и допускающими оценку.

      Если вы передаете частично заданную модель и данные к estimate, MATLAB обрабатывает известные значения параметров как ограничения равенства во время оптимизации и оценивает неизвестные значения.

      Частично заданная модель хорошо подходит для этих задач:

      • Удалите задержки из модели путем обнуления коэффициента.

      • Сопоставьте подмножество предикторов к переменной отклика путем обнуления коэффициентов регрессии предикторов, которые вы не хотите в уравнении ответа.

    Для получения дополнительной информации смотрите, Создают Модель VAR.

  3. Для моделей неизвестными, допускающими оценку параметрами подбирайте модель к данным. См. Подбирающие Модели к Данным и estimate.

  4. Найдите соответствующую степень полинома AR путем итерации шагов 2 и 3. Смотрите Избранный Соответствующий Порядок Задержки.

  5. Анализируйте подобранную модель. Этот шаг может включить:

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

[1] Lütkepohl, H. Новое введение в несколько анализ временных рядов. Берлин: Спрингер, 2005.

Похожие темы

Источник: https://docs.exponenta.ru/econ/introduction-to-vector-autoregressive-var-models.html

Все термины
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: