Kegiatan 7 - Pembangkitan Data Time Series

Simulasi ARIMA(1,1,1)

Memanggil Library

library(tseries)
## Warning: package 'tseries' was built under R version 4.4.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.4.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)
## Warning: package 'forecast' was built under R version 4.4.3
## Registered S3 methods overwritten by 'forecast':
##   method       from
##   fitted.Arima TSA 
##   plot.Arima   TSA

1. Pembangkitan Data Time Series

# Set seed agar hasil tetap sama
set.seed(456)

# Panjang data
n <- 200

# Parameter ARIMA(1,1,1)
# Dibuat berbeda dari contoh dosen
ar <- 0.5
ma <- 0.3

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

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

## 2. Plot ACF dan PACF Awal

acf(ts_arima)

pacf(ts_arima)

#Interpretasi: #Digunakan untuk melihat pola awal data #dan membantu identifikasi model awal

3. Uji Kestasioneran Awal (ADF Test)

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

#Interpretasi: #Jika p-value > 0.05 #maka data belum stasioner #sehingga perlu differencing

4. Differencing Orde 1

diff1 <- diff(ts_arima)

#Karena model awal ARIMA(1,1,1) #maka differencing dilakukan 1 kali

5. Plot ACF dan PACF Setelah Differencing

acf(diff1)

pacf(diff1)

## 6. Uji Kestasioneran 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

#Interpretasi: #Jika p-value < 0.05 #maka data sudah stasioner #dan siap dimodelkan

7. Ubah Menjadi Data Time Series

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

#Karena differencing sudah dilakukan manual, #maka pemodelan berikutnya menggunakan #ARIMA(p,0,q)

8. Menentukan Kandidat Model

acf(data.ts)

pacf(data.ts)

#EACF digunakan untuk membantu #menentukan kandidat model

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

#Berdasarkan ACF, PACF, dan EACF #kandidat model yang mungkin adalah:

#1. ARIMA(1,0,1) #2. ARIMA(1,0,2) #3. ARIMA(0,0,1) #4. ARIMA(2,0,2)

9. Perbandingan dengan auto.arima

# auto.arima pada data hasil differencing
auto.arima(data.ts)
## Series: data.ts 
## ARIMA(3,0,3) with zero mean 
## 
## Coefficients:
##          ar1      ar2     ar3      ma1     ma2     ma3
##       1.6194  -1.4098  0.3988  -0.8145  0.5984  0.2430
## s.e.  0.1650   0.2109  0.1362   0.1716  0.1593  0.1299
## 
## sigma^2 = 0.9429:  log likelihood = -275.43
## AIC=564.86   AICc=565.44   BIC=587.95
# auto.arima pada data asli
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

#Digunakan sebagai pembanding #dengan model manual yang dipilih

10. Menentukan Model Terbaik Berdasarkan AIC

#-------------------------------
# Model 1 : ARIMA(1,0,1)
#-------------------------------

model1 <- arima(
  data.ts,
  order = c(1,0,1),
  method = "ML"
)

model1
## 
## Call:
## arima(x = data.ts, order = c(1, 0, 1), method = "ML")
## 
## Coefficients:
##          ar1     ma1  intercept
##       0.5629  0.2568     0.0375
## s.e.  0.0813  0.0950     0.1971
## 
## sigma^2 estimated as 0.953:  log likelihood = -279.33,  aic = 564.66
AIC(model1)
## [1] 566.6602
#-------------------------------
# Model 2 : ARIMA(1,0,2)
#-------------------------------

model2 <- arima(
  data.ts,
  order = c(1,0,2),
  method = "ML"
)

model2
## 
## Call:
## arima(x = data.ts, order = c(1, 0, 2), method = "ML")
## 
## Coefficients:
##          ar1     ma1     ma2  intercept
##       0.5237  0.2932  0.0537     0.0357
## s.e.  0.1161  0.1225  0.1031     0.1938
## 
## sigma^2 estimated as 0.9517:  log likelihood = -279.2,  aic = 566.4
AIC(model2)
## [1] 568.3975
#-------------------------------
# Model 3 : ARIMA(0,0,1)
#-------------------------------

model3 <- arima(
  data.ts,
  order = c(0,0,1),
  method = "ML"
)

model3
## 
## Call:
## arima(x = data.ts, order = c(0, 0, 1), method = "ML")
## 
## Coefficients:
##          ma1  intercept
##       0.6503     0.0240
## s.e.  0.0451     0.1226
## 
## sigma^2 estimated as 1.109:  log likelihood = -294.38,  aic = 592.76
AIC(model3)
## [1] 594.7621
#-------------------------------
# Model 4 : ARIMA(2,0,2)
#-------------------------------

model4 <- arima(
  data.ts,
  order = c(2,0,2),
  method = "ML"
)

model4
## 
## Call:
## arima(x = data.ts, order = c(2, 0, 2), method = "ML")
## 
## Coefficients:
##          ar1      ar2      ma1     ma2  intercept
##       1.1446  -0.4362  -0.3358  0.0355     0.0260
## s.e.  0.2412   0.1526   0.2436  0.1481     0.1643
## 
## sigma^2 estimated as 0.9406:  log likelihood = -278.05,  aic = 566.09
AIC(model4)
## [1] 568.0948

11. Membandingkan Nilai AIC

AIC(model1)
## [1] 566.6602
AIC(model2)
## [1] 568.3975
AIC(model3)
## [1] 594.7621
AIC(model4)
## [1] 568.0948

#Model dengan nilai AIC terkecil dipilih sebagai model terbaik

12. Kesimpulan

#Model pembangkitan awal: ARIMA(1,1,1) #Model terbaik hasil pemodelan: Model l1 #Model terbaik hasil pemodelan: ARIMA(1,0,1)

Analisis:

#Jika model terbaik berbeda dari model pembangkitan awal, hal ini dapat terjadi karena: #1. Adanya unsur random dalam proses simulasi data #2. Ukuran sampel yang terbatas dapat memengaruhi estimasi parameter #3. Karakteristik data hasil simulasi tidak selalu identik dengan model teoritis #4. Estimasi parameter ARIMA tidak selalu menghasilkan model yang sama dengan model awal #5. auto.arima dan AIC memilih model terbaik berdasarkan data aktual, bukan berdasarkan model pembangkitan

#Kesimpulan akhir: Data yang dibangkitkan dengan model, ARIMA(1,1,1) belum tentu menghasilkan model terbaik yang sama setelah proses identifikasi dan estimasi dilakukan.