Inisialisasi parameter

set.seed(123)
# Panjang data 
n <- 1200

# Inisialisasi vektor
# y adalah data sebelum differencing
y <- rep(0, n + 60) 
# wt = xt - xt-1 - xt-12 + xt-13
w <- rep(0, n + 60)
# White noise
e <- rnorm(n + 60)  
# Inisialisasi parameter
phi <- c(0.5, -0.3, 0.1, -0.05)
Phi <- c(0.6, -0.2, 0.1, -0.05)
theta <- c(0.4, 0.2, -0.1, -0.05)
Theta <- c(0.5, 0.3, -0.1, 0.05)

Simulasi ARIMA(4,1,4)(4,1,4)12

for (t in 61:(n + 60)) {
  
  # Komponen AR
  AR_sum <- 0
  for (i in 1:4) {
    AR_sum <- AR_sum + phi[i] * w[t - i]
  }
  for (j in 1:4) {
    AR_sum <- AR_sum + Phi[j] * w[t - 12 * j]
  }
  for (i in 1:4) {
    for (j in 1:4) {
      AR_sum <- AR_sum - (phi[i] * Phi[j] * w[t - i - 12 * j])
    }
  }
  
  # Komponen MA
  MA_sum <- 0
  for (i in 1:4) {
    MA_sum <- MA_sum - theta[i] * e[t - i]
  }
  for (j in 1:4) {
    MA_sum <- MA_sum - Theta[j] * e[t - 12 * j]
  }
  for (i in 1:4) {
    for (j in 1:4) {
      MA_sum <- MA_sum + theta[i] * Theta[j] * e[t - i - 12 * j]
    }
  }
  
  # wt
  w[t] <- AR_sum + e[t] + MA_sum
  
  # yt = yt-1 + yt-12 - yt-13 + wt
  y[t] <- y[t-1] + y[t-12] - y[t-13] + w[t]
}

Buang buffer awal (data ke 1-60) dan buat jadi seasonal 12

y <- ts(y[61:(n + 60)], frequency = 12)
w <- ts(w[61:(n + 60)],frequency = 12)

Plot dari data sebelum dan sesudah differencing

ts.plot(y)

ts.plot(w)

PACF dan ACF dari data sebelum dan sesudah differencing

par(mfrow = c(1,2))
acf(y)
pacf(y)

acf(w)
pacf(w)