# Lakukan simulasi pembangkitan data time series menggunakan model ARIMA(1,1,1) dengan nilai parameter AR dan MA yang berbeda dari contoh, kemudian lakukan seluruh tahapan pemodelan mulai dari identifikasi melalui plot ACF dan PACF, pengujian kestasioneran menggunakan ADF test, proses differencing, hingga penentuan kandidat model dan pemilihan model terbaik berdasarkan nilai AIC. Selanjutnya, bandingkan model hasil pembangkitan dengan model terbaik yang diperoleh dari proses pemodelan, kemudian jelaskan apakah keduanya sama atau berbeda serta berikan analisis mengenai kemungkinan penyebab perbedaan tersebut.
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(1)
n <- 200 # panjang data
# Parameter ARIMA(p = 1, d = 1, q = 1)
ar <- 0.7 # AR(1)
ma <- -0.5 # MA(1)
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)")

# Plot ACF dan PACF data simulasi
acf(ts_arima)

pacf(ts_arima)

# Menguji kestasioneritasan data simulasi
adf.test(ts_arima)
##
## Augmented Dickey-Fuller Test
##
## data: ts_arima
## Dickey-Fuller = -1.9742, Lag order = 5, p-value = 0.5869
## alternative hypothesis: stationary
# Melakukan differencing karena nilai p-value adf testnya > 0.05
diff1 <- diff(ts_arima)
# Plot ACF dan PACF setelah differencing
acf(diff1)

pacf(diff1)

adf.test(diff1)
## Warning in adf.test(diff1): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: diff1
## Dickey-Fuller = -4.3814, Lag order = 5, p-value = 0.01
## alternative hypothesis: stationary
data.ts <- ts(diff1)
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 x o o o x o o o o o
## 1 x o o o o o o o x 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 x x x x o o o o o o o o o o
## 5 x x x x x 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 o o x o o o x o o o o
auto.arima(data.ts)
## Series: data.ts
## ARIMA(1,0,1) with zero mean
##
## Coefficients:
## ar1 ma1
## 0.8150 -0.6626
## s.e. 0.1271 0.1657
##
## sigma^2 = 0.9165: log likelihood = -274.12
## AIC=554.24 AICc=554.36 BIC=564.13
# Kandidat model: ARIMA(1,0,1), ARIMA(2,1,2), ARIMA (1,1,1), ARIMA(0,1,2)
# Penentuan model terbaik berdasarkan AIC
arima(data.ts, order = c(2,1,2), method = "ML")
##
## Call:
## arima(x = data.ts, order = c(2, 1, 2), method = "ML")
##
## Coefficients:
## ar1 ar2 ma1 ma2
## 0.8975 -0.0350 -1.7296 0.7296
## s.e. 0.2025 0.0997 0.1881 0.1878
##
## sigma^2 estimated as 0.9093: log likelihood = -274.97, aic = 557.93
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.2055 -1.0000
## s.e. 0.0697 0.0599
##
## sigma^2 estimated as 0.93: log likelihood = -277.59, aic = 559.18
arima(data.ts, order = c(0,1,2), method = "ML")
##
## Call:
## arima(x = data.ts, order = c(0, 1, 2), method = "ML")
##
## Coefficients:
## ma1 ma2
## -0.8053 -0.0957
## s.e. 0.0678 0.0745
##
## sigma^2 estimated as 0.9423: log likelihood = -277.26, aic = 558.51
# Analisis: berdasarkan hasil pemodelan, nilai AIC terkecil adalah ARIMA(1,0,1), berbeda dengan model pembangkit. Hal ini bisa disebabkan oleh data kurang banyak sehingga estimasi kurang akurat, terjadi fenomena 'model selection uncertainty', model bisa mengalami underfitting ataupun overfitting.