Rozszerzony test dickey-fuller w pythonie (z przykładem)


Szereg czasowy nazywa się „stacjonarnym”, jeśli nie ma trendu, wykazuje stałą wariancję w czasie i ma stałą strukturę autokorelacji w czasie.

Jednym ze sposobów sprawdzenia, czy szereg czasowy jest stacjonarny, jest wykonanie rozszerzonego testu Dickeya – Fullera , w którym wykorzystuje się następujące hipotezy zerowe i alternatywne:

H 0 : Szereg czasowy jest niestacjonarny. Innymi słowy, jego struktura zależy od czasu, a jego zmienność nie jest stała w czasie.

H A : Szereg czasowy jest stacjonarny.

Jeśli wartość p testu jest poniżej pewnego poziomu istotności (np. α = 0,05), wówczas możemy odrzucić hipotezę zerową i stwierdzić, że szereg czasowy jest stacjonarny.

Poniższy przykład pokazuje krok po kroku, jak wykonać rozszerzony test Dickeya-Fullera w Pythonie dla danego szeregu czasowego.

Przykład: rozszerzony test Dickeya-Fullera w Pythonie

Załóżmy, że mamy w Pythonie następujące dane szeregów czasowych:

 data = [3, 4, 4, 5, 6, 7, 6, 6, 7, 8, 9, 12, 10]

Przed wykonaniem rozszerzonego testu Dickeya-Fullera na danych możemy stworzyć szybki wykres w celu wizualizacji danych:

 import matplotlib. pyplot as plt

plt. plot (data) 

Aby wykonać rozszerzony test Dickeya-Fullera, możemy użyć funkcji adfuller() z biblioteki statsmodels . Najpierw musimy zainstalować statsmodels:

 pip install statsmodels

Następnie możemy użyć następującego kodu, aby wykonać rozszerzony test Dickeya-Fullera:

 from statsmodels. tsa . stattools import adfuller

#perform augmented Dickey-Fuller test
adfuller(data)

(-0.9753836234744063,
 0.7621363564361013,
 0,
 12,
 {'1%': -4.137829282407408,
  '5%': -3.1549724074074077,
  '10%': -2.7144769444444443},
 31.2466098872313)

Oto jak interpretować najważniejsze wartości wyniku:

  • Statystyka testowa: -0,97538
  • Wartość P: 0,7621

Ponieważ wartość p jest nie mniejsza niż 0,05, nie możemy odrzucić hipotezy zerowej.

Oznacza to, że szereg czasowy nie jest stacjonarny. Innymi słowy, jego struktura jest zależna od czasu i jej zmienność nie jest stała w czasie.

Dodatkowe zasoby

Jak wykreślić szereg czasowy w Matplotlib
Jak wykreślić wiele serii z ramki danych Pandas
Jak wykonać test trendu Manna-Kendalla w Pythonie

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *