Seasonal ARIMA Simulation [Model : ARIMA(3,0,0) (3,0,0)^12]
# Load library
library(forecast)
library(tseries)
# library(rmarkdown) # Hanya perlu jika ingin membuat markdown
# library(rpubs) # Hanya perlu jika ingin publish ke RPubs
# library(rsconnect) # Hanya perlu jika ingin publish ke RPubs/ShinyApps
set.seed(123)
# Koefisien AR(3) dan seasonal AR(3)
phi <- c(0.6, -0.3, 0.2) # AR(3)
Phi <- c(0.5, -0.4, 0.3) # seasonal AR(3), lags 12, 24, 36
n <- 200 # Jumlah observasi
ar_coefs <- numeric(36) # panjang sampai lag 36 karena seasonal
ar_coefs[1:3] <- phi # lag 1, 2, 3
ar_coefs[12*(1:3)] <- Phi # lag 12, 24, 36
sim_data <- arima.sim(n = n, model = list(ar = ar_coefs), sd = 1)
# Ubah jadi time series bulanan dengan frekuensi 12
ts_data <- ts(sim_data, frequency = 12)
plot(ts_data, main = "Simulasi SARIMA(3,0,0)(3,0,0)[12]", ylab = "Value", xlab = "Time")

par(mfrow = c(1, 2))
acf(ts_data, main = "ACF - Tanpa Differencing")
pacf(ts_data, main = "PACF - Tanpa Differencing")

diff_1 <- diff(ts_data, differences = 1)
plot(diff_1, main = "Differencing Non-Seasonal (lag-1)", ylab = "Differenced Value", xlab = "Time")
par(mfrow = c(1, 2))

acf(diff_1, main = "ACF setelah Differencing Non-Seasonal")
pacf(diff_1, main = "PACF setelah Differencing Non-Seasonal")

diff_12 <- diff(ts_data, lag = 12)
plot(diff_12, main = "Differencing Musiman (lag-12)", ylab = "Differenced Value", xlab = "Time")
par(mfrow = c(1, 2))

acf(diff_12, main = "ACF setelah Differencing Musiman")
pacf(diff_12, main = "PACF setelah Differencing Musiman")
