1 Pendahuluan

Analisis ini mengkaji pergerakan inflasi Indonesia menggunakan data Consumer Price Index (CPI) bulanan dari FRED — Federal Reserve Bank of St. Louis, periode Januari 2000 hingga Desember 2024. CPI dikonversi menjadi inflasi year-on-year (perubahan persentase terhadap bulan yang sama tahun sebelumnya), yang merupakan ukuran inflasi yang paling umum digunakan dalam analisis makroekonomi.

Metode yang digunakan adalah ARIMA (Autoregressive Integrated Moving Average), salah satu metode time series paling fundamental dalam ekonometrika untuk memodelkan dan meramalkan variabel yang berurutan dalam waktu.


2 Landasan Teori

2.1 Ekonometrika Makro dan Data Time Series

Ekonometrika Makro adalah cabang ekonometrika yang berfokus pada analisis variabel-variabel agregat ekonomi — seperti inflasi, pertumbuhan GDP, suku bunga, dan nilai tukar. Berbeda dengan ekonometrika mikro yang menggunakan data cross-section, ekonometrika makro umumnya bekerja dengan data time series, yaitu data yang dikumpulkan dari satu objek yang sama secara berulang sepanjang waktu.

Karakteristik utama data time series adalah adanya ketergantungan antar waktu (temporal dependence) — nilai variabel pada periode saat ini dipengaruhi oleh nilai pada periode sebelumnya. Inilah yang membedakannya dari OLS klasik, yang mengasumsikan setiap observasi bersifat independen.

2.2 Inflasi dan Pengukurannya

Inflasi adalah kenaikan harga barang dan jasa secara umum dan terus-menerus dalam suatu perekonomian. Salah satu cara paling umum mengukur inflasi adalah melalui Consumer Price Index (CPI), yang mencerminkan perubahan harga sekeranjang barang dan jasa yang dikonsumsi rumah tangga.

Inflasi year-on-year (YoY) dihitung sebagai persentase perubahan CPI dibandingkan bulan yang sama pada tahun sebelumnya:

\[\pi_t = \frac{CPI_t - CPI_{t-12}}{CPI_{t-12}} \times 100\]

Pengukuran ini lebih stabil dibandingkan perubahan bulanan karena menghilangkan efek musiman secara alami.

2.3 Metode ARIMA dan Box-Jenkins

ARIMA (Autoregressive Integrated Moving Average) adalah metode time series yang dikembangkan oleh Box dan Jenkins (1976). Model ini menggabungkan tiga komponen:

  • AR (Autoregressive) — nilai saat ini dipengaruhi oleh nilai masa lalu sebanyak \(p\) lag
  • I (Integrated) — jumlah differencing \(d\) yang diperlukan untuk membuat data stasioner
  • MA (Moving Average) — nilai saat ini dipengaruhi oleh error masa lalu sebanyak \(q\) lag

Model ARIMA\((p, d, q)\) secara umum ditulis sebagai:

\[\phi(B)(1-B)^d y_t = \theta(B)\varepsilon_t\]

di mana \(\phi(B)\) adalah operator AR, \(\theta(B)\) adalah operator MA, \(B\) adalah operator backshift, dan \(\varepsilon_t\) adalah white noise.

2.4 Kapan Metode Ini Digunakan?

ARIMA tepat digunakan ketika:

  1. Data bersifat univariat dan berurutan dalam waktu
  2. Tujuan analisis adalah meramalkan nilai masa depan berdasarkan pola historis
  3. Data dapat dibuat stasioner melalui differencing
  4. Tidak ada variabel eksogen yang secara eksplisit ingin dimasukkan sebagai prediktor

Dalam konteks makroekonomi, ARIMA banyak digunakan untuk forecast inflasi, pertumbuhan ekonomi, dan variabel moneter lainnya sebagai dasar pengambilan kebijakan.


3 Library dan Data

library(forecast)
library(tseries)
library(ggplot2)
library(dplyr)
library(lubridate)
# Muat data dari file CSV (FRED - IDNCPIALLMINMEI)
df <- read.csv("IDNCPIALLMINMEI.csv")
df$observation_date <- as.Date(df$observation_date)
colnames(df) <- c("date", "cpi")

# Filter 2000-2024
df <- df %>% filter(date >= "2000-01-01" & date <= "2024-12-01")

# Hitung inflasi year-on-year (%)
df <- df %>%
  arrange(date) %>%
  mutate(inflasi = (cpi / lag(cpi, 12) - 1) * 100)

# Hapus 12 baris pertama (NA karena lag 12)
df <- df %>% filter(!is.na(inflasi))

# Jadikan time series
inflasi_ts <- ts(df$inflasi, start = c(2001, 1), frequency = 12)

4 Visualisasi Data

autoplot(inflasi_ts) +
  geom_hline(yintercept = 0, linetype = "dashed", color = "gray50") +
  labs(
    title    = "Inflasi Indonesia (2001–2024)",
    subtitle = "Sumber: FRED — IDNCPIALLMINMEI",
    y        = "Inflasi YoY (%)",
    x        = NULL
  ) +
  theme_minimal(base_size = 13)
Inflasi year-on-year Indonesia (2001–2024)

Inflasi year-on-year Indonesia (2001–2024)

Terlihat beberapa lonjakan inflasi yang signifikan, terutama pada 2005–2006 (kenaikan BBM) dan 2022–2023 (tekanan pasca-pandemi dan konflik global).


5 Uji Stasioneritas (ADF Test)

Sebelum membangun model ARIMA, data harus stasioner — artinya mean dan variansi tidak berubah secara sistematis sepanjang waktu. Uji yang digunakan adalah Augmented Dickey-Fuller (ADF).

  • H₀: data tidak stasioner (terdapat unit root)
  • H₁: data stasioner
adf_result <- adf.test(inflasi_ts)
print(adf_result)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  inflasi_ts
## Dickey-Fuller = -4.3985, Lag order = 6, p-value = 0.01
## alternative hypothesis: stationary
if (adf_result$p.value < 0.05) {
  cat(">> p-value =", round(adf_result$p.value, 4),
      "— Data stasioner. Tidak diperlukan differencing.\n")
  data_model <- inflasi_ts
} else {
  cat(">> p-value =", round(adf_result$p.value, 4),
      "— Data tidak stasioner. Dilakukan first differencing.\n")
  data_model <- diff(inflasi_ts)
  cat("\n--- ADF setelah differencing ---\n")
  print(adf.test(data_model))
}
## >> p-value = 0.01 — Data stasioner. Tidak diperlukan differencing.

6 Identifikasi Model (ACF & PACF)

Plot ACF (Autocorrelation Function) dan PACF (Partial Autocorrelation Function) digunakan untuk mengidentifikasi orde model ARIMA:

  • ACF → menentukan orde MA (q)
  • PACF → menentukan orde AR (p)
par(mfrow = c(1, 2))
acf(data_model,  main = "ACF — Inflasi Indonesia", lag.max = 36)
pacf(data_model, main = "PACF — Inflasi Indonesia", lag.max = 36)

par(mfrow = c(1, 1))

7 Estimasi Model ARIMA

Fungsi auto.arima() digunakan untuk memilih kombinasi (p, d, q) terbaik secara otomatis berdasarkan kriteria AIC (Akaike Information Criterion) terkecil.

model_arima <- auto.arima(inflasi_ts, seasonal = TRUE, stepwise = FALSE, approximation = FALSE)
summary(model_arima)
## Series: inflasi_ts 
## ARIMA(0,1,1)(0,0,1)[12] 
## 
## Coefficients:
##          ma1     sma1
##       0.2125  -0.8440
## s.e.  0.0605   0.0448
## 
## sigma^2 = 0.5146:  log likelihood = -318.4
## AIC=642.8   AICc=642.88   BIC=653.78
## 
## Training set error measures:
##                      ME      RMSE      MAE       MPE     MAPE      MASE
## Training set -0.1057608 0.7136274 0.403027 -3.882663 7.860739 0.1420454
##                     ACF1
## Training set -0.02494376

8 Interpretasi Parameter Model

Parameter dalam model ARIMA tidak diinterpretasikan seperti koefisien regresi OLS. Berikut cara membacanya:

  • Koefisien AR (ar1, ar2, …) — menunjukkan seberapa besar pengaruh nilai inflasi pada lag ke-\(p\) terhadap nilai inflasi saat ini. Koefisien positif berarti inflasi tinggi bulan lalu cenderung diikuti inflasi tinggi bulan ini.
  • Koefisien MA (ma1, ma2, …) — menunjukkan seberapa besar pengaruh error (kejutan) pada lag ke-\(q\) terhadap nilai inflasi saat ini. Koefisien negatif berarti kejutan inflasi yang besar bulan lalu cenderung dikoreksi bulan ini.
koef_arima <- coef(model_arima)
cat("=== Parameter Model", as.character(model_arima), "===\n\n")
## === Parameter Model ARIMA(0,1,1)(0,0,1)[12] ===
for (nm in names(koef_arima)) {
  cat(sprintf("%-10s : %.4f\n", nm, koef_arima[nm]))
}
## ma1        : 0.2125
## sma1       : -0.8440
cat("\nCatatan: Parameter signifikan jika nilai absolutnya jauh dari nol relatif terhadap standard error-nya.\n")
## 
## Catatan: Parameter signifikan jika nilai absolutnya jauh dari nol relatif terhadap standard error-nya.

9 Diagnostik Residual

Model yang baik menghasilkan residual yang menyerupai white noise — tidak ada pola yang tersisa. Diuji menggunakan Ljung-Box Test:

  • H₀: tidak ada autokorelasi di residual
  • H₁: terdapat autokorelasi di residual
checkresiduals(model_arima)

## 
##  Ljung-Box test
## 
## data:  Residuals from ARIMA(0,1,1)(0,0,1)[12]
## Q* = 23.754, df = 22, p-value = 0.3603
## 
## Model df: 2.   Total lags used: 24
lb <- Box.test(residuals(model_arima), lag = 12, type = "Ljung-Box")
cat("Ljung-Box p-value:", round(lb$p.value, 4), "\n")
## Ljung-Box p-value: 0.4418
if (lb$p.value > 0.05) {
  cat(">> Residual bersih — tidak ada autokorelasi tersisa. Model sudah memadai.\n")
} else {
  cat(">> Residual masih mengandung pola. Pertimbangkan spesifikasi model lain.\n")
}
## >> Residual bersih — tidak ada autokorelasi tersisa. Model sudah memadai.

10 Forecast

Model digunakan untuk meramalkan inflasi 12 bulan ke depan.

fc <- forecast(model_arima, h = 12)
print(fc)
##          Point Forecast       Lo 80    Hi 80      Lo 95    Hi 95
## Jan 2025       1.959845  1.04045607 2.879234  0.5537609 3.365929
## Feb 2025       1.753681  0.30870415 3.198657 -0.4562202 3.963581
## Mar 2025       1.511376 -0.31362706 3.336380 -1.2797255 4.302478
## Apr 2025       1.523447 -0.61508428 3.661979 -1.7471546 4.794050
## May 2025       1.804115 -0.60752301 4.215753 -1.8841671 5.492397
## Jun 2025       2.225665 -0.43115222 4.882483 -1.8375864 6.288917
## Jul 2025       2.793665 -0.08754301 5.674873 -1.6127624 7.200092
## Aug 2025       2.930522 -0.15882138 6.019865 -1.7942208 7.655264
## Sep 2025       3.220741 -0.06357381 6.505055 -1.8021848 8.243666
## Oct 2025       3.334884 -0.13345917 6.803226 -1.9694889 8.639256
## Nov 2025       3.377173 -0.26591345 7.020260 -2.1944472 8.948794
## Dec 2025       3.538313 -0.27151147 7.348138 -2.2883107 9.364937
autoplot(fc) +
  labs(
    title    = "Forecast Inflasi Indonesia — 12 Bulan ke Depan",
    subtitle = paste("Model:", as.character(model_arima)),
    y        = "Inflasi YoY (%)",
    x        = NULL
  ) +
  theme_minimal(base_size = 13)
Forecast inflasi Indonesia 12 bulan ke depan

Forecast inflasi Indonesia 12 bulan ke depan


11 Kesimpulan

Analisis time series terhadap inflasi Indonesia menggunakan data CPI bulanan dari FRED menghasilkan beberapa temuan utama:

  1. Stasioneritas — data inflasi year-on-year terbukti stasioner berdasarkan uji ADF, sehingga tidak diperlukan differencing tambahan.
  2. Model terpilihauto.arima() memilih model ARIMA(0,1,1)(0,0,1)[12] sebagai spesifikasi terbaik berdasarkan AIC.
  3. Diagnostik — residual model tidak mengandung autokorelasi signifikan, mengkonfirmasi bahwa model sudah menangkap pola data dengan baik.

Referensi:

  • Box, G. E. P., & Jenkins, G. M. (1976). Time Series Analysis: Forecasting and Control. Holden-Day.
  • Hyndman, R. J., & Athanasopoulos, G. (2021). Forecasting: Principles and Practice (3rd ed.). OTexts. https://otexts.com/fpp3/
  • Data: FRED — Federal Reserve Bank of St. Louis. Consumer Price Index: All Items for Indonesia (IDNCPIALLMINMEI). https://fred.stlouisfed.org/series/IDNCPIALLMINMEI