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