\[ 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")