niedziela, 20 sierpnia 2017

Nieprawda, że dla ARIMA najlepszym kryterium jest BIC. Nowy sprawdzian i prognoza WIG-u

Nawet jeśli BIC prawidłowo informuje o tym, że błądzenie przypadkowe jest faktycznie błądzeniem przypadkowym, to wcale nie oznacza jeszcze, że prawidłowo informuje czy proces ARMA jest procesem ARMA - i w dodatku odpowiedniego rzędu. Żeby się o tym przekonać, musimy wygenerować taki proces i wtedy poddać go testowi. Jednak zanim to zrobię, zrzucę dzienne dane WIG ze stooq.pl -  od 1.06.2006 do 18.08.2017 (1300 obserwacji, tyle samo co poprzednio ruchu Browna):



Testuję standardowo AR(1)-MA(1) w gretlu i dostaję:




Model sugeruje zastosowanie samego modelu MA, bo parametr AR(1) = phi_1 = -0,33 jest nieistotny, ale istotny pozostaje MA(1) = 0,41.


Aby sprawdzić czy ten model powinien zostać wybrany, wchodzę do dodatku armax w Gretlu (opisywanego w tym artykule), ustawiam np. max rząd = 12 (choć tak duża wartość sprawia, że trzeba długo czekać) dla części AR i MA i otrzymuję:




W tym zapisie p to rząd AR, zaś q to rząd MA. Jedynie BIC wskazuje, że najlepszym wyborem jest AR(0)-MA(1). Dla HQC najlepszy okazuje się AR(4)-MA(2), a dla AIC AR(8)-MA(6).

Jeszcze raz więc estymujemy ARIMA zgodnie z BIC, tym razem tylko MA(1). Dostaję:


theta_1 = 0,086.

Teraz wróćmy do wygenerowania procesu ARMA. Jak to zrobić? Na razie nie da się w Gretlu, więc skorzystamy z języka programowania R. Skoro zastosowany dla WIG model MA(1) dostarczył parametru 0,086, to również chcielibyśmy stworzyć taki proces dla tej samej liczby danych. Wygenerujmy 1300 losowej próby procesu MA(1). Aby to zrobić, można w panelu R wpisać przykładowo:

przyklad = arima.sim(n = 1300, list(ar = 0.0000001, ma = 0.086))

Aby zapisać te dane w formie kolumny w pliku csv wpiszemy:

przyklad = data.frame(przyklad)
write.csv(przyklad, file="przyklad.csv")

Plik zostanie zapisany najpewniej w folderze Dokumenty. Jeśli chcielibyśmy zmienić folder, np. na D:\ to przed kodem należy wpisać
setwd("D:/")
Ukośnik, który jest w drugą stronę, może być mylący.

Sam proces MA(1) jest to proces stacjonarny (tutaj skorelowany szum), więc żeby zobaczyć proces niestacjonarny, trzeba dodać do siebie obserwacje. Tak przekształcony proces ma w tym przypadku postać: 



Trzeba przyznać, że idealnie symuluje proces giełdowy.

Co mówi o nim dodatek armax? Znowu ustawiłem max p = 12 i q = 12.


Zaskoczenie. BIC błędnie wskazuje, że proces jest czysto losowy. Tym razem to HQC okazuje się najlepszy. AIC z kolei pokazuje jak zwykle dziwactwo - na grafice tego nie widać, bo jest zbyt duża do wklejenia - wyznacza p = 11 i q = 11.

Prawda okazuje się niejednoznaczna. O ile w pierwszej części testu BIC bezbłędnie sygnalizował błądzenie przypadkowe, o tyle tym razem przeszarżował. Wygląda na to, że to kryterium trochę zbyt restrykcyjnie ocenia proces jako nielosowy. Przypomnę, że mamy tu do czynienia z 1300-ma danymi, czyli nie powinno być już problemu długości próbki. Z drugiej strony wcześniej HQC rzadko, ale czasami mylnie sugerował, że ruch jest skorelowany. W tym teście prawidłowo się zachowuje.

W takim razie sprawdźmy model, który został wybrany przez HQC, tj. AR(4)-MA(2). Wyniki dla WIG są następujące:


Wszystkie współczynniki są istotne na poziomie 1%, co sugeruje, że rzeczywiście jest to dobry model.
Wykonajmy prognozę na następny tydzień, tj. na 21.08-25.08.2017:


Wg tej prognozy w poniedziałek będzie lekki wzrost, we wtorek zachmurzenie, a od środy nastąpi przejaśnienie.

Brak komentarzy:

Prześlij komentarz