Causal Impact Menggunakan Python – Part 3

Pada modul ini kita akan membuat correlation matrix untuk data training. Namun sebelumnya mari kita pelajari konsep stationary.

Stationary

Definisi dari correlation adalah ukuran kuatnya hubungan antara dua variable.

Pada statistik, jika dua time series variable berkembang terhadap waktu, maka dapat disimpulkan correlation kemungkinan random. Sementara stationary adalah time series yang tidak dipengaruhi waktu.

Untuk menjelaskan konsep stationary, akan lebih mudah digunakan chart berikut:

Jadi dapat disimpulkan stationary time series:

  • memiliki mean, variance dan covariance yang tidak tergantung pada waktu.
  • memiliki pattern yang jelas, dimana mudah dipelajari dan di extrapolate.

Untuk mengetahui sebuah data stationary atau tidak, kita gunakan Dickey-Fuller Test, dimana jika p-value < 0.05 maka data time series adalah stationary.

Jika data tidak stationary (pada umumnya data tidak akan stationary), Anda dapat menggunakan method differencing percentage change yang akan kita bahas implementasinya dalam python berikut.

Mempersiapkan Matrix Correlation

df_training = df[df.index <= training_end]

Memeriksa Stationarity data

Seperti yang sudah dibahas diatas, kita akan menggunakan Dickey-Fuller untuk memeriksa stationarity data, untuk itu perlu kita import library yang digunakan.

from statsmodels.tsa.stattools import adfuller

test = adfuller(x = df_training.y)[1]

#how to read - ifelse
if test < 0.05:
  print("The Time Series is stationary")
else:
  print("The Time Series is not stationary")

Code diatas akan mengembalikan log bahwa The Time Series is not stationary.

Melakukan Differencing

Karena pada tahap sebelumnya kita ketahui data tidak stationary, kita akan gunakan differencing dengan method pct_change(). Perhatikan, differencing akan menghasilkan data Nan, karena itu perlu diikuti perintah dropna().

differencing = df_training.pct_change().dropna()

test = adfuller(x = differencing.y)[1]

if test < 0.05:
  print("The Time Series is stationary")
else:
  print("The Time Series is not stationary")

Setelah melakukan differencing, kita periksa lagi data. Kali ini data akan lolos test, yaitu data sudah stationary.

Membuat Correlation Matrix

Setelah melakukan data stationary, kita dapat membuat correlation matrix.

plt.figure(figsize = (8,6))
sns.set(font_scale = 1.2)
sns.heatmap(differencing.corr(),
            annot = True,
            fmt = '.1g',
            cmap = 'YlOrBr',
            center =  True,
            linewidth = 1,
            linecolor = 'black')
plt.show()

Dari matrix diatas, kita akan pilih semua yang memiliki nilai korelasi >= 0.3.

Pada modul berikutnya kita akan mulai melakukan Google Causal Impact dengan mempersiapkan data yaitu, drop data ZAL.DE karena memiliki nilai korelasi dibawah 0.3.

Sharing is caring: