Pembangkitan Data Time Series

library(tseries) 
## Warning: package 'tseries' was built under R version 4.5.3
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(TSA) 
## Warning: package 'TSA' was built under R version 4.5.3
## 
## Attaching package: 'TSA'
## The following objects are masked from 'package:stats':
## 
##     acf, arima
## The following object is masked from 'package:utils':
## 
##     tar
library(forecast) 
## Registered S3 methods overwritten by 'forecast':
##   method       from
##   fitted.Arima TSA 
##   plot.Arima   TSA
set.seed(123) 
# Panjang data 
n <- 200 
# Parameter ARIMA(p=1, d=1, q=1) 
ar <- 0.7     
# AR(1) 
ma <- -0.5    
# MA(1) 
# Simulasi data 
ts_arima <- arima.sim(model = list(order = c(1,1,1), ar = ar, ma = ma), n = 
n) 
# Plot 
ts.plot(ts_arima, main = "Simulasi Data ARIMA(1,1,1)")

acf(ts_arima) 

pacf(ts_arima)

adf.test(ts_arima)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  ts_arima
## Dickey-Fuller = -2.449, Lag order = 5, p-value = 0.388
## alternative hypothesis: stationary
diff1 <- diff(ts_arima) 
acf(diff1) 

pacf(diff1) 

adf.test(diff1)
## Warning in adf.test(diff1): p-value smaller than printed p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  diff1
## Dickey-Fuller = -5.4572, Lag order = 5, p-value = 0.01
## alternative hypothesis: stationary
data.ts<-ts(diff1) 
head(data.ts)
## Time Series:
## Start = 1 
## End = 6 
## Frequency = 1 
## [1] -0.4362295 -1.1367886 -0.4798151 -1.2528876 -1.0929103 -1.0256309
acf(data.ts) 

pacf(data.ts) 

eacf(data.ts)
## AR/MA
##   0 1 2 3 4 5 6 7 8 9 10 11 12 13
## 0 x o o o o o o o o o o  o  o  o 
## 1 x o o o o o o o o o o  o  o  o 
## 2 x x o o o o o o o o o  o  o  o 
## 3 x x o o o o o o o o o  o  o  o 
## 4 x x o o o o o o o o o  o  o  o 
## 5 x o o o o o o o o o o  o  o  o 
## 6 x o o x o o o o o o o  o  o  o 
## 7 o x x x x o o o o o o  o  o  o
auto.arima(data.ts)
## Series: data.ts 
## ARIMA(2,0,2) with zero mean 
## 
## Coefficients:
##           ar1     ar2     ma1      ma2
##       -0.1116  0.6336  0.3108  -0.6250
## s.e.   0.2175  0.1701  0.2294   0.2122
## 
## sigma^2 = 0.8631:  log likelihood = -267.28
## AIC=544.57   AICc=544.88   BIC=561.06
auto.arima(ts_arima) 
## Series: ts_arima 
## ARIMA(2,1,2) 
## 
## Coefficients:
##           ar1     ar2     ma1      ma2
##       -0.1116  0.6336  0.3108  -0.6250
## s.e.   0.2175  0.1701  0.2294   0.2122
## 
## sigma^2 = 0.8631:  log likelihood = -267.28
## AIC=544.57   AICc=544.88   BIC=561.06
arima(data.ts, order=c(1,1,1), method="ML")
## 
## Call:
## arima(x = data.ts, order = c(1, 1, 1), method = "ML")
## 
## Coefficients:
##          ar1      ma1
##       0.1488  -1.0000
## s.e.  0.0706   0.0164
## 
## sigma^2 estimated as 0.8926:  log likelihood = -273.56,  aic = 551.13
arima(data.ts, order=c(1,1,3), method="ML") 
## 
## Call:
## arima(x = data.ts, order = c(1, 1, 3), method = "ML")
## 
## Coefficients:
##           ar1     ma1      ma2      ma3
##       -0.8559  0.0335  -0.9642  -0.0693
## s.e.   0.0800  0.1018   0.0443   0.0772
## 
## sigma^2 estimated as 0.8611:  log likelihood = -270.25,  aic = 548.49
arima(data.ts, order=c(0,1,1), method="ML") 
## 
## Call:
## arima(x = data.ts, order = c(0, 1, 1), method = "ML")
## 
## Coefficients:
##           ma1
##       -0.9294
## s.e.   0.1078
## 
## sigma^2 estimated as 0.93:  log likelihood = -276.14,  aic = 554.28
arima(data.ts, order=c(2,0,2), method="ML")
## 
## Call:
## arima(x = data.ts, order = c(2, 0, 2), method = "ML")
## 
## Coefficients:
##           ar1     ar2     ma1      ma2  intercept
##       -0.1096  0.6350  0.3087  -0.6269    -0.0214
## s.e.   0.2164  0.1692  0.2283   0.2112     0.0931
## 
## sigma^2 estimated as 0.8456:  log likelihood = -267.26,  aic = 544.51

Tugas

Lakukan simulasi pembangkitan data time series menggunakan model ARIMA(1,1,1) dengan nilai parameter AR dan MA yang berbeda dari contoh, kemudian lakukan seluruh tahapan pemodelan mulai dari identifikasi melalui plot ACF dan PACF, pengujian kestasioneran menggunakan ADF test, proses differencing, hingga penentuan kandidat model dan pemilihan model terbaik berdasarkan nilai AIC. Selanjutnya, bandingkan model hasil pembangkitan dengan model terbaik yang diperoleh dari proses pemodelan, kemudian jelaskan apakah keduanya sama atau berbeda serta berikan analisis mengenai kemungkinan penyebab perbedaan tersebut.

library(tseries)
library(TSA)
library(forecast)

# Reproduksibilitas
set.seed(456)

# Panjang data
n <- 200

# Parameter
ar <- 0.5
ma <- 0.3

# Simulasi data ARIMA(1,1,1)
ts_arima <- arima.sim(
  model = list(order = c(1,1,1),
               ar = ar,
               ma = ma),
  n = n)

# Plot data
ts.plot(ts_arima,
        main="Simulasi Data ARIMA(1,1,1)",
        ylab="Nilai")

acf(ts_arima,
    main="ACF Data Awal")

pacf(ts_arima,
     main="PACF Data Awal")

adf.test(ts_arima)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  ts_arima
## Dickey-Fuller = -2.5036, Lag order = 5, p-value = 0.3652
## alternative hypothesis: stationary
diff1 <- diff(ts_arima)

ts.plot(diff1,
        main="Data Setelah Differencing")

acf(diff1,
    main="ACF Setelah Differencing")

pacf(diff1,
     main="PACF Setelah Differencing")

adf.test(diff1)
## Warning in adf.test(diff1): p-value smaller than printed p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  diff1
## Dickey-Fuller = -5.0984, Lag order = 5, p-value = 0.01
## alternative hypothesis: stationary
data.ts <- ts(diff1)

head(data.ts)
## Time Series:
## Start = 1 
## End = 6 
## Frequency = 1 
## [1] 1.0461694 1.9051402 2.9031167 0.5069317 1.7685807 3.2054335
acf(data.ts)

acf(data.ts)

pacf(data.ts)

eacf(data.ts)
## AR/MA
##   0 1 2 3 4 5 6 7 8 9 10 11 12 13
## 0 x x o o o o o o o o o  x  x  o 
## 1 x x x x o o o o o o o  o  o  o 
## 2 x o x o o o o o o o o  o  o  o 
## 3 x x x o o o o o o o o  o  o  o 
## 4 x x x o o o o o o o o  o  o  o 
## 5 x o o x o o o o o o o  o  o  o 
## 6 x o o x o o o o o o o  o  o  o 
## 7 x o o x o o o o o o o  o  o  o
auto.arima(ts_arima)
## Series: ts_arima 
## ARIMA(3,1,3) 
## 
## Coefficients:
##          ar1      ar2     ar3      ma1     ma2     ma3
##       1.6192  -1.4093  0.3985  -0.8142  0.5980  0.2433
## s.e.  0.1650   0.2112  0.1363   0.1716  0.1594  0.1298
## 
## sigma^2 = 0.9429:  log likelihood = -275.43
## AIC=564.86   AICc=565.44   BIC=587.95
fit1 <- arima(ts_arima,
              order=c(1,1,1),
              method="ML")

fit2 <- arima(ts_arima,
              order=c(0,1,2),
              method="ML")

fit3 <- arima(ts_arima,
              order=c(2,1,1),
              method="ML")

fit4 <- arima(ts_arima,
              order=c(2,1,3),
              method="ML")

fit5 <- arima(ts_arima,
              order=c(3,1,3),
              method="ML")
## Warning in stats::arima(x = x, order = order, seasonal = seasonal, xreg = xreg,
## : possible convergence problem: optim gave code = 1
AICs <- c(
  fit1$aic,
  fit2$aic,
  fit3$aic,
  fit4$aic,
  fit5$aic
)

data.frame(
  Model=c(
    "ARIMA(1,1,1)",
    "ARIMA(0,1,2)",
    "ARIMA(2,1,1)",
    "ARIMA(2,1,3)",
    "ARIMA(3,1,3)"
  ),
  AIC=AICs
)
##          Model      AIC
## 1 ARIMA(1,1,1) 562.6964
## 2 ARIMA(0,1,2) 573.1460
## 3 ARIMA(2,1,1) 562.1744
## 4 ARIMA(2,1,3) 561.9736
## 5 ARIMA(3,1,3) 562.8608
fit1
## 
## Call:
## arima(x = ts_arima, order = c(1, 1, 1), method = "ML")
## 
## Coefficients:
##          ar1     ma1
##       0.5629  0.2569
## s.e.  0.0813  0.0950
## 
## sigma^2 estimated as 0.9531:  log likelihood = -279.35,  aic = 562.7
fit2
## 
## Call:
## arima(x = ts_arima, order = c(0, 1, 2), method = "ML")
## 
## Coefficients:
##          ma1     ma2
##       0.7617  0.2826
## s.e.  0.0662  0.0606
## 
## sigma^2 estimated as 1.005:  log likelihood = -284.57,  aic = 573.15
fit3
## 
## Call:
## arima(x = ts_arima, order = c(2, 1, 1), method = "ML")
## 
## Coefficients:
##          ar1      ar2      ma1
##       1.1712  -0.4395  -0.3554
## s.e.  0.2199   0.1505   0.2341
## 
## sigma^2 estimated as 0.941:  log likelihood = -278.09,  aic = 562.17
fit4
## 
## Call:
## arima(x = ts_arima, order = c(2, 1, 3), method = "ML")
## 
## Coefficients:
##          ar1      ar2     ma1     ma2     ma3
##       1.0183  -0.5456  -0.206  0.2095  0.2585
## s.e.  0.2568   0.1909   0.266  0.1062  0.1068
## 
## sigma^2 estimated as 0.9209:  log likelihood = -275.99,  aic = 561.97

Data time series berhasil dibangkitkan menggunakan model ARIMA(1,1,1) dengan parameter AR = 0,5 dan MA = 0,3. Hasil uji ADF menunjukkan bahwa data awal tidak stasioner sehingga dilakukan differencing satu kali. Setelah differencing, data menjadi stasioner dan dapat dimodelkan menggunakan ARIMA. Berdasarkan identifikasi menggunakan ACF, PACF, EACF, serta perbandingan nilai AIC, diperoleh model terbaik yaitu ARIMA(2,1,3) dengan nilai AIC sebesar 561,9736. Model terbaik yang diperoleh berbeda dengan model pembangkitan, yang menunjukkan bahwa proses estimasi dipengaruhi oleh karakteristik sampel dan unsur acak dalam data simulasi.