Tutorial R : Pemodelan Lengkap ARIMA Menggunakan R
Autoregressive Integrated Moving Average (ARIMA) merupakan salah satu motode yang dapat digunakan dalam pemodelan data deret waktu. Proses pemodelan ARIMA menggunakan prinsip iterasi Box-Jenkins yang mencakup tahap Identifikasi, Estimasi, dan Diagnosa Model. Setelah model dikatakan memenuhi kriteria maka tahap prediksi dapat dilakukan. Beberapa pustaka yang dapat dipelajari terkait dengan pemodelan ARIMA dan seluk beluknya antara lain :
Makridakis, Spyros., Wheelright, Steven, C., & McGee, Victor, C. (1999). Metode dan Aplikasi Peramalan. Jakarta: Binarupa Aksara.
Cryer, Jonathan D. & Chan, Kung-Sik. (2008). Time Series Analysisi with Applications in R. Lowa City, Lowa: Springer.
Montgomery, Douglas C., Jennings, Cheryl., & Kulachi, Murat. (2008). Introduction to Time Series Analysis and Forecasting. Hoboken, New Jersey: Willey.
Wei, W. W. S. (2006). Time Series Analysis Univariate and Multivariate Method. Second Edition. New York: Pearson Education.
dan lain-lain.
Pada artikel lainnya juga telah dibahas pemodelan ARIMA menggunakan beberapa alat bantu yaitu:
Tutorial : Forecasting dengan ARIMA menggunakan SAS University Edition (free)
R menyediakan beberapa perintah maupun package yang cukup lengkap terkait dengan pemodelan ARIMA maupun pengembangannya.
Identifikasi Model
Tahap identifikasi dilakukan untuk memperoleh dugaan orde ARIMA dari data deret waktu. Beberapa perintah dalam R yang dapat digunakan untuk melakukan tahap Identifikasi Model adalah sebagai berikut:
Perintah R | Package | Keterangan |
ts.plot(data) | stats (default) | Menampilkan Time Series Plot dari data deret waktu yang akan dimodelkan. |
adf.test(data) | tseries | Melakukan uji stasioneritas terhadap rataan data deret waktu. |
diff(data) | stats (default) | Melakukan operasi differencing pada data deret waktu yang belum stasioner dalam rataan. |
boxcox(data) | EnvStats | Mengecek kestasioneran dalam variansi data deret waktu. |
acf(data | stats (default) | Menampilakn Plot Autocorrelation Function data deret waktu. |
pacf(data) | stats (default) | Menampilakn Plot Partial Autocorrelation Function data deret waktu. |
Estimasi Parameter
Estimasi parameter merupakan suatu tahapan yang penting dalam pemodelan deret waktu khususnya ARIMA. Tapah ini dilakukan setelah dugaan model pada tahap identifikasi telah diperoleh. Perintah yang dapat digunakan untuk mengestimasi parameter model ARIMA adalah sebagai berikut dengan package default "stats".
arima(x, order = c(p, d, q), method = c("CSS-ML", "ML", "CSS"))
Penjelasan:
Variabel x merupakan data deret waktu yang akan dimodelkan.
Perintah order = c(p, d, q) merupakan dugaan orde ARIMA berdasarkan identifikasi.
Perintah method = c("CSS-ML", "ML", "CSS")) merupakan perintah pilihan beberapa metode estimasi yang dapat digunakan.
Setelah parameter diestimasi, tahap selanjutnya yang tidak kalah penting adalah menguji tingkat signifikansi parameter berdasarkan hasil estimasi. Perintah yang dapat digunakan adalah sebagai berikut dengan package "lmtest".
coeftest(modeldugaan)
Penjelesan:
Definisi modeldugaan adalah "beberapa" model ARIMA yang diduga dan selanutnya diestimasi pada tahap-tahap sebelumnya.
Diagnosa Model
Tahap Diagnosa Model digunakan untuk melihat apakah model yang terbentuk telah sesuai dan layak digunakan untuk tahap selanjutnya. Perintah yang dapat digunakan adalah sebagai berikut dengan package default "stats".
Box.test(res, lag=n)
Penjelasan:
Varibel res merupakan residual dari model ARIMA yang telah diestimasi. Perintah lag=n merupakan panjang lag residual yang akan diamati.
Forecasting
Tahap terkahir dalam pemodelan ARIMA dalah Forecasting atau prediksi untuk jangka waktu ke depan. Perintah yang dapat digunakan adalah sebagai berikut dengan package "forecast".
forecast(model, h)
Penjelasan:
Definisi model adalah pendefinisian model ARIMA terbaik yang telah diperoleh dari tahap estimasi parameter maupun diagnosa model. Sedangkan h adalah panjang periode prediksi yang akan ditentukan.
Studi Kasus
Diketahui data penjulan suatu Toko Serba Ada XYZ (dalam juta) selama 40 minggu adalah sebagai berikut:
1. Identifikasi Model
Langkah pertama yang paling penting adalah memunculkan plot deret waktu dari data yang digunakan. Pada tutorial ini, data diimport pada RStudio dengan nama "penjulanxyz". Perintah berikut digunakan untuk menampilkan time series plot dari data yang akan dimodelkan.
ts.plot(penjualanxyz)
library(tseries)
adf.test(penjualanxyz)
Berdarkan hasil uji ADF, diperoleh nilai p-value sebesar 0,04235. Hipotesis Nol yang digunakan adalah data tidak stasioner. Jika menggunakan nilai alpha 5% maka dapat disimpulkan bahwa Hipotesis Nol ditolak dan kesimpulannya adalah data deret waktu telah stasioner dalam rataan. Jika diperoleh kesimpulan data belum stasioner dalam rataan, maka diperlukan tahap differencing dalam pemodelannya. [Catatan] Pada kasus ini, diasumsikan bahwa data telah stasioner dalam varians. Oleh karena itu tidak dilakukan uji atau pengecekan lebih lanjut. Tahap selanjutnya adalah menampilkan ACF dan PACF dari data deret waktu. Perintah yang dapat digunakan adalah:
acf(penjualanxyz)
pacf(penjualanxyz)
Cara menentukan orde ARIMA yang sesuai, diguanakan panduan sebagai berikut:
2. Estimasi Parameter
Berdasarkan hasil identifikasi model, diperoleh 3 dugaan model ARIMA yang mungkin. Oleh karena itu pada tahap estimasi akan dicoba ketiga dugaan modelnya. Perintah yang dapat digunakan adalah sebagai berikut:
dugaan1 = arima(penjualanxyz, order = c(1,0,0));dugaan1
dugaan2 = arima(penjualanxyz, order = c(0,0,1));dugaan2
dugaan3 = arima(penjualanxyz, order = c(1,0,1));dugaan3
Selanjutnya adalah melakukan uji signifikansi parameter dengan perintah berikut :
library(lmtest)
coeftest(dugaan1)
coeftest(dugaan2)
coeftest(dugaan3)
Berdasarkan hasil uji signifikansi parameter, diperoleh bahwa model dengan parameter yang signifikan terdapat pada dugaan1 atau AR(1) dan dugaan2 atau MA(1). Hal ini dapat dilihat dari nilai p-value kedua dugaan model kurang dari nilai alpha.
3. Diagnosa Model
Tahap selanjutnya adalah menentukan kelayakan model. Cara yang digunakan pada tahap ini adalah dengan menguji residual model apakah telah memenuhi asumsi pemodelan ARIMA. Uji yang digunakan adalah uji Ljung-Box dengan perintah sebagai beriikut:
res1 = dugaan1$residuals
res2 = dugaan2$residuals
Box.test(res1, lag=6)
Box.test(res2, lag=6)
library(forecast)
accuracy(dugaan1)
accuracy(dugaan2)
4. Forecasting
Tahap terakhir adalah melakukan prediksi untuk jangka waktu ke depan. Jika ingin diketahui nilai prediksi untuk 2 minggu ke depan, maka perintah yang digunakan adalah:
library(forecast)
prediksi = forecast(dugaan1, h=2);prediksi