Cara melakukan tes kausalitas granger dengan python
Uji kausalitas Granger digunakan untuk menentukan berguna atau tidaknya suatu rangkaian waktu dalam memprediksi rangkaian waktu lainnya.
Pengujian ini menggunakan hipotesis nol dan hipotesis alternatif berikut:
Hipotesis nol (H 0 ): deret waktu x tidak menyebabkan deret waktu y hingga Granger
Hipotesis alternatif ( HA ): Deret waktu x Deret waktu Granger menyebabkan y
Yang dimaksud dengan “penyebab Granger” adalah mengetahui nilai deret waktu x dengan lag tertentu berguna untuk memprediksi nilai deret waktu y pada periode selanjutnya.
Uji ini menghasilkan statistik uji F dengan nilai p yang sesuai. Jika nilai p berada di bawah tingkat signifikansi tertentu (yaitu α = 0,05), maka kita dapat menolak hipotesis nol dan menyimpulkan bahwa kita mempunyai bukti yang cukup untuk menyatakan bahwa deret waktu x Granger menyebabkan deret waktu y.
Kita dapat menggunakan fungsi grangercausalitytests() dari paket statsmodels untuk melakukan pengujian Granger-Causality dengan Python:
from statsmodels. tsa . stattools import grangercausalitytests #perform Granger-Causality test grangercausalitytests(df[[' column1 ', ' column2 ']], maxlag=[ 3 ])
Perhatikan bahwa maxlag menentukan jumlah lag yang akan digunakan dalam rangkaian waktu pertama.
Contoh langkah demi langkah berikut menunjukkan cara menggunakan fungsi ini dalam praktiknya.
Langkah 1: Muat data
Untuk contoh ini, kita akan menggunakan kumpulan data yang berisi nilai jumlah telur yang dibuat serta jumlah ayam di Amerika Serikat dari tahun 1930 hingga 1983:
import pandas as pd #define URL where dataset is located url = "https://raw.githubusercontent.com/Statorials/Miscellaneous/main/chicken_egg.txt" #read in dataset as pandas DataFrame df = pd. read_csv (url, sep=" ") #view first five rows of DataFrame df. head () year chicken egg 0 1930 468491 3581 1 1931 449743 3532 2 1932 436815 3327 3 1933 444523 3255 4 1934 433937 3156
Terkait: Cara Membaca File CSV dengan Pandas
Langkah 2: Lakukan uji kausalitas Granger
Selanjutnya, kita akan menggunakan fungsi grangercausalitytests () untuk melakukan uji kausalitas Granger untuk melihat apakah jumlah telur yang dihasilkan merupakan prediksi jumlah ayam di masa depan. Kami akan menjalankan pengujian menggunakan tiga offset:
from statsmodels. tsa . stattools import grangercausalitytests #perform Granger-Causality test grangercausalitytests(df[[' chicken ', ' egg ']], maxlag=[ 3 ]) Granger Causality number of lags (no zero) 3 ssr based F test: F=5.4050, p=0.0030, df_denom=44, df_num=3 ssr based chi2 test: chi2=18.7946, p=0.0003, df=3 likelihood ratio test: chi2=16.0003, p=0.0011, df=3 parameter F test: F=5.4050, p=0.0030, df_denom=44, df_num=3
Statistik uji F ternyata 5,405 dan nilai p yang sesuai adalah 0,0030 .
Karena nilai p kurang dari 0,05, kita dapat menolak hipotesis nol dari pengujian tersebut dan menyimpulkan bahwa mengetahui jumlah telur berguna dalam memprediksi jumlah ayam di masa depan.
Langkah 3: Lakukan Uji Kausalitas Granger secara Terbalik
Meskipun kami menolak hipotesis nol dari pengujian tersebut, pada kenyataannya ada kemungkinan bahwa kasus kausalitas terbalik dapat terjadi. Dengan kata lain, ada kemungkinan jumlah ayam menyebabkan perubahan jumlah telur.
Untuk mengesampingkan kemungkinan ini, kita perlu melakukan uji Kausalitas Granger secara terbalik, dengan menggunakan ayam sebagai variabel prediktor dan telur sebagai variabel respon :
from statsmodels. tsa . stattools import grangercausalitytests #perform Granger-Causality test grangercausalitytests(df[[' egg ', ' chicken ']], maxlag=[ 3 ]) Granger Causality number of lags (no zero) 3 ssr based F test: F=0.5916, p=0.6238, df_denom=44, df_num=3 ssr based chi2 test: chi2=2.0572, p=0.5606, df=3 likelihood ratio test: chi2=2.0168, p=0.5689, df=3 parameter F test: F=0.5916, p=0.6238, df_denom=44, df_num=3
Statistik uji F ternyata 0,5916 dan nilai p yang sesuai adalah 0,6238 .
Karena nilai p tidak kurang dari 0,05, kita tidak dapat menolak hipotesis nol. Dengan kata lain, jumlah ayam tidak dapat memprediksi jumlah telur di masa depan.
Dengan demikian, kita dapat menyimpulkan bahwa mengetahui jumlah telur berguna dalam memprediksi jumlah ayam di masa depan.
Sumber daya tambahan
Tutorial berikut menjelaskan cara melakukan tugas umum lainnya dengan deret waktu dengan Python:
Cara Membuat Plot Deret Waktu di Seaborn
Cara membuat plot deret waktu di Matplotlib