Dalam analisis data time series, salah satu cara untuk mengungkap pola yang tersembunyi adalah dengan menggunakan Auto-Correlation Function (ACF). ACF digunakan untuk menentukan seberapa besar hubungan antara nilai-nilai waktu dan nilai-nilai masa lalu. Dalam artikel ini, kita akan membahas tentang ACF, bagaimana cara menggunakannya, serta beberapa contoh aplikasinya.
Apa itu ACF?
ACF adalah fungsi yang digunakan untuk menentukan seberapa besar hubungan antara sebuah nilai dengan nilai-nilai masa lalu. Dalam waktu series, ACF dapat membantu kita menemukan pola yang tersembunyi dan memahami bagaimana data tersebut bergerak.
Manfaat Menggunakan ACF
Menggunakan ACF memiliki beberapa manfaat, seperti:
- Membantu kita menemukan pola yang tersembunyi dalam data
- Memungkinkan kita untuk memilih metode prediksi yang tepat untuk data time series
- Membantu kita menemukan seasonality (pola musiman) dalam data
Asumsi ACF
Sebelum menggunakan ACF, kita harus memastikan bahwa data tersebut berada pada keadaan stationer, yaitu tidak ada perubahan sistematis dalam rata-rata, varians, dan fluktuasi. Jika data tidak stationer, maka perlu dilakukan transformasi untuk mengubahnya menjadi stationer.
Contoh Penggunaan ACF
Mari kita lihat contoh penggunaan ACF pada dataset Australian electricity demand dari tahun 1980 hingga 1995. Berikut adalah plot ACF dan ADF (Augmented Dickey-Fuller) yang digunakan untuk memastikan ke stationerannya.
aelec <- window(elec, start=1980)
autoplot(aelec) + xlab("Year") + ylab("GWh")
Dalam plot ACF di atas, kita dapat melihat bahwa nilai-nilai memiliki pola yang tersembunyi dan memiliki seasonality. ACF juga membantu kita menemukan trend (perubahan sistematis) dalam data.
Menghilangkan Trend
Untuk menghilangkan trend, kita dapat menggunakan metode diff() dari Pandas. Berikut adalah contoh penggunaan diff() untuk menghilangkan trend pada dataset Australian electricity demand.
data["diff"] = data.diff()
ax = data.plot()
ax.legend(ncol=5, loc='upper center', bbox_to_anchor=(0.5, 1.0), bbox_transform=plt.gcf().transFigure)
for yr in range(2008, 2018):
ax.axvline(pd.to_datetime(str(yr)+"-01-01"), color ="red", linestyle = "--", alpha = 0.2)
Menggunakan ACF untuk Data yang Telah Dihilangkan Trend
Sekarang kita dapat menggunakan ACF pada data yang telah dihilangkan trend.
from statsmodels.graphics.tsaplots import plot_acf
data["diff"].iloc[0] = 0
plot_acf(data["diff"])
plt.show()
Dalam plot ACF di atas, kita dapat melihat bahwa nilai-nilai memiliki seasonality yang kuat dan memiliki pola yang tersembunyi. Kita juga dapat melihat bahwa nilai-nilai memiliki hubungan positif dengan nilai-nilai masa lalu.
Menguraikan Data menjadi Komponen-komponennya
Selain menggunakan ACF, kita juga dapat menguraikan data menjadi komponen-komponennya untuk mendapatkan gambaran yang lebih baik tentang pola-pola yang tersembunyi. Berikut adalah contoh penggunaan API statsmodels untuk menguraikan data menjadi trend, seasonality, dan residual.
from statsmodels.tsa.seasonal import seasonal_decompose
res = seasonal_decompose(data, model="additive", period=30)
fig, (ax1, ax2, ax3) = plt.subplots(3,1, figsize=(15,8))
res.trend.plot(ax=ax1, ylabel="trend")
res.resid.plot(ax=ax2, ylabel="seasonality")
res.seasonal.plot(ax=ax3, ylabel="residual")
plt.show()
Dalam gambar di atas, kita dapat melihat bahwa data memiliki trend yang kuat dan seasonality yang kuat. Kita juga dapat melihat bahwa residual memiliki pola yang tersembunyi.
Dengan menggunakan ACF, kita dapat menemukan pola-pola yang tersembunyi dalam data time series dan memahami bagaimana data tersebut bergerak. ACF juga membantu kita memilih metode prediksi yang tepat untuk data time series.