Causal Impact Menggunakan Python – Part 2

Sebelum memulai modul ini, kita perlu perjelas beberapa asumsi berikut:

  • Parallel Trends Assumption, Treatment dan control groups diasumsikan memiliki evolusi KPI yang sama.
  • Cofounding Policy Change, Hanya ada satu policy atau initiative yang membedakan antara treatment dan control groups. Artinya disini kita hanya dapat mengukur 1 treatment. Karena policy ini juga, kita tidak menggunakan crytpo currency lainnya sebagai control group karena kemungkinan besar crypto tersebut dipengaruhi oleh pergerakan Bitcoin.

Untuk memperkuat asumsi diatas, ada beberapa hal yang dapat dilakukan:

  • Gunakan control lebih dari satu.
  • Gunakan training period yang lebih panjang.
  • Gunakan treatment period seminimum mungkin, memperkecil event lain yang mempengaruhi hasil.

Load Data Control Groups

Berdasarkan asumsi diatas kita akan load beberapa data stock menggunakan code dibawah:

stocks = ["ZAL.DE", "SQ", "CRSP", "TRMB", "JD", "DE", "KTOS", "GOOG"]
X = yf.download(tickers = stocks,
                start = training_start,
                end = end_stock,
                interval = "1d")

Mempersiapkan DataFrame

Selanjutnya kita akan mempersiapkan dataframe yang menggabungkan data bitcoin dan data stocks. Oleh karena itu kita perlu melakukan persiapan beberapa tahap yaitu:

  • Mengambil data adj close dari stocks.
  • Membuang level pada stocks.
  • Mengatur time zone

Setelah persiapan pada data stock telah dilakukan, kita bisa menggabungkan dengan perintah pd.concat, untuk menggabungkan data stock dengan bitcoin.

Digunakan juga perintah dropna() untuk membuang baris data yang memiliki Nan.

#mengambil data Adj Close
X = X.iloc[:, :len(stocks)]

#Removing level
X.columns = X.columns.droplevel()

#Time zones
X.index = X.index.tz_localize(None)

#Combine everything
df = pd.concat([y, X], axis = 1).dropna()
Sharing is caring: