Làm cho chuỗi thời gian dừng

Mô hình ARIMA với Python

James Fulton

Climate informatics researcher

Tổng quan

  • Kiểm định tính dừng
  • Làm dữ liệu trở nên dừng
Mô hình ARIMA với Python

Kiểm định Augmented Dickey–Fuller

  • Kiểm định không dừng do xu hướng
  • Giả thuyết không: chuỗi không dừng
Mô hình ARIMA với Python

Áp dụng kiểm định adfuller

from statsmodels.tsa.stattools import adfuller

results = adfuller(df['close'])
Mô hình ARIMA với Python

Diễn giải kết quả kiểm định

print(results)
(-1.34, 0.60, 23, 1235, {'1%': -3.435, '5%': -2.913, '10%': -2.568}, 10782.87)
  • Phần tử 0 là thống kê kiểm định (-1.34)
    • Càng âm càng có khả năng dừng
  • Phần tử 1 là p-value (0.60)
    • p-value nhỏ $\rightarrow$ bác bỏ H0. Bác bỏ không dừng.
  • Phần tử 4 là các ngưỡng tới hạn
Mô hình ARIMA với Python

Diễn giải kết quả kiểm định

print(results)
(-1.34, 0.60, 23, 1235, {'1%': -3.435, '5%': -2.863, '10%': -2.568}, 10782.87)
  • Phần tử 0 là thống kê kiểm định (-1.34)
    • Càng âm càng có khả năng dừng
  • Phần tử 1 là p-value (0.60)
    • p-value nhỏ $\rightarrow$ bác bỏ H0. Bác bỏ không dừng.
  • Phần tử 4 là các ngưỡng tới hạn
1 https://www.statsmodels.org/dev/generated/statsmodels.tsa.stattools.adfuller.html
Mô hình ARIMA với Python

Giá trị của việc vẽ biểu đồ

  • Vẽ chuỗi thời gian giúp tránh suy luận sai
Mô hình ARIMA với Python

Giá trị của việc vẽ biểu đồ

Mô hình ARIMA với Python

Làm cho chuỗi thời gian dừng

Mô hình ARIMA với Python

Lấy hiệu sai (difference)

Hiệu sai: $\Delta y_t = y_t - y_{t-1}$

Mô hình ARIMA với Python

Lấy hiệu sai (difference)

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
Mô hình ARIMA với Python

Lấy hiệu sai (difference)

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
Mô hình ARIMA với Python

Lấy hiệu sai (difference)

Mô hình ARIMA với Python

Biến đổi khác

Ví dụ biến đổi khác

  • Lấy log
    • np.log(df)
  • Lấy căn bậc hai
    • np.sqrt(df)
  • Lấy thay đổi tỷ lệ
    • df.shift(1)/df
Mô hình ARIMA với Python

Ayo berlatih!

Mô hình ARIMA với Python

Preparing Video For Download...