Cara menggunakan acf python

Recipe Objective

To calculate lag values for the Autoregression (AR) and Moving Average (MA) parameters, p and q respectively in ARIMA modelling, ACF (Autocorrelation function) is used. It is the coorelation between observation of a time series separated by k time units.

So this recipe is a short example on What is ACF in ARIMA. Let's get started.

Learn Time Series Forecasting using ARIMA Model in Python

Step 1 - Import the library

import numpy as np import pandas as pd from statsmodels.graphics.tsaplots import plot_acf import matplotlib.pyplot as plt

Let's pause and look at these imports. Numpy and pandas are general ones. Here, plot_acf and plt will help is plotting of ACF pattern of ARIMA model.

Step 2 - Setup the Data

df = pd.read_csv('https://raw.githubusercontent.com/selva86/datasets/master/a10.csv', parse_dates=['date']).set_index('date')

Here, we have used one time series data from github. Also, we have set our index to date.

Now our dataset is ready.

Step 3 - Plotting ACF

plt.figure() plt.subplot(211) plot_acf(df, ax=plt.gca()) plt.show()

We have used plot_acf to simply plot our ACF model. By observing the plot, we can have an understanding of the lag between AR and MR terms of ARIMA model.

Step 4 - Lets look at our dataset now

Once we run the above code snippet, we will see:

Srcoll down the ipython file to visualize the results.

Clearly, an exponential decay in the seasonal pattern can be seen.

SARIMA merupakan salah satu metode time series yang memiliki ciri musiman di dalamnya. Pada artikel ARIMA dan SARIMA : Si Kembar dari Time Series, dijelaskan tentang perbedaan ARIMA dan SARIMA terutama dalam menentukan model yang akan diperoleh. Pengukuran model tersebut dengan melihat dari pola PACF dan ACF yakni dying down atau cut off. Sayangnya, penjelasan tersebut belum mencakup tentang bagaimana menentukan lag musiman yang terdapat di SARIMA.

Auto Correlation

Sebelum melangkah lebih jauh tentang penjelasan pola ACF di SARIMA, perlu dipahami bahwa auto correlation merupakan korelasi antar data di dalam time series tersebut yang dipisahkan dalam lag. Artinya, jika lag =2, maka nilai t akan dikorelasikan dengan t+2 (artinya data pertama akan dikorelasikan dengan data ketiga), jika  menggunakan lag=4, maka kemudian t akan dikorelasikan dengan t+4, begitu seterusnya. Hal ini biasanya ditulis dengan rumus korelasi (Xt , Xk+t) dengan k adalah jumlah lag dan t adalah nilainya.

Pada proses identifikasi ACF di minitab, secara default lagnya sama dengan 1. Kemudian pola nilainya akan digunakan untuk memperkirakan model ARIMA atau SARIMA.

Oleh sebab itu, jika data akan mengandung trend, maka hal ini tidak akan berguna. Karena nilai ACF nya akan signifikan atau tinggi di setiap data atau lagnya. Itu lah sebabnya diperlukan differencing untuk menghilangkan trend pada data tersebut hingga menjadi data stationer.

Partial Auto Correlation

Sama halnya auto correlation, PACF juga menghitung korelasi antar data di time series. Perbedaannya adalah jika ACF mencari korelasi antara Xt dan Xt+k ( k = lag), maka PACF juga menghitung korelasi antara Xt dan Xt+k namun sebelumnya menghilangkan data antara Xt dan Xt+k terlebih dahulu. Berarti data yang dihilangkan adalah data  Xt+1 sampai dengan Xt+k-1

Jika dilihat di website IBM, dijelaskan bahwa:

“Autocorrelation function (ACF). At lag k, this is the correlation between series values that are k intervals apart. Partial autocorrelation function (PACF). At lag k, this is the correlation between series values that are k intervals apart, accounting for the values of the intervals between”

Masih bingung? Jika saya menggunakan bahasa sendiri, kata kuncinya adalah kata parsial. PACF menghitung korelasi secara parsial antara nilai t dengan nilai t+k tanpa dipengaruhi nilai nilai diantaranya. Sedangkan ACF menghitung yang sama ( t dan t+k) namun masih memperhitungkan nilai nilai yang ada diantaranya secara keseluruhan data.

Bagaimana Identifikasi ACF dan PACF untuk SARIMA?

Agar lebih jelas, berikut adalah contoh dari dua grafik time series yang berbeda:

Cara menggunakan acf python
Grafik 01

Cara menggunakan acf python
Grafik 02

Grafik 01 dan 02 sama sama memiliki trend kenaikan. Namun pada gambar 01 memiliki musiman yang tidak dimiliki oleh gambar 2. Grafik 01 seolah ada pengulangan di setiap lag 5 atau 4. Sedangkan pola grafik 02 lebih random dan tidak bisa ditentukan.

Kita bisa simpulkan bahwa grafik 01 memiliki musiman, atau kita bisa menggunakan SARIMA, sedangkan grafik 02 tidak memilki musiman, menggunakan ARIMA. Keduanya perlu di differencing terlebih dahulu seperti yang ada di artikel Arima dan Sarima.

Melangkah lebih jauh, kita akan melihat perbedaan ACF dan PACF untuk kedua pola ini. Hasil nya dapat dilihat dibawah ini:

Cara menggunakan acf python
Nilai ACF dan PACF untuk Grafik 01.

Cara menggunakan acf python
Nilai ACF dan PACF untuk Grafik 02

Gambar 03 merupakan ACF dan PACF dari grafik 01. Sedangkan gambar 04 merupakan nilai ACF dan PACF dari grafik 02.

Perhatikan gambar 3. Nilai ACF dan PACF nya signifikan pada lag 1 kemudian lag 2 dan 3 tidak signifikan (nilainya masih di dalam interval/garis mendatar). Namun pada lag 4 terjadi signifikan kembali. Begitupun pada lag 8. Artinya bisa kita simpulkan bahwa terjadi musiman dengan pola perulangan sebanyak 4 lag.

Pada gambar 04 hal tersebut tidak terjadi. Nilai ACF dan PACF signifikan pada lag pertama kemudian tidak signifikan untuk data lainnya. Hal ini menandakan tidak ada perulangan atau musiman di dalamnya.

Kemudian akan muncul pertanyaan “ Data itu kan belum di differencing pak?” masih ada unsur trendnya..

Hasil akan sama diperoleh saat anda melakukan differencing terhadap data tersebut. Berikut hasilnya:

Cara menggunakan acf python
Nilai ACF dan PACF Grafik 01 setelah di differencing

Cara menggunakan acf python
Nilai ACF dan PACF Grafik 02 setelah di differencing

Gambar 05 adalah gambar ACF dan PACF untuk data musiman yang telah di differencing terlebih dahulu, sedangkan gambar 06 adalah gambar ACF dan PACF data trend yang juga sudah di differencing terlebih dahulu.

Terlihat sama pada gambar 05 terlihat nilai ACF dan PACF signifikan pada lag 4 dan 8. Ini menandakan data memiliki musiman atau seasonal, dan anda harus menggunakan SARIMA untuk memproyesikan data selanjutnya.

Jadi, bagaimana model yang tepat untuk melakukan proyeksi terhadap data seasonal pada contoh artikel ini? download data mentahnya disini:

baca artikel ARIMA SARIMA: SI KEMBAR DARI TIME SERIES, dan temukan jawabannya..

Jika berkenan untuk berkomentar, dengan senang hati akan saya tanggapi.

Selamat Belajar ..!