Uwaga: Poniższy artykuł pomoże Ci w: Kompletny przewodnik po teście Dickeya-Fullera w analizie szeregów czasowych
Kiedy tworzymy model do celów prognostycznych w analizie szeregów czasowych, potrzebujemy stacjonarnego szeregu czasowego dla lepszego przewidywania. Tak więc pierwszym krokiem do pracy nad modelowaniem jest uczynienie szeregów czasowych stacjonarnymi. Testowanie stacjonarności jest często stosowaną czynnością w modelowaniu autoregresyjnym. Możemy wykonać różne testy, takie jak KPSS, Phillips-Perron i Augmented Dickey-Fuller. Ten artykuł jest bardziej skoncentrowany na teście Dickeya-Fullera. W artykule zobaczymy matematykę stojącą za testem i sposób, w jaki możemy go zaimplementować w szeregach czasowych.
Test ADF (Augmented Dickey-Fuller) jest testem istotności statystycznej, co oznacza, że test da wyniki w testach hipotez z hipotezami zerowymi i alternatywnymi. W rezultacie będziemy mieli wartość p, z której będziemy musieli wyciągać wnioski na temat szeregu czasowego, niezależnie od tego, czy jest on stacjonarny, czy nie.
Przed przystąpieniem do testu ADF musimy wiedzieć o teście pierwiastka jednostkowego, ponieważ test ADF należy do testu pierwiastka jednostkowego.
Test pierwiastka jednostkowego
Test pierwiastka jednostkowego sprawdza, czy szereg czasowy nie jest stacjonarny i czy składa się z pierwiastka jednostkowego w analizie szeregów czasowych. Obecność pierwiastka jednostkowego w szeregach czasowych definiuje hipotezę zerową, a hipoteza alternatywna definiuje szeregi czasowe jako stacjonarne.
Matematycznie test pierwiastka jednostkowego można przedstawić jako
Gdzie,
- Dt jest składową deterministyczną.zt jest składową stochastyczną.ɛt jest stacjonarnym procesem błędu.
Podstawową koncepcją testu pierwiastka jednostkowego jest określenie, czy zt (składnik stochastyczny) składa się z pierwiastka jednostkowego, czy nie.
Istnieją różne testy, które obejmują testy pierwiastka jednostkowego.
- Rozszerzony test Dickeya-Fullera. Test Phillipsa-Perrona. Test KPSS. Test ADF-GLS. Test Breuscha-Godfreya. Test Ljunga-Box. Test Durbina-Watsona.
Przejdźmy do naszego motywu, którym jest test Dickeya-Fullera.
Wyjaśnienie testu Dickeya-Fullera.
Prosty model AR można przedstawić jako:
Gdzie
- yt jest zmienną będącą przedmiotem zainteresowania w czasie tρ jest współczynnikiem, który definiuje pierwiastek jednostkowy jako szum lub może być traktowany jako składnik błędu.
Jeśli ρ = 1pierwiastek jednostkowy występuje w szeregu czasowym, a szereg czasowy jest niestacjonarny.
Jeśli model regresji można przedstawić jako
Gdzie
- Δ jest operatorem różnicowym.ẟ = ρ-1
Więc tutaj, jeśli ρ = 1co oznacza, że otrzymamy różnicę jako składnik błędu i jeśli współczynnik ma jakieś wartości mniejsze niż jeden lub większe niż jeden, zobaczymy zmiany zgodnie z wcześniejszą obserwacją.
Test może mieć trzy wersje.
- test na pierwiastek jednostkowy
- przetestuj pierwiastek jednostkowy ze stałą
- przetestować pierwiastek jednostkowy ze stałymi i deterministycznymi trendami w czasie
Więc jeśli szereg czasowy jest niestacjonarny, będzie miał tendencję do zwracania składnika błędu lub trendu deterministycznego z wartościami czasu. Jeśli szereg jest stacjonarny, będzie miał tendencję do zwracania tylko składnika błędu lub trendu deterministycznego. W stacjonarnych szeregach czasowych po dużej wartości zwykle następuje mała wartość, a po małej wartości następuje duża wartość. A w niestacjonarnym szeregu czasowym duża i mała wartość będą naliczane z prawdopodobieństwem, które nie zależy od bieżącej wartości szeregu czasowego.
Rozszerzony test Dickeya-Fullera jest rozszerzeniem testu Dickeya-Fullera, który usuwa z szeregów autokorelację, a następnie testy podobne do procedury testu Dickeya-Fullera.
Rozszerzony test pełniejszego Dickeya działa na statystyce, która daje liczbę ujemną, a odrzucenie hipotezy zależy od tej liczby ujemnej; bardziej ujemna wielkość liczby reprezentuje pewność obecności pierwiastka jednostkowego na pewnym poziomie w szeregu czasowym.
Stosujemy ADF na modelu i można go przedstawić matematycznie jako
Gdzie
- ɑ jest stałą ???? jest współczynnikiem w czasie. p jest rzędem opóźnienia procesu autoregresyjnego.
Tutaj, w matematycznej reprezentacji ADF, dodaliśmy terminy różnicujące, które wprowadzają zmiany między ADF a testem Dickeya-Fullera.
Następnie przeprowadza się test pierwiastka jednostkowego przy hipotezie zerowej ???? = 0 przeciw alternatywnej hipotezie ????
można ją porównać z odpowiednią wartością krytyczną dla testu Dickeya-Fullera. Test ma określony rozkład, znany po prostu jako tabela Dickeya-Fullera dla wartości krytycznych.
Kluczową kwestią do zapamiętania jest to, że: ponieważ hipoteza zerowa zakłada obecność pierwiastka jednostkowego, wartość p uzyskana w teście powinna być mniejsza niż poziom istotności (powiedzmy 00,05) do odrzucenia hipotezy zerowej. Wnioskując tym samym, że szereg jest stacjonarny.
Implementacja testu ADF
Aby wykonać test ADF w dowolnym pakiecie szeregów czasowych, statsmodel udostępnia funkcję implementacji adfuller().
Funkcja adfuller() udostępnia następujące informacje.
- Wartość-pWartość statystyki testowejLiczba opóźnień do rozważenia podczas testowaniaWartości krytyczne
W dalszej części artykułu przeprowadzimy test ADF z niestacjonarnymi danymi pasażerów linii lotniczych i stacjonarnymi danymi dotyczącymi temperatury.
Importowanie bibliotek:
z statsmodels.tsa.stattools importuj adfuller importuj pandy jako pd importuj numpy jako np
Odczyt danych linii lotniczych-pasażerów
path=”/content/drive/MyDrive/Yugesh/desezonowanie szeregów czasowych/AirPassengers.csv” data = pd.read_csv(ścieżka, index_col=”Miesiąc”)
Sprawdzanie niektórych wartości danych.
data.head()
Wyjście:
Wykreślanie danych.
data.plot(rozmiar_figury=(14,8), title=”seria danych dotyczących alkoholu”)
Wyjście:
Tutaj widzimy, że dane, których używamy, są niestacjonarne, ponieważ liczba pasażerów jest dodatnio zintegrowana z czasem.
Teraz, gdy mamy już wszystko, czego potrzebujemy, możemy przeprowadzić nasz test na szeregach czasowych.
Wyciąganie liczby pasażerów jako serii.
seria = dane[‘Passengers’].wartości serie
Wyjście:
Wykonanie testu ADF na serii:
# Wynik testu ADF = adfuller(seria, autolag=’AIC’)
Wyodrębnianie wartości z wyników:
print(‘Statystyka ADF: wynik %f’ %[0]) print(‘wartość-p: %f’ % wynik[1]) print(‘Wartości krytyczne:’) dla klucza, wartość w wyniku[4].items(): print(‘\t%s: %.3f’ % (klucz, wartość)) jeśli wynik[0] Wyjście:
Tutaj w wynikach widzimy, że wartość p dla szeregów czasowych jest większa niż 00,05 i możemy powiedzieć, że nie udało nam się odrzucić hipotezy zerowej, a szereg czasowy jest niestacjonarny.
Teraz sprawdźmy test dla danych stacjonarnych.
Ładowanie danych.
path=”/content/drive/MyDrive/Yugesh/LSTM Univarient Single Step Style/temprature.xlsx” data = pd.read_excel(ścieżka, index_col=”Date”)
Sprawdzanie niektórych wartości głównych danych:
data.head()
Wyjście:
Tutaj widzimy, że dane zawierają średnie wartości temperatur dla każdego dnia.
Wykreślanie danych.
data.plot(rozmiar_figury=(14,8), title=”seria danych o temperaturze”)
Wyjście:
Tutaj widzimy, że w danych większa wartość podąża za następną mniejszą wartością w całym szeregu czasowym, więc możemy powiedzieć, że szereg czasowy jest stacjonarny i sprawdzić to za pomocą testu ADF.
Ekstrakcja temperatury w serii.
seria = dane[‘Temp’].wartości serie
Wyjście:
Wykonywanie testu automatycznego podajnika dokumentów.
wynik = adfuller(seria, autolag=’AIC’)
Sprawdzanie wyników:
print(‘Statystyka ADF: wynik %f’ %[0]) print(‘wartość-p: %f’ % wynik[1]) print(‘Wartości krytyczne:’) dla klucza, wartość w wyniku[4].items(): print(‘\t%s: %.3f’ % (klucz, wartość)) jeśli wynik[0] > wynik[4][“5%”]: print(“Odrzucenie Ho – Szereg czasowy jest stacjonarny”) else: print(“Nie udało się odrzucić Ho – Szereg czasowy jest stacjonarny”)
Wyjście:
W wynikach widać, że wartość p uzyskana z testu jest mniejsza niż 0.05, więc odrzucimy hipotezę zerową „Szereg czasowy jest stacjonarny”, co oznacza, że szereg czasowy jest niestacjonarny.
W artykule widzieliśmy, dlaczego musimy wykonać test ADF i algorytmy, które stosują test ADF i Dickey-Fuller, aby wyciągać wnioski na temat dowolnych szeregów czasowych. Statsmodel to jeden z pakietów, który pozwala na wykonywanie wielu rodzajów testów i analiz dotyczących analizy szeregów czasowych.
Bibliografia: