library(astsa)
Warning: package ‘astsa’ was built under R version 4.3.3
Attaching package: ‘astsa’
The following object is masked from ‘package:forecast’:
gas
library(forecast)
library(tseries)
Warning: package ‘tseries’ was built under R version 4.3.3
‘tseries’ version: 0.10-58
‘tseries’ is a package for time series analysis and
computational finance.
See ‘library(help="tseries")’ for details.
library(ggplot2)
Warning: package ‘ggplot2’ was built under R version 4.3.3
library(gridExtra)
Warning: package ‘gridExtra’ was built under R version 4.3.3
set.seed(123)
sim_data <- sarima.sim(
ar = c(0.5, -0.3), # AR(2)
ma = c(0.4, 0.2), # MA(2)
sar = c(0.6, -0.5), # Seasonal AR(2)
sma = c(-0.4, 0.3), # Seasonal MA(2)
d = 1, D = 1, S = 12, # Differencing
n = 200
)
ts_data <- ts(sim_data, frequency = 12)
autoplot(ts_data) + ggtitle("Simulasi SARIMA(2,1,2)(2,1,2)[12]") +
ylab("Nilai") + xlab("Waktu")

acf(ts_data, main = "ACF - Tanpa Differencing")

pacf(ts_data, main = "PACF - Tanpa Differencing")

diff_d <- diff(ts_data, differences = 1)
autoplot(diff_d) + ggtitle("Non-seasonal Differencing (d = 1)")

acf(diff_d, main = "ACF - d = 1")

pacf(diff_d, main = "PACF - d = 1")

diff_D <- diff(ts_data, lag = 12, differences = 1)
autoplot(diff_D) + ggtitle("Seasonal Differencing (D = 1, s = 12)")

acf(diff_D, main = "ACF - D = 1")

pacf(diff_D, main = "PACF - D = 1")

diff_both <- diff(diff(ts_data, differences = 1), lag = 12, differences = 1)
autoplot(diff_both) + ggtitle("Differencing Gabungan (d = 1, D = 1)")

acf(diff_both, main = "ACF - d = 1, D = 1")

pacf(diff_both, main = "PACF - d = 1, D = 1")

# Deteksi model SARIMA terbaik secara otomatis
model_otomatis <- auto.arima(ts_data,
seasonal = TRUE,
stepwise = FALSE,
approximation = FALSE,
trace = TRUE)
ARIMA(0,1,0)(0,1,0)[12] : 653.4294
ARIMA(0,1,0)(0,1,1)[12] : 651.0035
ARIMA(0,1,0)(0,1,2)[12] : 652.0255
ARIMA(0,1,0)(1,1,0)[12] : 651.9224
ARIMA(0,1,0)(1,1,1)[12] : Inf
ARIMA(0,1,0)(1,1,2)[12] : Inf
ARIMA(0,1,0)(2,1,0)[12] : 650.6709
ARIMA(0,1,0)(2,1,1)[12] : 650.5049
ARIMA(0,1,0)(2,1,2)[12] : Inf
ARIMA(0,1,1)(0,1,0)[12] : 553.8228
ARIMA(0,1,1)(0,1,1)[12] : 551.052
ARIMA(0,1,1)(0,1,2)[12] : 551.0687
ARIMA(0,1,1)(1,1,0)[12] : 552.2943
ARIMA(0,1,1)(1,1,1)[12] : Inf
ARIMA(0,1,1)(1,1,2)[12] : 551.8468
ARIMA(0,1,1)(2,1,0)[12] : 549.8733
ARIMA(0,1,1)(2,1,1)[12] : 551.0119
ARIMA(0,1,1)(2,1,2)[12] : 552.9153
ARIMA(0,1,2)(0,1,0)[12] : 547.3617
ARIMA(0,1,2)(0,1,1)[12] : 542.8624
ARIMA(0,1,2)(0,1,2)[12] : 540.8471
ARIMA(0,1,2)(1,1,0)[12] : 545.1108
ARIMA(0,1,2)(1,1,1)[12] : Inf
ARIMA(0,1,2)(1,1,2)[12] : 540.3385
ARIMA(0,1,2)(2,1,0)[12] : 538.8196
ARIMA(0,1,2)(2,1,1)[12] : 539.1644
ARIMA(0,1,3)(0,1,0)[12] : 548.9038
ARIMA(0,1,3)(0,1,1)[12] : 544.3469
ARIMA(0,1,3)(0,1,2)[12] : 542.1701
ARIMA(0,1,3)(1,1,0)[12] : 546.6653
ARIMA(0,1,3)(1,1,1)[12] : Inf
ARIMA(0,1,3)(2,1,0)[12] : 540.2889
ARIMA(0,1,4)(0,1,0)[12] : 540.063
ARIMA(0,1,4)(0,1,1)[12] : 533.2752
ARIMA(0,1,4)(1,1,0)[12] : 535.478
ARIMA(0,1,5)(0,1,0)[12] : 541.8035
ARIMA(1,1,0)(0,1,0)[12] : 583.1958
ARIMA(1,1,0)(0,1,1)[12] : 580.1901
ARIMA(1,1,0)(0,1,2)[12] : 577.8341
ARIMA(1,1,0)(1,1,0)[12] : 581.9601
ARIMA(1,1,0)(1,1,1)[12] : Inf
ARIMA(1,1,0)(1,1,2)[12] : 576.3087
ARIMA(1,1,0)(2,1,0)[12] : 575.5162
ARIMA(1,1,0)(2,1,1)[12] : 575.8985
ARIMA(1,1,0)(2,1,2)[12] : 577.9036
ARIMA(1,1,1)(0,1,0)[12] : 548.6543
ARIMA(1,1,1)(0,1,1)[12] : 545.047
ARIMA(1,1,1)(0,1,2)[12] : 543.4013
ARIMA(1,1,1)(1,1,0)[12] : 546.8863
ARIMA(1,1,1)(1,1,1)[12] : Inf
ARIMA(1,1,1)(1,1,2)[12] : 543.6682
ARIMA(1,1,1)(2,1,0)[12] : 541.7354
ARIMA(1,1,1)(2,1,1)[12] : 542.6052
ARIMA(1,1,2)(0,1,0)[12] : 549.2883
ARIMA(1,1,2)(0,1,1)[12] : 544.7933
ARIMA(1,1,2)(0,1,2)[12] : 542.6982
ARIMA(1,1,2)(1,1,0)[12] : 547.0675
ARIMA(1,1,2)(1,1,1)[12] : Inf
ARIMA(1,1,2)(2,1,0)[12] : Inf
ARIMA(1,1,3)(0,1,0)[12] : 548.7124
ARIMA(1,1,3)(0,1,1)[12] : 543.1397
ARIMA(1,1,3)(1,1,0)[12] : 545.6338
ARIMA(1,1,4)(0,1,0)[12] : 541.754
ARIMA(2,1,0)(0,1,0)[12] : 540.085
ARIMA(2,1,0)(0,1,1)[12] : 531.9909
ARIMA(2,1,0)(0,1,2)[12] : 531.32
ARIMA(2,1,0)(1,1,0)[12] : 535.0691
ARIMA(2,1,0)(1,1,1)[12] : Inf
ARIMA(2,1,0)(1,1,2)[12] : 530.9468
ARIMA(2,1,0)(2,1,0)[12] : 529.6462
ARIMA(2,1,0)(2,1,1)[12] : 530.1308
ARIMA(2,1,1)(0,1,0)[12] : 542.0702
ARIMA(2,1,1)(0,1,1)[12] : 534.0234
ARIMA(2,1,1)(0,1,2)[12] : 533.4352
ARIMA(2,1,1)(1,1,0)[12] : 537.1631
ARIMA(2,1,1)(1,1,1)[12] : Inf
ARIMA(2,1,1)(2,1,0)[12] : 531.7647
ARIMA(2,1,2)(0,1,0)[12] : 542.1535
ARIMA(2,1,2)(0,1,1)[12] : 534.5727
ARIMA(2,1,2)(1,1,0)[12] : 537.6018
ARIMA(2,1,3)(0,1,0)[12] : 543.6987
ARIMA(3,1,0)(0,1,0)[12] : 542.1141
ARIMA(3,1,0)(0,1,1)[12] : 534.0556
ARIMA(3,1,0)(0,1,2)[12] : 533.4436
ARIMA(3,1,0)(1,1,0)[12] : 537.1704
ARIMA(3,1,0)(1,1,1)[12] : Inf
ARIMA(3,1,0)(2,1,0)[12] : Inf
ARIMA(3,1,1)(0,1,0)[12] : 542.3253
ARIMA(3,1,1)(0,1,1)[12] : 534.8247
ARIMA(3,1,1)(1,1,0)[12] : 537.6188
ARIMA(3,1,2)(0,1,0)[12] : 543.3572
ARIMA(4,1,0)(0,1,0)[12] : 542.2586
ARIMA(4,1,0)(0,1,1)[12] : 534.4598
ARIMA(4,1,0)(1,1,0)[12] : 537.5289
ARIMA(4,1,1)(0,1,0)[12] : 544.111
ARIMA(5,1,0)(0,1,0)[12] : 544.0593
Best model: ARIMA(2,1,0)(2,1,0)[12]
summary(model_otomatis)
Series: ts_data
ARIMA(2,1,0)(2,1,0)[12]
Coefficients:
ar1 ar2 sar1 sar2
0.8665 -0.4805 0.2493 -0.2174
s.e. 0.0649 0.0645 0.0765 0.0776
sigma^2 = 0.9488: log likelihood = -259.66
AIC=529.31 AICc=529.65 BIC=545.47
Training set error measures:
ME RMSE MAE MPE MAPE
Training set 0.02490307 0.9317278 0.7222131 0.001681696 0.4587338
MASE ACF1
Training set 0.0844966 -0.001414596
checkresiduals(model_otomatis)
Ljung-Box test
data: Residuals from ARIMA(2,1,0)(2,1,0)[12]
Q* = 21.425, df = 20, p-value = 0.3725
Model df: 4. Total lags used: 24

LS0tDQp0aXRsZTogIlNpbXVsYXNpIEFSSU1BKDIsMSwyKSAoMiwxLDIpXjEyIGRhbiBQbG90Ig0KYXV0aG9yOiAiQW1hZGVhIEluY2hyaXNhICg1MDAzMjIxMTQ2KSINCmtlbGFzOiAiQW5hbGlzaXMgRGVyZXQgV2FrdHUiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpgYGB7cn0NCmxpYnJhcnkoYXN0c2EpDQpsaWJyYXJ5KGZvcmVjYXN0KQ0KbGlicmFyeSh0c2VyaWVzKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShncmlkRXh0cmEpDQpgYGANCg0KYGBge3J9DQpzZXQuc2VlZCgxMjMpDQpgYGANCg0KYGBge3J9DQpzaW1fZGF0YSA8LSBzYXJpbWEuc2ltKA0KICBhciA9IGMoMC41LCAtMC4zKSwgICAgICAgIyBBUigyKQ0KICBtYSA9IGMoMC40LCAwLjIpLCAgICAgICAgIyBNQSgyKQ0KICBzYXIgPSBjKDAuNiwgLTAuNSksICAgICAgIyBTZWFzb25hbCBBUigyKQ0KICBzbWEgPSBjKC0wLjQsIDAuMyksICAgICAgIyBTZWFzb25hbCBNQSgyKQ0KICBkID0gMSwgRCA9IDEsIFMgPSAxMiwgICAgIyBEaWZmZXJlbmNpbmcNCiAgbiA9IDIwMA0KKQ0KYGBgDQoNCmBgYHtyfQ0KdHNfZGF0YSA8LSB0cyhzaW1fZGF0YSwgZnJlcXVlbmN5ID0gMTIpDQpgYGANCg0KYGBge3J9DQphdXRvcGxvdCh0c19kYXRhKSArIGdndGl0bGUoIlNpbXVsYXNpIFNBUklNQSgyLDEsMikoMiwxLDIpWzEyXSIpICsNCiAgeWxhYigiTmlsYWkiKSArIHhsYWIoIldha3R1IikNCg0KYGBgDQoNCmBgYHtyfQ0KYWNmKHRzX2RhdGEsIG1haW4gPSAiQUNGIC0gVGFucGEgRGlmZmVyZW5jaW5nIikNCnBhY2YodHNfZGF0YSwgbWFpbiA9ICJQQUNGIC0gVGFucGEgRGlmZmVyZW5jaW5nIikNCmBgYA0KYGBge3J9DQpkaWZmX2QgPC0gZGlmZih0c19kYXRhLCBkaWZmZXJlbmNlcyA9IDEpDQphdXRvcGxvdChkaWZmX2QpICsgZ2d0aXRsZSgiTm9uLXNlYXNvbmFsIERpZmZlcmVuY2luZyAoZCA9IDEpIikNCmFjZihkaWZmX2QsIG1haW4gPSAiQUNGIC0gZCA9IDEiKQ0KcGFjZihkaWZmX2QsIG1haW4gPSAiUEFDRiAtIGQgPSAxIikNCmBgYA0KYGBge3J9DQpkaWZmX0QgPC0gZGlmZih0c19kYXRhLCBsYWcgPSAxMiwgZGlmZmVyZW5jZXMgPSAxKQ0KYXV0b3Bsb3QoZGlmZl9EKSArIGdndGl0bGUoIlNlYXNvbmFsIERpZmZlcmVuY2luZyAoRCA9IDEsIHMgPSAxMikiKQ0KYWNmKGRpZmZfRCwgbWFpbiA9ICJBQ0YgLSBEID0gMSIpDQpwYWNmKGRpZmZfRCwgbWFpbiA9ICJQQUNGIC0gRCA9IDEiKQ0KYGBgDQpgYGB7cn0NCmRpZmZfYm90aCA8LSBkaWZmKGRpZmYodHNfZGF0YSwgZGlmZmVyZW5jZXMgPSAxKSwgbGFnID0gMTIsIGRpZmZlcmVuY2VzID0gMSkNCmF1dG9wbG90KGRpZmZfYm90aCkgKyBnZ3RpdGxlKCJEaWZmZXJlbmNpbmcgR2FidW5nYW4gKGQgPSAxLCBEID0gMSkiKQ0KYWNmKGRpZmZfYm90aCwgbWFpbiA9ICJBQ0YgLSBkID0gMSwgRCA9IDEiKQ0KcGFjZihkaWZmX2JvdGgsIG1haW4gPSAiUEFDRiAtIGQgPSAxLCBEID0gMSIpDQpgYGANCmBgYHtyfQ0KIyBEZXRla3NpIG1vZGVsIFNBUklNQSB0ZXJiYWlrIHNlY2FyYSBvdG9tYXRpcw0KbW9kZWxfb3RvbWF0aXMgPC0gYXV0by5hcmltYSh0c19kYXRhLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vhc29uYWwgPSBUUlVFLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcHdpc2UgPSBGQUxTRSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcHJveGltYXRpb24gPSBGQUxTRSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2UgPSBUUlVFKSAgDQpgYGANCg0KDQpgYGB7cn0NCnN1bW1hcnkobW9kZWxfb3RvbWF0aXMpDQpgYGANCg0KDQpgYGB7cn0NCmNoZWNrcmVzaWR1YWxzKG1vZGVsX290b21hdGlzKQ0KYGBgDQoNCmBgYHtyfQ0KYGBgDQoNCg==