Як інтерпретувати та робити прогнозування за допомогою пакету tsoutliers та auto.arima


9

У мене є щомісячні дані з 1993 по 2015 рік і я б хотів зробити прогнозування цих даних. Я використовував пакет tsoutliers для виявлення людей, що втратили життя, але я не знаю, як продовжувати прогнозувати свій набір даних.

Це мій код:

product.outlier<-tso(product,types=c("AO","LS","TC"))
plot(product.outlier)

Це мій вихід із пакета tsoutliers

ARIMA(0,1,0)(0,0,1)[12]                    

Coefficients:
        sma1    LS46    LS51    LS61    TC133   LS181   AO183   AO184   LS185   TC186    TC193    TC200
      0.1700  0.4316  0.6166  0.5793  -0.5127  0.5422  0.5138  0.9264  3.0762  0.5688  -0.4775  -0.4386
s.e.  0.0768  0.1109  0.1105  0.1106   0.1021  0.1120  0.1119  0.1567  0.1918  0.1037   0.1033   0.1040
       LS207    AO237    TC248    AO260    AO266
      0.4228  -0.3815  -0.4082  -0.4830  -0.5183
s.e.  0.1129   0.0782   0.1030   0.0801   0.0805

sigma^2 estimated as 0.01258:  log likelihood=205.91
AIC=-375.83   AICc=-373.08   BIC=-311.19

 Outliers:
    type ind    time coefhat  tstat
1    LS  46 1996:10  0.4316  3.891
2    LS  51 1997:03  0.6166  5.579
3    LS  61 1998:01  0.5793  5.236
4    TC 133 2004:01 -0.5127 -5.019
5    LS 181 2008:01  0.5422  4.841 
6    AO 183 2008:03  0.5138  4.592
7    AO 184 2008:04  0.9264  5.911
8    LS 185 2008:05  3.0762 16.038
9    TC 186 2008:06  0.5688  5.483
10   TC 193 2009:01 -0.4775 -4.624
11   TC 200 2009:08 -0.4386 -4.217
12   LS 207 2010:03  0.4228  3.746
13   AO 237 2012:09 -0.3815 -4.877
14   TC 248 2013:08 -0.4082 -3.965
15   AO 260 2014:08 -0.4830 -6.027
16   AO 266 2015:02 -0.5183 -6.442

Це мій сюжет

У мене є і ці попереджувальні повідомлення.

Warning messages:
1: In locate.outliers.iloop(resid = resid, pars = pars, cval = cval,  :
  stopped when maxit was reached
2: In locate.outliers.iloop(resid = resid, pars = pars, cval = cval,  :
  stopped when maxit was reached
3: In locate.outliers.oloop(y = y, fit = fit, types = types, cval = cval,  :
  stopped when maxit was reached
4: In arima(x, order = c(1, d, 0), xreg = xreg) :
  possible convergence problem: optim gave code = 1
5: In auto.arima(x = c(5.77, 5.79, 5.79, 5.79, 5.79, 5.79, 5.78, 5.78,  :
  Unable to fit final model using maximum likelihood. AIC value approximated

Сумніви:

  1. Якщо я не помиляюся, пакет tsoutliers видалить виявлені нею залишки, і завдяки використанню набору даних із видаленими сторонами, це дасть нам найкращу модель arima, що підходить для набору даних, чи правильно це?
  2. Набір коригувальних рядів даних значно зміщується вниз за рахунок зняття зсуву рівня тощо. Чи це не означає, що якщо прогнозування буде виконано за скоригованою серією, вихід прогнозу буде дуже неточним, оскільки новітні дані вже перевищують 12, а скориговані дані зміщують його приблизно до 7-8.
  3. Що означає попереджувальні повідомлення 4 та 5? Це означає, що він не може робити auto.arima, використовуючи відрегульовану серію?
  4. Що означає [12] в ARIMA (0,1,0) (0,0,1) [12]? Це лише моя частота / періодичність мого набору даних, яку я встановлюю щомісяця? І чи це також означає, що і мій ряд даних є сезонним?
  5. Як виявити сезонність у наборі даних? Що стосується візуалізації сюжету часових рядів, я не можу побачити будь-яку очевидну тенденцію, і якщо я буду використовувати функцію розкладання, то припустимо, що існує тенденція сезону? Тож я просто вірю в те, що кажуть мені toutoutliers, де є сезонна тенденція, оскільки існує МА порядку 1?
  6. Як я продовжую робити прогнозування з цими даними після визначення цих людей?
  7. Як включити ці люди до інших моделей прогнозування - Експонентне згладжування, ARIMA, Модель струна, Випадкова прогулянка, тета? Я впевнений, що не можу видалити залишків, оскільки є зсув рівня, і якщо я візьму лише коригувані дані серії, значення будуть занадто малі, і що робити?

Чи потрібно мені додати цих випускників як регресора в auto.arima для прогнозування? Як це працює тоді?

Відповіді:


5

Ці коментарі занадто довгі ... таким чином, "ВІДПОВІДЬ"

  1. Ви помиляєтесь, що він не налаштовує, а потім ідентифікує ARIMA (як це робить AUTOBOX). Імовірно, він не передбачає коригування втручання, а потім поспішає ідентифікувати модель ARIMA, на яку може вплинути не лікування аномалій. Часто потрібно налаштувати як визначені користувачем причинно-наслідкові серії, так і / або неуточнену детерміновану структуру (видатки / зрушення рівня, сезонні імпульси, місцеві тенденції часу), перш ніж ідентифікувати структуру ARIMA. Дивіться цей приклад поганого дигнозу, який робить помилкою непотрібне розмежування вихідного ряду, тоді як справжній / правильний стан природи не потребує розрізнення. Нестаціонарність не обов'язково передбачає необхідність розмежування, але часто може запропонувати де-сенс для коригування зміни рівня / середнього

  2. Правильне прогнозування завжди робиться з оригінальної серії, тому прогноз повинен бути правдоподібним з огляду на історію.

  3. Я поняття не маю, оскільки цю процедуру активно не використовую. Я рекомендував це вам, тому що ви попросили безкоштовних рішень на базі r НЕ тому, що я вважав, що це добре чи достатньо, оскільки моделювання ARIMA - це ітеративний (багатоетапний) процес самоперевірки.

  4. модель припускає, що вважає, що дані мають сезонний компонент (12), але це може бути просто відображенням потреби в сезонному пульсі.

  5. поняття сезонного тренду в кращому випадку розпливчасте.

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


1
tu very much @ricardo
IrishStat

4

У пакеті "tsoutliers" реалізується процедура, описана в Chen and Li (1993) [1]. Опис пакету та процедура також наведені в цьому документі .

Якщо коротко, процедура складається з двох основних етапів:

  1. Виявлення аутлайнерів за обраною моделлю ARIMA.
  2. Виберіть та / або перевстановіть модель ARIMA, включаючи виявлені на попередньому етапі вилучення, та видаліть ті, які не значні в новому придатні.

Потім послідовність коригується для виявлених залишків, і етапи (1) і (2) повторюються, поки не буде виявлено більше залишків або до досягнення максимальної кількості ітерацій.


Перший етап (виявлення людей, що переживають людину) також є ітераційним процесом. В кінці кожної ітерації залишки з моделі ARIMA коригуються для залишків, виявлених на цій стадії. Процес повторюється до тих пір, поки не буде знайдено більше залишків або до досягнення максимальної кількості ітерацій (за замовчуванням 4 ітерації). Перші три попередження, які ви отримуєте, пов'язані з цим внутрішнім циклом, тобто етап закінчується після чотирьох ітерацій.

Ви можете збільшити цю максимальну кількість ітерацій через аргумент maxit.iloopу функції tso. Доцільно не встановлювати велику кількість ітерацій на першому етапі, а процес перейти на другий етап, де модель ARIMA буде перевстановлена ​​або обрана знову.


Попередження 4 і 5 стосуються процесу підгонки моделі ARIMA та обраної моделі відповідно для функцій stats::arimaта forecast:auto.arima. Алгоритм, який максимізує функцію ймовірності, не завжди сходить до рішення. Ви можете знайти деякі деталі, пов'язані з цими питаннями, наприклад, у цій публікації та в цій публікації


[1] Chung Chen та Lon-Mu Liu (1993) "Спільна оцінка модельних параметрів та зовнішніх ефектів у часових рядах", Журнал Американської статистичної асоціації , 88 (421), стор 284-297. DOI: 10.1080 / 01621459.1993.10594321 .


скільки часу буде потрібно для запуску tso ()?
Anoop Toffy

@AnoopToffy це залежить від тривалості даних, періодичності тощо. Щорічні, щомісячні, щоквартальні дані, розмір вибірки, що становить близько 120 спостережень, та динаміку, яку можна обґрунтовано зафіксувати моделлю ARIMA, алгоритм буде працювати не більше приблизно 10 секунд (як правило, набагато менше).
javlacalle
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.