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

# ===================================
# KEGIATAN 7
# Pembangkitan Data Time Series ARIMA
# ===================================


library(tseries)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(TSA)
## Warning: package 'TSA' was built under R version 4.5.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)
## Registered S3 methods overwritten by 'forecast':
##   method       from
##   fitted.Arima TSA 
##   plot.Arima   TSA
# -------------------------------
# 1. Bangkitkan data ARIMA(1,1,1)
# -------------------------------


set.seed(321)

n <- 200


# parameter berbeda dari contoh
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)"
)

# -------------------------------
# 2. Identifikasi ACF PACF
# -------------------------------


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

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

# -------------------------------
# 3. Uji stasioner ADF
# -------------------------------


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


diff1 <- diff(ts_arima)


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

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

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

# uji stasioner lagi

adf.test(diff1)
## Warning in adf.test(diff1): p-value smaller than printed p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  diff1
## Dickey-Fuller = -5.8066, Lag order = 5, p-value = 0.01
## alternative hypothesis: stationary
# ubah menjadi time series

data.ts <- ts(diff1)

head(data.ts)
## Time Series:
## Start = 1 
## End = 6 
## Frequency = 1 
## [1]  1.5309172  0.5084066  2.6409655 -0.5659347 -0.7416072  0.3266671
# -------------------------------
# 5. 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 o o o o o x o x o o  o  o  o 
## 1 o o o o o o o o o o o  o  o  o 
## 2 o o o o o o o o x o o  o  o  o 
## 3 x x o o o o o o x o o  o  o  o 
## 4 x x x x x o o o x o o  o  o  o 
## 5 x x x o o o o o o o o  o  o  o 
## 6 x x o o o o o o o o o  o  o  o 
## 7 x x o o o o x o o o o  o  o  o
# beberapa kandidat

model1 <- arima(data.ts,
                order=c(1,1,1),
                method="ML")


model2 <- arima(data.ts,
                order=c(1,1,3),
                method="ML")


model3 <- arima(data.ts,
                order=c(0,1,1),
                method="ML")


model4 <- arima(data.ts,
                order=c(2,0,2),
                method="ML")



# lihat AIC

AIC(model1)
## [1] 553.7928
AIC(model2)
## [1] 554.7985
AIC(model3)
## [1] 563.5093
AIC(model4)
## [1] 556.4514
# -------------------------------
# 6. Auto ARIMA
# -------------------------------


auto.model <- auto.arima(data.ts)

auto.model
## Series: data.ts 
## ARIMA(1,0,0) with zero mean 
## 
## Coefficients:
##          ar1
##       0.2349
## s.e.  0.0691
## 
## sigma^2 = 0.8964:  log likelihood = -272.38
## AIC=548.76   AICc=548.82   BIC=555.36
# AIC model terbaik

AIC(auto.model)
## [1] 548.761

Data hasil pembangkitan menggunakan ARIMA(1,1,1) dengan parameter AR = 0.5 dan MA = -0.3 menunjukkan pola time series yang belum stasioner pada data awal. Hal ini terlihat dari hasil ADF test yang memiliki p-value > 0.05 sehingga dilakukan differencing satu kali.

Setelah differencing, hasil ADF test menunjukkan p-value < 0.05 sehingga data telah stasioner dan dapat dilakukan pemodelan ARIMA.

Berdasarkan perbandingan beberapa kandidat model, model terbaik dipilih berdasarkan nilai AIC terkecil. Model hasil pembangkitan ARIMA(1,1,1) dapat berbeda dengan model terbaik hasil estimasi karena proses estimasi dipengaruhi oleh ukuran data, variasi acak, dan pola sampel yang terbentuk.