poniedziałek, 1 stycznia 2018

Czy ARMA estymować warunkową metodą największej wiarygodności?

W programach ekonometrycznych powszechnie znajdujemy dwie metody estymacji procesu ARMA: dokładną metodę największej wiarygodności (MNW) oraz warunkową metodę największej wiarygodności (CMNW)*. Którą wybrać? Dowiedziono, że MNW jest efektywniejsza w tym sensie, że parametr oszacowany tą metodą posiada mniejszą wariancję, tj. odchylenie od wartości oczekiwanej (oszacowanego) parametru jest mniejsze [1]. Jednakże istnieją 2 powody, dla których warto używać CMNW. Po pierwsze Andersen [1] wykazał, że różnica pomiędzy błędami standardowymi obydwu metod nie jest duża. Po drugie Neyman i Scott [2] pokazali, że gdy parametr zależy od nieznanych wariancji, które pochodzą z nieskończonej liczby populacji (to znaczy np. wariancja ciągle się zmienia w czasie), to MNW przestaje być estymatorem zgodnym (to znaczy prawdopodobieństwo, że w bardzo dużej próbie oszacowany parametr MNW będzie równy prawdziwemu parametrowi z populacji, nie równa się 1). Natomiast Andersen wykazał, że CMNW pozostaje w takiej sytuacji zgodny.

Ale zostawmy teorię na boku i przyjrzyjmy się prostemu przykładowi. Wrócę do poprzedniego artykułu, w którym przykładowo analizowałem funkcję sinus z nałożonym szumem białym, 1000 obserwacji:



Normalnie zawsze sprawdzamy przed estymacją niestacjonarność, aby usunąć pozorne trendy i korelacje. Stwierdziłem już, że proces cykliczny może być uznany za stacjonarny chociaż intuicyjnie wydaje się to nieprawidłowe. Taka sinusoida zawiera po prostu silne autokorelacje, a same autokorelacje nie są warunkiem wystarczającym do niestacjonarności. Gdybyśmy potraktowali ten proces jako stacjonarny, wtedy moglibyśmy użyć modelu ARMA(p, q) w Gretlu. Aby odnaleźć właściwe rzędy opóźnień p i q,  użyjemy dodatku armax w Gretlu, o którym pisałem tutaj. Dodatek pozwala wybrać MNW lub CMNW. Dla MNW działa wolno przy ustawieniu dużych maksymalnych poziomów p i q. Dla CMNW działa bardzo szybko, co stanowi dodatkowy walor tej metody. Zróbmy więc eksperyment dla MNW i CMNW.

MNW: Ustawmy w armax maksymalne rzędy p = 10 i q = 10. Te wartości wynikają z tego, że gdy potem chcemy użyć modelu ARIMA (już poza dodatkiem), to na obecną chwilę maksymalnymi rzędami AR i MA jest właśnie poziom 10. Upewniamy się, że jest ustawiona MNW (ML - maximum likelihood). Gdy dodatek armax zakończy pracę, musimy wybrać, wg którego kryterium będziemy szacować model. Na podstawie dwóch artykułów: Dla ARIMA najlepszym kryterium jest BIC? oraz  Nieprawda, że dla ARIMA najlepszym kryterium jest BIC. Nowy sprawdzian i prognoza WIG-u  wnioskujemy, że w ARIMA powinniśmy posługiwać się tylko HQC i BIC (kolejność ma znaczenie). Obydwa kryteria wskazały, że optymalnym wyborem jest p = 10 i q = 1. Wracamy więc teraz do ARIMA i używamy tych rzędów, przy czym pamiętamy, żeby ustawić d = 0 oraz MNW. Otrzymujemy wyniki i konstruujemy prognozę:



CMNW: Jeszcze raz wchodzimy do armaxa, upewniamy się, że max p = 10 i max q = 10 i dodatkowo zaznaczamy CMNW (CML - conditional maximum likelihood). Uzyskany mówi, że dla HQC optymalnym wyborem jest p = 4 i q = 3. Wobec tego wracamy do ARIMA i zmieniamy rzędy, tak aby estymować model ARIMA(4, 0, 3), czyli ARMA(4, 3). Następnie zmieniamy ustawienie MNW na CMNW.  Dostajemy wyniki i konstruujemy prognozę:



Gdy pierwszy raz to robiłem, byłem zdziwiony, że CMNW tak dokładnie odwzorowało funkcję sinus tylko na podstawie danych historycznych. CMNW może okazać się znacznie lepsza dla długoterminowych (niestacjonarnych) prognoz.

Należy tu jeszcze zwrócić uwagę, że gdy w armax zwiększymy maksymalne poziomy rzędów, np. do 12, to MNW się zmieni i wskaże p = 12 i q = 1, natomiast przy CMNW optimum zostaje zachowane - ciągle p =4 i q = 3. Wynika to z tego, że MNW wymaga dokładnej liczby parametrów, aby dać najlepsze możliwe wyniki, a CMNW potrafi sobie poradzić bez nich, wykorzystując pewne przybliżenia. Spodziewałbym się, że ze względu na cykliczność 200 rzędów w tym przypadku, MNW do tego poziomu właśnie zmieniałaby się, doprowadzając do globalnego optimum p = 200 i q = 1. Tutaj zaznaczam jednak, że to tylko moje przypuszczenie.

Funkcja sinus jest prosta, więc spróbujmy jeszcze przetestować bardziej skomplikowaną funkcję fraktalną, w której na sinus nakładamy mniejszy sinus i na ten mniejszy sinus nakładamy szum biały:




Powtórzmy eksperyment z poprzednich kroków.

MNW:  Dodatek Armax wskazał (dla wszystkich kryteriów) p = 3 i q = 10. Prognoza:



W długim terminie prognoza jest zbyt wygasająca.

CMNW: Armax pokazał (dla wszystkich kryteriów) p = 7 i q = 7. Prognoza:


Prognoza fantastyczna. CMNW niesamowicie dobrze prognozuje długoterminowe skomplikowane zmiany sinusoidalne tylko na podstawie historii.

CMNW okazuje się nie tylko dużo bardziej dokładna dla długoterminowych prognoz skomplikowanych wzorów ale także jest praktyczniejsza, bo dużo szybsza. Wynika z tego, że warto się tą metodą posługiwać.

 W takim razie spróbujmy wykorzystać CMNW do długoterminowej prognozy kwartalnego PKB od 4 kwartału 2017 do 4 kwartału 2021 r. Dane historyczne pochodzą z bazy GUS - kwartalnych zmian PKB z okresu 1.2003-3.2017. Przedstawię dwie prognozy - wg kryterium HQC oraz BIC. Prognozy wykonane analogicznie jak wyżej. Nie sprawdzamy więc stacjonarności, tylko od razu zakładamy d = 0 (tj. ARMA).

 -HQC (daje nieco lepsze dostosowania dla procesu ARMA): optymalny model = ARMA(8, 0):



 -BIC (lepiej wykrywa błądzenie przypadkowe - tutaj go z pewnością jednak nie ma): optymalny model = ARMA(5, 0):



Obydwa kryteria sygnalizują, że jeszcze 4 kwartał 2017 będzie bardzo dobry, natomiast od 2018 nastąpi deprecjacja i osłabienie gospodarczego wzrostu aż do końca roku.

* Metoda najmniejszych kwadratów (MNK) nie jest stosowana, bo się okazuje tutaj gorsza, opierając się tylko na historycznych danych. Podczas gdy MNW wykorzystuje dodatkowo teoretyczny rozkład prawdopodobieństwa - zob. [3] oraz [4]. Beach [5] także wykazał empirycznie, że MNW jest dla ARMA bardziej efektywna od MNK.  


 Literatura:
[1] Andersen, E. B., Asymptotic Properties of Conditional Maximum-Likelihood Estimators, 1970;
[2] Neyman, J., Scott, E. L., Consistent Estimates Based on Partially Consistent Observations, Jan. 1948;
[3]  Osborn, D. R., Maximum Likelihood Estimation of Moving Average Processes, 1976;
[4] Osborn, D. R.,  On the Criteria Functions used for the Estimation of Moving Average Processes, Jun., 1982;
[5] Beach, C. M., MacKinnon, J. G., A Maximum Likelihood Procedure for Regression with Autocorrelated Errors, Jan. 1978.

środa, 27 grudnia 2017

Jakie opóźnienie stosować w KPSS i ADF-GLS?

Testując stacjonarność szeregów czasowych w Gretlu natrafiamy na opcjonalne ustawienie maksymalnego opóźnienia wariancji (z próbki) błędu modelu regresji. Powstaje pytanie czy możemy manewrować tym opóźnieniem. Odpowiedź zależy od tego czy chcemy zbadać cykliczność czy samą tylko zmianę parametrów rozkładu szeregu czasowego. Z tego punktu widzenia artykuł podzieliłem na dwie części.

CZĘŚĆ 1: cykliczność:
Samo opóźnienie wariancji najłatwiej zrozumieć obrazowo. Skonstruujmy funkcję sinus z nałożonym białym szumem, niech będzie 1000 obserwacji:


Testując niestacjonarność tego procesu, okazuje się, że przy automatycznych ustawieniach Gretla standardowe testy jak ADF, ADF-GLS i KPSS nie odróżniają go od procesu stacjonarnego. Dlaczego? Dlatego, że dla nich ten proces jest to po prostu ARMA o dalekich rzędach autokorelacji. Procesy ARMA są procesami stacjonarnymi i w tym sensie można rozumieć, że przedstawiona próba jest stacjonarna. Jej funkcja autokorelacji wygląda następująco:


I tak testując KPSS, przy standardowych ustawieniach, lag truncation = 7, dostaniemy:


Czyli tak jak mówiłem proces został uznany za stacjonarny. Przy zwiększaniu czy zmniejszaniu tego poziomu sytuacja się zbytnio nie zmienia. Dopiero jeśli opóźnienie l zwiększymy do poziomu, który będzie odpowiadał długości okresu cyklu, tj. l = 200, sytuacja się zmienia. Dostaniemy wtedy:


Statystyka testu > 0,35, a więc proces zostaje teraz uznany za zmienny w czasie na poziomie 10% istotności. Podobny rezultat dostaniemy gdy użyjemy ADF-GLS. Wynika z tego, że l można traktować jako długość cyklu. A skoro tak, to znaczy, że precyzyjnie możemy oszacować wielkość l za pomocą periodogramu czy spektrum. W Gretlu używając periodogramu w skali logarytmicznej dostaniemy:


Najwyższa wartość na osi rzędnej odpowiada najwyższej częstotliwości (gęstości prawdopodobieństwa) sygnału. Te wartości można przeanalizować w tabeli:


Zaznaczyłem największą częstotliwość, tj. gęstość spektralną, z tabeli = 3,5. Sama ta wielkość nie jest dla nas istotna. Ważne, że odpowiada ona długości okresu = 200 (górna oś wykresu), co oznacza, że występuje 5 razy (1000 danych / 200 = 5). Czyli 5 jest to częstość cyklu, tj. mówi ile razy "zdarzenie cyklu" występuje w całej próbie (dolna oś wykresu). W takim telegraficznym skrócie przy okazji nauczyliśmy się analizy spektralnej.

Kiedy już wiemy czym jest opóźnienie w testach na niestacjonarność, możemy sami zacząć eksperymentować na danych ekonomicznych. Powrócę do CMR, którego ostatnio testowałem:



Stwierdziłem wtedy, że zmiany CMR są stacjonarne, jednak nie zmieniałem w ogóle ustawień l. Spójrzmy więc na periodogram zmian CMR:



Na pierwszy rzut oka wybijają się dwie długości okresów: 3 oraz 11. Można by sądzić, że występuje jakiś 3-dniowy oraz 11-dniowy cykl. Oznaczałoby to, że powinniśmy przetestować l = 3 oraz l = 11. Jednakże zastosowanie obydwu parametrów w KPSS (a także w ADF-GLS) nie zmieniło w ogóle wyników, co zaprzecza cykliczności, a to co jest widoczne na spektrum to prawdopodobnie jest przypadek. Nie jest to pewne, możliwe, że KPSS i ADF-GLS czegoś nie uwzględniają, bo jest mnóstwo różnych innych testów na wykrywanie cykli. Z drugiej strony zawsze trzeba mieć porównanie ze zwykłym ruchem Browna. Oto przykład periodogramu dla tego ruchu:




CZĘŚĆ 2: zmiana parametrów w dowolnym momencie:
W poprzednim poście stworzyłem proces niestacjonarny w ten sposób, że dla kilkuset danych procesu stacjonarnego od pewnego momentu zwiększyłem stopę zwrotu o różne poziomy: 0,1, 0,2 i 0,3 pktów proc. Test KPSS zaczął wykrywać zmienną strukturę procesu dla 0,3 pkt proc., jednak już 0,2 sugerowało, że proces może być niestacjonarny. Wówczas nie zmieniałem automatycznych ustawień testu, dla których opóźnienie l wyniosło 7. Gdybym zwiększył l do 21, statystyka testu jeszcze bardziej by wzrosła, do ponad 30, a więc jeszcze bardziej zbliżyłoby to do prawidłowej oceny. Gdybym jednak zwiększył l na przykład do 44, statystyka by spadła do 26. Przy l = 100, spadłaby do 23. Przy maksymalnym możliwym l (który byłby równy połowie wielkości próby), statystyka znów rośnie do 31.

Kwiatkowski et al. [1] dokładnie analizują różne poziomy opóźnienia i stwierdzają, że zbyt duża wartość obniża moc testu. W jaki sposób wybierają właściwy poziom? Używają oni w testach oddzielnie l0 = 0 oraz dodatkowo dwóch wzorów:

oraz

gdzie int() oznacza liczbę całkowitą z (), zaokrągloną w dół. T - liczba danych.

Zauważają, że przy mniejszych próbkach, powiedzmy do 200, l4 ma większą moc, natomiast l12 staje się lepszy przy większych próbach, powiedzmy powyżej 200. Przy występowaniu autokorelacji najgorszym wyborem jest l = 0.

I teraz uwaga: Gretl w KPSS używa wzoru na l4, natomiast w ADF-GLS używa l12 - to stąd ten automatyczny wybór. Gdy użyjemy w KPSS l12 dla próby CMR, to wtedy l12 = 21. I rzeczywiście wtedy statystyka wzrasta do ponad 30, jest to więc lepszy wybór niż automatycznie wybrany przez Gretla. Myślę, że tutaj twórcy mogliby poprawić algorytm w ten sposób, że dla T > 200, należy zastosować l12.

Możemy jeszcze sprawdzić co się stanie w odwrotnej sytuacji, tj. dla błądzenia przypadkowego. Przetestujmy dwie sytuacje: dla niedużej oraz dużej próby.

A) Weźmy taką próbę błądzenia przypadkowego z T = 51


Gretl ustawił l4 = 3, wtedy dla różnic poziomów otrzymamy


Użyjmy teraz l12 = 10. Wynik:


Jak się okazuje, test ciągle prawidłowo działa. Zastosujmy jednak maksymalny możliwy l, który wyniesie 25:


A więc test błędnie przyjmuje niestacjonarność skoro 0,39 > 0,351. Dowodzi to, że rzeczywiście nie można przyjmować maksymalnego opóźnienia.

B) Błądzenie przypadkowe z T = 398. Specjalnie wybrałem taki przypadek, gdzie w połowie próby "trend" się odwraca. Tutaj dochodzi jeszcze widoczna mniejsza zmienność przy spadkach, która przypomina nam bessę giełdową, gdy spadki są silne i jakby nieprzerwane:


Gretl ustawił l4 = 5, wtedy dla różnic poziomów otrzymamy


Zatem KPSS tym razem nie sprawdza się dla l4, przynajmniej na poziomie 10% istotności.

Użyjmy teraz l12 = 16. Wynik:


Tym razem l12 okazuje się lepszy, bo test nie odrzuca stacjonarności na poziomie 10%, chociaż jest blisko.

Czyli rzeczywiście dla większej liczby, np. powyżej 200 danych, należy użyć l12, aby nie wyciągnąć błędnych wniosków.

Nie oznacza to jednak, że KPSS zawsze super działa i nigdy się nie myli. Mimo naocznej zmiany kierunku w połowie zakresu, to ostatnie 100 danych ruchu Browna zatrzymuje kierunek wzrostu. Usuńmy te dane i sprawdźmy co wtedy:


Dla l4 = 5

Dla l12 = 15:


A więc test odrzuca stacjonarność nawet na poziomie 5%. Popełnilibyśmy więc błąd, bo bylibyśmy pewni, że mamy do czynienia z prawdziwym trendem rosnącym; prognozowalibyśmy zapewne dalsze zwyżki, weszlibyśmy na rynek i skończylibyśmy ze stratami albo najwyżej wyszlibyśmy na zero.

Natomiast gdybyśmy użyli tutaj ADF-GLS z automatycznym wyborem l12 = 15, to uzyskalibyśmy:



Test ten działa na odwrót, tzn. hipoteza zerowa to niestacjonarność. Skoro więc p = 0, to znaczy, że ADF-GLS odrzuca niestacjonarność. Test ten jest uogólnieniem ADF, jest więc od niego mocniejszy. Widać warto się nim wspomagać. KPSS i ADF-GLS uzupełniają się nazwzajem i przez to wzmacniają.

Literatura:
[1] Kwiatkowski, D., Phillips, P. C.B., Schmidt, P., Shin, Y., Testing the null hypothesis of stationarity against the alternative of a unit root, 1992.


DODATEK:

KPSS posługują się następującym estymatorem wariancji:

gdzie
T - długość próby;
w(s, l) - funkcja determinująca wielkość okna spektralnego - w tym przypadku okna Barletta:


e(t) - reszty modelu regresji, która jest testowana: y(t) = a + y(t-1) + e(t).
t - jednostka czasu;
l - opóźnienie, o którym mowa w artykule.

Powyżej opisany estymator przybliża długo-terminową wariancję błędów regresji:

gdzie: