library(tseries)
## Warning: package 'tseries' was built under R version 4.4.2
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.2
library(forecast)
## Warning: package 'forecast' was built under R version 4.4.2
# Input Data Inflasi Bulanan
data <- read.csv("D:/Kampus/Semester 3/Komputasi Statistika/Artikel Proyek/Inflasi.csv", sep = ";")
data
##          Date Inflasi
## 1  2023-10-01    0.17
## 2  2023-11-01    0.38
## 3  2023-12-01    0.41
## 4  2024-01-01    0.04
## 5  2024-02-01    0.37
## 6  2024-03-01    0.52
## 7  2024-04-01    0.25
## 8  2024-05-01   -0.03
## 9  2024-06-01   -0.08
## 10 2024-07-01   -0.18
## 11 2024-08-01   -0.03
## 12 2024-09-01   -0.12
## 13 2024-10-01    0.08
## 14 2024-11-01    0.30
## 15                 NA
## 16                 NA
## 17                 NA
## 18                 NA
## 19                 NA
## 20                 NA
## 21                 NA
## 22                 NA
## 23                 NA
## 24                 NA
## 25                 NA
inflasi <- ts(data$Inflasi, start=c(2023,10), end = c(2024, 11), frequency=12)
inflasi[is.infinite(inflasi)] <- NA
inflasi <- na.omit(inflasi)
autoplot(inflasi) +
  ggtitle("Inflasi Bulanan Indonesia (Oktober 2023- November 2024)") +
  ylab("Inflasi Bulanan (%)") + xlab("Tahun")

# Uji Stasioneritas (Augmented Dickey-Fuller Test)
library(tseries)
adf.test(inflasi)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  inflasi
## Dickey-Fuller = -0.92717, Lag order = 2, p-value = 0.9313
## alternative hypothesis: stationary
# Differencing untuk Stasioneritas (Jika diperlukan)
d_inflasi <- diff(inflasi)
autoplot(d_inflasi) +
  ggtitle("Differenced Data") +
  ylab("Differenced Inflasi")

adf.test(d_inflasi)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  d_inflasi
## Dickey-Fuller = -1.2268, Lag order = 2, p-value = 0.8669
## alternative hypothesis: stationary
# Plot ACF dan PACF untuk Identifikasi p dan q
par(mfrow=c(2,2))
acf(d_inflasi, main="ACF dari Inflasi")
pacf(d_inflasi, main="PACF dari Inflasi")

# Pemodelan ARIMA (Auto ARIMA)
model <- auto.arima(inflasi, d=1, D=1, seasonal=TRUE, stepwise=FALSE, approximation=FALSE)
print(summary(model))
## Series: inflasi 
## ARIMA(0,1,0)(0,1,0)[12] 
## 
## sigma^2 = 0.0001013:  log likelihood = 3.19
## AIC=-4.37   AICc=-8.37   BIC=-6.37
## 
## Training set error measures:
##                        ME       RMSE          MAE       MPE      MAPE
## Training set 0.0005908542 0.00268959 0.0009588825 0.3377142 0.5431334
##                    MASE        ACF1
## Training set 0.01128097 -0.06032858
## Diagnostik Model (Cek Residual)
checkresiduals(model)

## 
##  Ljung-Box test
## 
## data:  Residuals from ARIMA(0,1,0)(0,1,0)[12]
## Q* = 0.1013, df = 3, p-value = 0.9917
## 
## Model df: 0.   Total lags used: 3
# Prediksi Inflasi 13 Bulan ke Depan
prediksi <- forecast(model, h=24)
autoplot(prediksi) +
  ggtitle("Prediksi Inflasi 2 Tahun ke depan") +
  ylab("Inflasi Bulanan (%)")

print(prediksi)
##          Point Forecast       Lo 80       Hi 80       Lo 95       Hi 95
## Dec 2024   3.300000e-01  0.31710307  0.34289693  0.31027585  0.34972415
## Jan 2025  -4.000000e-02 -0.05823901 -0.02176099 -0.06789416 -0.01210584
## Feb 2025   2.900000e-01  0.26766187  0.31233813  0.25583678  0.32416322
## Mar 2025   4.400000e-01  0.41420615  0.46579385  0.40055171  0.47944829
## Apr 2025   1.700000e-01  0.14116160  0.19883840  0.12589547  0.21410453
## May 2025  -1.100000e-01 -0.14159089 -0.07840911 -0.15831409 -0.06168591
## Jun 2025  -1.600000e-01 -0.19412206 -0.12587794 -0.21218519 -0.10781481
## Jul 2025  -2.600000e-01 -0.29647802 -0.22352198 -0.31578831 -0.20421169
## Aug 2025  -1.100000e-01 -0.14869078 -0.07130922 -0.16917244 -0.05082756
## Sep 2025  -2.000000e-01 -0.24078366 -0.15921634 -0.26237323 -0.13762677
## Oct 2025  -2.502165e-14 -0.04277427  0.04277427 -0.06541759  0.06541759
## Nov 2025   2.200000e-01  0.17532374  0.26467626  0.15167355  0.28832645
## Dec 2025   2.500000e-01  0.19841229  0.30158771  0.17110341  0.32889659
## Jan 2026  -1.200000e-01 -0.17767681 -0.06232319 -0.20820907 -0.03179093
## Feb 2026   2.100000e-01  0.14681822  0.27318178  0.11337181  0.30662819
## Mar 2026   3.600000e-01  0.29175588  0.42824412  0.25562963  0.46437037
## Apr 2026   9.000000e-02  0.01704397  0.16295603 -0.02157662  0.20157662
## May 2026  -1.900000e-01 -0.26738156 -0.11261844 -0.30834488 -0.07165512
## Jun 2026  -2.400000e-01 -0.32156732 -0.15843268 -0.36474646 -0.11525354
## Jul 2026  -3.400000e-01 -0.42554853 -0.25445147 -0.47083519 -0.20916481
## Aug 2026  -1.900000e-01 -0.27935253 -0.10064747 -0.32665290 -0.05334710
## Sep 2026  -2.800000e-01 -0.37300106 -0.18699894 -0.42223284 -0.13776716
## Oct 2026  -8.000000e-02 -0.17651176  0.01651176 -0.22760200  0.06760200
## Nov 2026   1.400000e-01  0.04010084  0.23989916 -0.01278258  0.29278258
# Evaluasi Model
accuracy(model)
##                        ME       RMSE          MAE       MPE      MAPE
## Training set 0.0005908542 0.00268959 0.0009588825 0.3377142 0.5431334
##                    MASE        ACF1
## Training set 0.01128097 -0.06032858
write.csv(prediksi, file = "D:/Kampus/Semester 3/Komputasi Statistika/Artikel Proyek/hasil.csv", row.names = FALSE)