Tuesday, July 20, 2021

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:


Pemiliki toko ingin melakukan pemodelan serta prediksi untuk beberapa minggu ke depan pada data penjualan toko tersebut. Bantulah pemilik toko untuk melakukan semua tahap yang dibutuhkan. Data tersebut dapat diunduh pada halaman menu Data Contoh dan Data dengan nomor urut 50. Berikut dijelaskan beberapa tahapan untuk menyelesaikan permasalagan tersebut.

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)

Setelah mengamati pola yang terbentuk, tahap selanjutnya adalah melakukan uji stasioneritas terhadap rataan menggunakan Augmented Dickey Fuller (ADF) Test dengan perintah sebagai berikut:

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:


Berdasarkan plot ACF dan PACF yang dihasilkan, dugaan model yang mungkin adalah : AR(1), MA(1), dan ARMA(1,1). Kesimpulan tersebut mengharuskan penelitI untuk mencoba melakukan tahap estimasi dan signifikansi parameter untuk ketiga kemungkinan yang ada.

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)


Berdasarkan hasil uji Ljung-Box, diperoleh nilai p-value sebesar 0,7281 untuk residual dugaan1 dengan lag sebanyak 6 dan 0,6284 untuk residual dugaan2 dengan lag sebanyak 6. Hipotesis Nol yang digunakan adalah model layak digunakan (uncorrelated residual). Jika menggunakan nilai alpha 5% maka dapat disimpulkan bahwa Hipotesis Nol gagal ditolak dan kesimpulannya adalah model telah layak digunakan. Berdasarkan hasil tersebut, dapat diketahui bahwa ternyata model dugaan1 maupun dugaan2 telah sesuai dengan masuk ke kandidat model terbaik. Untuk memilih salah satu model terbaik, digunakan perbandingan akurasi prediksi berdarkan nilai Mean Absolute Percentage Error (MAPE) dengan perintah sebagai berikut:

library(forecast)
accuracy(dugaan1)
accuracy(dugaan2)


Berdasarkan nilai MAPE yang diperoleh, ternyata model dugaan1 atau AR(1) memberikan nilai MAPE yang lebih kecil. Maka dapat disimpulkan bahwa model terbaik untuk studi kasus ini adalah model AR(1). Penjelasan persamaan dan lain sebagainya dapat dilihat pada pustka yang telah dijelaskan di awal artikel.

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


Hasil prediksi untuk dua minggu ke depan adalah 49,98 juta dan 49,91 juta. Hasil prediksi ke depan model AR(1) akan cenderung mendekati rataan untuk jangka waktu yang panjang. Penjelasan hal ini dapat dilihat pada pustaka yang telah dijelaskan di awal artikel.
Previous Post
Next Post

0 comments: