рекомендации

понедельник, 27 декабря 2021 г.

Временные ряды для начинающих. Часть 2. Моделирование временных рядов


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

Обратите внимание, что первые 3 модели, которые мы рассматриваем, AR, MA и ARMA, можно использовать для стационарных временных рядов. Остальные модели используются на нестационарных временных рядах.

2.1 AR и MA

Двумя наиболее распространенными моделями временных рядов являются модели авторегрессии (AR) и модель скользящего среднего (MA).

Модель авторегрессии: AR (p)

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

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

Давайте посмотрим на график PACF для временного ряда глобальной температуры, используя функцию pacf() в R.


Что мы должны искать на этом графике? Основная цель - найти количество значительных всплесков за пределами синих доверительных интервалов. На этом графике я бы определил, что должно быть 2 пика, один на 0,1, а другой на 0,3. Всплеск в 0 не учитывается, и любые всплески за пределами синего цвета позже на графике, вероятно, вызваны случайной ошибкой. Следовательно, это похоже на модель AR (2).

Давайте посмотрим на модель AR (2) для глобального временного ряда. Вы можете использовать функцию ar() в R; однако я рекомендую использовать функцию Arima() из пакета forecast, потому что мы будем использовать ее позже в этой главе.

## Series: temp.ts 
## ARIMA(2,0,0) with non-zero mean 
## 
## Coefficients:
##         ar1     ar2    mean
##       0.588  0.3700  0.2697
## s.e.  0.033  0.0332  0.0908
## 
## sigma^2 estimated as 0.01234:  log likelihood=617.65
## AIC=-1227.3   AICc=-1227.25   BIC=-1208.6
Итак, это наша модель AR (2). Как мы узнаем, что это хорошая модель? Сначала мы вычислим другие модели, а затем поговорим о том, как их сравнивать.

Модель скользящего среднего: MA(q)

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


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

Давайте посмотрим на модель MA(5). Обычно мы выбираем порядок q для количества значительных всплесков на графике ACF, однако, учитывая, что в этом примере их сотни, мы просто будем использовать 5. Осторожно: если вы используете слишком высокий порядок, это может привести к слишком большому количеству предикторов в модели, что может привести к переобучению.

## Series: temp.ts 
## ARIMA(0,0,5) with non-zero mean 
## 
## Coefficients:
##          ma1     ma2     ma3     ma4     ma5    mean
##       0.8056  0.8663  0.6675  0.5288  0.2949  0.2479
## s.e.  0.0349  0.0420  0.0402  0.0340  0.0299  0.0197
## 
## sigma^2 estimated as 0.01799:  log likelihood=470.17
## AIC=-926.35   AICc=-926.2   BIC=-893.61
Мы не рассматривали фактические формулы и обозначения моделей; однако, если вас это интересует, просмотрите веб-сайт ниже для получения более подробной информации. 


Порядок моделей AR и MA или обычно выбирается по количеству значительных всплесков на графиках PACF и ACF соответственно; однако есть и другие условия, которые можно увидеть, щелкнув здесь.

2.2 ARMA, ARIMA и SARIMA

Модель авторегрессионного скользящего среднего (ARMA), авторегрессионная интегрированная модель скользящего среднего (ARIMA) и сезонная авторегрессионная интегрированная скользящая средняя модель (SARIMA) также широко используются в анализе временных рядов. Очевидно, все они из одного семейства. Таким образом, мы объясним небольшие различия между ними.

Autoregressive Moving Average Model: ARMA(p,q)

Модели авторегрессионного скользящего среднего - это просто комбинация модели AR и модели MA. Давайте посмотрим, какой будет наша модель ARMA.

Мы собираемся построить модель ARMA (2,5), просто используя два порядка из предыдущих моделей.

## Series: temp.ts 
## ARIMA(2,0,5) with non-zero mean 
## 
## Coefficients:
##          ar1      ar2      ma1     ma2      ma3     ma4      ma5    mean
##       1.8305  -0.8306  -1.3337  0.4087  -0.1512  0.1674  -0.0684  0.4220
## s.e.  0.0635   0.0634   0.0720  0.0663   0.0602  0.0591   0.0381  0.4206
## 
## sigma^2 estimated as 0.01158:  log likelihood=644.73
## AIC=-1271.45   AICc=-1271.22   BIC=-1229.37
Autoregressive Integrated Moving Average Model: ARIMA(p,d,q)

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

Как вы выбираете d?

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

Таким образом, я попробовал несколько различных значений и пришел к выводу, что значение d=1 лучше всего подходит для модели, так как у нее самая низкая дисперсия, а автокорреляция меньше -0,5.

## Series: temp.ts 
## ARIMA(2,1,5) 
## 
## Coefficients:
##          ar1     ar2      ma1      ma2     ma3     ma4     ma5
##       0.1022  0.6468  -0.6046  -0.6056  0.1762  0.0520  0.0157
## s.e.  0.2056  0.1859   0.2096   0.2859  0.1040  0.0581  0.0517
## 
## sigma^2 estimated as 0.01156:  log likelihood=645.66
## AIC=-1275.33   AICc=-1275.14   BIC=-1237.93
Seasonal Autoregressive Integrated Moving Average Model: SARIMA(p,d,q)(P,D,Q)s

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

Как мы знаем:
  • p - порядок авторегрессионного тренда
  • d - порядок разности тренда
  • q - порядок тренда скользящей средней
Что означают (P, D, Q)?
  • P - порядок сезонности авторегрессии
  • D - порядок сезонной разности
  • Q - порядок сезонности скользящей средней
  • s - количество периодов в вашем сезоне
Как вы выбираете эти новые термины?

Есть несколько способов подобрать эти порядки; однако при попытке использовать модель SARIMA на практике лучше позволить R или другому программному обеспечению оценить параметры за вас. В прилагаемой статье об этом говорится более подробно.

В нашем примере у нас может не быть модели SARIMA, потому что в нашем временном ряду не было сезонности. Следовательно, он может соответствовать SARIMA (2,1,5) (0,0,0) 12.

Член s был бы 12, потому что в сезоне было бы 12 периодов (месяцев), если бы у нас была сезонность. Мы по-прежнему рассмотрим пример. Мы можем использовать функцию sarima из пакета astsa в R.

## 
## Call:
## stats::arima(x = xdata, order = c(p, d, q), seasonal = list(order = c(P, D, 
##     Q), period = S), xreg = constant, transform.pars = trans, fixed = fixed, 
##     optim.control = list(trace = trc, REPORT = 1, reltol = tol))
## 
## Coefficients:
##          ar1     ar2      ma1      ma2     ma3     ma4    ma5  constant
##       0.1286  0.6396  -0.6452  -0.5892  0.1750  0.0575  0.014    0.0012
## s.e.  0.2465  0.2227   0.2505   0.3498  0.1224  0.0628  0.055    0.0002
## 
## sigma^2 estimated as 0.0113:  log likelihood = 650.7,  aic = -1283.4
Теперь, когда у нас есть 5 разных моделей, какую из них вы выберете?

Часто это можно сделать, просто взглянув на информационный критерий Акаике (AIC) или байесовский информационный критерий (BIC). В нашем примере мы будем смотреть на AIC. Как правило, меньший AIC означает, что модель лучше соответствует временному ряду.

Если вы проверите выходные данные для каждой модели, вы увидите, что все они имеют значение AIC. Я перепечатаю их ниже.

##                    Model      AIC
## 1                  AR(2) -1227.30
## 2                  MA(5)  -926.35
## 3              ARMA(2,5) -1271.45
## 4           ARIMA(2,1,5) -1275.33
## 5 SARIMA(2,1,5)(0,0,0)12 -1283.40
Как мы видим, модель SARIMA на самом деле имела самый низкий AIC, поэтому мы можем сделать вывод, что SARIMA сделала временной ряд стационарным и наиболее подходящим для прогнозирования. Однако, как я упоминал ранее, когда дело доходит до поиска лучшей модели, R или другое программное обеспечение, вероятно, будет лучшим. Таким образом, мы воспользуемся функцией auto.arima() из пакета forecast, которая будет автоматически выбирать за нас порядки! На практике я определенно рекомендую использовать ее, а не просматривать каждую модель и тестировать разные порядки.

## Series: temp.ts 
## ARIMA(2,1,3)(1,0,0)[12] with drift 
## 
## Coefficients:
##           ar1     ar2      ma1      ma2     ma3     sar1   drift
##       -0.0069  0.6955  -0.5143  -0.6984  0.2307  -0.0304  0.0012
## s.e.   0.1027  0.0954   0.1128   0.1549  0.0759   0.0371  0.0002
## 
## sigma^2 estimated as 0.01142:  log likelihood=650.08
## AIC=-1284.15   AICc=-1283.97   BIC=-1246.76
Как мы видим, выбранная нами модель SARIMA (2,1,3) (1,0,0) 12 имеет самый низкий AIC - -1284,15. Мы продолжим использовать эту модель в следующей главе, когда мы углубимся в прогнозирование.

Комментариев нет:

Отправить комментарий