Data Input merupakan file excel berformat (.xlsx) yang berisi data IHK, Uang Beredar, BI Rate, dan IHSG.
install.packages('openxlsx')
library(openxlsx)
dt <- read.xlsx('dataset.xlsx')
install.packages('DT')
library(DT)
Registered S3 method overwritten by 'htmlwidgets':
method from
print.htmlwidget tools:rstudio
datatable(dt)
ts_dt <- ts(dt, start=c(2018,1),frequency = 12)
install.packages('ggplot2')
install.packages('forecast')
library(ggplot2)
library(forecast)
autoplot(ts_dt[,'IHK']) +
ggtitle('IHK Indonesia Januari 2018 - Juli 2023') +
xlab('Tahun') +
ylab('IHK') +
theme_bw()
autoplot(decompose(ts_dt[,'IHK'])) +
theme_bw()
autoplot(ts_dt[,'M2']) +
ggtitle('Uang Beredar (M2) di Indonesia Januari 2018 - Juli 2023') +
xlab('Tahun') +
ylab('Jumlah Uang Beredar (Trilyun Rupiah)') +
theme_bw()
autoplot(decompose(ts_dt[,'M2'])) +
theme_bw()
autoplot(ts_dt[,'IHSG']) +
ggtitle('IHSG di Indonesia Januari 2018 - Juli 2023') +
xlab('Tahun') +
ylab('IHSG (Rupiah)') +
theme_bw()
autoplot(decompose(ts_dt[,'IHSG'])) +
theme_bw()
autoplot(ts_dt[,c('M2','Suku.Bunga','IHSG','IHK')],facets=T) +
ggtitle('IHK, Uang Beredar M2, Suku Bunga, dan IHSG di Indonesia') +
xlab('Tahun') +
ylab(NULL) +
theme_bw()
install.packages('GGally')
library(GGally)
ggpairs(as.data.frame(ts_dt[,c('M2','Suku.Bunga','IHSG','IHK')])) +
theme_bw()
ggtsdisplay(ts_dt[,'IHK']) + ggtitle('Cek Autokorelasi IHK')
Data IHK tidak Stasioner
ggtsdisplay(ts_dt[,'M2']) + ggtitle('Cek Autokorelasi M2')
Data M2 tidak stasioner
ggtsdisplay(ts_dt[,'Suku.Bunga']) + ggtitle('Cek Suku Bunga IHK')
Data suku bunga tidak stasioner
ggtsdisplay(ts_dt[,'IHSG']) + ggtitle('Cek Autokorelasi IHSG')
Data IHSG tidak stasioner
fit <- auto.arima(ts_dt[,"IHK"], seasonal=F,trace=T,stepwise = F)
ARIMA(0,1,0) : 63.96537
ARIMA(0,1,0) with drift : 30.1593
ARIMA(0,1,1) : 53.75137
ARIMA(0,1,1) with drift : 31.18333
ARIMA(0,1,2) : 52.96979
ARIMA(0,1,2) with drift : 33.39428
ARIMA(0,1,3) : 47.72036
ARIMA(0,1,3) with drift : 34.36805
ARIMA(0,1,4) : 50.0605
ARIMA(0,1,4) with drift : 35.69836
ARIMA(0,1,5) : 51.36456
ARIMA(0,1,5) with drift : 37.74061
ARIMA(1,1,0) : 47.53273
ARIMA(1,1,0) with drift : 31.09527
ARIMA(1,1,1) : Inf
ARIMA(1,1,1) with drift : 32.62519
ARIMA(1,1,2) : Inf
ARIMA(1,1,2) with drift : 34.9523
ARIMA(1,1,3) : Inf
ARIMA(1,1,3) with drift : 36.19476
ARIMA(1,1,4) : Inf
ARIMA(1,1,4) with drift : 38.13893
ARIMA(2,1,0) : 44.61598
ARIMA(2,1,0) with drift : 33.21201
ARIMA(2,1,1) : Inf
ARIMA(2,1,1) with drift : 34.95499
ARIMA(2,1,2) : 39.27146
ARIMA(2,1,2) with drift : 36.74261
ARIMA(2,1,3) : Inf
ARIMA(2,1,3) with drift : Inf
ARIMA(3,1,0) : 41.30163
ARIMA(3,1,0) with drift : 34.41963
ARIMA(3,1,1) : 43.61032
ARIMA(3,1,1) with drift : 35.85304
ARIMA(3,1,2) : Inf
ARIMA(3,1,2) with drift : 36.98618
ARIMA(4,1,0) : 43.63873
ARIMA(4,1,0) with drift : 35.90691
ARIMA(4,1,1) : 45.86665
ARIMA(4,1,1) with drift : 37.97268
ARIMA(5,1,0) : 41.33319
ARIMA(5,1,0) with drift : 36.67773
Best model: ARIMA(0,1,0) with drift
summary(fit)
Series: ts_dt[, "IHK"]
ARIMA(0,1,0) with drift
Coefficients:
drift
0.2506
s.e. 0.0363
sigma^2 = 0.08826: log likelihood = -12.98
AIC=29.97 AICc=30.16 BIC=34.35
Training set error measures:
ME RMSE MAE MPE
Training set 0.001469404 0.2926206 0.2256332 -0.0009377039
MAPE MASE ACF1
Training set 0.2114929 0.07371692 0.1368385
checkresiduals(fit)
Ljung-Box test
data: Residuals from ARIMA(0,1,0) with drift
Q* = 11.129, df = 13, p-value = 0.6
Model df: 0. Total lags used: 13
forecast(fit,h=10) %>% autoplot() + theme_bw() + ylab('IHK')
forecast(fit,h=10) %>% as.data.frame() %>% datatable() %>%
formatRound(columns=colnames(forecast(fit,h=10) %>% as.data.frame()),digits = 3)
fit_manual <- Arima(ts_dt[,'IHK'], order=c(1,1,0))
checkresiduals(fit_manual)
Ljung-Box test
data: Residuals from ARIMA(1,1,0)
Q* = 18.881, df = 12, p-value = 0.09144
Model df: 1. Total lags used: 13
forecast(fit_manual,h=10) %>% autoplot() + theme_bw() + ylab('IHK')
forecast(fit_manual,h=10) %>% as.data.frame() %>% datatable() %>%
formatRound(columns=colnames(forecast(fit,h=10) %>% as.data.frame()),digits = 3)
fit_S <- auto.arima(ts_dt[,"IHK"], seasonal=T,trace=T,stepwise = F)
ARIMA(0,1,0) : 63.96537
ARIMA(0,1,0) with drift : 30.1593
ARIMA(0,1,0)(0,0,1)[12] : 54.13993
ARIMA(0,1,0)(0,0,1)[12] with drift : 31.42573
ARIMA(0,1,0)(1,0,0)[12] : 50.56691
ARIMA(0,1,0)(1,0,0)[12] with drift : 31.39962
ARIMA(0,1,0)(1,0,1)[12] : Inf
ARIMA(0,1,0)(1,0,1)[12] with drift : 33.52479
ARIMA(0,1,1) : 53.75137
ARIMA(0,1,1) with drift : 31.18333
ARIMA(0,1,1)(0,0,1)[12] : 49.72827
ARIMA(0,1,1)(0,0,1)[12] with drift : 32.66809
ARIMA(0,1,1)(1,0,0)[12] : 47.40822
ARIMA(0,1,1)(1,0,0)[12] with drift : 32.62651
ARIMA(0,1,1)(1,0,1)[12] : Inf
ARIMA(0,1,1)(1,0,1)[12] with drift : 34.8635
ARIMA(0,1,2) : 52.96979
ARIMA(0,1,2) with drift : 33.39428
ARIMA(0,1,2)(0,0,1)[12] : 49.06578
ARIMA(0,1,2)(0,0,1)[12] with drift : 34.82526
ARIMA(0,1,2)(1,0,0)[12] : 46.44393
ARIMA(0,1,2)(1,0,0)[12] with drift : 34.73816
ARIMA(0,1,2)(1,0,1)[12] : Inf
ARIMA(0,1,2)(1,0,1)[12] with drift : 36.89772
ARIMA(0,1,3) : 47.72036
ARIMA(0,1,3) with drift : 34.36805
ARIMA(0,1,3)(0,0,1)[12] : 43.72743
ARIMA(0,1,3)(0,0,1)[12] with drift : 34.9602
ARIMA(0,1,3)(1,0,0)[12] : 41.53349
ARIMA(0,1,3)(1,0,0)[12] with drift : 34.7085
ARIMA(0,1,3)(1,0,1)[12] : 42.4861
ARIMA(0,1,3)(1,0,1)[12] with drift : 36.90096
ARIMA(0,1,4) : 50.0605
ARIMA(0,1,4) with drift : 35.69836
ARIMA(0,1,4)(0,0,1)[12] : 46.04979
ARIMA(0,1,4)(0,0,1)[12] with drift : 36.24567
ARIMA(0,1,4)(1,0,0)[12] : 43.84213
ARIMA(0,1,4)(1,0,0)[12] with drift : 36.05335
ARIMA(0,1,5) : 51.36456
ARIMA(0,1,5) with drift : 37.74061
ARIMA(1,1,0) : 47.53273
ARIMA(1,1,0) with drift : 31.09527
ARIMA(1,1,0)(0,0,1)[12] : 46.27816
ARIMA(1,1,0)(0,0,1)[12] with drift : 32.54956
ARIMA(1,1,0)(1,0,0)[12] : 44.74604
ARIMA(1,1,0)(1,0,0)[12] with drift : 32.49737
ARIMA(1,1,0)(1,0,1)[12] : 44.9799
ARIMA(1,1,0)(1,0,1)[12] with drift : 34.71532
ARIMA(1,1,1) : Inf
ARIMA(1,1,1) with drift : 32.62519
ARIMA(1,1,1)(0,0,1)[12] : 36.22448
ARIMA(1,1,1)(0,0,1)[12] with drift : 33.69162
ARIMA(1,1,1)(1,0,0)[12] : 35.85543
ARIMA(1,1,1)(1,0,0)[12] with drift : 33.50995
ARIMA(1,1,1)(1,0,1)[12] : 37.2407
ARIMA(1,1,1)(1,0,1)[12] with drift : 35.48998
ARIMA(1,1,2) : Inf
ARIMA(1,1,2) with drift : 34.9523
ARIMA(1,1,2)(0,0,1)[12] : 38.53287
ARIMA(1,1,2)(0,0,1)[12] with drift : 36.05997
ARIMA(1,1,2)(1,0,0)[12] : 38.05073
ARIMA(1,1,2)(1,0,0)[12] with drift : 35.83026
ARIMA(1,1,2)(1,0,1)[12] : 39.22798
ARIMA(1,1,2)(1,0,1)[12] with drift : 37.74478
ARIMA(1,1,3) : Inf
ARIMA(1,1,3) with drift : 36.19476
ARIMA(1,1,3)(0,0,1)[12] : 45.93221
ARIMA(1,1,3)(0,0,1)[12] with drift : 36.56609
ARIMA(1,1,3)(1,0,0)[12] : 40.0253
ARIMA(1,1,3)(1,0,0)[12] with drift : 36.2986
ARIMA(1,1,4) : Inf
ARIMA(1,1,4) with drift : 38.13893
ARIMA(2,1,0) : 44.61598
ARIMA(2,1,0) with drift : 33.21201
ARIMA(2,1,0)(0,0,1)[12] : 43.39623
ARIMA(2,1,0)(0,0,1)[12] with drift : 34.53657
ARIMA(2,1,0)(1,0,0)[12] : 41.99017
ARIMA(2,1,0)(1,0,0)[12] with drift : 34.41978
ARIMA(2,1,0)(1,0,1)[12] : 42.51044
ARIMA(2,1,0)(1,0,1)[12] with drift : 36.54602
ARIMA(2,1,1) : Inf
ARIMA(2,1,1) with drift : 34.95499
ARIMA(2,1,1)(0,0,1)[12] : 38.53893
ARIMA(2,1,1)(0,0,1)[12] with drift : 36.07173
ARIMA(2,1,1)(1,0,0)[12] : 38.0803
ARIMA(2,1,1)(1,0,0)[12] with drift : 35.85353
ARIMA(2,1,1)(1,0,1)[12] : 39.30966
ARIMA(2,1,1)(1,0,1)[12] with drift : 37.80028
ARIMA(2,1,2) : 39.27146
ARIMA(2,1,2) with drift : 36.74261
ARIMA(2,1,2)(0,0,1)[12] : Inf
ARIMA(2,1,2)(0,0,1)[12] with drift : 37.95994
ARIMA(2,1,2)(1,0,0)[12] : 40.28788
ARIMA(2,1,2)(1,0,0)[12] with drift : 37.8167
ARIMA(2,1,3) : Inf
ARIMA(2,1,3) with drift : Inf
ARIMA(3,1,0) : 41.30163
ARIMA(3,1,0) with drift : 34.41963
ARIMA(3,1,0)(0,0,1)[12] : 38.54012
ARIMA(3,1,0)(0,0,1)[12] with drift : 34.76954
ARIMA(3,1,0)(1,0,0)[12] : 37.05266
ARIMA(3,1,0)(1,0,0)[12] with drift : 34.38598
ARIMA(3,1,0)(1,0,1)[12] : 38.16694
ARIMA(3,1,0)(1,0,1)[12] with drift : 36.28734
ARIMA(3,1,1) : 43.61032
ARIMA(3,1,1) with drift : 35.85304
ARIMA(3,1,1)(0,0,1)[12] : 39.60608
ARIMA(3,1,1)(0,0,1)[12] with drift : 35.49473
ARIMA(3,1,1)(1,0,0)[12] : 37.91567
ARIMA(3,1,1)(1,0,0)[12] with drift : 35.10857
ARIMA(3,1,2) : Inf
ARIMA(3,1,2) with drift : 36.98618
ARIMA(4,1,0) : 43.63873
ARIMA(4,1,0) with drift : 35.90691
ARIMA(4,1,0)(0,0,1)[12] : 40.63615
ARIMA(4,1,0)(0,0,1)[12] with drift : 35.84255
ARIMA(4,1,0)(1,0,0)[12] : 38.9049
ARIMA(4,1,0)(1,0,0)[12] with drift : 35.46566
ARIMA(4,1,1) : 45.86665
ARIMA(4,1,1) with drift : 37.97268
ARIMA(5,1,0) : 41.33319
ARIMA(5,1,0) with drift : 36.67773
Best model: ARIMA(0,1,0) with drift
summary(fit_S)
Series: ts_dt[, "IHK"]
ARIMA(0,1,0) with drift
Coefficients:
drift
0.2506
s.e. 0.0363
sigma^2 = 0.08826: log likelihood = -12.98
AIC=29.97 AICc=30.16 BIC=34.35
Training set error measures:
ME RMSE MAE MPE
Training set 0.001469404 0.2926206 0.2256332 -0.0009377039
MAPE MASE ACF1
Training set 0.2114929 0.07371692 0.1368385
checkresiduals(fit_S)
Ljung-Box test
data: Residuals from ARIMA(0,1,0) with drift
Q* = 11.129, df = 13, p-value = 0.6
Model df: 0. Total lags used: 13
forecast(fit_S,h=10) %>% autoplot() + theme_bw() + ylab('IHK')
forecast(fit_S,h=10) %>% as.data.frame() %>% datatable() %>%
formatRound(columns=colnames(forecast(fit_S,h=10) %>% as.data.frame()),digits = 3)
fit_M2 <- auto.arima(ts_dt[,"M2"], seasonal=F,trace=T,stepwise = F)
ARIMA(0,1,0) : 816.7799
ARIMA(0,1,0) with drift : 807.9048
ARIMA(0,1,1) : 817.9273
ARIMA(0,1,1) with drift : 801.2732
ARIMA(0,1,2) : 815.024
ARIMA(0,1,2) with drift : 803.4078
ARIMA(0,1,3) : 817.2804
ARIMA(0,1,3) with drift : 803.7743
ARIMA(0,1,4) : 819.5586
ARIMA(0,1,4) with drift : 805.3923
ARIMA(0,1,5) : 818.9004
ARIMA(0,1,5) with drift : 807.8882
ARIMA(1,1,0) : 817.3944
ARIMA(1,1,0) with drift : 800.7321
ARIMA(1,1,1) : 816.9464
ARIMA(1,1,1) with drift : 802.9981
ARIMA(1,1,2) : 817.2764
ARIMA(1,1,2) with drift : 804.0087
ARIMA(1,1,3) : Inf
ARIMA(1,1,3) with drift : Inf
ARIMA(1,1,4) : Inf
ARIMA(1,1,4) with drift : 807.8953
ARIMA(2,1,0) : 815.2402
ARIMA(2,1,0) with drift : 802.9992
ARIMA(2,1,1) : Inf
ARIMA(2,1,1) with drift : Inf
ARIMA(2,1,2) : Inf
ARIMA(2,1,2) with drift : 805.6541
ARIMA(2,1,3) : Inf
ARIMA(2,1,3) with drift : Inf
ARIMA(3,1,0) : 816.2715
ARIMA(3,1,0) with drift : 804.9364
ARIMA(3,1,1) : Inf
ARIMA(3,1,1) with drift : 805.9745
ARIMA(3,1,2) : Inf
ARIMA(3,1,2) with drift : Inf
ARIMA(4,1,0) : 817.6938
ARIMA(4,1,0) with drift : 806.8768
ARIMA(4,1,1) : Inf
ARIMA(4,1,1) with drift : Inf
ARIMA(5,1,0) : 819.9861
ARIMA(5,1,0) with drift : 807.5715
Best model: ARIMA(1,1,0) with drift
summary(fit_M2)
Series: ts_dt[, "M2"]
ARIMA(1,1,0) with drift
Coefficients:
ar1 drift
-0.3625 45.8975
s.e. 0.1140 9.0043
sigma^2 = 10161: log likelihood = -397.17
AIC=800.34 AICc=800.73 BIC=806.91
Training set error measures:
ME RMSE MAE MPE MAPE
Training set -0.1224509 98.5202 74.01026 -0.02690376 1.067594
MASE ACF1
Training set 0.1234757 -0.00296349
checkresiduals(fit_M2)
Ljung-Box test
data: Residuals from ARIMA(1,1,0) with drift
Q* = 21.628, df = 12, p-value = 0.04191
Model df: 1. Total lags used: 13
forecast(fit_M2,h=10) %>% autoplot() + theme_bw() + ylab('M2')
forecast(fit_M2,h=10) %>% as.data.frame() %>% datatable() %>%
formatRound(columns=colnames(forecast(fit_M2,h=10) %>% as.data.frame()),digits = 3)
fit_M2_S <- auto.arima(ts_dt[,"M2"], seasonal=T,trace=T,stepwise = F)
ARIMA(0,1,0) : 816.7799
ARIMA(0,1,0) with drift : 807.9048
ARIMA(0,1,0)(0,0,1)[12] : 803.8486
ARIMA(0,1,0)(0,0,1)[12] with drift : 798.8955
ARIMA(0,1,0)(1,0,0)[12] : 799.193
ARIMA(0,1,0)(1,0,0)[12] with drift : 796.9098
ARIMA(0,1,0)(1,0,1)[12] : Inf
ARIMA(0,1,0)(1,0,1)[12] with drift : 799.1764
ARIMA(0,1,1) : 817.9273
ARIMA(0,1,1) with drift : 801.2732
ARIMA(0,1,1)(0,0,1)[12] : 803.0051
ARIMA(0,1,1)(0,0,1)[12] with drift : 791.5686
ARIMA(0,1,1)(1,0,0)[12] : 795.9565
ARIMA(0,1,1)(1,0,0)[12] with drift : 789.7735
ARIMA(0,1,1)(1,0,1)[12] : Inf
ARIMA(0,1,1)(1,0,1)[12] with drift : 792.0481
ARIMA(0,1,2) : 815.024
ARIMA(0,1,2) with drift : 803.4078
ARIMA(0,1,2)(0,0,1)[12] : 800.6183
ARIMA(0,1,2)(0,0,1)[12] with drift : 793.4395
ARIMA(0,1,2)(1,0,0)[12] : 794.6645
ARIMA(0,1,2)(1,0,0)[12] with drift : 791.3371
ARIMA(0,1,2)(1,0,1)[12] : Inf
ARIMA(0,1,2)(1,0,1)[12] with drift : 793.7393
ARIMA(0,1,3) : 817.2804
ARIMA(0,1,3) with drift : 803.7743
ARIMA(0,1,3)(0,0,1)[12] : 802.451
ARIMA(0,1,3)(0,0,1)[12] with drift : 792.7162
ARIMA(0,1,3)(1,0,0)[12] : 794.3209
ARIMA(0,1,3)(1,0,0)[12] with drift : 789.2983
ARIMA(0,1,3)(1,0,1)[12] : Inf
ARIMA(0,1,3)(1,0,1)[12] with drift : 791.7786
ARIMA(0,1,4) : 819.5586
ARIMA(0,1,4) with drift : 805.3923
ARIMA(0,1,4)(0,0,1)[12] : 804.8714
ARIMA(0,1,4)(0,0,1)[12] with drift : 794.5953
ARIMA(0,1,4)(1,0,0)[12] : 796.7426
ARIMA(0,1,4)(1,0,0)[12] with drift : 791.3529
ARIMA(0,1,5) : 818.9004
ARIMA(0,1,5) with drift : 807.8882
ARIMA(1,1,0) : 817.3944
ARIMA(1,1,0) with drift : 800.7321
ARIMA(1,1,0)(0,0,1)[12] : 801.4298
ARIMA(1,1,0)(0,0,1)[12] with drift : 790.2275
ARIMA(1,1,0)(1,0,0)[12] : 793.2994
ARIMA(1,1,0)(1,0,0)[12] with drift : 787.8235
ARIMA(1,1,0)(1,0,1)[12] : Inf
ARIMA(1,1,0)(1,0,1)[12] with drift : 790.1607
ARIMA(1,1,1) : 816.9464
ARIMA(1,1,1) with drift : 802.9981
ARIMA(1,1,1)(0,0,1)[12] : 802.0482
ARIMA(1,1,1)(0,0,1)[12] with drift : 792.4549
ARIMA(1,1,1)(1,0,0)[12] : 793.8329
ARIMA(1,1,1)(1,0,0)[12] with drift : 789.6291
ARIMA(1,1,1)(1,0,1)[12] : Inf
ARIMA(1,1,1)(1,0,1)[12] with drift : 792.3657
ARIMA(1,1,2) : 817.2764
ARIMA(1,1,2) with drift : 804.0087
ARIMA(1,1,2)(0,0,1)[12] : 802.5546
ARIMA(1,1,2)(0,0,1)[12] with drift : 794.4904
ARIMA(1,1,2)(1,0,0)[12] : 795.459
ARIMA(1,1,2)(1,0,0)[12] with drift : 791.6121
ARIMA(1,1,2)(1,0,1)[12] : Inf
ARIMA(1,1,2)(1,0,1)[12] with drift : 794.375
ARIMA(1,1,3) : Inf
ARIMA(1,1,3) with drift : Inf
ARIMA(1,1,3)(0,0,1)[12] : 804.8742
ARIMA(1,1,3)(0,0,1)[12] with drift : 794.8219
ARIMA(1,1,3)(1,0,0)[12] : 796.744
ARIMA(1,1,3)(1,0,0)[12] with drift : 791.5384
ARIMA(1,1,4) : Inf
ARIMA(1,1,4) with drift : 807.8953
ARIMA(2,1,0) : 815.2402
ARIMA(2,1,0) with drift : 802.9992
ARIMA(2,1,0)(0,0,1)[12] : 800.7882
ARIMA(2,1,0)(0,0,1)[12] with drift : 792.4816
ARIMA(2,1,0)(1,0,0)[12] : 793.4842
ARIMA(2,1,0)(1,0,0)[12] with drift : 789.7552
ARIMA(2,1,0)(1,0,1)[12] : Inf
ARIMA(2,1,0)(1,0,1)[12] with drift : Inf
ARIMA(2,1,1) : Inf
ARIMA(2,1,1) with drift : Inf
ARIMA(2,1,1)(0,0,1)[12] : Inf
ARIMA(2,1,1)(0,0,1)[12] with drift : 794.5513
ARIMA(2,1,1)(1,0,0)[12] : 795.8261
ARIMA(2,1,1)(1,0,0)[12] with drift : 791.6086
ARIMA(2,1,1)(1,0,1)[12] : Inf
ARIMA(2,1,1)(1,0,1)[12] with drift : 793.9977
ARIMA(2,1,2) : Inf
ARIMA(2,1,2) with drift : 805.6541
ARIMA(2,1,2)(0,0,1)[12] : Inf
ARIMA(2,1,2)(0,0,1)[12] with drift : Inf
ARIMA(2,1,2)(1,0,0)[12] : Inf
ARIMA(2,1,2)(1,0,0)[12] with drift : Inf
ARIMA(2,1,3) : Inf
ARIMA(2,1,3) with drift : Inf
ARIMA(3,1,0) : 816.2715
ARIMA(3,1,0) with drift : 804.9364
ARIMA(3,1,0)(0,0,1)[12] : 802.5371
ARIMA(3,1,0)(0,0,1)[12] with drift : 794.6623
ARIMA(3,1,0)(1,0,0)[12] : 795.8251
ARIMA(3,1,0)(1,0,0)[12] with drift : 791.7634
ARIMA(3,1,0)(1,0,1)[12] : Inf
ARIMA(3,1,0)(1,0,1)[12] with drift : 794.3689
ARIMA(3,1,1) : Inf
ARIMA(3,1,1) with drift : 805.9745
ARIMA(3,1,1)(0,0,1)[12] : Inf
ARIMA(3,1,1)(0,0,1)[12] with drift : Inf
ARIMA(3,1,1)(1,0,0)[12] : Inf
ARIMA(3,1,1)(1,0,0)[12] with drift : 793.2387
ARIMA(3,1,2) : Inf
ARIMA(3,1,2) with drift : Inf
ARIMA(4,1,0) : 817.6938
ARIMA(4,1,0) with drift : 806.8768
ARIMA(4,1,0)(0,0,1)[12] : 804.9205
ARIMA(4,1,0)(0,0,1)[12] with drift : 796.1133
ARIMA(4,1,0)(1,0,0)[12] : 798.154
ARIMA(4,1,0)(1,0,0)[12] with drift : 793.2257
ARIMA(4,1,1) : Inf
ARIMA(4,1,1) with drift : Inf
ARIMA(5,1,0) : 819.9861
ARIMA(5,1,0) with drift : 807.5715
Best model: ARIMA(1,1,0)(1,0,0)[12] with drift
summary(fit_M2_S)
Series: ts_dt[, "M2"]
ARIMA(1,1,0)(1,0,0)[12] with drift
Coefficients:
ar1 sar1 drift
-0.3973 0.4935 42.6043
s.e. 0.1124 0.1117 12.9758
sigma^2 = 7793: log likelihood = -389.58
AIC=787.17 AICc=787.82 BIC=795.93
Training set error measures:
ME RMSE MAE MPE MAPE
Training set 2.704755 85.6001 65.44454 0.02983104 0.9494215
MASE ACF1
Training set 0.109185 0.01805996
checkresiduals(fit_M2_S)
Ljung-Box test
data: Residuals from ARIMA(1,1,0)(1,0,0)[12] with drift
Q* = 11.727, df = 11, p-value = 0.3845
Model df: 2. Total lags used: 13
forecast(fit_M2_S,h=10) %>% autoplot() + theme_bw() + ylab('M2')
forecast(fit_M2_S,h=10) %>% as.data.frame() %>% datatable() %>%
formatRound(columns=colnames(forecast(fit_M2_S,h=10) %>% as.data.frame()),digits = 3)
fit_M2_manual <- Arima(ts_dt[,'M2'], order=c(1,1,0),seasonal=c(1,0,0))
summary(fit_M2_manual)
Series: ts_dt[, "M2"]
ARIMA(1,1,0)(1,0,0)[12]
Coefficients:
ar1 sar1
-0.3541 0.6249
s.e. 0.1190 0.0956
sigma^2 = 8298: log likelihood = -393.46
AIC=792.91 AICc=793.3 BIC=799.48
Training set error measures:
ME RMSE MAE MPE MAPE
Training set 27.91175 89.03268 65.95447 0.4248966 0.9617459
MASE ACF1
Training set 0.1100358 -0.04705863
fit_IHSG_S <- auto.arima(ts_dt[,"IHSG"], seasonal=T,trace=T,stepwise = F)
ARIMA(0,1,0) : 938.6773
ARIMA(0,1,0) with drift : 940.7864
ARIMA(0,1,0)(0,0,1)[12] : 940.7322
ARIMA(0,1,0)(0,0,1)[12] with drift : 942.9115
ARIMA(0,1,0)(1,0,0)[12] : 940.7177
ARIMA(0,1,0)(1,0,0)[12] with drift : 942.8974
ARIMA(0,1,0)(1,0,1)[12] : 942.962
ARIMA(0,1,0)(1,0,1)[12] with drift : 945.2075
ARIMA(0,1,1) : 939.9251
ARIMA(0,1,1) with drift : 942.1006
ARIMA(0,1,1)(0,0,1)[12] : 942.0862
ARIMA(0,1,1)(0,0,1)[12] with drift : 944.3352
ARIMA(0,1,1)(1,0,0)[12] : 942.0798
ARIMA(0,1,1)(1,0,0)[12] with drift : 944.329
ARIMA(0,1,1)(1,0,1)[12] : 944.3536
ARIMA(0,1,1)(1,0,1)[12] with drift : 946.6782
ARIMA(0,1,2) : 942.0624
ARIMA(0,1,2) with drift : 944.3071
ARIMA(0,1,2)(0,0,1)[12] : 944.2931
ARIMA(0,1,2)(0,0,1)[12] with drift : 946.615
ARIMA(0,1,2)(1,0,0)[12] : 944.2864
ARIMA(0,1,2)(1,0,0)[12] with drift : 946.6086
ARIMA(0,1,2)(1,0,1)[12] : 946.6545
ARIMA(0,1,2)(1,0,1)[12] with drift : 949.0539
ARIMA(0,1,3) : 944.1653
ARIMA(0,1,3) with drift : 946.4761
ARIMA(0,1,3)(0,0,1)[12] : 946.4993
ARIMA(0,1,3)(0,0,1)[12] with drift : 948.8914
ARIMA(0,1,3)(1,0,0)[12] : 946.4973
ARIMA(0,1,3)(1,0,0)[12] with drift : 948.8897
ARIMA(0,1,3)(1,0,1)[12] : 948.8648
ARIMA(0,1,3)(1,0,1)[12] with drift : 951.3424
ARIMA(0,1,4) : 945.5913
ARIMA(0,1,4) with drift : 947.9968
ARIMA(0,1,4)(0,0,1)[12] : 948.015
ARIMA(0,1,4)(0,0,1)[12] with drift : 950.5041
ARIMA(0,1,4)(1,0,0)[12] : 948.015
ARIMA(0,1,4)(1,0,0)[12] with drift : 950.5041
ARIMA(0,1,5) : 939.0305
ARIMA(0,1,5) with drift : 941.0672
ARIMA(1,1,0) : 939.9801
ARIMA(1,1,0) with drift : 942.1567
ARIMA(1,1,0)(0,0,1)[12] : 942.1415
ARIMA(1,1,0)(0,0,1)[12] with drift : 944.3914
ARIMA(1,1,0)(1,0,0)[12] : 942.1349
ARIMA(1,1,0)(1,0,0)[12] with drift : 944.385
ARIMA(1,1,0)(1,0,1)[12] : 944.398
ARIMA(1,1,0)(1,0,1)[12] with drift : 946.7278
ARIMA(1,1,1) : 941.9961
ARIMA(1,1,1) with drift : Inf
ARIMA(1,1,1)(0,0,1)[12] : 944.2371
ARIMA(1,1,1)(0,0,1)[12] with drift : Inf
ARIMA(1,1,1)(1,0,0)[12] : 944.2321
ARIMA(1,1,1)(1,0,0)[12] with drift : 946.5477
ARIMA(1,1,1)(1,0,1)[12] : 946.5864
ARIMA(1,1,1)(1,0,1)[12] with drift : 948.9791
ARIMA(1,1,2) : Inf
ARIMA(1,1,2) with drift : Inf
ARIMA(1,1,2)(0,0,1)[12] : Inf
ARIMA(1,1,2)(0,0,1)[12] with drift : Inf
ARIMA(1,1,2)(1,0,0)[12] : Inf
ARIMA(1,1,2)(1,0,0)[12] with drift : Inf
ARIMA(1,1,2)(1,0,1)[12] : Inf
ARIMA(1,1,2)(1,0,1)[12] with drift : Inf
ARIMA(1,1,3) : 938.1728
ARIMA(1,1,3) with drift : 940.529
ARIMA(1,1,3)(0,0,1)[12] : 940.2546
ARIMA(1,1,3)(0,0,1)[12] with drift : 942.6798
ARIMA(1,1,3)(1,0,0)[12] : 940.202
ARIMA(1,1,3)(1,0,0)[12] with drift : 942.626
ARIMA(1,1,4) : 939.1764
ARIMA(1,1,4) with drift : 941.6579
ARIMA(2,1,0) : 942.1143
ARIMA(2,1,0) with drift : 944.3611
ARIMA(2,1,0)(0,0,1)[12] : 944.3384
ARIMA(2,1,0)(0,0,1)[12] with drift : 946.6623
ARIMA(2,1,0)(1,0,0)[12] : 944.3304
ARIMA(2,1,0)(1,0,0)[12] with drift : 946.6546
ARIMA(2,1,0)(1,0,1)[12] : 946.7088
ARIMA(2,1,0)(1,0,1)[12] with drift : 949.1042
ARIMA(2,1,1) : Inf
ARIMA(2,1,1) with drift : Inf
ARIMA(2,1,1)(0,0,1)[12] : Inf
ARIMA(2,1,1)(0,0,1)[12] with drift : Inf
ARIMA(2,1,1)(1,0,0)[12] : Inf
ARIMA(2,1,1)(1,0,0)[12] with drift : Inf
ARIMA(2,1,1)(1,0,1)[12] : Inf
ARIMA(2,1,1)(1,0,1)[12] with drift : Inf
ARIMA(2,1,2) : Inf
ARIMA(2,1,2) with drift : Inf
ARIMA(2,1,2)(0,0,1)[12] : Inf
ARIMA(2,1,2)(0,0,1)[12] with drift : Inf
ARIMA(2,1,2)(1,0,0)[12] : Inf
ARIMA(2,1,2)(1,0,0)[12] with drift : Inf
ARIMA(2,1,3) : 943.5181
ARIMA(2,1,3) with drift : Inf
ARIMA(3,1,0) : 944.035
ARIMA(3,1,0) with drift : 946.347
ARIMA(3,1,0)(0,0,1)[12] : 946.3789
ARIMA(3,1,0)(0,0,1)[12] with drift : 948.7706
ARIMA(3,1,0)(1,0,0)[12] : 946.3788
ARIMA(3,1,0)(1,0,0)[12] with drift : 948.7706
ARIMA(3,1,0)(1,0,1)[12] : 948.6612
ARIMA(3,1,0)(1,0,1)[12] with drift : 951.1362
ARIMA(3,1,1) : 941.4681
ARIMA(3,1,1) with drift : 943.8501
ARIMA(3,1,1)(0,0,1)[12] : 943.6367
ARIMA(3,1,1)(0,0,1)[12] with drift : 946.0934
ARIMA(3,1,1)(1,0,0)[12] : 943.5912
ARIMA(3,1,1)(1,0,0)[12] with drift : 946.0466
ARIMA(3,1,2) : 937.5612
ARIMA(3,1,2) with drift : 940.0436
ARIMA(4,1,0) : 945.8152
ARIMA(4,1,0) with drift : 948.219
ARIMA(4,1,0)(0,0,1)[12] : 948.2389
ARIMA(4,1,0)(0,0,1)[12] with drift : 950.7263
ARIMA(4,1,0)(1,0,0)[12] : 948.2389
ARIMA(4,1,0)(1,0,0)[12] with drift : 950.7263
ARIMA(4,1,1) : 942.252
ARIMA(4,1,1) with drift : 944.7392
ARIMA(5,1,0) : 943.2228
ARIMA(5,1,0) with drift : 945.6396
Best model: ARIMA(3,1,2)
summary(fit_IHSG_S)
Series: ts_dt[, "IHSG"]
ARIMA(3,1,2)
Coefficients:
ar1 ar2 ar3 ma1 ma2
-1.5408 -0.9915 -0.2914 1.5673 0.8543
s.e. 0.1400 0.2194 0.1227 0.0907 0.1225
sigma^2 = 74739: log likelihood = -462.07
AIC=936.14 AICc=937.56 BIC=949.28
Training set error measures:
ME RMSE MAE MPE MAPE
Training set 4.391526 260.8553 177.1598 -0.06077829 3.017928
MASE ACF1
Training set 0.2513588 0.02987347
checkresiduals(fit_IHSG_S)
Ljung-Box test
data: Residuals from ARIMA(3,1,2)
Q* = 8.2026, df = 8, p-value = 0.4139
Model df: 5. Total lags used: 13
forecast(fit_IHSG_S,h=10) %>% autoplot() + theme_bw() + ylab('IHSG')
forecast(fit_IHSG_S,h=10) %>% as.data.frame() %>% datatable() %>%
formatRound(columns=colnames(forecast(fit_IHSG_S,h=10) %>% as.data.frame()),digits = 3)
ggpairs(dt[,c('IHK','M2','IHSG')]) + theme_bw()
fit_M2_arimax <- auto.arima(ts_dt[,'IHK'],
xreg = ts_dt[,c('IHSG','M2')],
seasonal=T,trace=T,stepwise=T)
Regression with ARIMA(2,0,2)(1,0,1)[12] errors : Inf
Regression with ARIMA(0,0,0) errors : 219.1605
Regression with ARIMA(1,0,0)(1,0,0)[12] errors : Inf
Regression with ARIMA(0,0,1)(0,0,1)[12] errors : 182.6329
Regression with ARIMA(0,0,0) errors : 466.0125
Regression with ARIMA(0,0,1) errors : 180.3338
Regression with ARIMA(0,0,1)(1,0,0)[12] errors : 182.7234
Regression with ARIMA(0,0,1)(1,0,1)[12] errors : 181.7997
Regression with ARIMA(1,0,1) errors : Inf
Regression with ARIMA(0,0,2) errors : 154.8949
Regression with ARIMA(0,0,2)(1,0,0)[12] errors : 155.4894
Regression with ARIMA(0,0,2)(0,0,1)[12] errors : 153.7999
Regression with ARIMA(0,0,2)(1,0,1)[12] errors : 154.9567
Regression with ARIMA(1,0,2)(0,0,1)[12] errors : Inf
Regression with ARIMA(0,0,3)(0,0,1)[12] errors : 138.0388
Regression with ARIMA(0,0,3) errors : 141.1436
Regression with ARIMA(0,0,3)(1,0,1)[12] errors : 140.6475
Regression with ARIMA(0,0,3)(1,0,0)[12] errors : 139.0141
Regression with ARIMA(1,0,3)(0,0,1)[12] errors : Inf
Regression with ARIMA(0,0,4)(0,0,1)[12] errors : 135.3759
Regression with ARIMA(0,0,4) errors : 136.2502
Regression with ARIMA(0,0,4)(1,0,1)[12] errors : 138.1449
Regression with ARIMA(0,0,4)(1,0,0)[12] errors : 135.3891
Regression with ARIMA(1,0,4)(0,0,1)[12] errors : Inf
Regression with ARIMA(0,0,5)(0,0,1)[12] errors : 131.1132
Regression with ARIMA(0,0,5) errors : 135.6046
Regression with ARIMA(0,0,5)(1,0,1)[12] errors : 133.6008
Regression with ARIMA(0,0,5)(1,0,0)[12] errors : 131.1261
Regression with ARIMA(1,0,5)(0,0,1)[12] errors : Inf
Regression with ARIMA(0,0,5)(0,0,1)[12] errors : 317.0066
Best model: Regression with ARIMA(0,0,5)(0,0,1)[12] errors
summary(fit_M2_arimax)
Series: ts_dt[, "IHK"]
Regression with ARIMA(0,0,5)(0,0,1)[12] errors
Coefficients:
ma1 ma2 ma3 ma4 ma5 sma1 intercept
0.8291 1.2565 0.9479 0.5875 0.4091 0.5339 81.5252
s.e. 0.1412 0.2280 0.2712 0.2225 0.1809 0.1779 5.1057
IHSG M2
-2e-04 0.0038
s.e. 2e-04 0.0008
sigma^2 = 0.2997: log likelihood = -53.59
AIC=127.18 AICc=131.11 BIC=149.23
Training set error measures:
ME RMSE MAE MPE MAPE
Training set 0.03836652 0.5093184 0.3984354 0.02762542 0.373614
MASE ACF1
Training set 0.1301734 0.094414
checkresiduals(fit_M2_arimax)
Ljung-Box test
data: Residuals from Regression with ARIMA(0,0,5)(0,0,1)[12] errors
Q* = 19.471, df = 7, p-value = 0.006832
Model df: 6. Total lags used: 13
simulasi <- data.frame(IHSG = forecast(fit_IHSG_S,h=20)$mean,
M2 = c(8350,8400,8450,8500,8550,
8600,8650,8700,8750,8800,
8900,9000,9050,9100,9150,
9200,9250,9300,9350,9400))
ts_simulasi <- ts(simulasi, start=c(2023,8),frequency = 12)
forecast(fit_M2_arimax,h=20,
xreg = ts_simulasi) %>%
autoplot() +
theme_bw() +
ylab('Indeks Harga Konsumen')
forecast(fit_M2_arimax,h=20,
xreg = ts_simulasi)
simulasi <- data.frame(IHSG = forecast(fit_IHSG_S,h=20)$mean,
M2 = c(8350,8300,8250,8200,8150,
8100,8050,8000,7950,7900,
7850,7800,7750,7700,7650,
7600,7550,7500,7450,7400))
ts_simulasi <- ts(simulasi, start=c(2023,8),frequency = 12)
forecast(fit_M2_arimax,h=20,
xreg = ts_simulasi) %>%
autoplot() +
theme_bw() +
ylab('Indeks Harga Konsumen')
forecast(fit_M2_arimax,h=20,
xreg = ts_simulasi)
simulasi <- data.frame(IHSG = forecast(fit_IHSG_S,h=20)$mean,
M2 = c(8350+(1:20)*200))
ts_simulasi <- ts(simulasi, start=c(2023,8),frequency = 12)
forecast(fit_M2_arimax,h=20,
xreg = ts_simulasi) %>%
autoplot() +
theme_bw() +
ylab('Uang Beredar (Trilyun Rupiah)')
forecast(fit_M2_arimax,h=20,
xreg = ts_simulasi)