library(forecast)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(ggplot2)
library(tseries)

set.seed(123)  # Reproducibility

# Koefisien musiman AR
phi_s <- c(0.5, -0.3, 0.2)

n <- 150  # Simulasi lebih panjang agar bagian awal bisa dibuang
e <- rnorm(n)

# Inisialisasi vektor
y <- numeric(n)

# Generate data secara manual
for (t in 37:n) {
  y[t] <- phi_s[1]*y[t-12] + phi_s[2]*y[t-24] + phi_s[3]*y[t-36] + e[t]
}
ts_data <- ts(y[37:n], frequency = 12)
adf.test(ts_data)
## Warning in adf.test(ts_data): p-value smaller than printed p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  ts_data
## Dickey-Fuller = -5.087, Lag order = 4, p-value = 0.01
## alternative hypothesis: stationary
# Plot time series, ACF, dan PACF dari data asli (tanpa differencing)
par(mfrow = c(3,1))
plot(ts_data, main = "Time Series - Original (No Differencing)")
acf(ts_data, main = "ACF - Original")
pacf(ts_data, main = "PACF - Original")

# Plot time series, ACF, dan PACF setelah differencing non-seasonal (d=1)
ts_diff <- diff(ts_data, differences = 1)
par(mfrow = c(3,1))
plot(ts_diff, main = "Time Series - Differenced (d=1)")
acf(ts_diff, main = "ACF - Differenced")
pacf(ts_diff, main = "PACF - Differenced")

ts_diff_seasonal <- diff(ts_data, lag = 12, differences = 1)

par(mfrow = c(3,1))
plot(ts_diff_seasonal, main = "Time Series - Seasonal Differencing (D=1)")
acf(ts_diff_seasonal, main = "ACF - Seasonal Differencing")
pacf(ts_diff_seasonal, main = "PACF - Seasonal Differencing")

fit <- Arima(ts_data, order = c(0,0,0), seasonal = list(order = c(3,0,0), period = 12))
summary(fit)
## Series: ts_data 
## ARIMA(0,0,0)(3,0,0)[12] with non-zero mean 
## 
## Coefficients:
##         sar1     sar2    sar3     mean
##       0.3572  -0.0795  0.1950  -0.0756
## s.e.  0.0987   0.1108  0.1115   0.1435
## 
## sigma^2 = 0.8825:  log likelihood = -154.09
## AIC=318.18   AICc=318.73   BIC=331.86
## 
## Training set error measures:
##                        ME      RMSE      MAE      MPE     MAPE      MASE
## Training set -0.004886926 0.9227881 0.730934 21.43466 201.3264 0.8098452
##                     ACF1
## Training set -0.03243612