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==