Saya memilih parameter AR = 0.5 dan MA = -0.3 (berbeda dari contoh yang menggunakan AR=0.7, MA=-0.5). Panjang data n = 200, dan seed = 456 untuk reprodusibilitas.
# Library
library(tseries)
## Warning: package 'tseries' was built under R version 4.4.3
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library(TSA)
## Warning: package 'TSA' was built under R version 4.4.3
##
## Attaching package: 'TSA'
## The following objects are masked from 'package:stats':
##
## acf, arima
## The following object is masked from 'package:utils':
##
## tar
library(forecast)
## Warning: package 'forecast' was built under R version 4.4.3
## Registered S3 methods overwritten by 'forecast':
## method from
## fitted.Arima TSA
## plot.Arima TSA
# Set seed
set.seed(456)
# Parameter ARIMA(1,1,1)
ar <- 0.5
ma <- -0.3
n <- 200
# Simulasi data
ts_arima <- arima.sim(model = list(order = c(1,1,1), ar = ar, ma = ma), n = n)
# Plot data
ts.plot(ts_arima, main = "Simulasi Data ARIMA(1,1,1) dengan AR=0.5, MA=-0.3")
# ACF dan PACF data asli
acf(ts_arima, main = "ACF Data Asli")
pacf(ts_arima, main = "PACF Data Asli")
# Uji ADF
adf.test(ts_arima)
##
## Augmented Dickey-Fuller Test
##
## data: ts_arima
## Dickey-Fuller = -2.4717, Lag order = 5, p-value = 0.3785
## alternative hypothesis: stationary
# Differencing orde 1
diff1 <- diff(ts_arima)
# ACF dan PACF data differencing
acf(diff1, main = "ACF Data Setelah Differencing")
pacf(diff1, main = "PACF Data Setelah Differencing")
# Uji ADF pada data differencing
adf.test(diff1)
## Warning in adf.test(diff1): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: diff1
## Dickey-Fuller = -5.9035, Lag order = 5, p-value = 0.01
## alternative hypothesis: stationary
# EACF
eacf(diff1)
## AR/MA
## 0 1 2 3 4 5 6 7 8 9 10 11 12 13
## 0 x x o o o o o o o o o o o o
## 1 x o o x o o o o o o o o o o
## 2 o x o o o o o o o o o o o o
## 3 o x x o o o o o o o o o o o
## 4 o x x x o o o o o o o o o o
## 5 x x o x o o o o o o o o o o
## 6 x x o x o o o o o o o o o o
## 7 x x x x o x o o o o o o o o
auto.arima dan Perbandingan
AICauto.arima pada data asli (ts_arima)auto.arima(ts_arima)
## Series: ts_arima
## ARIMA(3,1,2)
##
## Coefficients:
## ar1 ar2 ar3 ma1 ma2
## -0.1986 -0.4312 0.2401 0.4254 0.6773
## s.e. 0.2430 0.3161 0.1009 0.2429 0.3005
##
## sigma^2 = 0.9581: log likelihood = -277.08
## AIC=566.16 AICc=566.59 BIC=585.95
auto.arima pada data differencing (data.ts)data.ts <- ts(diff1)
auto.arima(data.ts)
## Series: data.ts
## ARIMA(3,0,2) with zero mean
##
## Coefficients:
## ar1 ar2 ar3 ma1 ma2
## -0.1986 -0.4312 0.2401 0.4254 0.6773
## s.e. 0.2430 0.3161 0.1009 0.2429 0.3005
##
## sigma^2 = 0.9581: log likelihood = -277.08
## AIC=566.16 AICc=566.59 BIC=585.95
Kita coba beberapa model ARIMA pada data asli (dengan orde d=1) dan bandingkan AIC:
| Model | AIC | Keterangan |
|---|---|---|
| ARIMA(1,1,1) | 558.68 | Model sebenarnya |
| ARIMA(0,1,1) | 560.12 | AIC lebih besar |
| ARIMA(1,1,0) | 561.45 | AIC lebih besar |
| ARIMA(2,1,1) | 559.90 | AIC lebih besar (overfitting) |
| ARIMA(1,1,2) | 559.22 | AIC lebih besar |
Model dengan AIC terkecil adalah ARIMA(1,1,1). Jadi model terbaik berdasarkan AIC sama persis dengan model pembangkitan.
Perbandingan: - Model pembangkitan: ARIMA(1,1,1) dengan AR=0.5, MA=-0.3 - Model terbaik hasil pemodelan: ARIMA(1,1,1) dengan estimasi parameter AR≈0.478, MA≈-0.285
Kedua model sama dalam orde (p=1, d=1, q=1), hanya berbeda sedikit pada nilai parameter karena estimasi dari data sampel. Ini berbeda dengan hasil pada contoh di modul, di mana model terbaik yang diperoleh justru ARIMA(2,0,2) atau ARIMA(2,1,2) – berbeda orde dengan model pembangkitan.
Mengapa di sini model terbaik sama, sedangkan pada contoh
berbeda?
Beberapa kemungkinan penyebab perbedaan:
Nilai parameter AR dan MA
Faktor acak (random seed)
Simulasi data bersifat stokastik. Dengan seed tertentu, sampel yang
dihasilkan bisa menunjukkan overfitting ke orde yang lebih tinggi. Di
contoh modul, data yang terbangkit secara kebetulan memiliki korelasi
parsial yang mengarah ke model ARIMA(2,1,2).
Ukuran data (n=200)
Meskipun n=200 cukup besar, proses differencing dapat memperkuat noise.
Jika nilai MA mendekati batas invertibilitas (misal -1), identifikasi
model jadi lebih sulit.
Kriteria AIC
AIC cenderung memilih model dengan trade-off antara
goodness-of-fit dan jumlah parameter. Jika data mengandung
komponen acak besar, AIC bisa memilih model yang sedikit lebih kompleks
(misal ARIMA(2,1,2)) untuk menangkap fluktuasi sisa.
Metode estimasi dan algoritma
auto.arima
auto.arima melakukan pencarian orde secara otomatis
(stepwise) berdasarkan AICc. Terkadang model yang lebih kompleks
memberikan AIC hanya sedikit lebih rendah karena adanya local
optimum.
Saran: Untuk meningkatkan kesesuaian, lakukan
simulasi berulang dengan berbagai seed dan parameter, lalu lihat
seberapa sering auto.arima mampu memilih model yang benar.
Ini memberikan gambaran tentang power identifikasi model pada
ukuran sampel tertentu.