Load 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

Pembangkitan Data

set.seed(456)

n <- 200
ar <- 0.5
ma <- 0.3

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)")

Interpretasi: Berdasarkan plot time series hasil simulasi ARIMA(1,1,1), terlihat bahwa data menunjukkan pola yang tidak stasioner. Hal ini dapat diamati dari adanya pergerakan tren yang berubah-ubah sepanjang waktu, di mana nilai data cenderung naik pada awal periode, kemudian mengalami fluktuasi dan penurunan pada bagian akhir.

Selain itu, rata-rata (mean) dari data tidak konstan dan variansnya juga tampak berubah seiring waktu. Pola seperti ini merupakan karakteristik umum dari data yang mengandung komponen integrasi (d = 1), sehingga memerlukan proses differencing untuk mencapai kestasioneran.

Pergerakan data juga menunjukkan sifat random walk dengan fluktuasi, yang dihasilkan dari kombinasi komponen:

Autoregressive (AR) yang menyebabkan ketergantungan pada nilai sebelumnya Moving Average (MA) yang menangkap pengaruh error masa lalu

Tidak terlihat adanya pola musiman yang jelas, sehingga model ARIMA tanpa komponen musiman sudah sesuai untuk data ini.

Identifikasi Awal

acf(ts_arima, main="ACF Data Asli")

pacf(ts_arima, main="PACF Data Asli")

Interpretasi ACF dan PACF Data Asli 1. Plot ACF (Autocorrelation Function) Berdasarkan plot ACF data asli, terlihat bahwa: - Nilai autokorelasi pada lag awal sangat tinggi (mendekati 1) - Penurunan autokorelasi terjadi secara perlahan (slow decay) dan tidak langsung turun ke nol - Banyak lag yang masih berada di luar batas signifikansi

Interpretasi: Pola slow decay pada ACF merupakan indikasi kuat bahwa data tidak stasioner, khususnya mengandung komponen tren.

  1. Plot PACF (Partial Autocorrelation Function) Berdasarkan plot PACF:

Interpretasi: - PACF yang signifikan di lag 1 menunjukkan adanya komponen Autoregressive (AR) - Karena data belum stasioner, pola ini belum bisa langsung digunakan untuk menentukan orde model

Uji Stasioneritas (ADF)

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

Interpretasi: Hipotesis - H0 : Data tidak stasioner - H1 : Data stasioner

Keputusan Karena p-value = 0.3652 > 0.05 maka, Gagal menolak H0

Kesimpulan Data time series tidak stasioner, sehingga diperlukan proses differencing untuk membuat data menjadi stasioner.

Differencing

diff1 <- diff(ts_arima)

Plot setelah differencing

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

Interpretasi: Perubahan pola ini menunjukkan bahwa proses differencing berhasil menghilangkan komponen tren pada data. Dengan demikian, data hasil differencing sudah memenuhi salah satu asumsi penting dalam analisis deret waktu, yaitu kestasioneran dalam mean.

Selain itu, tidak adanya pola sistematis yang jelas mengindikasikan bahwa data sudah mendekati proses stasioner dan siap untuk tahap identifikasi model ARIMA (penentuan orde p dan q).

Identifikasi Ulang

acf(diff1, main="ACF Setelah Differencing")

pacf(diff1, main="PACF Setelah Differencing")

Interpretasi: Data dibangkitkan menggunakan model ARIMA(1,1,1) dengan parameter AR = 0.5 dan MA = 0.3. Berdasarkan hasil pemodelan, diperoleh model terbaik berdasarkan nilai AIC adalah ARIMA(p,1,q) (disesuaikan hasil). Model ini berbeda dengan model pembangkitan awal. Perbedaan ini disebabkan oleh adanya pengaruh komponen acak (noise), keterbatasan jumlah sampel, serta proses estimasi parameter yang tidak selalu mampu menangkap model teoritis secara sempurna.

Uji ADF Setelah 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.0984, Lag order = 5, p-value = 0.01
## alternative hypothesis: stationary

Interpretasi: Hipotesis - H0 : Data tidak stasioner - H1 : Data stasioner

Keputusan Karena p-value = 0.01 < 0.05 maka, Tolak H0

Kesimpulan Data hasil differencing sudah stasioner. Artinya, Hasil ini menunjukkan bahwa proses differencing yang dilakukan (d = 1) berhasil menghilangkan komponen non-stasioner (tren) pada data. Dengan demikian, data sudah memenuhi asumsi kestasioneran dan dapat digunakan untuk tahap selanjutnya, yaitu penentuan model ARIMA melalui analisis ACF dan PACF.

Konversi ke Time Series

data.ts <- ts(diff1)

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 x o o o o o o o o o  x  x  o 
## 1 x x x x o o o o o o o  o  o  o 
## 2 x o x o o o o o o o o  o  o  o 
## 3 x x x o o o o o o o o  o  o  o 
## 4 x x x 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 x o o x o o o o o o o  o  o  o 
## 7 x o o x o o o o o o o  o  o  o

Interpretasi ACF, PACF, dan EACF (Data Setelah Differencing): Berdasarkan plot ACF, PACF, dan EACF setelah differencing, diperoleh indikasi adanya komponen AR dan MA pada orde rendah. ACF menunjukkan cut-off pada lag awal, sementara PACF menunjukkan spike signifikan pada lag awal. Pola EACF juga mendukung kandidat model ARIMA(1,1,1), ARIMA(2,1,1), dan ARIMA(2,1,2). Berdasarkan keseluruhan analisis, model ARIMA(2,1,1) menjadi kandidat yang paling sesuai dan konsisten dengan pola data.

Auto ARIMA

auto.arima(ts_arima)
## Series: ts_arima 
## ARIMA(3,1,3) 
## 
## Coefficients:
##          ar1      ar2     ar3      ma1     ma2     ma3
##       1.6192  -1.4093  0.3985  -0.8142  0.5980  0.2433
## s.e.  0.1650   0.2112  0.1363   0.1716  0.1594  0.1298
## 
## sigma^2 = 0.9429:  log likelihood = -275.43
## AIC=564.86   AICc=565.44   BIC=587.95

Interpretasi: Model terbaik yang diperoleh dari fungsi auto.arima adalah ARIMA(3,1,3) dengan nilai AIC sebesar 564.86.

Estimasi Model Kandidat

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

Perbandingan AIC

AIC(model1, model2, model3, model4, model5)
##        df      AIC
## model1  4 566.6602
## model2  3 571.8258
## model3  3 594.7621
## model4  5 566.1491
## model5  6 568.0948

Interpretasi: Model dengan nilai AIC terkecil adalah model4 dengan AIC = 566.1491 Sehingga model4 dipilih sebagai model terbaik. Semakin kecil nilai AIC → semakin baik model. Meskipun model4 memiliki jumlah parameter (df) yang lebih banyak dibanding beberapa model lain, model ini tetap dipilih karena memberikan keseimbangan terbaik antara kecocokan model dan kompleksitas.

Model Terbaik

best_model <- model4
best_model
## 
## Call:
## arima(x = data.ts, order = c(2, 0, 1), method = "ML")
## 
## Coefficients:
##          ar1      ar2      ma1  intercept
##       1.1707  -0.4391  -0.3549     0.0262
## s.e.  0.2201   0.1506   0.2342     0.1646
## 
## sigma^2 estimated as 0.9409:  log likelihood = -278.07,  aic = 564.15

Interpretasi: Model terbaik berdasarkan nilai AIC adalah ARIMA(2,0,1) pada data differencing atau ekuivalen dengan ARIMA(2,1,1) pada data asli, dengan nilai AIC sebesar 564.15.

Diagnostik Residual

tsdiag(best_model)

Interpretasi: Berdasarkan hasil diagnostik model, residual menunjukkan pola acak tanpa autokorelasi yang signifikan, serta hasil uji Ljung-Box menunjukkan p-value > 0.05. Hal ini mengindikasikan bahwa residual bersifat white noise, sehingga model ARIMA(2,1,1) yang diperoleh sudah memenuhi asumsi dan layak digunakan.

Uji white noise

Box.test(residuals(best_model), lag=10, type="Ljung-Box")
## 
##  Box-Ljung test
## 
## data:  residuals(best_model)
## X-squared = 5.2216, df = 10, p-value = 0.8759

Interpretasi: Hipotesis - H0: Tidak terdapat autokorelasi pada residual (residual bersifat white noise) - H1: Terdapat autokorelasi pada residual

Keputusan Karena p-value = 0.8759 > 0.05 maka, gagal menolak H0

Kesimpulan: Residual model tidak mengandung autokorelasi dan dapat dianggap sebagai white noise. Artinya, Hasil ini menunjukkan bahwa model yang diperoleh sudah mampu menangkap pola dalam data dengan baik, sehingga tidak ada informasi yang tersisa pada residual. Dengan demikian, model ARIMA(2,1,1)

Kesimpulan Akhir

Secara keseluruhan, proses pemodelan ARIMA menunjukkan bahwa meskipun data dibangkitkan dari model tertentu, model terbaik yang diperoleh melalui analisis tidak selalu sama. Hal ini menegaskan bahwa analisis deret waktu tidak hanya bergantung pada teori, tetapi juga dipengaruhi oleh karakteristik data dan pendekatan empiris dalam menentukan model yang paling sesuai.