# 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.