LOAD LIBRARY

library(tseries)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(TSA)
## 
## Attaching package: 'TSA'
## The following objects are masked from 'package:stats':
## 
##     acf, arima
## The following object is masked from 'package:utils':
## 
##     tar
library(forecast)
## Registered S3 methods overwritten by 'forecast':
##   method       from
##   fitted.Arima TSA 
##   plot.Arima   TSA

Interpretasi: Library tseries digunakan untuk uji kestasioneran (ADF test). TSA digunakan untuk identifikasi model, terutama EACF. forecast digunakan untuk pemodelan ARIMA dan pemilihan model terbaik berdasarkan AIC.

PEMBANGKITAN DATA

#Set seed untuk reprodusibilitas
set.seed(789) 

#Panjang data
n <- 200

# Parameter baru 
ar <- 0.6       # AR (1)
ma <- -0.4     # MA (1)

ts_arima <- arima.sim(model = list(order = c(1,1,1), ar = ar, ma = ma), n = n)

# Plot
ts.plot(ts_arima, main = "Simulasi Data ARIMA(1,1,1)")

Interpretasi: Data time series dibangkitkan menggunakan model ARIMA(1,1,1) dengan parameter AR = 0.6 (positif) dan MA = -0.4 (negatif). Hasil plot menunjukkan pola yang masih berfluktuasi dengan kecenderungan tidak stabil, sehingga mengindikasikan data belum stasioner. Hal ini sesuai dengan karakter ARIMA yang memiliki komponen differencing (d=1), sehingga perlu dilakukan pengujian kestasioneran pada tahap berikutnya.

ACF dan PACF

acf(ts_arima)

pacf(ts_arima)

Interpretasi: Plot ACF menunjukkan penurunan yang lambat (tailing off) dan masih banyak lag yang signifikan, sehingga mengindikasikan data belum stasioner. Plot PACF tidak menunjukkan cutoff yang jelas pada lag tertentu, melainkan juga cenderung menurun. Kombinasi ini menunjukkan bahwa data masih mengandung tren dan perlu dilakukan proses differencing sebelum pemodelan lebih lanjut.

UJI KESTASIONERAN (ADF TEST)

adf.test(ts_arima)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  ts_arima
## Dickey-Fuller = -0.98665, Lag order = 5, p-value = 0.9383
## alternative hypothesis: stationary

Interpretasi: Hasil uji Augmented Dickey-Fuller menunjukkan p-value sebesar 0.9383 (> 0.05), sehingga data tidak stasioner.

Dengan demikian, perlu dilakukan proses differencing untuk membuat data menjadi stasioner sebelum dilakukan pemodelan lebih lanjut.

DIFFERENCING

diff1 <- diff(ts_arima)

ts.plot(diff1, main = "Data Setelah Differencing")

Interpretasi: Setelah dilakukan differencing, pola data terlihat lebih stabil dan berfluktuasi di sekitar nilai rata-rata tanpa tren yang jelas. Hal ini menunjukkan bahwa differencing berhasil menghilangkan ketidakstasioneran pada data, sehingga data lebih siap untuk tahap identifikasi model selanjutnya.

IDENTIFIKASI ULANG (ACF & PACF)

acf(diff1)

pacf(diff1)

Interpretasi: Plot ACF menunjukkan hanya beberapa lag awal yang signifikan, kemudian cepat turun dan masuk batas, sehingga mengindikasikan komponen MA (q) kecil, kemungkinan di sekitar lag 1. Plot PACF juga menunjukkan spike signifikan di lag awal lalu menurun, yang mengarah pada komponen AR (p) rendah, kemungkinan di sekitar lag 1. Secara keseluruhan, pola ACF dan PACF sudah lebih jelas dan stabil, sehingga kandidat model yang sesuai adalah ARIMA(1,1,1) atau model sederhana di sekitarnya seperti ARIMA(0,1,1).

UJI KESTASIONERAN ULANG

adf.test(diff1)
## Warning in adf.test(diff1): p-value smaller than printed p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  diff1
## Dickey-Fuller = -5.7679, Lag order = 5, p-value = 0.01
## alternative hypothesis: stationary

Interpretasi: Hasil uji ADF menunjukkan p-value sebesar 0.01 (< 0.05), sehingga data sudah stasioner setelah differencing. Peringatan “p-value smaller than printed p-value” menunjukkan bahwa nilai p-value sebenarnya lebih kecil dari 0.01, sehingga semakin menguatkan bahwa data telah stasioner. Dengan demikian, proses differencing sudah cukup dan dapat dilanjutkan ke tahap identifikasi model.

KONVERSI KE TIME SERIES

data.ts <- ts(diff1)

head(data.ts)
## Time Series:
## Start = 1 
## End = 6 
## Frequency = 1 
## [1]  0.7141071 -0.7171239  0.3023669 -0.5946917  0.0953453 -0.8038800

Interpretasi: Data hasil differencing dikonversi ke dalam bentuk time series dengan indeks waktu berurutan. Nilai yang ditampilkan merupakan beberapa observasi awal yang sudah berfluktuasi di sekitar nol, menunjukkan data telah stasioner dan siap digunakan untuk proses identifikasi dan pemodelan ARIMA.

Kandidat Model

acf(data.ts)

pacf(data.ts)

eacf(data.ts)
## AR/MA
##   0 1 2 3 4 5 6 7 8 9 10 11 12 13
## 0 x o o o o o o o o o o  o  o  o 
## 1 x o o o o o o o o o o  o  o  o 
## 2 x x o o o o o o o o o  o  o  o 
## 3 x o o o o o o o o o o  o  o  o 
## 4 o x o o o o o o o o o  o  o  o 
## 5 x o o x o o o o o o o  o  o  o 
## 6 o o x x o x o o o o o  o  o  o 
## 7 x x x x o o o o o o o  o  o  o

Interpretasi: Tabel EACF digunakan untuk membantu menentukan kombinasi orde AR (p) dan MA (q). Pola segitiga dari simbol “o” menunjukkan kandidat model yang layak dipertimbangkan. Dari hasil yang diperoleh, terlihat bahwa pola segitiga mulai terbentuk di sekitar kombinasi orde kecil, khususnya pada (p,q) = (1,1) serta beberapa alternatif di sekitarnya seperti (0,1) atau (2,1). Hal ini konsisten dengan hasil ACF dan PACF sebelumnya yang menunjukkan bahwa komponen AR dan MA cenderung rendah. Dengan demikian, model kandidat yang dapat dipertimbangkan adalah ARIMA(1,1,1) sebagai model utama, serta model pembanding seperti ARIMA(0,1,1) dan ARIMA(2,1,1) sebelum dilakukan pemilihan terbaik menggunakan AIC.

AUTO ARIMA (PEMBANDING)

auto.arima(data.ts)
## Series: data.ts 
## ARIMA(0,0,1) with zero mean 
## 
## Coefficients:
##          ma1
##       0.2184
## s.e.  0.0643
## 
## sigma^2 = 1.068:  log likelihood = -289.86
## AIC=583.71   AICc=583.77   BIC=590.31
auto.arima(ts_arima)
## Series: ts_arima 
## ARIMA(0,1,1) 
## 
## Coefficients:
##          ma1
##       0.2184
## s.e.  0.0643
## 
## sigma^2 = 1.068:  log likelihood = -289.86
## AIC=583.71   AICc=583.77   BIC=590.31

Interpretasi: Hasil auto.arima(data.ts) menghasilkan model ARIMA(0,0,1) karena data yang digunakan sudah dalam bentuk hasil differencing, sehingga tidak memerlukan differencing lagi (d = 0). Sedangkan auto.arima(ts_arima) menghasilkan ARIMA(0,1,1) karena menggunakan data asli yang masih mengandung unsur non-stasioner, sehingga diperlukan differencing (d = 1). Kedua hasil ini sebenarnya konsisten, karena model ARIMA(0,0,1) pada data differencing ekuivalen dengan ARIMA(0,1,1) pada data asli. Dengan nilai AIC sebesar 583.71, model ini menjadi salah satu kandidat kuat untuk model terbaik.

PENENTU MODEL TERBAIK BERDASARKAN AIC

model1 <- arima(data.ts, order=c(1,1,1), method="ML")
model2 <- arima(data.ts, order=c(0,1,1), method="ML")
model3 <- arima(data.ts, order=c(1,1,2), method="ML")
model4 <- arima(data.ts, order=c(2,0,2), method="ML")

model1$aic
## [1] 585.6017
model2$aic
## [1] 593.6237
model3$aic
## [1] 587.4493
model4$aic
## [1] 585.2405

Interpretasi: Nilai AIC yang diperoleh berturut-turut adalah 606.2416, 605.3211, 608.5737, dan 597.7618. Model terbaik dipilih berdasarkan nilai AIC terkecil, yaitu 597.7618. Dengan demikian, model ke-4 (m4) merupakan model terbaik karena memiliki kemampuan paling baik dalam menjelaskan data dengan kompleksitas yang relatif optimal dibandingkan model lainnya.

Kesimpulan: Data hasil simulasi ARIMA(1,1,1) pada awalnya tidak stasioner, terlihat dari plot dan uji ADF. Setelah differencing satu kali, data menjadi stasioner dan siap dimodelkan. Pola ACF, PACF, dan EACF menunjukkan kandidat model dengan orde rendah di sekitar ARIMA(1,1,1). Hasil auto.arima menghasilkan ARIMA(0,1,1) yang masih sejalan dengan pola data. Berdasarkan perbandingan AIC, model terbaik memiliki nilai terkecil yaitu 597,7618. Model ini tidak sama dengan model pembangkitan awal, namun perbedaan tersebut wajar karena adanya unsur acak pada data simulasi, jumlah data terbatas, dan proses estimasi yang tidak selalu menghasilkan parameter yang sama.