Я пытался изучить и применить модели ARIMA. Я читал превосходный текст об ARIMA от Панкраца - Прогнозирование с помощью однофакторной рамки - Модели Дженкинса: концепции и случаи . В тексте автор особо подчеркивает принцип скупости при выборе моделей ARIMA.
Я начал играть с auto.arima()
функцией в R пакета прогноза . Вот что я сделал, я смоделировал ARIMA и затем применил auto.arima()
. Ниже приведены 2 примера. Как вы можете видеть в обоих примерах, auto.arima()
четко обозначена модель, которую многие сочли бы не экономной. Особенно в примере 2, где auto.arima()
идентифицируется ARIMA (3,0,3), когда фактически ARIMA (1,0,1) будет достаточным и экономным.
Ниже мои вопросы. Буду признателен за любые предложения и рекомендации.
- Существуют ли какие-либо указания относительно того, когда использовать / модифицировать модели, определенные с использованием автоматических алгоритмов, например
auto.arima()
? - Есть ли какие-то проблемы с использованием AIC (который, я думаю,
auto.arima()
использует) для идентификации моделей? - Можно ли построить автоматический алгоритм, который является экономным?
Кстати, я использовал 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.
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
источник
Ответы:
Здесь есть пара вопросов. Во-первых, не думайте, что моделируемая ARIMA действительно соответствует указанному вами порядку; Вы берете образец из указанной модели, и из-за случайности лучшая подходящая модель для конкретной взятой выборки может не соответствовать той, из которой были взяты модели.
Я упоминаю об этом из-за второй и более важной проблемы:
auto.arima()
функция может оценивать модели с помощью более эффективного алгоритма подбора, используя условные суммы квадратов, чтобы избежать чрезмерного времени вычислений для длинных рядов или для сложных сезонных моделей. Когда этот процесс оценки используется,auto.arima()
аппроксимирует информационные критерии для модели (поскольку логарифмическая вероятность модели не рассчитана). Простая эвристика используется для определения того, активна ли оценка условных сумм квадратов, если пользователь не указывает, какой подход следует использовать .approximation
(length(x)>100 | frequency(x)>12)
approximation
TRUE
approximation
auto.arima()
approximation = TRUE
arima()
Для вашего примера 1 мы должны иметь
Следовательно
auto.arima()
, выбрал более экономную модель, чем истинная модель; ARIMA (0, 0, 1) выбрано. Но это основано на информационных критериях, и теперь они соответствуют; выбранная модель имеет более низкие значения AIC, AICc и BIC, хотя различия для AIC и AICc невелики. По крайней мере, теперь выбор соответствует нормам выбора моделей на основе информационных критериев.Я полагаю, что причина выбора МА (1) связана с первым вопросом, который я упомянул; а именно, что лучшая подходящая модель к образцу, взятому из заявленной ARIMA (p, d, q), может не иметь тот же порядок, что и истинная модель. Это связано со случайной выборкой. Использование более длинных серий или более продолжительного периода записи может помочь увеличить вероятность выбора истинной модели, но не стоит на это рассчитывать.
В любом случае, мораль здесь в том, что когда что-то выглядит явно не так, как в вашем вопросе, прочитайте соответствующую справочную страницу или документацию, чтобы убедиться, что вы понимаете, как работает программное обеспечение.
источник
auto.arima()
, поэтому, если это были только два модели-кандидаты, более простой вариант был бы выбран ...)Большое спасибо @ Gavin, @Irishstat и @Rob за ответ на мой вопрос. Ясно, что если мне нужна экономная модель из автоматических алгоритмов, таких как auto.arima, следует использовать информационный критерий BIC, а не AIC, особенно после просмотра этого поста и поста @ Gavin выше.
Я также очень согласен с @Irishstat, что выбор модели на основе критерия IC имеет ограничения в том смысле, что она не выбирает лучшую модель для соответствия данных выбросам и сдвигам уровней. На мой взгляд, выбросы + сдвиги уровней + грязные данные = реальные бизнес-данные , все остальное - наборы данных из учебников. Любая автоматическая модель, которая не учитывает выбросы + сдвиги уровней, опять же, на мой взгляд, должна использоваться с осторожностью.
Переходя к коду - auto.arima имеет возможность выбирать между AIC или BIC. Смотрите ниже код был изменен из вышеупомянутых вопросов.
Большое спасибо кросс-валидированному сообществу. Я узнаю новые и интересные вещи каждый день.
BIC IC выбирает модель MA (2).
источник
Я взял 500 значений в AUTOBOX (часть коммерческого программного обеспечения, которое я помогал в разработке) и получил следующие рекомендации, основанные на тесте Чоу на постоянство параметров. Самая основная ошибка, которая допускается при изучении временного ряда, заключается в предположении, что данные управляются конкретной моделью с постоянными параметрами. AUTOBOX обнаружил точку останова в период 246, которая может отражать симуляцию, которая не была «подогрета». При моделировании данных рекомендуется удалить первые значения «n», а затем изучить остальные. Я взял данные и разбил их на две части; первые 245 и оставшиеся 255. Вот два очень разных графика ACF .
Возвращаясь к анализу: вот модель, которая была идентифицирована для последних 246 значений и здесь со следующей статистикой . Факт / Подгонка и Прогноз здесь с остаточным сюжетом здесь . АКФ остатков предполагает достаточность, Обратите внимание, что 5 импульсов, которые были идентифицированы, имели очень маленький эффект и могли легко игнорироваться (в этом случае!). Таким образом, урок, полученный здесь, заключается в том, что иногда у нас слишком много данных, и нам необходимо учитывать коэффициенты изменения времени. В этом случае мы определяем изменение параметров, которое (по-видимому) не оказывает существенного влияния на результирующую модель / параметры, но указывает на обычно необходимое улучшение процесса анализа временных рядов. Мой опыт работы с auto.arima показывает, что, поскольку он явно не лечит и не устраняет нарушения Гаусса, он склонен к чрезмерной модели, полагаясь на исторические ценности, а не извлекая структуру из данных. В этом случае, поскольку это было строго контролируемое моделирование без гауссовских нарушений, оно работало, но я, как правило, подозреваю такой подход с ограниченным и одношаговым подходом к идентификации модели ARIMA. Доверяй, но проверяй !
источник
Akaike_information_criterion говорит, что ехр( А яСм я н - А я Ся) / 2
«можно интерпретировать как относительную вероятность того, что i-я модель минимизирует (оценочную) потерю информации».
Если это так, это поможет пользователям увидеть эти относительные вероятности вместе с AIC (?) Из
auto.arima( ... trace=TRUE )
. Например, данные яйца запускаются, как в этом вопросе даетисточник