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: