Модели идентифицируются с помощью auto.arima () экономно?


13

Я пытался изучить и применить модели ARIMA. Я читал превосходный текст об ARIMA от Панкраца - Прогнозирование с помощью однофакторной рамки - Модели Дженкинса: концепции и случаи . В тексте автор особо подчеркивает принцип скупости при выборе моделей ARIMA.

Я начал играть с auto.arima()функцией в R пакета прогноза . Вот что я сделал, я смоделировал ARIMA и затем применил auto.arima(). Ниже приведены 2 примера. Как вы можете видеть в обоих примерах, auto.arima()четко обозначена модель, которую многие сочли бы не экономной. Особенно в примере 2, где auto.arima()идентифицируется ARIMA (3,0,3), когда фактически ARIMA (1,0,1) будет достаточным и экономным.

Ниже мои вопросы. Буду признателен за любые предложения и рекомендации.

  1. Существуют ли какие-либо указания относительно того, когда использовать / модифицировать модели, определенные с использованием автоматических алгоритмов, например auto.arima()?
  2. Есть ли какие-то проблемы с использованием AIC (который, я думаю, auto.arima()использует) для идентификации моделей?
  3. Можно ли построить автоматический алгоритм, который является экономным?

Кстати, я использовал auto.arima()только в качестве примера. Это относится к любому автоматическому алгоритму.

Ниже приведен пример № 1:

set.seed(182)
y <- arima.sim(n=500,list(ar=0.2,ma=0.6),mean = 10)

auto.arima(y)

qa <- arima(y,order=c(1,0,1))
qa

Ниже приведены результаты auto.arima(). Обратите внимание, что все коэффициенты незначительны. т.е. значение <2.T

ARIMA(1,0,2) with non-zero mean 

Coefficients:
         ar1     ma1      ma2  intercept
      0.5395  0.2109  -0.3385    19.9850
s.e.  0.4062  0.4160   0.3049     0.0878

sigma^2 estimated as 1.076:  log likelihood=-728.14
AIC=1466.28   AICc=1466.41   BIC=1487.36

Ниже приведены результаты регулярного запуска arima()с заказом ARIMA (1,0,1).

Series: y 
ARIMA(1,0,1) with non-zero mean 

Coefficients:
         ar1     ma1  intercept
      0.2398  0.6478    20.0323
s.e.  0.0531  0.0376     0.1002

sigma^2 estimated as 1.071:  log likelihood=-727.1
AIC=1462.2   AICc=1462.28   BIC=1479.06

Пример 2:

set.seed(453)
y <- arima.sim(n=500,list(ar=0.2,ma=0.6),mean = 10)

auto.arima(y)

qa <- arima(y,order=c(1,0,1))
qa

Ниже приведены результаты auto.arima():

ARIMA(3,0,3) with non-zero mean 

Coefficients:
         ar1      ar2     ar3     ma1     ma2     ma3  intercept
      0.7541  -1.0606  0.2072  0.1391  0.5912  0.5491    20.0326
s.e.  0.0811   0.0666  0.0647  0.0725  0.0598  0.0636     0.0939

sigma^2 estimated as 1.027:  log likelihood=-716.84
AIC=1449.67   AICc=1449.97   BIC=1483.39

Ниже приведены результаты регулярного выполнения arima()заказа ARIMA (1,0,1).

Series: y 
ARIMA(1,0,1) with non-zero mean 

Coefficients:
         ar1     ma1  intercept
      0.2398  0.6478    20.0323
s.e.  0.0531  0.0376     0.1002

sigma^2 estimated as 1.071:  log likelihood=-727.1
AIC=1462.2   AICc=1462.28   BIC=1479.06

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

AIC и BIC пропорциональны отклонению ошибок от предполагаемой модели. Этот подход в моем опыте очень прост из-за некоторых проблем, которые я уже поднял, и проблем с обратимостью, которые возникают здесь. Не существует замены для интеллектуальной системы идентификации, которая строит итеративные модели, заключающиеся в том, что не осталось неоправданных параметров и в остатках нет информации / структуры. Таким образом, автоматическая идентификация модели - это итеративный процесс, а не одностадийный процесс, как во всем статистическом анализе.
IrishStat

@Irishstat Каков знак коэффициента ma, его следует интерпретировать как -0,1391 -0,5912 -0,5491?
синоптик

с точки зрения текста Панкраца .. да! , Вы можете проверить корни полинома ma, чтобы увидеть, соответствуют ли они требованиям обратимости.
IrishStat

Таким образом, вышеуказанный auto.arima не является обратимым, т. е. -0.1391-0.5912-0.5491 равен <1, поэтому модель в порядке.
синоптик

Ответы:


17

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

Я упоминаю об этом из-за второй и более важной проблемы: auto.arima()функция может оценивать модели с помощью более эффективного алгоритма подбора, используя условные суммы квадратов, чтобы избежать чрезмерного времени вычислений для длинных рядов или для сложных сезонных моделей. Когда этот процесс оценки используется, auto.arima() аппроксимирует информационные критерии для модели (поскольку логарифмическая вероятность модели не рассчитана). Простая эвристика используется для определения того, активна ли оценка условных сумм квадратов, если пользователь не указывает, какой подход следует использовать .

approximation(length(x)>100 | frequency(x)>12)approximationTRUE Nзнак равно100Nзнак равно500 approximationauto.arima()approximation = TRUEarima()

Для вашего примера 1 мы должны иметь

> auto.arima(y, approximation = FALSE)
Series: y 
ARIMA(0,0,1) with non-zero mean 

Coefficients:
         ma1  intercept
      0.7166    19.9844
s.e.  0.0301     0.0797

sigma^2 estimated as 1.079:  log likelihood=-728.94
AIC=1463.87   AICc=1463.92   BIC=1476.52
> qa
Series: y 
ARIMA(1,0,1) with non-zero mean 

Coefficients:
         ar1     ma1  intercept
      0.0565  0.6890    19.9846
s.e.  0.0626  0.0456     0.0830

sigma^2 estimated as 1.078:  log likelihood=-728.53
AIC=1465.06   AICc=1465.14   BIC=1481.92

Следовательно auto.arima(), выбрал более экономную модель, чем истинная модель; ARIMA (0, 0, 1) выбрано. Но это основано на информационных критериях, и теперь они соответствуют; выбранная модель имеет более низкие значения AIC, AICc и BIC, хотя различия для AIC и AICc невелики. По крайней мере, теперь выбор соответствует нормам выбора моделей на основе информационных критериев.

Я полагаю, что причина выбора МА (1) связана с первым вопросом, который я упомянул; а именно, что лучшая подходящая модель к образцу, взятому из заявленной ARIMA (p, d, q), может не иметь тот же порядок, что и истинная модель. Это связано со случайной выборкой. Использование более длинных серий или более продолжительного периода записи может помочь увеличить вероятность выбора истинной модели, но не стоит на это рассчитывать.

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


спасибо за подробный ответ. Я использовал ваш подход для второго примера: set.seed (453) y <- arima.sim (n = 500, list (ar = 0.2, ma = 0.6), mean = 10) auto.arima (y, приблизительный = ЛОЖЬ) и это то, что я получаю, это явно перегрузка данных - ARIMA (2,0,4) с ненулевым средним коэффициентами: ar1 ar2 ma1 ma2 ma3 ma4 перехват 0.5369 -0.9627 0.3681 0.6799 0.7065 0.1701 20.0329 se 0.0278 0.0499 0,0533 0,0630 0,0793 0,0574 0,0927 сигма ^ 2 оценивается как 1,024: логарифмическая правдоподобность = -716,17 AIC = 1448,33 AICc = 1448,63 BIC = 1482,05
прогнозист

Я еще не читал главу, которая называется «обратимость». Не нарушает ли auto.arima во втором случае правило «обратимости» в диагностике модели? Возможно, я не в сети, не могли бы вы исправить ошибку?
синоптик

1
@ forecaster Предположим, вы не знаете правду, все, что у вас есть, это образец под рукой. В этом случае AIC и т. Д. Делают то, что вы просите их сделать. Как я уже говорил выше, имитируемый ряд может быть не тем, о котором вы просили, или, скорее, не удастся успешно идентифицировать истинный ряд из небольшой выборки, которую вы взяли. Ничто не подразумевает ни здесь, ни где-либо еще в статистике, что вы получите ту, ИСТИННУЮ модель. Как статистик, если вы считаете, что ряды переизбыты (скажем, из предшествующего уровня знаний), наложите ограничение на порядок поиска терминов. Или используйте BIC в качестве критерия остановки.
Восстановить Монику - Г. Симпсон

Я не знаю достаточно хорошо, что такое обратимость, чтобы иметь возможность ответить на этот вопрос. Возможно, задайте это как новый вопрос здесь?
Восстановить Монику - Г. Симпсон

@forecaster (Причина, по которой я говорю BIC, заключается в том, что он накладывает дополнительный штраф на сложность. В этом случае BIC ARIMA (1, 0, 1) имеет более низкий BIC, чем установленная модель auto.arima(), поэтому, если это были только два модели-кандидаты, более простой вариант был бы выбран ...)
Восстановить Монику - Г. Симпсон

2

Большое спасибо @ Gavin, @Irishstat и @Rob за ответ на мой вопрос. Ясно, что если мне нужна экономная модель из автоматических алгоритмов, таких как auto.arima, следует использовать информационный критерий BIC, а не AIC, особенно после просмотра этого поста и поста @ Gavin выше.

Я также очень согласен с @Irishstat, что выбор модели на основе критерия IC имеет ограничения в том смысле, что она не выбирает лучшую модель для соответствия данных выбросам и сдвигам уровней. На мой взгляд, выбросы + сдвиги уровней + грязные данные = реальные бизнес-данные , все остальное - наборы данных из учебников. Любая автоматическая модель, которая не учитывает выбросы + сдвиги уровней, опять же, на мой взгляд, должна использоваться с осторожностью.

Переходя к коду - auto.arima имеет возможность выбирать между AIC или BIC. Смотрите ниже код был изменен из вышеупомянутых вопросов.

Большое спасибо кросс-валидированному сообществу. Я узнаю новые и интересные вещи каждый день.

###############
set.seed(453)
y <- arima.sim(n=500,list(ar=0.2,ma=0.6),mean = 10)

## Adequetly describes the unknown data
fit.aic <- auto.arima(y,ic = c("aic"))
fit.aic

## Selects the model that is parsimonious
fit.bic <- auto.arima(y,ic = c("bic"))
fit.bic

BIC IC выбирает модель MA (2).

> fit.bic
Series: y 
ARIMA(0,0,2) with non-zero mean 

Coefficients:
         ma1     ma2  intercept
      0.9256  0.2335    20.0326
s.e.  0.0453  0.0444     0.0992

sigma^2 estimated as 1.059:  log likelihood=-724.19
AIC=1456.39   AICc=1456.47   BIC=1473.24

1

Я взял 500 значений в AUTOBOX (часть коммерческого программного обеспечения, которое я помогал в разработке) и получил следующие рекомендации, введите описание изображения здесьоснованные на тесте Чоу на постоянство параметров. Самая основная ошибка, которая допускается при изучении временного ряда, заключается в предположении, что данные управляются конкретной моделью с постоянными параметрами. AUTOBOX обнаружил точку останова в период 246, которая может отражать симуляцию, которая не была «подогрета». При моделировании данных рекомендуется удалить первые значения «n», а затем изучить остальные. Я взял данные и разбил их на две части; первые 245 и оставшиеся 255. Вот два введите описание изображения здесьочень разных графика ACF введите описание изображения здесь.

Возвращаясь к анализу: вот модель, которая была идентифицирована для последних 246 значений введите описание изображения здесьи здесь введите описание изображения здесьсо следующей статистикой введите описание изображения здесь. Факт / Подгонка и Прогноз здесь введите описание изображения здесьс остаточным сюжетом здесь введите описание изображения здесь. АКФ остатков предполагает достаточностьвведите описание изображения здесь, Обратите внимание, что 5 импульсов, которые были идентифицированы, имели очень маленький эффект и могли легко игнорироваться (в этом случае!). Таким образом, урок, полученный здесь, заключается в том, что иногда у нас слишком много данных, и нам необходимо учитывать коэффициенты изменения времени. В этом случае мы определяем изменение параметров, которое (по-видимому) не оказывает существенного влияния на результирующую модель / параметры, но указывает на обычно необходимое улучшение процесса анализа временных рядов. Мой опыт работы с auto.arima показывает, что, поскольку он явно не лечит и не устраняет нарушения Гаусса, он склонен к чрезмерной модели, полагаясь на исторические ценности, а не извлекая структуру из данных. В этом случае, поскольку это было строго контролируемое моделирование без гауссовских нарушений, оно работало, но я, как правило, подозреваю такой подход с ограниченным и одношаговым подходом к идентификации модели ARIMA. Доверяй, но проверяй !


0

Akaike_information_criterion говорит, что  ехр(AяСмяN-AяСя)/2
«можно интерпретировать как относительную вероятность того, что i-я модель минимизирует (оценочную) потерю информации».

Если это так, это поможет пользователям увидеть эти относительные вероятности вместе с AIC (?) Из auto.arima( ... trace=TRUE ). Например, данные яйца запускаются, как в этом вопросе дает

                                # relprob = exp( (AICmin - AIC) / 2 ) * 100
 ARIMA(0,1,0) with drift : 784.5    100
 ARIMA(0,1,1) with drift : 784.8     86
 ARIMA(1,1,0) with drift : 784.9     82
 ARIMA(0,1,0)            : 792.4      2
 ARIMA(2,1,2) with drift : Inf    0
 ARIMA(1,1,1) with drift : Inf    0

1
Это ответ или вопрос?
Тим

@ Тим, я так осторожен, потому что я не знаю, являются ли эти относительные пробники "настоящими" или, по крайней мере, обычными.
Денис
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.