Library:
> # install.packages("knitr")
> # install.packages("rmarkdown")
> # install.packages("prettydoc")
> # install.packages("equatiomatic")
> library(tseries)
> library(FSA)
> library(knitr)
> library(tseries)
> library(TSA)
> library(lmtest)
> library(forecast)
> library(MLmetrics)
> library(xts)
> library(readxl)
> library(tsoutliers)
> 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
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 mirip dengan pemodelan ARIMA pada umumnya, namun dikhususkan untuk mendeteksi keberadaan outlier.
> 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.
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.
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)
> 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.
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.
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).
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)
> 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 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.
> 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 nilai ekstrim juga dapat dimodelkan dengan model 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]
> 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.
> 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.
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)
> 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 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.
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]).
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
> 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.
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).