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
Membangkitkan data time series dengan model ARIMA(1,1,1). Dengan AR = -0.4 dan MA = 0.6
set.seed(456)
n <- 200
# Parameter ARIMA(p=1, d=1, q=1)
ar <- -0.4
ma <- 0.6
ts_arima <- arima.sim(model = list(order = c(1,1,1), ar = ar, ma = ma), n = n)
ts.plot(ts_arima, main = "Simulasi Data ARIMA(1,1,1)")
acf(ts_arima)
Plot ACF menunjukkan penurunan yang sangat lambat (tailing off panjang), sehingga mengindikasikan bahwa data belum stasioner. Hal ini sesuai karena data dibangkitkan dari model ARIMA(1,1,1) yang memiliki komponen differencing (d = 1), sehingga data awalnya memang mengandung tren.
pacf(ts_arima)
Plot PACF menunjukkan satu lonjakan signifikan pada lag 1, kemudian nilai pada lag berikutnya kecil dan berada dalam batas kepercayaan (cut-off). Pola ini mengarah pada adanya komponen autoregressive orde 1 (AR(1)).
adf.test(ts_arima)
##
## Augmented Dickey-Fuller Test
##
## data: ts_arima
## Dickey-Fuller = -2.3719, Lag order = 5, p-value = 0.4203
## alternative hypothesis: stationary
Diperoleh p-value sebesar 0.4203 (> 0.05), sehingga gagal menolak hipotesis nol yang menyatakan data tidak stasioner dan perlu dilakukan proses differencing.
diff1 <- diff(ts_arima)
acf(diff1)
Plot ACF setelah differencing menunjukkan sebagian besar nilai autokorelasi sudah berada di dalam batas kepercayaan dan tidak lagi menurun secara perlahan seperti sebelumnya. Ini menandakan , data sudah menjadi lebih stasioner. Tidak terlihat cut-off yang jelas, sehingga komponen MA tidak terlalu dominan.
pacf(diff1)
Plot PACF menunjukkan satu lonjakan signifikan pada lag 1, kemudian nilai pada lag berikutnya kecil dan berada dalam batas kepercayaan (cut-off). Pola ini mengarah pada adanya komponen autoregressive orde 1 (AR(1)).
adf.test(diff1)
## Warning in adf.test(diff1): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: diff1
## Dickey-Fuller = -6.2244, Lag order = 5, p-value = 0.01
## alternative hypothesis: stationary
Bedasarkan uji ADF setelah differencing, diperoleh p-value (< 0.01) < 0.05 sehingga hipotesis nol ditolak. Hal ini menunjukkan bahwa data telah stasioner, sehingga proses differencing satu kali (d = 1) sudah cukup.
data.ts <- ts(diff1)
head(data.ts)
## Time Series:
## Start = 1
## End = 6
## Frequency = 1
## [1] 0.7800208 -0.8838780 1.1151624 1.3293198 1.7154365 -1.1346226
acf(data.ts)
ACF menunjukkan pola menurun perlahan atau tidak terputus langsung, jadi tidak ada komponen MA yang kuat.
pacf(data.ts)
PACF cut-off pada lag 1, atau hanya signifikan di lag 1 lalu langsung kecil, artinya ada komponen AR orde 1.
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 o o o x o o o o o o o o o o
## 2 x o o x o o o o o o o o o o
## 3 x o x o o o o o o o o o o o
## 4 x o x x o o o o o o o o o o
## 5 o o x o o o o o o o o o o o
## 6 o x o o x x o o o o o o o o
## 7 x x o o o o o o o o o o o o
Berdasarkan tabel identifikasi ARMA, kombinasi yang paling sederhana dan memiliki pola signifikan pada lag awal adalah AR(1) dan AR(2).
auto.arima(data.ts)
## Series: data.ts
## ARIMA(1,0,2) with zero mean
##
## Coefficients:
## ar1 ma1 ma2
## -0.6994 0.9057 0.0985
## s.e. 0.2898 0.2951 0.1068
##
## sigma^2 = 0.9712: log likelihood = -279.38
## AIC=566.77 AICc=566.97 BIC=579.96
auto.arima(ts_arima)
## Series: ts_arima
## ARIMA(1,1,2)
##
## Coefficients:
## ar1 ma1 ma2
## -0.6994 0.9057 0.0985
## s.e. 0.2898 0.2951 0.1068
##
## sigma^2 = 0.9712: log likelihood = -279.38
## AIC=566.77 AICc=566.97 BIC=579.96
Koefisien MA pada lag ke-2 memiliki nilai yang lebih rendah dari dua kali standar error-nya (0.0985 < 0.2136), sehingga dapat dikatakan tidak signifikan dan pengaruhnya dalam model cenderung lemah.
Kandidat Model ARIMA(1,1,0) ARIMA(1,1,1) ARIMA(0,1,1)
arima(data.ts, order = c(1,1,0), method = "ML")
##
## Call:
## arima(x = data.ts, order = c(1, 1, 0), method = "ML")
##
## Coefficients:
## ar1
## -0.3896
## s.e. 0.0654
##
## sigma^2 estimated as 1.368: log likelihood = -313.65, aic = 629.3
arima(data.ts, order = c(1,1,1), method = "ML")
##
## Call:
## arima(x = data.ts, order = c(1, 1, 1), method = "ML")
##
## Coefficients:
## ar1 ma1
## 0.1979 -0.9884
## s.e. 0.0708 0.0180
##
## sigma^2 estimated as 0.9747: log likelihood = -281.5, aic = 567.01
arima(data.ts, order = c(0,1,1), method = "ML")
##
## Call:
## arima(x = data.ts, order = c(0, 1, 1), method = "ML")
##
## Coefficients:
## ma1
## -0.9805
## s.e. 0.0182
##
## sigma^2 estimated as 1.014: log likelihood = -285.35, aic = 572.71
Berdasarkan hasil pemodelan, diperoleh model dengan nilai AIC terkecil adalah ARIMA (1,1,1), dengan niali AIC sebesar 567.01.
Berdasarkan hasil AIC, data yang di bangkitkan menghasilkan model yang sesuai dengan model awal yang digunakan dalam simulasi, yaitu model ARIMA(1,1,1). Artinya, proses identifikasi dan pemodelan berhasil menangkap struktur dasar dari data yang dibangkitkan.
Meskipun nilai parameter hasil estimasi berbeda dari parameter awal, namun model yang diperoleh tetap memiliki struktur yang sama yaitu ARIMA(1,1,1). Perbedaan nilai parameter ini disebabkan oleh adanya unsur acak dalam data simulasi.