Penerapan Model ARIMA pada Data Harga Emas Eropa

Data

Library

library("readxl")
library("tseries") 
library("forecast") 
library("TTR") 
library("TSA") 
library("graphics")
library("dplyr")

Import Data

Data yang digunakan adalah data Harga Emas bulanan di Eropa dari Bulan Januari tahun 1999 sampai Desember tahun 2012 yang merupakan data time series yang dipilih/tentukan pada tugas praktikum 1. Data ini diperoleh dari Kaggle : https://www.kaggle.com/odins0n/monthly-gold-prices.

harga_emas <- read_excel("D:/MATERI KULIAH S2 IPB/SEMESTER 2/DERET WAKTU/Harga_Emas_Eropa.xlsx")
data.table::data.table(harga_emas)
##           Bulan  Eropa
##   1: 1999-01-01  251.3
##   2: 1999-02-01  261.5
##   3: 1999-03-01  258.9
##   4: 1999-04-01  270.9
##   5: 1999-05-01  257.6
##  ---                  
## 164: 2012-08-01 1307.8
## 165: 2012-09-01 1380.5
## 166: 2012-10-01 1326.6
## 167: 2012-11-01 1327.1
## 168: 2012-12-01 1257.2
harga.ts<-ts(harga_emas$Eropa)

Plot Data

ts.plot(harga.ts)

Berdasarkan plot deret waktu diatas, terlihat bahwa data cenderung memiliki pola trend.

Partisi Data

Data Harga Emas Eropa di partisi menjadi dua bagian yaitu data training (Januari 1999-Desember 2008) dan data testing (Januari 2009-Desember 2012).

harga.training<-subset(harga.ts, start = 1, end =120 )
harga.training 
## Time Series:
## Start = 1 
## End = 120 
## Frequency = 1 
##   [1] 251.3 261.5 258.9 270.9 257.6 253.1 238.8 241.2 280.8 284.6 289.4 289.6
##  [13] 289.6 305.0 289.2 301.8 293.6 300.6 298.7 311.6 310.1 312.1 309.1 292.3
##  [25] 284.4 290.0 291.5 296.8 315.6 319.6 303.9 300.5 321.8 309.5 307.7 310.5
##  [37] 327.9 343.2 345.5 342.0 349.6 322.5 310.7 319.0 327.5 320.0 320.7 330.9
##  [49] 342.3 322.4 306.9 301.8 307.3 301.3 315.2 342.1 333.2 332.3 332.3 330.0
##  [61] 321.8 318.6 344.8 324.1 322.0 325.3 325.1 335.1 334.7 334.5 341.2 320.5
##  [73] 323.9 328.1 328.9 337.5 335.7 361.1 353.2 352.3 392.5 393.0 420.4 434.9
##  [85] 468.4 466.4 480.9 511.3 508.4 479.8 495.6 487.1 473.1 473.0 487.9 479.3
##  [97] 500.6 502.8 497.1 496.1 489.8 481.7 486.2 492.9 522.5 545.7 533.8 570.3
## [109] 623.6 639.9 589.1 559.5 570.0 590.4 588.4 565.8 629.7 576.3 641.9 625.7
harga.test<-subset(harga.ts, start = 121, end = 168)
harga.test  
## Time Series:
## Start = 121 
## End = 168 
## Frequency = 1 
##  [1]  717.5  749.6  690.3  666.6  689.2  666.2  662.3  665.8  681.2  704.9
## [11]  783.1  758.0  775.9  812.1  824.4  886.9  984.1 1015.6  897.3  980.4
## [21]  957.4  969.0 1062.8 1047.7  967.9 1021.6 1014.0 1035.0 1068.8 1038.4
## [31] 1133.3 1259.6 1207.4 1234.6 1297.0 1179.4 1332.3 1323.2 1248.4 1247.6
## [41] 1260.1 1259.6 1317.0 1307.8 1380.5 1326.6 1327.1 1257.2

Plot Data Partisi

# data training
plot.ts(harga.training, main="Data Training Harga Emas Eropa", xlab="Bulan", ylab="Harga Emas")

# data testing
plot.ts(harga.test, main="Data Testing Harga Emas Eropa", xlab="Bulan", ylab="Harga Emas")

Berdasarkan plot deret waktu diatas, terlihat bahwa data training dan testing cenderung memiliki pola trend.

Stasioneritas Data

Plot ACF

acf(harga.training, lag.max=20)

Berdasarkan plot ACF di atas terlihat bahwa nilai autokorelasi turun secara perlahan yang mengindikasikan bahwa data tidak stasioner.

Uji ADF

adf.test(harga.training, alternative = c("stationary"),
         k = trunc((length(harga.training)-1)^(1/3))) # Augmented Dickey-Fuller
## 
##  Augmented Dickey-Fuller Test
## 
## data:  harga.training
## Dickey-Fuller = -1.2988, Lag order = 4, p-value = 0.8678
## alternative hypothesis: stationary

Berdasarkan hasil uji ADF diperoleh p-value sebesar 0.8678 > 0.05 yang berarti bahwa \(H_0\) gagal ditolak atau data tidak stasioner. Karena data tidak stasioner maka selanjutnya dilakukan differencing untuk membuat data stasioner sebelum dilakukan identifikasi model tentatif.

Differencing

# Differencing Ordo 1
gold.dif1 <- diff(harga.training, difference=1)
plot.ts(gold.dif1, lty=1, xlab="Waktu", ylab="Data Harga Emas Eropa Diff Ordo 1")
points(gold.dif1)

# Cek Kestasioneran
acf(gold.dif1, lag.max=20)

adf.test(gold.dif1, alternative = c("stationary"),
         k = trunc((length(gold.dif1)-1)^(1/3))) # Augmented Dickey-Fuller
## Warning in adf.test(gold.dif1, alternative = c("stationary"), k =
## trunc((length(gold.dif1) - : p-value smaller than printed p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  gold.dif1
## Dickey-Fuller = -5.0547, Lag order = 4, p-value = 0.01
## alternative hypothesis: stationary

Berdasarkan plot data dan ACF yang tidak turun secara melandai, menunjukkan bahwa data stasioner. Selanjutnya, berdasarkan hasil uji ADF, diperoleh nilai p-value < 0.05 yang berarti \(H_0\) ditolak, sehingga dapat disimpulkan bahwa Data Harga Emas Eropa telah stasioner setelah dilakukan differencing ordo 1. Karena data telah stasioner selanjutnya akan dilakukan identifikasi model tentatif.

Identifikasi Model Tentatif

Plot ACF

acf(gold.dif1, lag.max=20) 

Plot PACF

pacf(gold.dif1, lag.max=20) 

EACF

eacf(gold.dif1)
## 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 o o o o o o o o o o o  o  o  o 
## 2 o 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 o o o o o o o o o o  o  o  o 
## 5 x x x o o o o o o o o  o  o  o 
## 6 o o x x x o o o o o o  o  o  o 
## 7 x o o o x o x o o o o  o  o  o

Kandidat Model

Berdasarkan plot ACF (cut off pada lag ke-1), PACF (cut off pada lag ke-1), dan EACF, diperoleh kandidat model:

  1. ARIMA (0,1,1)

  2. ARIMA (1,1,0)

  3. ARIMA (1,1,1)

Pendugaan Parameter dan Penentuan Model Terbaik

arima011<-arima(gold.dif1,  order=c(0,0,1), include.mean = TRUE,method="ML") #ARIMA (0,1,1)

arima110<-arima(gold.dif1,  order=c(1,0,0), include.mean = TRUE,method="ML") #ARIMA (1,1,0)

arima111<-arima(gold.dif1,  order=c(1,0,1), include.mean = TRUE,method="ML") #ARIMA (1,1,1)
arima011
## 
## Call:
## arima(x = gold.dif1, order = c(0, 0, 1), include.mean = TRUE, method = "ML")
## 
## Coefficients:
##           ma1  intercept
##       -0.1924     3.1504
## s.e.   0.0897     1.3192
## 
## sigma^2 estimated as 316.2:  log likelihood = -511.39,  aic = 1026.77
lmtest::coeftest(arima011)
## 
## z test of coefficients:
## 
##            Estimate Std. Error z value Pr(>|z|)  
## ma1       -0.192387   0.089671 -2.1455  0.03191 *
## intercept  3.150439   1.319215  2.3881  0.01693 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
arima110
## 
## Call:
## arima(x = gold.dif1, order = c(1, 0, 0), include.mean = TRUE, method = "ML")
## 
## Coefficients:
##           ar1  intercept
##       -0.1907     3.1621
## s.e.   0.0901     1.3711
## 
## sigma^2 estimated as 316.3:  log likelihood = -511.39,  aic = 1026.78
lmtest::coeftest(arima110)
## 
## z test of coefficients:
## 
##           Estimate Std. Error z value Pr(>|z|)  
## ar1       -0.19067    0.09008 -2.1167  0.03429 *
## intercept  3.16213    1.37109  2.3063  0.02109 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
arima111
## 
## Call:
## arima(x = gold.dif1, order = c(1, 0, 1), include.mean = TRUE, method = "ML")
## 
## Coefficients:
##           ar1      ma1  intercept
##       -0.0788  -0.1150     3.1552
## s.e.   0.6830   0.6854     1.3403
## 
## sigma^2 estimated as 316.2:  log likelihood = -511.38,  aic = 1028.76
lmtest::coeftest(arima111)
## 
## z test of coefficients:
## 
##            Estimate Std. Error z value Pr(>|z|)  
## ar1       -0.078766   0.683013 -0.1153  0.90819  
## ma1       -0.114959   0.685398 -0.1677  0.86680  
## intercept  3.155188   1.340336  2.3540  0.01857 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
aic.arima<-data.frame(
  "Model"=c("ARIMA(0,1,1)", "ARIMA(1,1,0)", "ARIMA(1,1,1)"),
  "AIC"=c(arima011$aic, arima110$aic, arima111$aic))

aic.arima
##          Model      AIC
## 1 ARIMA(0,1,1) 1026.771
## 2 ARIMA(1,1,0) 1026.784
## 3 ARIMA(1,1,1) 1028.758

Berdasarkan hasil di atas dapat disimpulkan bahwa ARIMA (0,1,1) merupakan model terbaik karena model tersebut memiliki nilai AIC terkecil yaitu 1026.771. Selain itu, apabila dilihat dari hasil uji signifikansi penduga parameter, dengan fungsi coeftest terlihat bahwa seluruh koefisien yang telah signifikan terhadap model. Selanjutnya, akan dilihat model terbaik berdasarkan fungsi auto.arima:

auto.arima(harga.training, trace = TRUE)
## 
##  ARIMA(2,1,2) with drift         : 1034.626
##  ARIMA(0,1,0) with drift         : 1031.283
##  ARIMA(1,1,0) with drift         : 1028.993
##  ARIMA(0,1,1) with drift         : 1028.98
##  ARIMA(0,1,0)                    : 1032.749
##  ARIMA(1,1,1) with drift         : 1031.109
##  ARIMA(0,1,2) with drift         : 1031.115
##  ARIMA(1,1,2) with drift         : 1033.036
##  ARIMA(0,1,1)                    : 1032.132
## 
##  Best model: ARIMA(0,1,1) with drift
## Series: harga.training 
## ARIMA(0,1,1) with drift 
## 
## Coefficients:
##           ma1   drift
##       -0.1924  3.1510
## s.e.   0.0897  1.3192
## 
## sigma^2 = 321.7:  log likelihood = -511.39
## AIC=1028.77   AICc=1028.98   BIC=1037.11

Model terbaik yang dihasilkan dengan menggunakan fungsi auto.arima sama dengan model terbaik yang dipilih berdasarkan nilai AIC terkecil yaitu ARIMA (0,1,1).

Diagnostik Model

Diagnostik model dilakukan untuk mengetahui apakah sisaan dari model yang dibangun telah memenuhi asumsi pemodelan. Asumsi sisaan yang harus terpenuhi pada model ARIMA(p,d,q) adalah sebagai berikut:

  1. Sisaan saling bebas (tidak ada autokorelasi) dan identik

  2. Sisaan mengikuti sebaran Normal (0, \(\sigma^2\))

Eksploratif

Berikut dilakukan pemeriksaan asumsi model secara eksploratif melalui Normal Q-Q Plot, Plot ACF, dan PACF.

arima.011y<-arima(harga.training,   order=c(0,1,1), include.mean = TRUE,method="ML") #ARIMA (0,1,1)
sisaan011 <- arima.011y$residuals

# Eksplorasi
par(mfrow=c(2,2))
qqnorm(sisaan011)
qqline(sisaan011, col = "blue", lwd = 2)
plot(c(1:length(sisaan011)),sisaan011)
acf(sisaan011)
pacf(sisaan011)

Berdasarkan hasil diatas, secara eksploratif Normal Q-Q Plot menunjukkan bahwa sisaan tidak mengikuti sebaran normal karena banyak titik-titik yang tidak berada di sekitar garis. Selanjutnya, apabila dilihat dari plot ACF dan PACF terlihat bahwa tidak ada lag yang signifikan. Hal ini menunjukkan bahwa tidak ada gejala autokorelasi pada sisaan. Selanjutnya, untuk memastikan kembali akan dilakukan uji asumsi secara formal.

Uji Non-Autokorelasi dengan Ljung-Box test

Box.test(sisaan011, lag = 23 ,type = "Ljung")
## 
##  Box-Ljung test
## 
## data:  sisaan011
## X-squared = 16.108, df = 23, p-value = 0.8506

Berdasarkan hasil uji Ljung-Box di atas dapat disimpulkan bahwa \(H_0\) tidak ditolak karena p-value=0.8506 > 0.05 yang berarti tidak terdapat gejala autokorelasi pada sisaan dari model ARIMA (0,1,1) atau antar \(e_t\) tidak berkorelasi.

Uji Normalitas dengan Kolmogorov-Smirnov test

ks.test(sisaan011,"pnorm")
## 
##  One-sample Kolmogorov-Smirnov test
## 
## data:  sisaan011
## D = 0.4631, p-value < 2.2e-16
## alternative hypothesis: two-sided

Berdasarkan hasil uji Kolmogorov-Smirnov di atas dapat disimpulkan bahwa \(H_0\) ditolak karena p-value < 0.05 sehingga sisaan dari model ARIMA (0,1,1) tidak mengikuti sebaran Normal.

Uji Nilai Tengah Sisaan

# Uji nilai tengah sisaan
t.test(sisaan011, mu = 0, alternative = "two.sided")
## 
##  One Sample t-test
## 
## data:  sisaan011
## t = 2.2501, df = 119, p-value = 0.02628
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##  0.4389387 6.8764096
## sample estimates:
## mean of x 
##  3.657674

Berdasarkan hasil uji nilai tengah sisaan di atas dapat disimpulkan bahwa \(H_0\) ditolak karena p-value < 0.05 sehingga nilai tengah sisaan tidak sama dengan nol.

Overfitting Model

Overfitting model dilakukan dengan menggunakan:

  1. ARIMA (0,1,2)

  2. ARIMA (1,1,1)

arima.012<-arima(gold.dif1, order=c(0,0,2), include.mean = TRUE,method="ML") #ARIMA (0,1,2)

lmtest::coeftest(arima.012)
## 
## z test of coefficients:
## 
##             Estimate Std. Error z value Pr(>|z|)  
## ma1       -0.1932510  0.0909587 -2.1246  0.03362 *
## ma2        0.0074769  0.0911629  0.0820  0.93463  
## intercept  3.1539356  1.3301027  2.3712  0.01773 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
arima.111<-arima(gold.dif1, order=c(1,0,1), include.mean = TRUE,method="ML") #ARIMA (1,1,1)

lmtest::coeftest(arima.111)
## 
## z test of coefficients:
## 
##            Estimate Std. Error z value Pr(>|z|)  
## ar1       -0.078766   0.683013 -0.1153  0.90819  
## ma1       -0.114959   0.685398 -0.1677  0.86680  
## intercept  3.155188   1.340336  2.3540  0.01857 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Karena koefisien penduga parameter pada model ARIMA (0,1,2) dan ARIMA (1,1,1) tidak nyata/tidak signifikan maka model yang dipilih tetap model ARIMA (0,1,1).

Ukuran keakuratan ramalan Model ARIMA (0,1,1)

#plot dugaan dengan data asli
dugaan <- fitted(arima.011y)
cbind(harga.training,dugaan)
## Time Series:
## Start = 1 
## End = 120 
## Frequency = 1 
##     harga.training   dugaan
##   1          251.3 251.0487
##   2          261.5 251.4045
##   3          258.9 260.0583
##   4          270.9 259.0671
##   5          257.6 269.1930
##   6          253.1 259.2724
##   7          238.8 253.9904
##   8          241.2 240.9914
##   9          280.8 241.1699
##  10          284.6 275.0829
##  11          289.4 283.2271
##  12          289.6 288.5095
##  13          289.6 289.4427
##  14          305.0 289.5773
##  15          289.2 302.7751
##  16          301.8 291.1584
##  17          293.6 300.2648
##  18          300.6 294.5615
##  19          298.7 299.7289
##  20          311.6 298.8484
##  21          310.1 309.7604
##  22          312.1 310.0510
##  23          309.1 311.8044
##  24          292.3 309.4901
##  25          284.4 294.7799
##  26          290.0 285.8974
##  27          291.5 289.4082
##  28          296.8 291.1982
##  29          315.6 295.9919
##  30          319.6 312.7713
##  31          303.9 318.6149
##  32          300.5 306.0228
##  33          321.8 301.2967
##  34          309.5 318.8422
##  35          307.7 310.8477
##  36          310.5 308.1541
##  37          327.9 310.1616
##  38          343.2 325.3410
##  39          345.5 340.6236
##  40          342.0 344.7965
##  41          349.6 342.4034
##  42          322.5 348.5618
##  43          310.7 326.2597
##  44          319.0 312.9447
##  45          327.5 318.1265
##  46          320.0 326.1478
##  47          320.7 320.8869
##  48          330.9 320.7270
##  49          342.3 329.4324
##  50          322.4 340.4437
##  51          306.9 325.0030
##  52          301.8 309.5116
##  53          307.3 302.9125
##  54          301.3 306.6671
##  55          315.2 302.0743
##  56          342.1 313.3065
##  57          333.2 337.9462
##  58          332.3 333.8847
##  59          332.3 332.5286
##  60          330.0 332.3330
##  61          321.8 330.3366
##  62          318.6 323.0315
##  63          344.8 319.2393
##  64          324.1 341.1126
##  65          322.0 326.5543
##  66          325.3 322.6570
##  67          325.1 324.9187
##  68          335.1 325.0738
##  69          334.7 333.6536
##  70          334.5 334.5490
##  71          341.2 334.5071
##  72          320.5 340.2345
##  73          323.9 323.3469
##  74          328.1 323.8202
##  75          328.9 327.4826
##  76          337.5 328.6955
##  77          335.7 336.2299
##  78          361.1 335.7764
##  79          353.2 357.4468
##  80          352.3 353.8126
##  81          392.5 352.5182
##  82          393.0 386.7322
##  83          420.4 392.0958
##  84          434.9 416.3168
##  85          468.4 432.2192
##  86          466.4 463.1805
##  87          480.9 465.9356
##  88          511.3 478.7412
##  89          508.4 506.6030
##  90          479.8 508.1408
##  91          495.6 483.8885
##  92          487.1 493.9105
##  93          473.1 488.0825
##  94          473.0 475.2614
##  95          487.9 473.3262
##  96          479.3 485.7976
##  97          500.6 480.2373
##  98          502.8 497.6625
##  99          497.1 502.0589
## 100          496.1 497.8154
## 101          489.8 496.3475
## 102          481.7 490.7445
## 103          486.2 483.0048
## 104          492.9 485.7391
## 105          522.5 491.8670
## 106          545.7 518.0808
## 107          533.8 541.7156
## 108          570.3 534.9419
## 109          623.6 565.1992
## 110          639.9 615.1750
## 111          589.1 636.3332
## 112          559.5 595.9139
## 113          570.0 564.7531
## 114          590.4 569.2431
## 115          588.4 587.3479
## 116          565.8 588.2482
## 117          629.7 569.0384
## 118          576.3 620.9489
## 119          641.9 582.7411
## 120          625.7 633.3657
plot.ts(harga.training, xlab="Month", ylab="Data")
points(harga.training)
par(col="red")
lines(dugaan)

par(col="black")

Berdasarkan plot data aktual vs dugaan di atas terlihat bahwa nilai dan pola dugaan yang dihasilkan dari model ARIMA (0,1,1) mendekati nilai aktualnya.

#forecast
(ramalan_arima011<- forecast::forecast(harga.training,model=arima.011y, h=48))
##     Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
## 121       626.8059 603.5050 650.1067 591.1702 662.4415
## 122       626.8059 596.1381 657.4737 579.9035 673.7082
## 123       626.8059 590.2259 663.3859 570.8616 682.7501
## 124       626.8059 585.1444 668.4673 563.0901 690.5216
## 125       626.8059 580.6186 672.9931 556.1686 697.4431
## 126       626.8059 576.4984 677.1133 549.8672 703.7445
## 127       626.8059 572.6909 680.9208 544.0442 709.5675
## 128       626.8059 569.1343 684.4774 538.6048 715.0069
## 129       626.8059 565.7846 687.8271 533.4819 720.1298
## 130       626.8059 562.6095 691.0022 528.6260 724.9857
## 131       626.8059 559.5842 694.0276 523.9991 729.6126
## 132       626.8059 556.6892 696.9225 519.5718 734.0400
## 133       626.8059 553.9092 699.7025 515.3201 738.2917
## 134       626.8059 551.2314 702.3804 511.2246 742.3871
## 135       626.8059 548.6452 704.9665 507.2695 746.3422
## 136       626.8059 546.1419 707.4698 503.4410 750.1707
## 137       626.8059 543.7140 709.8977 499.7279 753.8838
## 138       626.8059 541.3551 712.2566 496.1202 757.4915
## 139       626.8059 539.0595 714.5522 492.6094 761.0023
## 140       626.8059 536.8225 716.7892 489.1882 764.4235
## 141       626.8059 534.6398 718.9719 485.8500 767.7617
## 142       626.8059 532.5076 721.1041 482.5891 771.0226
## 143       626.8059 530.4225 723.1892 479.4003 774.2114
## 144       626.8059 528.3816 725.2301 476.2790 777.3327
## 145       626.8059 526.3822 727.2295 473.2211 780.3906
## 146       626.8059 524.4218 729.1899 470.2230 783.3888
## 147       626.8059 522.4983 731.1135 467.2811 786.3306
## 148       626.8059 520.6095 733.0022 464.3926 789.2191
## 149       626.8059 518.7538 734.8579 461.5545 792.0572
## 150       626.8059 516.9295 736.6823 458.7644 794.8473
## 151       626.8059 515.1349 738.4768 456.0198 797.5919
## 152       626.8059 513.3687 740.2430 453.3187 800.2930
## 153       626.8059 511.6296 741.9821 450.6590 802.9528
## 154       626.8059 509.9164 743.6954 448.0388 805.5729
## 155       626.8059 508.2279 745.3838 445.4565 808.1552
## 156       626.8059 506.5631 747.0486 442.9104 810.7013
## 157       626.8059 504.9211 748.6906 440.3992 813.2126
## 158       626.8059 503.3009 750.3109 437.9213 815.6905
## 159       626.8059 501.7016 751.9101 435.4755 818.1363
## 160       626.8059 500.1226 753.4891 433.0605 820.5512
## 161       626.8059 498.5630 755.0487 430.6753 822.9364
## 162       626.8059 497.0221 756.5896 428.3188 825.2929
## 163       626.8059 495.4994 758.1124 425.9899 827.6218
## 164       626.8059 493.9940 759.6177 423.6877 829.9240
## 165       626.8059 492.5056 761.1061 421.4113 832.2004
## 166       626.8059 491.0335 762.5783 419.1599 834.4518
## 167       626.8059 489.5771 764.0346 416.9326 836.6791
## 168       626.8059 488.1361 765.4756 414.7287 838.8830
plot(ramalan_arima011)

gabungan2<- cbind(harga.test,ramalan_arima011)
df.gab<- as.data.frame(gabungan2, digits=3)
df.gab %>%
  rename(
    "Data Aktual Harga Emas"=harga.test,
    Ramalan="ramalan_arima011.Point Forecast",
    "Lo 80"="ramalan_arima011.Lo 80",
    "Hi 80"="ramalan_arima011.Hi 80",
    "Lo 95"="ramalan_arima011.Lo 95",
    "Hi 95"="ramalan_arima011.Hi 95"
        )
##    Data Aktual Harga Emas  Ramalan    Lo 80    Hi 80    Lo 95    Hi 95
## 1                   717.5 626.8059 603.5050 650.1067 591.1702 662.4415
## 2                   749.6 626.8059 596.1381 657.4737 579.9035 673.7082
## 3                   690.3 626.8059 590.2259 663.3859 570.8616 682.7501
## 4                   666.6 626.8059 585.1444 668.4673 563.0901 690.5216
## 5                   689.2 626.8059 580.6186 672.9931 556.1686 697.4431
## 6                   666.2 626.8059 576.4984 677.1133 549.8672 703.7445
## 7                   662.3 626.8059 572.6909 680.9208 544.0442 709.5675
## 8                   665.8 626.8059 569.1343 684.4774 538.6048 715.0069
## 9                   681.2 626.8059 565.7846 687.8271 533.4819 720.1298
## 10                  704.9 626.8059 562.6095 691.0022 528.6260 724.9857
## 11                  783.1 626.8059 559.5842 694.0276 523.9991 729.6126
## 12                  758.0 626.8059 556.6892 696.9225 519.5718 734.0400
## 13                  775.9 626.8059 553.9092 699.7025 515.3201 738.2917
## 14                  812.1 626.8059 551.2314 702.3804 511.2246 742.3871
## 15                  824.4 626.8059 548.6452 704.9665 507.2695 746.3422
## 16                  886.9 626.8059 546.1419 707.4698 503.4410 750.1707
## 17                  984.1 626.8059 543.7140 709.8977 499.7279 753.8838
## 18                 1015.6 626.8059 541.3551 712.2566 496.1202 757.4915
## 19                  897.3 626.8059 539.0595 714.5522 492.6094 761.0023
## 20                  980.4 626.8059 536.8225 716.7892 489.1882 764.4235
## 21                  957.4 626.8059 534.6398 718.9719 485.8500 767.7617
## 22                  969.0 626.8059 532.5076 721.1041 482.5891 771.0226
## 23                 1062.8 626.8059 530.4225 723.1892 479.4003 774.2114
## 24                 1047.7 626.8059 528.3816 725.2301 476.2790 777.3327
## 25                  967.9 626.8059 526.3822 727.2295 473.2211 780.3906
## 26                 1021.6 626.8059 524.4218 729.1899 470.2230 783.3888
## 27                 1014.0 626.8059 522.4983 731.1135 467.2811 786.3306
## 28                 1035.0 626.8059 520.6095 733.0022 464.3926 789.2191
## 29                 1068.8 626.8059 518.7538 734.8579 461.5545 792.0572
## 30                 1038.4 626.8059 516.9295 736.6823 458.7644 794.8473
## 31                 1133.3 626.8059 515.1349 738.4768 456.0198 797.5919
## 32                 1259.6 626.8059 513.3687 740.2430 453.3187 800.2930
## 33                 1207.4 626.8059 511.6296 741.9821 450.6590 802.9528
## 34                 1234.6 626.8059 509.9164 743.6954 448.0388 805.5729
## 35                 1297.0 626.8059 508.2279 745.3838 445.4565 808.1552
## 36                 1179.4 626.8059 506.5631 747.0486 442.9104 810.7013
## 37                 1332.3 626.8059 504.9211 748.6906 440.3992 813.2126
## 38                 1323.2 626.8059 503.3009 750.3109 437.9213 815.6905
## 39                 1248.4 626.8059 501.7016 751.9101 435.4755 818.1363
## 40                 1247.6 626.8059 500.1226 753.4891 433.0605 820.5512
## 41                 1260.1 626.8059 498.5630 755.0487 430.6753 822.9364
## 42                 1259.6 626.8059 497.0221 756.5896 428.3188 825.2929
## 43                 1317.0 626.8059 495.4994 758.1124 425.9899 827.6218
## 44                 1307.8 626.8059 493.9940 759.6177 423.6877 829.9240
## 45                 1380.5 626.8059 492.5056 761.1061 421.4113 832.2004
## 46                 1326.6 626.8059 491.0335 762.5783 419.1599 834.4518
## 47                 1327.1 626.8059 489.5771 764.0346 416.9326 836.6791
## 48                 1257.2 626.8059 488.1361 765.4756 414.7287 838.8830
accuracy(ramalan_arima011, harga.test) #arima
##                      ME      RMSE       MAE       MPE      MAPE       MASE
## Training set   3.657674  18.10587  12.58013  0.787946  3.138941  0.9884035
## Test set     387.625392 452.65165 387.62539 34.531414 34.531414 30.4551840
##                     ACF1 Theil's U
## Training set -0.05143427        NA
## Test set      0.94067688  6.812536

Kesimpulan: Hasil ramalan yang dihasilkan dari model ARIMA (0,1,1) memiliki nilai yang sama untuk 48 waktu ke depan, sehingga apabila dibandingkan dengan data aktualnya akan memiliki nilai yang cukup berbeda, hal ini dapat dikarenakan model ARIMA (0,1,1) tidak memenuhi salah satu asumsi yaitu asumsi normalitas, sehingga dapat menyebabkan hasil peramalannya tidak sesuai dengan aktualnya.

Peramalan Harga Emas Eropa

Berikut merupakan hasil ramalan harga emas Eropa untuk 12 bulan ke depan (tahun 2013):

#forecast
arima011y<-arima(harga.ts, order = c(0,1,1), include.mean = TRUE, method="ML")
(ramalan_arima011<- forecast::forecast(harga.ts,model=arima011y, h=12))
##     Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
## 169       1272.543 1227.866 1317.220 1204.215 1340.871
## 170       1272.543 1215.729 1329.357 1185.654 1359.432
## 171       1272.543 1205.763 1339.323 1170.412 1374.674
## 172       1272.543 1197.102 1347.984 1157.166 1387.920
## 173       1272.543 1189.338 1355.748 1145.292 1399.794
## 174       1272.543 1182.239 1362.847 1134.435 1410.651
## 175       1272.543 1175.659 1369.428 1124.371 1420.715
## 176       1272.543 1169.498 1375.588 1114.949 1430.137
## 177       1272.543 1163.685 1381.401 1106.059 1439.027
## 178       1272.543 1158.167 1386.919 1097.620 1447.466
## 179       1272.543 1152.903 1392.183 1089.570 1455.516
## 180       1272.543 1147.862 1397.224 1081.860 1463.226
plot(ramalan_arima011)

Kesimpulan

Model ARIMA (0,1,1) merupakan model terbaik untuk data Harga Emas Eropa yang dipilih berdasarkan nilai AIC terkecil dan fungsi auto.arima, namun setelah dilakukan uji diagnostik, model ini tidak memenuhi asumsi normalitas, sehingga hal tersebut dapat memberikan pengaruh terhadap hasil ramalannya. Oleh karena itu, model ARIMA(0,1,1) tidak sesuai untuk memodelkan dan meramalkan data Harga Emas Eropa, sehingga dapat digunakan metode lain untuk memodelkan data ini sehingga asumsi yang ada pada model dapat dipenuhi dan dapat memberikan hasil ramalan yang baik.