Tutorial R : Pemodelan ARIMAX (ARIMA with Exogenous Variable) Menggunakan R

Model ARIMA merupakan salah satu model yang sering digunakan untuk melakukan pemodelan data deret waktu. Model ARIMA sendiri memiliki banyak sekali pengembangan. Pengembangan-pengembangan tersebut disesuaikan dengan kebutuhan maupun karakteristik data deret waktu yang diperoleh di lapangan. Salah satu pengembangan model ARIMA yang akan dibahas pada artikel ini adalah model ARIMAX atau Autoregressive Integrated Moving Average with Exogenous Variable. Sebagai awal pembahasan ARIMAX, pembahansan akan fokus pada model deret waktu yang stasioner. Jika diketahui bentuk umum dari model ARMA(p,q) dengan rataan nol sebagai berikut:

Persamaan ARMA(p,q) dengan rataan nol dapat kita tulis ulang ke dalam bentuk backshift maka akan menjadi seperti berikut:


Yt merupakan data deret waktu yang akan dimodelkan dan at merupakan deret noise model ARMA(p,q) dengan parameter \theta dan \phi. Model ARMA(p,q) tersebut akan menjadi model ARMAX(p,q) dengan bentuk sebagai berikut:


Penambahan komponen Exogenous Xt mengharuskan adanya estimasi parameter \beta pada model ARMAX(p,q). Salah satu alat bantu yang dapat digunakan untuk melakukan estimasi model ARIMAX adalah R. Terdapat beberapa perintah dalam R yang dapat dimaksimalkan untuk melakukan pemodelan data deret waktu dengan ARIMAX.

Beberapa pustaka yang terkait dalam artikel ini antara lain:

[otext.com] Rob J Hyndman and George Athanasopoulos. Forecasting: Principles and Practice (2nd ed), Monash University, Australia.
Cryer, Jonathan D. & Chan, Kung-Sik. (2008). Time Series Analysisi with Applications in R. Lowa City, Lowa: Springer.
Wei, W. W. S. (2006). Time Series Analysis Univariate and Multivariate Method. Second Edition. New York: Pearson Education.
dan lain-lain.

Pada dasarnya, estimasi parameter model ARIMAX pada R tidak terlalu berbeda dengan estimasi parameter ARIMA. Terdapat penambahan perintah yang digunakan untuk estimasi ARIMA. Artikel terkait pemodelan ARIMA dapat dilihat pada artikel berikut:

Tutorial R : Pemodelan ARIMA Menggunakan R

Perintah pada R yang digunakan dalam pemodelan ARIMAX adalah sebagai berikut dengan package "forecast". [Catatan] Perintah yang digunakan adalah Arima (package forecast) bukan arima.

Arima(y, order = c(p, d, q), xreg = x)

Penjelasan:

Variabel y merupakan data deret waktu yang akan dimodelkan. Sedangkan variabel x adalah data deret waktu yang memberikan pengaruh terhadap variabel yPerintah order = c(p, d, q) merupakan dugaan orde ARIMA berdasarkan tahap identifikasi. Perintah xreg = x merupakan perintah penambahan variabel Exogenus yang akan digunakan dalam model ARIMAX. Pada artikel ini akan digunakan dataset contoh yang dapat diperoleh dari Package "fpp2" yang diterbitkan oleh Rob J Hyndman dan George Athanasopoulos dalam buku Forecasting: Principles and Practice (2nd edition). Dataset yang digunakan adalah "uschange".


1. Cara Mendapatkan Dataset

Dataset yang digunakan yaitu "uschange" merupakan salah satu Dataset yang disediakan oleh Rob J Hyndman dan George Athanasopoulos dalam buku Forecasting: Principles and Practice (2nd edition). Data tersebut menjelaskan tentang data triwulanan pengeluaran konsumsi pribadi dan pendapatan disposabel pribadi dari tahun 1970 hingga 2016 Triwulan ke-3. Berikut merupakan perintah yang digunakan untuk memanggil Dataset tersebut.

install.packages("fpp2")
library(fpp2)
uschange


Beberapa variabel pada Dataset tersebut antara lain "Consumption", "Income", "Production", "Saving", dan "Unemployment". Studi Kasus yang ingin diamati adalah ingin memprediksi perubahan pengeluaran ("Consumption") berdasarkan perubahan pendapatan ("Income"). Faktor lain dari variabel  "Production", "Saving", dan "Unemployment" bahkan faktor tunda terjadinya pengaruh variabel "Income" tidak dimasukan dalam model. Jika beberapa faktor tersebut dimasukan dalam model, maka model yang dapat terbentuk akan berkembang bahkan dapat menggunakan pendekatan Fungsi Transfer.

2. Identifikasi

Tahap identifikasi selalu penting digunakan untuk mengetahui dugaan model yang akan diestimasi dalam proses pemodelan. Bagian pertama adalah dengan menentukan Time Series Plot dari data deret waktu dengan perintah sebagai berikut:

autoplot(uschange[,1:2], facets=TRUE)+ ylab("")


Selanjutnya adalah menentukan ACF dan PACF plot dari data deret waktu untuk "Consumption" dengan perintah sebagai berikut:

par(mfrow=c(2,1))
acf(uschange[,"Consumption"])
pacf(uschange[,"Consumption"])

Berdasarkan plot ACF dan PACF diketahui bahwa lag pada Q1, Q2, Q3, cut-off pada ACF maupun PACF. Hal ini mendasari model dugaan yang mungkin adalah kombinasi dari ketiga lag yang cut-off

3. Estimasi

Tahap estimasi merupakan salah satu tahap yang paling penting. Pada artikel sebelumnya telah dibahas mengenai tahap estimasi dan uji signifikansi parameter model ARIMA. Artikel lebih lengkapnya dapat dilihat pada tautan berikut :

Tutorial R : Pemodelan ARIMA Menggunakan R

Berdasarkan hasil estimasi dan uji signifikansi parameter, diperoleh 5 dugaan model yang parameternya signifikan terhadap model dengan perintah R sebagai berikut:

datay = uschange[,"Consumption"]
library(lmtest)
estimasi6 = arima(datay, order=c(2,0,2)); estimasi6; coeftest(estimasi6)
estimasi7 = arima(datay, order=c(2,0,1)); estimasi7; coeftest(estimasi7)
estimasi8 = arima(datay, order=c(2,0,0)); estimasi8; coeftest(estimasi8)
estimasi9 = arima(datay, order=c(1,0,2)); estimasi9; coeftest(estimasi9)
estimasi10 = arima(datay, order=c(0,0,2)); estimasi10; coeftest(estimasi10)

Hasil estimasi 6, 7, 8, 9, dan 10 menunjukan hasil yang signifikan dengan Hipotesis Nol adalah untuk setiap koefisien adalah parameter tidak signifikan dalam model. Nilai p-value untuk kelima dugaan model lebih kecil dari nilai \alpha.

4. Diagnosa Model

Berdasarkan 5 kandidat dugaan model, akan dipilih model dengan keakuratan yang paling tinggi berdasarkan nilai MAPE yang minimum. Perintah yang dapat digunakan untuk memilih model tersebut adalah:

library(forecast)
accuracy(estimasi6)
accuracy(estimasi7)
accuracy(estimasi8)
accuracy(estimasi9)
accuracy(estimasi10)

Berdasarkan pemilihan nilai MAPE diperoleh nilai MAPE terkecil yaitu model dugaan 6 atau ARMA(2,2). Tahap selanjutnya adalah melakukan uji kebaikan model dengan Ljung-Box Test (Penjelasan lebih lengkap dapat dilihat pada artikel Tutorial R : Pemodelan ARIMA Menggunakan R) dengan perintah sebagai berikut:

residual6 = estimasi6$residuals
Box.test(residual6, lag=4)

Hasil tersebut menunjukan bahwa model telah layak digunakan berdasarkan Ljung-Box Test dengan banyak lag adalah 4.


5. Estimasi Model ARIMAX

Setelah model terbaik diperoleh yaitu ARMA(2,2), tahap selanjutnya adalah melakukan estimasi parameter dengan penambahan Exogenous Variabel dengan perintah sebagai berikut:

library(forecast)
library(lmtest)
datay = uschange[,"Consumption"]
datax = uschange[,"Income"]
estimasiarmax = Arima(datay, order=c(2,0,2), xreg=datax)
estimasiarmax; coeftest(estimasiarmax)


Berdasarkan hasil yang diperoleh, seluruh koefisien dari parameter yang diestimasi memberikan nilai p-value yang kurang dari \alpha. Hal ini menandakan bahwa seluruh parameter telah signifikansi dalam model.


6. Diagnosa Model ARIMAX

Diagnosa model yang dilakukan sama dengan diagnosa model ARIMA pada umumnya dengan perintah sebagai berikut:

res_armax = estimasiarmax$residuals
Box.test(res_armax, lag=8)

Hasil tersebut menunjukan bahwa model telah layak digunakan berdasarkan Ljung-Box Test dengan banyak lag adalah 8.


7. Forecasting

Rincian model ARMAX dan lainnya dapat dilihat pada sumber pustaka yang dilampirkan pada artikel ini. Tahap terkahir dalam pemodelan adalah Forecasting. Perintah yang digunakan adalah sebagai berikut dengan panjang prediksi adalah 8 periode ke depan.

xreg1 = rep(mean(datax),8)
forecast(estimasiarmax, xreg=xreg1, h=8)





3 Responses to "Tutorial R : Pemodelan ARIMAX (ARIMA with Exogenous Variable) Menggunakan R"

  1. Kak, bagaimana dengan menggunakan metode VARIMA dianalisis dengan program SAS dan software R? Tolong tutorialnya kak jika ada. Saya sedang dalam pengerjaan Tugas Akhir tentang VARIMA. Terima kasih kak sebelumnya

    ReplyDelete
  2. Kak, itu maksud dari "pendekatan fungsi transfer" itu apa ya? soalnya saya mau variabel lainnya itu lebih dari satu, apa bisa pakai cara ini juga atau ada cara lain ketika variabel yg ingin dimasukkan dalam model itu lebih dari satu? makasih kak

    ReplyDelete
    Replies
    1. Pembahasan mengenai model Fungsi Transfer single maupun multi input pada Time Series Analysis dapat dicari pada publikasi-publikasi ilmiah nasional maupun internasional 👌

      Delete