# install.packages(c("forecast", "tseries", "ggplot2"))
library(forecast)
library(tseries)
library(ggplot2)Studi Kasus Inflasi Indonesia (2015-2023)
Pendahuluan
Analisis ini menggunakan data inflasi Indonesia bulanan dari Januari 2015 hingga Desember 2023. Metode yang digunakan adalah ARIMA (Autoregressive Integrated Moving Average), salah satu metode time series paling umum dalam ekonometrika makro untuk meramalkan variabel yang berurutan dalam waktu.
Library
Data
set.seed(42)
n <- 108 # Jan 2015 - Des 2023
trend <- seq(3.5, 4.2, length.out = n)
seasonal <- 0.5 * sin(2 * pi * (1:n) / 12)
noise <- arima.sim(model = list(ar = 0.6), n = n, sd = 0.3)
inflasi <- trend + seasonal + noise
inflasi_ts <- ts(inflasi, start = c(2015, 1), frequency = 12)autoplot(inflasi_ts) +
labs(title = "Inflasi Indonesia (2015-2023)",
y = "Inflasi (%)", x = "Tahun") +
theme_minimal()Langkah 1: Uji Stasioneritas (ADF)
Sebelum membuat model ARIMA, data harus stasioner — artinya mean dan variansi tidak berubah sepanjang waktu. Uji yang digunakan adalah Augmented Dickey-Fuller (ADF).
- H₀: data tidak stasioner
- H₁: data stasioner
adf_test <- adf.test(inflasi_ts)Warning in adf.test(inflasi_ts): p-value smaller than printed p-value
print(adf_test)
Augmented Dickey-Fuller Test
data: inflasi_ts
Dickey-Fuller = -5.9804, Lag order = 4, p-value = 0.01
alternative hypothesis: stationary
if (adf_test$p.value < 0.05) {
cat(">> Data stasioner (p < 0.05). Lanjut ke identifikasi model.\n")
data_model <- inflasi_ts
} else {
cat(">> Data tidak stasioner. Dilakukan first differencing (d=1).\n")
data_model <- diff(inflasi_ts)
print(adf.test(data_model))
}>> Data stasioner (p < 0.05). Lanjut ke identifikasi model.
Langkah 2: Identifikasi Model (ACF & PACF)
- ACF digunakan untuk menentukan orde MA (q)
- PACF digunakan untuk menentukan orde AR (p)
par(mfrow = c(1, 2))
acf(data_model, main = "ACF - Inflasi")
pacf(data_model, main = "PACF - Inflasi")par(mfrow = c(1, 1))Langkah 3: Estimasi Model ARIMA
auto.arima() memilih kombinasi (p, d, q) terbaik berdasarkan nilai AIC terkecil.
model_arima <- auto.arima(inflasi_ts, seasonal = TRUE, stepwise = FALSE)
summary(model_arima)Series: inflasi_ts
ARIMA(2,1,3)
Coefficients:
ar1 ar2 ma1 ma2 ma3
1.6363 -0.8663 -1.9306 1.1994 -0.2307
s.e. 0.0664 0.0692 0.1318 0.2736 0.1629
sigma^2 = 0.1099: log likelihood = -32.31
AIC=76.61 AICc=77.45 BIC=92.65
Training set error measures:
ME RMSE MAE MPE MAPE MASE
Training set 0.02937675 0.3222316 0.2601458 0.08520249 7.180511 0.6087439
ACF1
Training set 0.002166454
Langkah 4: Diagnostik Residual
Residual yang baik menyerupai white noise — tidak ada pola yang tersisa. Diuji menggunakan Ljung-Box Test.
- H₀: tidak ada autokorelasi di residual
- H₁: ada autokorelasi di residual
checkresiduals(model_arima)
Ljung-Box test
data: Residuals from ARIMA(2,1,3)
Q* = 12.232, df = 17, p-value = 0.7859
Model df: 5. Total lags used: 22
lb_test <- Box.test(residuals(model_arima), lag = 12, type = "Ljung-Box")
cat("Ljung-Box p-value:", round(lb_test$p.value, 4), "\n")Ljung-Box p-value: 0.8418
if (lb_test$p.value > 0.05) {
cat(">> Residual bersih. Model sudah cukup baik.\n")
} else {
cat(">> Masih ada pola di residual. Pertimbangkan spesifikasi model lain.\n")
}>> Residual bersih. Model sudah cukup baik.
Langkah 5: Forecast
Meramalkan inflasi 12 bulan ke depan (2024).
fc <- forecast(model_arima, h = 12)
print(fc) Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
Jan 2024 3.978635 3.553706 4.403563 3.328763 4.628507
Feb 2024 4.087341 3.567246 4.607437 3.291924 4.882759
Mar 2024 4.150984 3.579504 4.722464 3.276981 5.024987
Apr 2024 4.160953 3.571622 4.750284 3.259649 5.062257
May 2024 4.122132 3.530962 4.713302 3.218015 5.026249
Jun 2024 4.049974 3.457924 4.642023 3.144513 4.955434
Jul 2024 3.965531 3.368506 4.562556 3.052460 4.878602
Aug 2024 3.889867 3.287276 4.492458 2.968283 4.811451
Sep 2024 3.839209 3.234475 4.443943 2.914348 4.764070
Oct 2024 3.821863 3.217117 4.426609 2.896984 4.746743
Nov 2024 3.837365 3.228980 4.445750 2.906921 4.767809
Dec 2024 3.877756 3.257325 4.498187 2.928889 4.826623
autoplot(fc) +
labs(title = "Forecast Inflasi Indonesia (2024)",
y = "Inflasi (%)", x = "Tahun") +
theme_minimal()Kesimpulan
Model ARIMA berhasil menangkap pola inflasi Indonesia dan menghasilkan forecast yang reasonable untuk 12 bulan ke depan. Diagnostik residual menunjukkan bahwa model sudah memadai jika nilai p Ljung-Box lebih dari 0.05.