Jak ustatyczniać szeregi czasowe

Modele ARIMA w Pythonie

James Fulton

Climate informatics researcher

Przegląd

  • Testy statystyczne stacjonarności
  • Ustatycznianie zbioru danych
Modele ARIMA w Pythonie

Rozszerzony test Dickeya-Fullera

  • Testy niestacjonarności trendowej
  • Hipoteza zerowa: szereg czasowy jest niestacjonarny
Modele ARIMA w Pythonie

Stosowanie testu adfuller

from statsmodels.tsa.stattools import adfuller

results = adfuller(df['close'])
Modele ARIMA w Pythonie

Interpretacja wyników testu

print(results)
(-1.34, 0.60, 23, 1235, {'1%': -3.435, '5%': -2.913, '10%': -2.568}, 10782.87)
  • Element 0: statystyka testowa (-1.34)
    • Im bardziej ujemna, tym większe prawdopodobieństwo stacjonarności
  • Element 1: p-wartość (0.60)
    • Mała p-wartość $\rightarrow$ odrzucamy hipotezę zerową. Odrzucamy niestacjonarność.
  • Element 4: krytyczne wartości testowe
Modele ARIMA w Pythonie

Interpretacja wyników testu

print(results)
(-1.34, 0.60, 23, 1235, {'1%': -3.435, '5%': -2.863, '10%': -2.568}, 10782.87)
  • Element 0: statystyka testowa (-1.34)
    • Im bardziej ujemna, tym większe prawdopodobieństwo stacjonarności
  • Element 1: p-wartość (0.60)
    • Mała p-wartość $\rightarrow$ odrzucamy hipotezę zerową. Odrzucamy niestacjonarność.
  • Element 4: krytyczne wartości testowe
1 https://www.statsmodels.org/dev/generated/statsmodels.tsa.stattools.adfuller.html
Modele ARIMA w Pythonie

Wartość wizualizacji

  • Wizualizacja szeregów czasowych pomaga uniknąć błędnych założeń
Modele ARIMA w Pythonie

Wartość wizualizacji

Modele ARIMA w Pythonie

Ustatycznianie szeregu czasowego

Modele ARIMA w Pythonie

Różnicowanie

Różnica: $\Delta y_t = y_t - y_{t-1}$

Modele ARIMA w Pythonie

Różnicowanie

df_stationary = df.diff()
            city_population
date                       
1969-09-30              NaN
1970-03-31        -0.116156
1970-09-30         0.050850
1971-03-31        -0.153261
1971-09-30         0.108389
Modele ARIMA w Pythonie

Różnicowanie

df_stationary = df.diff().dropna()
            city_population
date                       
1970-03-31        -0.116156
1970-09-30         0.050850
1971-03-31        -0.153261
1971-09-30         0.108389
1972-03-31        -0.029569
Modele ARIMA w Pythonie

Różnicowanie

Modele ARIMA w Pythonie

Inne przekształcenia

Przykłady innych przekształceń

  • Logarytm
    • np.log(df)
  • Pierwiastek kwadratowy
    • np.sqrt(df)
  • Zmiana proporcjonalna
    • df.shift(1)/df
Modele ARIMA w Pythonie

Czas na ćwiczenia!

Modele ARIMA w Pythonie

Preparing Video For Download...