Наслідки моделювання нестаціонарного процесу з використанням ARMA?


23

Я розумію, що ми повинні використовувати ARIMA для моделювання нестаціонарних часових рядів. Крім того, усе, що я читаю, говорить, що ARMA слід використовувати лише для стаціонарних часових рядів.

Що я намагаюся зрозуміти, це те, що відбувається на практиці, коли неправильно класифікують модель та припускають, d = 0що це нестаціонарний часовий ряд? Наприклад:

controlData <- arima.sim(list(order = c(1,1,1), ar = .5, ma = .5), n = 44)

дані управління виглядають приблизно так:

 [1]   0.0000000   0.1240838  -1.4544087  -3.1943094  -5.6205257
 [6]  -8.5636126 -10.1573548  -9.2822666 -10.0174493 -11.0105225
[11] -11.4726127 -13.8827001 -16.6040541 -19.1966633 -22.0543414
[16] -24.8542959 -25.2883155 -23.6519271 -21.8270981 -21.4351267
[21] -22.6155812 -21.9189036 -20.2064343 -18.2516852 -15.5822178
[26] -13.2248230 -13.4220158 -13.8823855 -14.6122867 -16.4143756
[31] -16.8726071 -15.8499558 -14.0805114 -11.4016515  -9.3330560
[36]  -7.5676563  -6.3691600  -6.8471371  -7.5982880  -8.9692152
[41] -10.6733419 -11.6865440 -12.2503202 -13.5314306 -13.4654890

Якщо припустити, що я не знав даних ARIMA(1,1,1), я, можливо, подивлюся pacf(controlData).

pacf (controlData)

Потім я використовую Dickey-Fuller, щоб перевірити, чи є дані нестаціонарними:

require('tseries')
adf.test(controlData)

# Augmented Dickey-Fuller Test
#
# data:  controlData
# Dickey-Fuller = -2.4133, Lag order = 3, p-value = 0.4099
# alternative hypothesis: stationary

adf.test(controlData, k = 1)

# Augmented Dickey-Fuller Test
#
#data:  controlData
# Dickey-Fuller = -3.1469, Lag order = 1, p-value = 0.1188
# alternative hypothesis: stationary

Отже, я можу припустити, що це дані ARIMA (2,0, *). Тоді скористайтеся, auto.arima(controlData)щоб спробувати найкраще підходити?

require('forecast')
naiveFit <- auto.arima(controlData)
naiveFit
# Series: controlData 
# ARIMA(2,0,1) with non-zero mean 
# 
# Coefficients:
#          ar1      ar2     ma1  intercept
#      1.4985  -0.5637  0.6427   -11.8690
# s.e.  0.1508   0.1546  0.1912     3.2647
#
# sigma^2 estimated as 0.8936:  log likelihood=-64.01
# AIC=138.02   AICc=139.56   BIC=147.05

Отже, хоча дані про минуле та майбутнє - це ARIMA (1,1,1), я міг би спокусити його класифікувати як ARIMA (2,0,1). tsdata(auto.arima(controlData))також добре виглядає.

Ось що знайде інформований моделер:

informedFit <- arima(controlData, order = c(1,1,1))
# informedFit
# Series: controlData 
# ARIMA(1,1,1)                    
#
# Coefficients:
#          ar1     ma1
#       0.4936  0.6859
# s.e.  0.1564  0.1764
#
# sigma^2 estimated as 0.9571:  log likelihood=-62.22
# AIC=130.44   AICc=131.04   BIC=135.79

1) Чому ці критерії інформації кращі, ніж обрана модель auto.arima(controlData)?

Тепер я просто графічно порівнюю реальні дані та дві моделі:

plot(controlData)
lines(fitted(naiveFit), col = "red")
lines(fitted(informedFit), col = "blue")

цП Ділянки

2) Граючи в захисника диявола, які наслідки я б заплатив, використовуючи ARIMA (2, 0, 1) як модель? Які ризики цієї помилки?

3) Мене найбільше турбують будь-які наслідки для багаторічних прогнозів вперед. Я припускаю, що вони були б менш точними? Я просто шукаю якісь докази.

4) Ви б запропонували альтернативний метод вибору моделі? Чи є якісь проблеми з моїми міркуваннями як "неінформований" моделер?

Мені дуже цікаво, які ще є наслідки такого роду невірних класифікацій. Я шукав джерела і просто нічого не міг знайти. Вся література, яку я міг знайти, стосується лише цього питання, замість того, щоб просто зазначити, що дані повинні бути нерухомими, перш ніж виконувати ARMA, а якщо це нестаціонарно, то це потрібно відрізняти в рази.

Спасибі!


Моє враження, що це аналогічно припущенню "ортогональних помилок" при регресії поперечного перерізу (тобто це зміщує стандартні помилки, але не коефіцієнти), але мені дуже цікаво почути фактичну відповідь.
shadowtalker

Відповіді:


11

Моє враження, що на це запитання немає унікальної, повністю загальної відповіді, тому я буду досліджувати лише найпростіший випадок, і трохи неформальний спосіб.

Припустимо, що справжній механізм генерування даних - з звичайний нульовий середній компонент білого шуму, . Сказане також означає, що це

(1)yt=yt1+ut,t=1,...,T,y0=0
utE(ut2)=σu2

(2)yt=i=1tui

Ми вказати модель, назвати його модельA

(3)yt=βyt1+ut,t=1,...,T,y0=0

і ми отримуємо оцінку для постульованої (обговоримо метод оцінки лише у разі потреби).β^β

Тож прогноз -ступець вперед будеk

(4)у^Т+к=β^куТ

і його MSE буде

МSЕА[у^Т+к]=Е(β^куТ-уТ+к)2

(5)=Е[(β^к-1)уТ-i=Т+1Т+куi]2=Е[(β^к-1)2уТ2]+кσу2

(середній член квадрата зникає, а також перехресні продукти майбутніх помилок).

Скажімо тепер, що ми різнили наші дані та вказали модельБ

(6)Δут=γΔут-1+ут

і отримали оцінку . Нашу відмінну модель можна записатиγ^

(7)ут=ут-1+γ(ут-1-ут-2)+ут

тож прогнозуючи рівень процесу, у нас буде

у^Т+1=уТ+γ^(уТ-уТ-1)

що насправді, враховуючи справжній DGP

(8)у^Т+1=уТ+γ^уТ

Легко перевірити то , що для моделі ,Б

у^Т+к=уТ+(γ^+γ^2+...+γ^к)уТ

Тепер ми обґрунтовано очікуємо, що, враховуючи будь-яку «перевірену і перевірену» процедуру оцінки, ми отримаємо оскільки її справжнє значення дорівнює , за винятком випадків, коли ми маємо занадто мало даних або в дуже «поганій» формі . Тож можна сказати, що в більшості випадків у нас буде|γ^|<10

(9)у^Т+к=уТ+γ^-γ^к+11-γ^уТ

і так

(10)МSЕБ[у^Т+к]=Е[(γ^-γ^к+11-γ^)2уТ2]+кσу2

поки я повторю для зручності

(5)МSЕА[у^Т+к]=Е[(β^к-1)2уТ2]+кσу2

Отже, для того, щоб розрізнена модель працювала краще в плані прогнозування MSE, ми хочемо

МSЕБ[у^Т+к]МSЕА[у^Т+к]

Е[(γ^-γ^к+11-γ^)2уТ2]Е[(β^к-1)2уТ2]

Як і в оцінці в моделі , ми надаємо таку ж ввічливість до оцінювача в моделі : ми справедливо очікуємо, що буде "близьким до одиниці". БАβ^

Очевидно, що якщо так трапиться, що , кількість у правій частині нерівності буде, як правило, збільшуватися без обмежень, оскільки , кількість кроків, що прогнозуються вперед, збільшуватиметься. З іншого боку, кількість лівої сторони бажаної нерівності може збільшуватися зі збільшенням , але має верхню межу . Таким чином , в цьому випадку, ми очікуємо , що різницева модель на виставку краще з точкою зору прогнозування СКО по порівнянні з моделлю . β^>1ккБА

Але припустимо більш вигідний для моделі випадок, де . Тоді величина правої частини також має обмежену форму. Тоді як ми повинні вивчити чиАβ^<1к

Е[(γ^1-γ^)2уТ2]Е[уТ2]=Тσу2??

( - це зручність - в реальності обидві величини будуть близькі до їх верховенства вже за малих значень ). кк

Зауважимо, що термін очікується, що "досить близький" до , тому модель має перевагу з цього аспекту. (γ^1-γ^)20Б

Ми не можемо відокремити залишилося очікуване значення, оскільки оцінювач не залежить від . Але ми можемо перетворити нерівність наγ^уТ

Ков[(γ^1-γ^)2,уТ2]+Е[(γ^1-γ^)2]σу2Тσу2??

Ков[(γ^1-γ^)2,уТ2](Т-Е[(γ^1-γ^)2])σу2??

Тепер очікується, що коваріація з лівого боку буде невеликою, оскільки оцінювач залежить від усіх помилок. З іншого боку нерівності походить від стаціонарного набору даних, і тому очікуване значення вищезгаданої функції від неї, як очікується, буде набагато меншим, ніж розмір вибірки (оскільки більше за цією функцією буде коливатися в ). Т γ (0,1)γ^Тγ^(0,1)

Таким чином, в цілому, не обговорюючи конкретного методу оцінки, я вважаю, що нам вдалося неофіційно показати, що розрізнену модель слід очікувати на кращу ефективність з точки зору MSE прогнозування.


1

Це гарне запитання.

Як я розумію, ви просто розглядали pacf, але цього недостатньо. ACF та PACF необхідні для вибору найкращої моделі.

З іншого боку, стаціонарні тести є слабкими та чутливими та потребують великої кількості відставань, щоб перевірити.

Крім того, бажано зробити часові ряди нерухомими перед застосуванням будь-якої моделі. Грубо кажучи, моделі ARIMA просто вважають особливий випадок нестаціонарності (бажано в тренді).

Що стосується ваших запитань, я не впевнений у функції auto.arima, але я впевнений, що кількість точок даних у вашому прикладі невелика. Імітаційна модель з використанням великої кількості точок даних добре відповість на ваші запитання. Також я раджу розглянути ACF часових рядів, а також PACF. Щодо вибору моделі правилом є вибір найпростішої моделі (зауважте, що найпростіша модель після створення часового ряду нерухомою).

Я посилаюсь на цю посилання. Ця книга не відповідає на всі ваші запитання, але дає вам декілька підказок.

----- додатковий розділ ------- @nsw з урахуванням тренду ваших даних. Якщо ви розглядаєте стаціонарну модель, це призводить до прогнозування вгору / вниз, але фактично моделі ARMA призначені для прогнозування плоских даних. Я змінив ваш код, щоб відобразити цю різницю:

вимагати ('прогноз')

вимагати ('tseries')

controlData <- arima.sim (список (порядок = c (1,1,1), ar = .5, ma = .5), n = 1000 )

ACF (controlData)

ts.plot (controlData)

naiveFit <- arima (controlData, order = c (2,0,1))

trueFit <- arima (controlData, order = c (1,1,1))

PrnaiveFit <-forecast.Arima (naiveFit, 10)

PrtrueFit <- прогноз.Аріма (trueFit, 10)

matplot (cbind (PrnaiveFit $ середнє значення, PrtrueFit $ середнє значення), type = 'b', col = c ('червоний', 'зелений'), ylab = c ('прогнозувати іон'), pch = c ('n', 't'))


1
Питання задає питання, чому вважають за краще "робити часові ряди нерухомими". Це насправді не відповідає на це питання.
тінькалкер

@ssdecontrol Взагалі ви праві. Мене справді більше турбують неявні наслідки для прогнозування після помилок. Але я не хочу надто сильно бити на Hamed.HM. Він все-таки звертався до мого останнього запитання про те, "це правильний спосіб вибору моделі?" Але тільки щоб ще раз зазначити, це найменше моє занепокоєння тут.
Кларк Генрі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.