Library:

> # install.packages("knitr")
> # install.packages("rmarkdown")
> # install.packages("prettydoc")
> # install.packages("equatiomatic")

Import Library yang Dibutuhkan

> library(tseries)
> library(FSA) 
> library(knitr)
> library(tseries)
> library(TSA)
> library(lmtest)
> library(forecast)
> library(MLmetrics)
> library(xts)
> library(readxl)
> library(tsoutliers)

Import Data yang dibutuhkan

> data.ihsg <- read_excel("C:/Users/Lenovo/Downloads/Data IHSG.xlsx")
> data.ihsg<-ts(data.ihsg$`Harga Saham`)
> data.ihsg
Time Series:
Start = 1 
End = 298 
Frequency = 1 
  [1] 7323.59 7279.09 7359.76 7350.62 7283.58 7200.20 7227.30 7219.96 7241.14
 [10] 7224.00 7242.79 7200.63 7252.97 7227.40 7247.93 7256.23 7227.82 7178.04
 [19] 7137.09 7157.17 7192.22 7207.94 7201.70 7238.79 7198.62 7247.41 7235.15
 [28] 7297.67 7209.74 7303.28 7335.54 7296.70 7352.60 7349.02 7339.64 7295.10
 [37] 7283.82 7285.32 7328.64 7316.11 7311.91 7276.75 7247.46 7329.80 7373.96
 [46] 7381.91 7421.21 7433.31 7328.05 7302.45 7336.75 7331.13 7338.35 7350.15
 [55] 7377.76 7365.66 7310.09 7288.81 7205.06 7236.98 7166.84 7254.40 7286.88
 [64] 7164.81 7130.84 7166.81 7087.32 7073.82 7110.81 7174.53 7155.29 7036.08
 [73] 7155.78 7234.20 7234.20 7117.42 7134.72 7135.89 7123.61 7088.79 7099.26
 [82] 7083.76 7179.83 7246.70 7317.24 7266.69 7186.04 7222.38 7176.42 7253.63
 [91] 7140.23 7034.14 6970.74 7036.19 7099.31 6947.67 6974.90 6897.95 6921.55
[100] 6855.69 6850.10 6831.56 6734.83 6726.92 6819.32 6879.98 6889.17 6882.70
[109] 6905.64 6967.95 7063.58 7139.63 7125.14 7196.75 7220.89 7253.37 7250.98
[118] 7269.80 7287.04 7300.41 7327.58 7278.86 7224.29 7224.22 7321.07 7294.50
[127] 7321.98 7313.86 7262.76 7240.28 7288.17 7288.90 7241.86 7255.76 7325.98
[136] 7308.12 7059.65 7129.21 7212.13 7195.12 7257.00 7297.63 7356.64 7436.04
[145] 7409.50 7432.09 7466.83 7533.98 7554.59 7488.68 7544.30 7606.19 7597.88
[154] 7658.88 7627.60 7670.73 7694.53 7616.52 7672.90 7681.04 7721.85 7702.74
[163] 7761.39 7760.96 7798.15 7812.13 7831.78 7829.13 7905.39 7743.00 7775.73
[172] 7778.49 7740.90 7744.52 7696.92 7527.93 7642.13 7563.26 7543.83 7496.09
[181] 7504.13 7557.14 7501.29 7480.08 7520.60 7559.65 7626.95 7648.94 7735.04
[190] 7760.06 7772.60 7788.98 7787.56 7716.55 7694.66 7634.63 7606.60 7569.85
[199] 7574.02 7505.26 7479.50 7491.93 7383.87 7243.86 7287.19 7266.46 7321.99
[208] 7308.67 7214.56 7161.26 7134.28 7195.71 7180.33 7140.91 7195.56 7314.11
[217] 7245.89 7200.16 7114.27 7046.99 7196.02 7326.76 7313.31 7382.79 7437.73
[226] 7453.29 7464.75 7394.24 7324.79 7258.63 7157.73 7107.88 6977.24 6983.87
[235] 7096.44 7065.75 7036.57 7079.90 7163.21 7164.43 7080.47 7083.28 7080.35
[244] 7064.59 7088.87 7016.88 6956.67 7079.56 7107.52 7154.66 7170.74 7181.82
[253] 7257.13 7232.64 7166.06 7073.48 7109.20 7030.06 7073.46 7024.23 6875.54
[262] 6742.58 6648.14 6531.99 6645.78 6613.57 6638.46 6830.88 6873.55 6794.87
[271] 6788.04 6803.00 6749.60 6587.09 6606.18 6485.45 6270.60 6519.66 6380.40
[280] 6531.40 6617.85 6636.00 6598.21 6545.85 6665.04 6647.42 6515.63 6471.95
[289] 6223.39 6311.66 6381.67 6258.18 6161.22 6235.62 6472.36 6510.62 5996.14
[298] 5972.56

Eksplorasi Data

Sebelum melakukan pemodelan deret waktu, akan dilakukan eksplorasi untuk melihat bentuk dan pola data.

> plot(data.ihsg)

Berdasarkan plot data deret waktu dapat dilihat bahwa terdapat tren yang tidak konsisten serta fluktuasi yang cukup bervariasi.

Pemodelan ARIMA Outlier

Pemodelan ARIMA outlier mirip dengan pemodelan ARIMA pada umumnya, namun dikhususkan untuk mendeteksi keberadaan outlier.

Uji Stasioneritas Data

Uji stasioneritas ragam

> lambda<-BoxCox.lambda(data.ihsg)
> lambda
[1] 1.999924

Hasil dari pemeriksaan stasioneritas ragam menggunakan Box-cox diketahui bahwa nilai \(\lambda\) jauh dari 1 sehingga data belum stasioner terhadap ragam. Dibutuhkan transformasi Box-cox.

> data.ihsg.1<-BoxCox(data.ihsg,lambda)
> lambda1<-BoxCox.lambda(data.ihsg.1)
> lambda1
[1] 1.980901

Hasil dari pemeriksaan stasioneritas ragam data hasil transformasi pertama menggunakan Box-cox diketahui bahwa nilai \(\lambda\) masih jauh dari 1 sehingga data belum stasioner terhadap ragam.

> data.ihsg.2<-BoxCox(data.ihsg.1,lambda1)
> BoxCox.lambda(data.ihsg.2)
[1] 0.9980468

Hasil dari pemeriksaan stasioneritas ragam data hasil transformasi kedua menggunakan Box-cox diketahui bahwa nilai \(\lambda\) sudah dekat dengan 1 sehingga dapat dikatakan data sudah stasioner terhadap ragam.

Uji stasioneritas rata-rata

Pengujian stasioneritas rata-rata menggunakan uji Dickey Fuller dengan hipotesis sebagai berikut.

\(H_0:\phi=1\)(data tidak stasioner terhadap rata-rata)

\(H_1:\phi<1\) (data stasioner terhadap rata-rata)

Menolak hipotesis nol berarti data stasioner terhadap rata-rata.

> adf.test(data.ihsg.2)

    Augmented Dickey-Fuller Test

data:  data.ihsg.2
Dickey-Fuller = -1.0779, Lag order = 6, p-value = 0.9248
alternative hypothesis: stationary

Hasil uji Dickey Fuller pada data didapatkan nilai-p sebesar 0.9248 > \(\alpha\) (0.05) sehingga terima \(H_0\). Karena data belum stasioner maka perlu dilakukan differencing pertama.

> data.ihsg.3<-diff(data.ihsg.2)
> adf.test(data.ihsg.3)

    Augmented Dickey-Fuller Test

data:  data.ihsg.3
Dickey-Fuller = -7.2371, Lag order = 6, p-value = 0.01
alternative hypothesis: stationary

Hasil uji Dickey Fuller pada data didapatkan nilai-p sebesar 0.01 < \(\alpha\) (0.05) sehingga terima \(H_0\). Karena data hasil differencing pertama stasioner terhadap rata-rata.

Identifikasi Model ARIMA

Data bernilai sangat besar, untuk memudahkan pendugaan parameter akan dilakukan penyekalaan data terlebih dahulu.

> data.ihsg.4<-data.ihsg.3 / 1e13 
> print(data.ihsg.4)
Time Series:
Start = 2 
End = 298 
Frequency = 1 
  [1] -0.6239573001  1.1394565206 -0.1309751494 -0.9460348358 -1.1411717010
  [6]  0.3666386717 -0.0997066415  0.2885269286 -0.2336846505  0.2562671722
 [11] -0.5722557782  0.7119204592 -0.3497070162  0.2804880364  0.1140675113
 [16] -0.3888409497 -0.6704968302 -0.5413369899  0.2643007134  0.4666330624
 [21]  0.2114856149 -0.0841121894  0.5031351479 -0.5445725783  0.6626039545
 [26] -0.1677480929  0.8642702225 -1.2092732204  1.2879056124  0.4556555877
 [31] -0.5478658145  0.7912408746 -0.0512105478 -0.1338273945 -0.6285876827
 [36] -0.1574003809  0.0208893323  0.6088022873 -0.1771913853 -0.0591929979
 [41] -0.4915942155 -0.4041863336  1.1486143690  0.6319699673  0.1149691076
 [46]  0.5737484147  0.1784719612 -1.5239724534 -0.3609776467  0.4845070622
 [51] -0.0798467929  0.1026121284  0.1683488991  0.3970473342 -0.1745475962
 [56] -0.7907832520 -0.2981470243 -1.1486024842  0.4331397478 -0.9443443666
 [61]  1.1831247605  0.4497689314 -1.6598208107 -0.4472566305  0.4737856471
 [66] -1.0376318803 -0.1728356744  0.4759027488  0.8371726638 -0.2551146609
 [71] -1.5359759122  1.5424479581  1.0528282071  0.0000000000 -1.5555399267
 [76]  0.2257277089  0.0153246237 -0.1604725982 -0.4505862872  0.1347994168
 [81] -0.1993504514  1.2565447050  0.9045266663  0.9813398927 -0.7060973353
 [86] -1.0968122280  0.4897257761 -0.6181453581  1.0451542801 -1.5237162606
 [91] -1.3620665860 -0.7854624553  0.8112125274  0.8037919826 -1.8956190380
 [96]  0.3315087749 -0.9269701797  0.2810616030 -0.7772850465 -0.0649640359
[101] -0.2143409392 -1.0906731293 -0.0871624241  1.0372698214  0.7039836419
[106]  0.1082702599 -0.0762696783  0.2713809897  0.7507218260  1.1914792783
[111]  0.9822589296 -0.1895598252  0.9479857147  0.3259317056  0.4436572724
[116] -0.0328472108  0.2595237334  0.2394885685  0.1868876185  0.3829212448
[121] -0.6836503758 -0.7498149127 -0.0009511242  1.3422835040 -0.3735242229
[126]  0.3863884382 -0.1146211052 -0.7127210103 -0.3088742672  0.6614322689
[131]  0.0101825385 -0.6499982461  0.1907738415  0.9804281583 -0.2520214986
[136] -3.3214762131  0.8957446268  1.1021394563 -0.2291742484  0.8414310679
[141]  0.5641592948  0.8361024880  1.1567810352 -0.3907588386  0.3323391280
[146]  0.5169579737  1.0196329043  0.3183985941 -1.0092164705  0.8499268910
[151]  0.9678040862 -0.1313112244  0.9738386473 -0.5022524649  0.6941176124
[156]  0.3880102450 -1.2585789563  0.9057987436  0.1324164075  0.6701637588
[161] -0.3151254819  0.9745165240 -0.0072246524  0.6292446397  0.2388479931
[166]  0.3378666401 -0.0457114448  1.3338812288 -2.7948271271  0.5495362878
[171]  0.0466547356 -0.6312159928  0.0603939332 -0.7874762487 -2.6814533968
[176]  1.7927108447 -1.2466241056 -0.3012615010 -0.7305082647  0.1220660744
[181]  0.8145656173 -0.8577277576 -0.3208211312  0.6152487738  0.6022915729
[186]  1.0598520708  0.3523613813  1.4087945142  0.4181931341  0.2111058869
[191]  0.2772742116 -0.0241056794 -1.1889525486 -0.3600415158 -0.9719086166
[196] -0.4461337067 -0.5775928355  0.0651229249 -1.0603391681 -0.3899056892
[201]  0.1876459470 -1.6007104574 -1.9732998862  0.5987679731 -0.2877830398
[206]  0.7763735055 -0.1878268591 -1.2984558414 -0.7134850523 -0.3552159123
[211]  0.8145787820 -0.2058867460 -0.5217699162  0.7256423594  1.6311800461
[216] -0.9483028770 -0.6210486251 -1.1352857893 -0.8614014769  1.9410363113
[221]  1.8037504785 -0.1900215079  0.9928017844  0.8048804895  0.2311803937
[226]  0.1711817974 -1.0409539617 -0.9969658061 -0.9240543834 -1.3620270520
[231] -0.6522641614 -1.6462213624  0.0813794931  1.4170530685 -0.3930008296
[236] -0.3690053744  0.5495765400  1.0850118292  0.0161693937 -1.0938848981
[241]  0.0359950361 -0.0375312491 -0.2010868708  0.3103497565 -0.9110485723
[246] -0.7410088108  1.5326830201  0.3599083842  0.6163651787  0.2130195045
[251]  0.1476077304  1.0212967746 -0.3355807062 -0.8954681781 -1.2048569110
[256]  0.4593760048 -1.0086014834  0.5489701857 -0.6219539207 -1.8016381354
[261] -1.5162413365 -1.0245305129 -1.2022953335  1.1772383814 -0.3393597398
[266]  0.2618081825  2.1242894483  0.4957471231 -0.9070424266 -0.0772855258
[271]  0.1695817436 -0.6002770486 -1.7421688440  0.1981745012 -1.2250238464
[276] -2.0190550229  2.3594012305 -1.3527218327  1.4707457157  0.8886390537
[281]  0.1909901145 -0.3959190516 -0.5375770979  1.2423148147 -0.1878518264
[286] -1.3589892084 -0.4328300444 -2.3032959706  0.7874955924  0.6482261532
[291] -1.1292626661 -0.8416090360  0.6423055242  2.2001631382  0.3787241394
[296] -4.5665427824 -0.1834392651

Identifikasi model ARIMA menggunakan plot ACF dan PACF untuk melihat orde p dan q yang cocok pada data. Pemeriksaan ACF dan PACF dilakukan pada data yang telah stasioner.

> acf(data.ihsg.4)

> pacf(data.ihsg.4)

Berdasarkan plot ACF dan PACF, dapat diketahui bahwa ACF dan PACF signifikan pada lag tertentu, sehingga akan digukanan ARIMA restricted. ACF signifikan pada lag 7 dan 19, sedangkan PACF signifikan pada lag 7, 10, dan 19. Maka model tentatif yang diusulkan adalah ARIMA(0,0,[7,19]) dan ARIMA ([7,10,19],0,0)

Pendugaan Paremeter Model ARIMA

> model.1<-arima(data.ihsg.4,order=c(0,0,19),fixed = c(rep(0,6),NA,rep(0,11),NA,NA))
> coeftest(model.1)

z test of coefficients:

           Estimate Std. Error z value Pr(>|z|)   
ma7       -0.139880   0.055614 -2.5152 0.011898 * 
ma19      -0.183357   0.060566 -3.0274 0.002467 **
intercept -0.043382   0.036020 -1.2044 0.228444   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
> model.2<-arima(data.ihsg.4,order=c(19,0,0),fixed=c(rep(0,6),NA,rep(0,2),NA,rep(0,8),NA,NA),
+                transform.pars = FALSE)
> coeftest(model.2)

z test of coefficients:

           Estimate Std. Error z value Pr(>|z|)   
ar7       -0.161328   0.059303 -2.7204 0.006521 **
ar10       0.128433   0.059849  2.1459 0.031879 * 
ar19      -0.175873   0.059975 -2.9325 0.003363 **
intercept -0.046555   0.043023 -1.0821 0.279210   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Berdasarkan kedua hasil pendugaan parameter model dapat dilihat bahwa semua parameter signifikan sehingga model dapat digunakan.

Uji Asumsi Sisaan

Pada pemodelan data deret waktu diperlukan asumsi sisaan yaitu normalitas dan non-autokorelasi.

\(H_0:\rho_1=\rho_2=...=\rho_k=0\) (tidak terdapat autokorelasi pada sisaan)

\(H_1:\) terdapat minimal satu \(\rho_k\neq0\) (terdapat autokorelasi pada sisaan)

> res1<-residuals(model.1)
> res2<-residuals(model.2)
> 
> Box.test(res1)

    Box-Pierce test

data:  res1
X-squared = 4.4792e-05, df = 1, p-value = 0.9947
> Box.test(res2)

    Box-Pierce test

data:  res2
X-squared = 0.010046, df = 1, p-value = 0.9202

Berdasarkan uji asumsi non-autokorelasi didapatkan nilai-p > 0.05 sehingga \(H_0\) diterima. Dapat disimpulkan bahwa kedua model memenuhi asumsi non-autokorelasi sisaan. selanjutnya dilakukan uji normalitas sisaan menggunakan uji Jarque Bera dengan hipotesis

\(H_0\): sisaan menyebar normal

\(H_1\): sisaan tidak menyebar normal

> jarque.bera.test(res1)

    Jarque Bera Test

data:  res1
X-squared = 35.045, df = 2, p-value = 2.455e-08
> jarque.bera.test(res2)

    Jarque Bera Test

data:  res2
X-squared = 33.916, df = 2, p-value = 4.318e-08

Berdasarkan hasil uji didapatkan kedua model menghasilkan nilai-p yang kurang dari \(alpha\)(0.05) maka tolak \(H_0\). Asumsi normalitas sisaan tidak terpenuhi, namun pada pemodelan deret waktu asumsi ini tidak harus terpenuhi. Sehingga kedua model dapat digunakan.

Pemilihan Model Terbaik

Karena kedua model sudah memenuhi asumsi, maka pemilihan model terbaik dinilai dari nilai AIC. Semakin kecil nilai AIC maka model semakin baik.

> print(c(model.1$aic,model.2$aic)) 
[1] 784.1965 781.2608

Dapat dilihat bahwa model 2 memiliki nilai AIC yang lebih kecil, sehingga model yang dipilih adalah ARIMA ([7,10,19],0,0).

Deteksi Outlier

Pendeteksian outlier diperlukan untuk memastikan bahwa model yang sudah dibentuk mampu menangkap outlier atau belum. Model ARIMA akan dideteksi Additive Outlier, Innovative Outlier, Level Shift, dan Transitory Change.

> pred<-data.ihsg.4-res2
> outlier <- tso(pred, types = c('AO','IO','IS','TC'))
> print(outlier)
Series: pred 
Regression with ARIMA(0,0,0) errors 

Coefficients:
      intercept    AO286
        -0.0448  -0.8817
s.e.     0.0128   0.2204

sigma^2 = 0.04874:  log likelihood = 28.24
AIC=-50.48   AICc=-50.4   BIC=-39.4

Outliers:
  type ind time coefhat tstat
1   AO 286  287 -0.8817    -4

Berdasarkan hasil deteksi outlier, dapat diketahui bahwa terdapat outlier tipe Additive Outlier pada data ke 286. Efek dari outlier AO dapat dilihat pada plot berikut.

> plot(outlier$effects)

Pemodelan ARIMA Outlier

> xreg.outlier <- outlier$effects
> xreg.outlier
Time Series:
Start = 2 
End = 298 
Frequency = 1 
  [1]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
  [7]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
 [13]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
 [19]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
 [25]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
 [31]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
 [37]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
 [43]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
 [49]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
 [55]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
 [61]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
 [67]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
 [73]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
 [79]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
 [85]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
 [91]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
 [97]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
[103]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
[109]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
[115]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
[121]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
[127]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
[133]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
[139]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
[145]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
[151]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
[157]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
[163]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
[169]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
[175]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
[181]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
[187]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
[193]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
[199]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
[205]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
[211]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
[217]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
[223]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
[229]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
[235]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
[241]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
[247]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
[253]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
[259]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
[265]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
[271]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
[277]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
[283]  0.0000000  0.0000000  0.0000000 -0.8816521  0.0000000  0.0000000
[289]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000
[295]  0.0000000  0.0000000  0.0000000
> arima.ao <- arima(data.ihsg.4,order=c(19,0,0),fixed=c(rep(0,6),NA,rep(0,2),NA,rep(0,8),NA,NA,NA),
+                   transform.pars = FALSE, xreg = xreg.outlier)
> coeftest(arima.ao)

z test of coefficients:

           Estimate Std. Error z value Pr(>|z|)   
ar7       -0.162994   0.059913 -2.7205 0.006518 **
ar10       0.132846   0.064504  2.0595 0.039447 * 
ar19      -0.177165   0.060382 -2.9341 0.003346 **
intercept -0.047076   0.043167 -1.0906 0.275470   
xreg      -0.195384   1.081410 -0.1807 0.856622   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Berdasarkan hasil pemodelan ARIMA AO dapat dilihat bahwa ada satu parameter yang tidak signifikan, namun model masih dapat digunakan karena terdapat efek outlier.

Uji Asumsi Sisaan Model Outlier

Uji asumsi sisaan yaitu non-autokorelasi dan normalitas juga perlu dilakukan untuk ARIMA Outlier.

\(H_0:\rho_1=\rho_2=...=\rho_k=0\) (tidak terdapat autokorelasi pada sisaan)

\(H_1:\) terdapat minimal satu \(\rho_k\neq0\) (terdapat autokorelasi pada sisaan)

> res.ao<-residuals(arima.ao)
> Box.test(res.ao)

    Box-Pierce test

data:  res.ao
X-squared = 0.012686, df = 1, p-value = 0.9103

Berdasarkan uji asumsi non-autokorelasi didapatkan nilai-p > 0.05 sehingga \(H_0\) diterima. Dapat disimpulkan bahwa model memenuhi asumsi non-autokorelasi sisaan. selanjutnya dilakukan uji normalitas sisaan menggunakan uji Jarque Bera dengan hipotesis

\(H_0\): sisaan menyebar normal

\(H_1\): sisaan tidak menyebar normal

> jarque.bera.test(res.ao)

    Jarque Bera Test

data:  res.ao
X-squared = 32.462, df = 2, p-value = 8.934e-08

Berdasarkan hasil uji didapatkan model menghasilkan nilai-p yang kurang dari \(\alpha\) (0.05) maka tolak \(H_0\). Asumsi normalitas sisaan tidak terpenuhi, namun pada pemodelan deret waktu asumsi ini tidak harus terpenuhi. Sehingga model ARIMA AO dapat digunakan.

Evaluasi Grafis ARIMA dan ARIMA AO

> pred.ao<- data.ihsg.4-res.ao
> plot(data.ihsg.4, type = "l", col = "blue", lwd = 2)
> lines(pred, type = "o", col = "red", lwd = 2)
> lines(pred.ao, type = "o", col = "green", lwd = 2)

Berdasarkan hasil evaluasi grafis, dapat diperoleh informasi bahwa model ARIMA Outlier AO memiliki kemampuan yang tidak jauh berbeda dalam mengikuti fluktuasi data dibandingkan model ARIMA biasa.

Pemodelan ARIMA Pra-Intervensi

Pemodelan nilai ekstrim juga dapat dimodelkan dengan model intervensi.

Mengambil data pra-intervensi

Nilai ekstrim terjadi pada data ke 286, sehingga data pra-intervensi adalah data pertama hingga data ke 285

> ihsg.praintervensi<-data.ihsg[1:285]

Uji stasioneritas data

Stasioneritas terhadap ragam

> lambda.pra<-BoxCox.lambda(ihsg.praintervensi)
> lambda.pra
[1] 1.999924

Hasil dari pemeriksaan stasioneritas ragam menggunakan Box-cox diketahui bahwa nilai \(\lambda\) jauh dari 1 sehingga data belum stasioner terhadap ragam. Dibutuhkan transformasi Box-cox.

> ihsg.praintervensi.1<-BoxCox(ihsg.praintervensi,lambda=lambda.pra)
> lambda.pra1<-BoxCox.lambda(ihsg.praintervensi.1)
> lambda.pra1
[1] 1.999924

Hasil dari pemeriksaan stasioneritas ragam pada data hasil transformasi pertama diketahui bahwa nilai \(\lambda\) masih jauh dari 1 sehingga data belum stasioner terhadap ragam. Dibutuhkan transformasi Box-cox lagi.

> ihsg.praintervensi.2<-BoxCox(ihsg.praintervensi.1,lambda = lambda.pra1)
> lambda.pra2<-BoxCox.lambda(ihsg.praintervensi.2)
> lambda.pra2
[1] 1.56227

Hasil dari pemeriksaan stasioneritas ragam pada data hasil transformasi kedua diketahui bahwa nilai \(\lambda\) masih jauh dari 1 sehingga data belum stasioner terhadap ragam. Dibutuhkan transformasi Box-cox ketiga

> ihsg.praintervensi.3<-BoxCox(ihsg.praintervensi.2,lambda = lambda.pra2)
> BoxCox.lambda(ihsg.praintervensi.3)
[1] 0.9968555

Hasil dari pemeriksaan stasioneritas ragam data hasil transformasi kedua menggunakan Box-cox diketahui bahwa nilai \(\lambda\) sudah dekat dengan 1 sehingga dapat dikatakan data sudah stasioner terhadap ragam.

Stasioneritas terhadap rata-rata

> adf.test(ihsg.praintervensi.3)

    Augmented Dickey-Fuller Test

data:  ihsg.praintervensi.3
Dickey-Fuller = -1.8719, Lag order = 6, p-value = 0.6301
alternative hypothesis: stationary

Hasil uji Dickey Fuller pada data didapatkan nilai-p sebesar 0.6301 > \(\alpha\) (0.05) sehingga terima \(H_0\). Karena data belum stasioner maka perlu dilakukan differencing pertama.

> ihsg.praintervensi.4<-diff(ihsg.praintervensi.3)
> adf.test(ihsg.praintervensi.4)

    Augmented Dickey-Fuller Test

data:  ihsg.praintervensi.4
Dickey-Fuller = -6.69, Lag order = 6, p-value = 0.01
alternative hypothesis: stationary

Hasil uji Dickey Fuller pada data didapatkan nilai-p sebesar 0.01 < \(\alpha\) (0.05) sehingga terima \(H_0\). Karena data hasil differencing pertama stasioner terhadap rata-rata.

Identifikasi Model ARIMA

Data bernilai sangat besar, untuk memudahkan pendugaan parameter akan dilakukan penyekalaan data terlebih dahulu.

> ihsg.praintervensi.4
  [1] -1.309543e+21  2.405166e+21 -2.795385e+20 -1.995389e+21 -2.350847e+21
  [6]  7.485303e+20 -2.041976e+20  5.921970e+20 -4.799396e+20  5.264571e+20
 [11] -1.171285e+21  1.459517e+21 -7.199593e+20  5.769934e+20  2.357180e+20
 [16] -8.009932e+20 -1.364228e+21 -1.085621e+21  5.282658e+20  9.409308e+20
 [21]  4.298978e+20 -1.712363e+20  1.029327e+21 -1.113561e+21  1.356780e+21
 [26] -3.454686e+20  1.794166e+21 -2.500467e+21  2.665449e+21  9.617262e+20
 [31] -1.155168e+21  1.672807e+21 -1.091491e+20 -2.846625e+20 -1.325895e+21
 [36] -3.291115e+20  4.361086e+19  1.279993e+21 -3.743301e+20 -1.247230e+20
 [41] -1.029470e+21 -8.378935e+20  2.401241e+21  1.347449e+21  2.471158e+20
 [46]  1.242293e+21  3.895003e+20 -3.278885e+21 -7.609012e+20  1.022684e+21
 [51] -1.692920e+20  2.176136e+20  3.580841e+20  8.497314e+20 -3.744513e+20
 [56] -1.678750e+21 -6.253596e+20 -2.369927e+21  8.863418e+20 -1.920853e+21
 [61]  2.413295e+21  9.348983e+20 -3.402335e+21 -8.941532e+20  9.474947e+20
 [66] -2.060820e+21 -3.381375e+20  9.346120e+20  1.670978e+21 -5.128108e+20
 [71] -3.020268e+21  3.033238e+21  2.136848e+21  0.000000e+00 -3.138265e+21
 [76]  4.481336e+20  3.051385e+19 -3.189594e+20 -8.888587e+20  2.648702e+20
 [81] -3.913911e+20  2.499485e+21  1.846491e+21  2.047213e+21 -1.477599e+21
 [86] -2.248390e+21  9.968116e+20 -1.256296e+21  2.134799e+21 -3.094757e+21
 [91] -2.670863e+21 -1.498264e+21  1.547906e+21  1.566125e+21 -3.641747e+21
 [96]  6.238548e+20 -1.730347e+21  5.200064e+20 -1.428136e+21 -1.179426e+20
[101] -3.875741e+20 -1.934636e+21 -1.518739e+20  1.833644e+21  1.276771e+21
[106]  1.986498e+20 -1.399996e+20  4.995103e+20  1.401479e+21  2.282804e+21
[111]  1.934930e+21 -3.770928e+20  1.903274e+21  6.643820e+20  9.125031e+20
[116] -6.788000e+19  5.377084e+20  4.990196e+20  3.912903e+20  8.068401e+20
[121] -1.435678e+21 -1.549288e+21 -1.948271e+18  2.792158e+21 -7.855123e+20
[126]  8.126816e+20 -2.418086e+20 -1.489752e+21 -6.381727e+20  1.372115e+21
[131]  2.128465e+19 -1.348885e+21  3.938241e+20  2.051030e+21 -5.315303e+20
[136] -6.722555e+21  1.760411e+21  2.219699e+21 -4.663794e+20  1.724649e+21
[141]  1.175145e+21  1.769031e+21  2.500801e+21 -8.516261e+20  7.238629e+20
[146]  1.135960e+21  2.275821e+21  7.201741e+20 -2.267175e+21  1.906321e+21
[151]  2.209729e+21 -3.022318e+20  2.259332e+21 -1.170399e+21  1.620388e+21
[156]  9.148680e+20 -2.943835e+21  2.111766e+21  3.116897e+20  1.589026e+21
[161] -7.495929e+20  2.331789e+21 -1.743541e+19  1.526830e+21  5.839129e+20
[166]  8.300613e+20 -1.125814e+20  3.320812e+21 -6.872754e+21  1.325517e+21
[171]  1.131222e+20 -1.522687e+21  1.449582e+20 -1.877904e+21 -6.193153e+21
[176]  4.105742e+21 -2.870066e+21 -6.833262e+20 -1.640188e+21  2.724123e+20
[181]  1.834874e+21 -1.931275e+21 -7.139172e+20  1.373160e+21  1.360602e+21
[186]  2.433127e+21  8.198028e+20  3.331246e+21  1.005194e+21  5.102414e+20
[191]  6.730277e+20 -5.864026e+19 -2.861784e+21 -8.547383e+20 -2.279441e+21
[196] -1.032599e+21 -1.323917e+21  1.485360e+20 -2.395091e+21 -8.681010e+20
[201]  4.169301e+20 -3.505375e+21 -4.158710e+21  1.242622e+21 -5.993508e+20
[206]  1.625824e+21 -3.959259e+20 -2.691613e+21 -1.444788e+21 -7.101293e+20
[211]  1.637519e+21 -4.169152e+20 -1.047401e+21  1.460227e+21  3.374342e+21
[216] -1.977061e+21 -1.271688e+21 -2.276672e+21 -1.685388e+21  3.849007e+21
[221]  3.739192e+21 -4.011415e+20  2.114350e+21  1.747466e+21  5.073723e+20
[226]  3.772535e+20 -2.273496e+21 -2.130802e+21 -1.933593e+21 -2.776156e+21
[231] -1.297768e+21 -3.182025e+21  1.541149e+20  2.736755e+21 -7.690093e+20
[236] -7.150932e+20  1.067482e+21  2.151130e+21  3.249094e+19 -2.169348e+21
[241]  7.045058e+19 -7.345588e+19 -3.923803e+20  6.064221e+20 -1.766603e+21
[246] -1.406241e+21  2.939024e+21  7.070875e+20  1.225664e+21  4.278919e+20
[251]  2.977860e+20  2.089004e+21 -6.919024e+20 -1.819944e+21 -2.387417e+21
[256]  9.018709e+20 -1.966437e+21  1.064068e+21 -1.204402e+21 -3.378782e+21
[261] -2.713352e+21 -1.763938e+21 -1.996452e+21  1.954027e+21 -5.711817e+20
[266]  4.400945e+20  3.708263e+21  8.998513e+20 -1.636639e+21 -1.374520e+20
[271]  3.020143e+20 -1.062195e+21 -2.972698e+21  3.297578e+20 -2.003132e+21
[276] -3.112855e+21  3.660889e+21 -2.138799e+21  2.330380e+21  1.467582e+21
[281]  3.211501e+20 -6.634958e+20 -8.869373e+20  2.073954e+21
> ihsg.praintervensi.5<-ihsg.praintervensi.4/ 1e21
> acf(ihsg.praintervensi.5)

> pacf(ihsg.praintervensi.5)

Plot ACF dan PACF signifikan pada lag 7 dan 19, Maka model tentatif yang diusulkan adalah ARIMA(0,0,[7,19]) dan ARIMA ([7,19],0,0)

Pendugaan Parameter Model ARIMA

> arima.prainter.1<-arima(ihsg.praintervensi.5,order = c(19,0,0),fixed = c(rep(0,6),NA,rep(0,11),NA,NA),transform.pars = FALSE)
> coeftest(arima.prainter.1)

z test of coefficients:

           Estimate Std. Error z value Pr(>|z|)  
ar7       -0.139281   0.058834 -2.3673  0.01792 *
ar19      -0.151061   0.059681 -2.5312  0.01137 *
intercept -0.054317   0.080872 -0.6716  0.50181  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
> arima.prainter.2<-arima(ihsg.praintervensi.5,order = c(0,0,19),fixed = c(rep(0,6),NA,rep(0,11),NA,NA),transform.pars = FALSE)
> coeftest(arima.prainter.2)

z test of coefficients:

           Estimate Std. Error z value Pr(>|z|)   
ma7       -0.141175   0.056161 -2.5137 0.011946 * 
ma19      -0.158237   0.061067 -2.5912 0.009564 **
intercept -0.052457   0.073794 -0.7109 0.477174   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Berdasarkan kedua hasil pendugaan parameter model dapat dilihat bahwa semua parameter signifikan sehingga model dapat digunakan.

Uji Asumsi Sisaan

Uji asumsi sisaan yaitu non-autokorelasi dan normalitas perlu dilakukan untuk ARIMA pra-intervensi.

\(H_0:\rho_1=\rho_2=...=\rho_k=0\) (tidak terdapat autokorelasi pada sisaan)

\(H_1:\) terdapat minimal satu \(\rho_k\neq0\) (terdapat autokorelasi pada sisaan)

> res.pra.1<-residuals(arima.prainter.1)
> res.pra.2<-residuals(arima.prainter.2)
> Box.test(res.pra.1)

    Box-Pierce test

data:  res.pra.1
X-squared = 0.026949, df = 1, p-value = 0.8696
> Box.test(res.pra.2)

    Box-Pierce test

data:  res.pra.2
X-squared = 0.0088084, df = 1, p-value = 0.9252

Berdasarkan uji asumsi non-autokorelasi didapatkan nilai-p > 0.05 sehingga \(H_0\) diterima. Dapat disimpulkan bahwa kedua model memenuhi asumsi non-autokorelasi sisaan. selanjutnya dilakukan uji normalitas sisaan menggunakan uji Jarque Bera dengan hipotesis

\(H_0\): sisaan menyebar normal

\(H_1\): sisaan tidak menyebar normal

> jarque.bera.test(res.pra.1)

    Jarque Bera Test

data:  res.pra.1
X-squared = 15.002, df = 2, p-value = 0.0005525
> jarque.bera.test(res.pra.2)

    Jarque Bera Test

data:  res.pra.2
X-squared = 12.829, df = 2, p-value = 0.001638

Berdasarkan hasil uji didapatkan kedua model menghasilkan nilai-p yang kurang dari \(\alpha\) (0.05) maka tolak \(H_0\). Asumsi normalitas sisaan tidak terpenuhi, namun pada pemodelan deret waktu asumsi ini tidak harus terpenuhi. Sehingga kedua model dapat digunakan.

Pemilihan model terbaik

Karena kedua model memenuhi asumsi, maka pemilihan model terbaik menggunakan nilai AIC.

> print(c(arima.prainter.1$aic,arima.prainter.2$aic))
[1] 1127.156 1126.804

Model 2 memiliki nilai AIC yang lebih kecil sehingga model terbaik adalah ARIMA(0,0,[7,19]).

Peramalan

Setelah mendapatkan model ARIMA terbaik pada data praintervensi, akan dilakukan peramalan untuk sisa data setelah intervensi. Peramalan dilakukan untuk 12 periode.

> peramalan<-forecast(ihsg.praintervensi.5,model=arima.prainter.2,h=12)
> peramalan$mean
Time Series:
Start = 285 
End = 296 
Frequency = 1 
 [1]  0.13386293 -0.82489654 -0.25199381  0.22330538  0.15555164 -0.03909792
 [7] -0.23176710  0.43424377 -0.12678241  0.21154624  0.51298594 -0.66143528

Setelah melakukan peramalan untuk sisa data setelah intervensi, selanjutnya adalah menghitung sisaan dari model peramalan.

> sisaan.peramalan<-data.ihsg.4[286:297]-peramalan$mean
> sisaan.peramalan
Time Series:
Start = 285 
End = 296 
Frequency = 1 
 [1] -1.4928521  0.3920665 -2.0513022  0.5641902  0.4926745 -1.0901647
 [7] -0.6098419  0.2080618  2.3269456  0.1671779 -5.0795287  0.4779960

Pemodelan ARIMA Intervensi

> error_idintv <- rep(0,297)
> error_idintv[1:285]<- res2
> error_idintv[286:297] <- sisaan.peramalan
> plot(error_idintv, type="h", xlab="Waktu (T)", ylab = "Residual", xaxt = "n")
> abline(h=c(-3*sd(res.pra.2), 3*sd(res.pra.2)), col="blue", lty=2)
> abline(v = 286, col = "red", lty = 3, lwd = 1.5)

Pada plot dapat dilihat bahwa tidak ada data yang keluar dari batas signifikansi, sehingga pemodelan intervensi tidak cocok untuk data ini.

Kesimpulan

Setelah melakukan pemodelan ARIMA biasa dan ARIMA AO dapat dilakukan pemeriksaan model terbaik.

> print(c(model.2$aic,arima.ao$aic))
[1] 781.2608 783.2282

Berdasarkan nilai AIC dapat disimpulkan model ARIMA biasa atau ARIMA ([7,10,19],0,0).