Чи ідентифіковані моделі auto.arima () парсимонічні?


13

Я намагався вивчити та застосувати моделі ARIMA. Я читав чудовий текст про ARIMA Pankratz - Прогнозування за допомогою Univariate Box - Дженкінс Моделі: поняття та випадки . У тексті автор особливо наголошує на принципі парсизму у виборі моделей 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, яка ознака коефіцієнта ма має бути інтерпретована як -0,1391 -0,5912 -0,5491?
синоптик

з точки зору тексту Pankratz .. так! . Ви можете перевірити коріння полінома ма, щоб побачити, чи відповідають вони вимогам оберненості.
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, список (ar = 0,2, ma = 0,6), середнє = 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 тощо робить те, що ви просите їх зробити. Як я вже говорив вище, модельована серія може бути не тією, про яку ви просили, або, скоріше, не вдасться успішно визначити справжню серію з невеликого зразка, який ви взяли. У статистиці нічого, що тут мається на увазі, нічого, що ви отримаєте, модель TRUE. Оскільки статистик, якщо ви вважаєте, що серія переоснащена (скажімо, за попередніми знаннями), поставте обмеження на порядок пошуку термінів. Або використовувати 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 значень, введіть тут опис зображенняі ось введіть тут опис зображенняіз наступною статистикою введіть тут опис зображення. Фактичний / Підходящий та Прогноз тут введіть тут опис зображенняіз залишковим сюжетом введіть тут опис зображення. ACF залишків говорить про достатністьвведіть тут опис зображення. Зауважимо, що 5 виявлених імпульсів мали дуже малий ефект і їх можна було легко знехтувати (у цьому випадку!). Підводячи підсумок, тут засвоєно те, що іноді ми маємо занадто багато даних і нам потрібно враховувати коефіцієнти зміни часу. У цьому випадку ми виявляємо зміну параметрів, яка (мабуть) не має істотного впливу на модель / параметри, що виникають, але вказує на загально необхідне вдосконалення процесу аналізу часових рядів. Мій досвід роботи з auto.arima свідчить про те, що, оскільки воно явно не лікує / усуває гауссові порушення, воно, як правило, переосмислює, занадто багато спираючись на історичні цінності, а не вилучаючи структуру з даних. У цьому випадку, оскільки це було жорстко контрольоване моделювання без гауссових порушень, воно працювало, але я, як правило, підозрювався в такому пропускному режимі з обмеженим та однокроковим підходом до ідентифікації моделі ARIMA. Довіряйте, але перевіряйте!


0

 exp(AICminAICi)/2

Якщо це так, це допоможе користувачам побачити ці відносні ймовірності разом з 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
Це відповідь чи питання?
Тім

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