Hammam Maulana

\[ ARIMA(0,1,0)(3,1,0)^{12} \]

\[ \begin{align*} y_t - y_{t-1} - y_{t-12} + y_{t-13} &= \Phi_1 (y_{t-12} - y_{t-13} - y_{t-24} + y_{t-25}) \\ &\quad + \Phi_2 (y_{t-24} - y_{t-25} - y_{t-36} + y_{t-37}) \\ &\quad + \Phi_3 (y_{t-36} - y_{t-37} - y_{t-48} + y_{t-49}) + a_t \end{align*} \]

library(forecast)
## Warning: package 'forecast' was built under R version 4.3.3
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
n <- 1000  
phi1 <- 0.5 
phi2 <- 0.3     
phi3 <- 0.2    
s <- 12         
at <- rnorm(n, 0, 2)  

y <- numeric(n)

# Inisialisasi nilai awal
y[1:49] <- 0  

for (t in (50):n) {
  y[t] <- y[t-1] + y[t-s] - y[t-s-1] -                  
    phi1 * (y[t-s] - y[t-s-1] - y[t-s-12] + y[t-s-13]) -
    phi2 * (y[t-2*s] - y[t-2*s-1] - y[t-2*s-12] + y[t-2*s-13]) -
    phi3 * (y[t-3*s] - y[t-3*s-1] - y[t-3*s-12] + y[t-3*s-13]) +
    at[t]
}

# Buang burn-in
sim_data <- y[-(1:100)]
## Plot, ACF, dan PACF data asli
ts.plot(sim_data, main = "Time Series - SARIMA (0,1,0)(3,1,0)[12]",
        ylab = "Value")

acf(sim_data, lag.max = 100, main = "ACF - Data Asli")

pacf(sim_data, lag.max = 100, main = "PACF - Data Asli")

# Non-seasonal differencing (d=1)
diff_ns <- diff(sim_data, differences = 1)
ts.plot(diff_ns, main = "Time Series - Non-Seasonal Differencing", ylab = "Differenced Value")

acf(diff_ns, lag.max = 100, main = "ACF - Non-Seasonally Differenced")

pacf(diff_ns, lag.max = 100, main = "PACF - Non-Seasonally Differenced")

# Seasonal differencing (D=1, lag 12)
diff_s <- diff(sim_data, lag = 12, differences = 1)
ts.plot(diff_s, main = "Time Series - Seasonal Differencing", ylab = "Seasonal Differenced Value")

acf(diff_s, lag.max = 100, main = "ACF - Seasonally Differenced")

pacf(diff_s, lag.max = 100, main = "PACF - Seasonally Differenced")

# Kombinasi differencing non-seasonal + seasonal
diff_combined <- diff(diff(sim_data, differences = 1), lag = 12, differences = 1)
ts.plot(diff_combined, main = "Time Series - Both Differencing", ylab = "Combined Difference")

acf(diff_combined, lag.max = 100, main = "ACF - Both Differenced")

pacf(diff_combined, lag.max = 100,main = "PACF - Both Differenced")