library(tseries)
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library(FSA)
## ## FSA v0.9.6. See citation('FSA') if used in publication.
## ## Run fishR() for related website and fishR('IFAR') for related book.
library(FinTS)
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(tseries)
library(TSA)
##
## Attaching package: 'TSA'
## The following objects are masked from 'package:stats':
##
## acf, arima
## The following object is masked from 'package:utils':
##
## tar
library(lmtest)
library(forecast)
## Registered S3 methods overwritten by 'forecast':
## method from
## fitted.Arima TSA
## plot.Arima TSA
##
## Attaching package: 'forecast'
## The following object is masked from 'package:FinTS':
##
## Acf
library(MLmetrics)
##
## Attaching package: 'MLmetrics'
## The following object is masked from 'package:base':
##
## Recall
library(xts)
library(readxl)
library(ggplot2)
library(ggrepel)
library(MASS)
library(tsoutliers)
Indeks Harga Saham Gabungan (IHSG) merupakan salah satu indeks pasar
saham yang digunakan oleh Bursa Efek Indonesia. Setiap hari IHSG
mengalami fluktuasi secara tidak pasti dan menjadikan kegiatan
perdagangan saham beresiko tinggi. Fluktuasi yang tinggi pada data IHSG
kemungkinan besar akan memiliki nilai pencilan. Pada beberapa hari
terakhir, terdapat kebijakan pemerintah yang ramai dan menimbulkan
sentimen negative sehingga membuat saham-saham di Indonesia menjadi
anjlok termasuk IHSG. Kebijakan pemerintah tersebut adalah pengesahan
RUU TNI yang disahkan pada tanggal 20 Maret 2025. Semenjak RUU TNI
disahkan, nilai IHSG mengalami penurunan dan pada awal bulan April 2025
mengalami penurunan yang sangat tinggi. Berdasarkan karakteristik dari
data IHSG yang selalu mengalami perubahan perlu dilakukan peramalan.
Peramalan pada data close price IHSG dapat membantu investor dalam
mengambil keputusan dalam berinvestasi.
# Impor data
ihsg = read_excel("Data IHSG.xlsx")
head(ihsg)
## # A tibble: 6 × 3
## No Tanggal `Harga Saham`
## <dbl> <dttm> <dbl>
## 1 1 2024-01-02 00:00:00 7324.
## 2 2 2024-01-03 00:00:00 7279.
## 3 3 2024-01-04 00:00:00 7360.
## 4 4 2024-01-05 00:00:00 7351.
## 5 5 2024-01-08 00:00:00 7284.
## 6 6 2024-01-09 00:00:00 7200.
Sebelum melakukan analisis deret waktu, langkah awal yang perlu dilakukan adalah melakukan eksplorasi data deret waktu untuk mengetahui pola dari data deret waktu tersebut.
# Mendefinisikan variabel
saham <- as.numeric(ihsg$`Harga Saham`)
tanggal <- as.Date(ihsg$Tanggal)
data.saham <- data.frame(tanggal, saham)
data.saham
## tanggal saham
## 1 2024-01-02 7323.59
## 2 2024-01-03 7279.09
## 3 2024-01-04 7359.76
## 4 2024-01-05 7350.62
## 5 2024-01-08 7283.58
## 6 2024-01-09 7200.20
## 7 2024-01-10 7227.30
## 8 2024-01-11 7219.96
## 9 2024-01-12 7241.14
## 10 2024-01-15 7224.00
## 11 2024-01-16 7242.79
## 12 2024-01-17 7200.63
## 13 2024-01-18 7252.97
## 14 2024-01-19 7227.40
## 15 2024-01-22 7247.93
## 16 2024-01-23 7256.23
## 17 2024-01-24 7227.82
## 18 2024-01-25 7178.04
## 19 2024-01-26 7137.09
## 20 2024-01-29 7157.17
## 21 2024-01-30 7192.22
## 22 2024-01-31 7207.94
## 23 2024-02-01 7201.70
## 24 2024-02-02 7238.79
## 25 2024-02-05 7198.62
## 26 2024-02-06 7247.41
## 27 2024-02-07 7235.15
## 28 2024-02-12 7297.67
## 29 2024-02-13 7209.74
## 30 2024-02-15 7303.28
## 31 2024-02-16 7335.54
## 32 2024-02-19 7296.70
## 33 2024-02-20 7352.60
## 34 2024-02-21 7349.02
## 35 2024-02-22 7339.64
## 36 2024-02-23 7295.10
## 37 2024-02-26 7283.82
## 38 2024-02-27 7285.32
## 39 2024-02-28 7328.64
## 40 2024-02-29 7316.11
## 41 2024-03-01 7311.91
## 42 2024-03-04 7276.75
## 43 2024-03-05 7247.46
## 44 2024-03-06 7329.80
## 45 2024-03-07 7373.96
## 46 2024-03-08 7381.91
## 47 2024-03-13 7421.21
## 48 2024-03-14 7433.31
## 49 2024-03-15 7328.05
## 50 2024-03-18 7302.45
## 51 2024-03-19 7336.75
## 52 2024-03-20 7331.13
## 53 2024-03-21 7338.35
## 54 2024-03-22 7350.15
## 55 2024-03-25 7377.76
## 56 2024-03-26 7365.66
## 57 2024-03-27 7310.09
## 58 2024-03-28 7288.81
## 59 2024-04-01 7205.06
## 60 2024-04-02 7236.98
## 61 2024-04-03 7166.84
## 62 2024-04-04 7254.40
## 63 2024-04-05 7286.88
## 64 2024-04-16 7164.81
## 65 2024-04-17 7130.84
## 66 2024-04-18 7166.81
## 67 2024-04-19 7087.32
## 68 2024-04-22 7073.82
## 69 2024-04-23 7110.81
## 70 2024-04-24 7174.53
## 71 2024-04-25 7155.29
## 72 2024-04-26 7036.08
## 73 2024-04-29 7155.78
## 74 2024-04-30 7234.20
## 75 2024-05-01 7234.20
## 76 2024-05-02 7117.42
## 77 2024-05-03 7134.72
## 78 2024-05-06 7135.89
## 79 2024-05-07 7123.61
## 80 2024-05-08 7088.79
## 81 2024-05-13 7099.26
## 82 2024-05-14 7083.76
## 83 2024-05-15 7179.83
## 84 2024-05-16 7246.70
## 85 2024-05-17 7317.24
## 86 2024-05-20 7266.69
## 87 2024-05-21 7186.04
## 88 2024-05-22 7222.38
## 89 2024-05-27 7176.42
## 90 2024-05-28 7253.63
## 91 2024-05-29 7140.23
## 92 2024-05-30 7034.14
## 93 2024-05-31 6970.74
## 94 2024-06-03 7036.19
## 95 2024-06-04 7099.31
## 96 2024-06-05 6947.67
## 97 2024-06-06 6974.90
## 98 2024-06-07 6897.95
## 99 2024-06-10 6921.55
## 100 2024-06-11 6855.69
## 101 2024-06-12 6850.10
## 102 2024-06-13 6831.56
## 103 2024-06-14 6734.83
## 104 2024-06-19 6726.92
## 105 2024-06-20 6819.32
## 106 2024-06-21 6879.98
## 107 2024-06-24 6889.17
## 108 2024-06-25 6882.70
## 109 2024-06-26 6905.64
## 110 2024-06-27 6967.95
## 111 2024-06-28 7063.58
## 112 2024-07-01 7139.63
## 113 2024-07-02 7125.14
## 114 2024-07-03 7196.75
## 115 2024-07-04 7220.89
## 116 2024-07-05 7253.37
## 117 2024-07-08 7250.98
## 118 2024-07-09 7269.80
## 119 2024-07-10 7287.04
## 120 2024-07-11 7300.41
## 121 2024-07-12 7327.58
## 122 2024-07-15 7278.86
## 123 2024-07-16 7224.29
## 124 2024-07-17 7224.22
## 125 2024-07-18 7321.07
## 126 2024-07-19 7294.50
## 127 2024-07-22 7321.98
## 128 2024-07-23 7313.86
## 129 2024-07-24 7262.76
## 130 2024-07-25 7240.28
## 131 2024-07-26 7288.17
## 132 2024-07-29 7288.90
## 133 2024-07-30 7241.86
## 134 2024-07-31 7255.76
## 135 2024-08-01 7325.98
## 136 2024-08-02 7308.12
## 137 2024-08-05 7059.65
## 138 2024-08-06 7129.21
## 139 2024-08-07 7212.13
## 140 2024-08-08 7195.12
## 141 2024-08-09 7257.00
## 142 2024-08-12 7297.63
## 143 2024-08-13 7356.64
## 144 2024-08-14 7436.04
## 145 2024-08-15 7409.50
## 146 2024-08-16 7432.09
## 147 2024-08-19 7466.83
## 148 2024-08-20 7533.98
## 149 2024-08-21 7554.59
## 150 2024-08-22 7488.68
## 151 2024-08-23 7544.30
## 152 2024-08-26 7606.19
## 153 2024-08-27 7597.88
## 154 2024-08-28 7658.88
## 155 2024-08-29 7627.60
## 156 2024-08-30 7670.73
## 157 2024-09-02 7694.53
## 158 2024-09-03 7616.52
## 159 2024-09-04 7672.90
## 160 2024-09-05 7681.04
## 161 2024-09-06 7721.85
## 162 2024-09-09 7702.74
## 163 2024-09-10 7761.39
## 164 2024-09-11 7760.96
## 165 2024-09-12 7798.15
## 166 2024-09-13 7812.13
## 167 2024-09-17 7831.78
## 168 2024-09-18 7829.13
## 169 2024-09-19 7905.39
## 170 2024-09-20 7743.00
## 171 2024-09-23 7775.73
## 172 2024-09-24 7778.49
## 173 2024-09-25 7740.90
## 174 2024-09-26 7744.52
## 175 2024-09-27 7696.92
## 176 2024-09-30 7527.93
## 177 2024-10-01 7642.13
## 178 2024-10-02 7563.26
## 179 2024-10-03 7543.83
## 180 2024-10-04 7496.09
## 181 2024-10-07 7504.13
## 182 2024-10-08 7557.14
## 183 2024-10-09 7501.29
## 184 2024-10-10 7480.08
## 185 2024-10-11 7520.60
## 186 2024-10-14 7559.65
## 187 2024-10-15 7626.95
## 188 2024-10-16 7648.94
## 189 2024-10-17 7735.04
## 190 2024-10-18 7760.06
## 191 2024-10-21 7772.60
## 192 2024-10-22 7788.98
## 193 2024-10-23 7787.56
## 194 2024-10-24 7716.55
## 195 2024-10-25 7694.66
## 196 2024-10-28 7634.63
## 197 2024-10-29 7606.60
## 198 2024-10-30 7569.85
## 199 2024-10-31 7574.02
## 200 2024-11-01 7505.26
## 201 2024-11-04 7479.50
## 202 2024-11-05 7491.93
## 203 2024-11-06 7383.87
## 204 2024-11-07 7243.86
## 205 2024-11-08 7287.19
## 206 2024-11-11 7266.46
## 207 2024-11-12 7321.99
## 208 2024-11-13 7308.67
## 209 2024-11-14 7214.56
## 210 2024-11-15 7161.26
## 211 2024-11-18 7134.28
## 212 2024-11-19 7195.71
## 213 2024-11-20 7180.33
## 214 2024-11-21 7140.91
## 215 2024-11-22 7195.56
## 216 2024-11-25 7314.11
## 217 2024-11-26 7245.89
## 218 2024-11-28 7200.16
## 219 2024-11-29 7114.27
## 220 2024-12-02 7046.99
## 221 2024-12-03 7196.02
## 222 2024-12-04 7326.76
## 223 2024-12-05 7313.31
## 224 2024-12-06 7382.79
## 225 2024-12-09 7437.73
## 226 2024-12-10 7453.29
## 227 2024-12-11 7464.75
## 228 2024-12-12 7394.24
## 229 2024-12-13 7324.79
## 230 2024-12-16 7258.63
## 231 2024-12-17 7157.73
## 232 2024-12-18 7107.88
## 233 2024-12-19 6977.24
## 234 2024-12-20 6983.87
## 235 2024-12-23 7096.44
## 236 2024-12-24 7065.75
## 237 2024-12-27 7036.57
## 238 2024-12-30 7079.90
## 239 2025-01-02 7163.21
## 240 2025-01-03 7164.43
## 241 2025-01-06 7080.47
## 242 2025-01-07 7083.28
## 243 2025-01-08 7080.35
## 244 2025-01-09 7064.59
## 245 2025-01-10 7088.87
## 246 2025-01-13 7016.88
## 247 2025-01-14 6956.67
## 248 2025-01-15 7079.56
## 249 2025-01-16 7107.52
## 250 2025-01-17 7154.66
## 251 2025-01-20 7170.74
## 252 2025-01-21 7181.82
## 253 2025-01-22 7257.13
## 254 2025-01-23 7232.64
## 255 2025-01-24 7166.06
## 256 2025-01-30 7073.48
## 257 2025-01-31 7109.20
## 258 2025-02-03 7030.06
## 259 2025-02-04 7073.46
## 260 2025-02-05 7024.23
## 261 2025-02-06 6875.54
## 262 2025-02-07 6742.58
## 263 2025-02-10 6648.14
## 264 2025-02-11 6531.99
## 265 2025-02-12 6645.78
## 266 2025-02-13 6613.57
## 267 2025-02-14 6638.46
## 268 2025-02-17 6830.88
## 269 2025-02-18 6873.55
## 270 2025-02-19 6794.87
## 271 2025-02-20 6788.04
## 272 2025-02-21 6803.00
## 273 2025-02-24 6749.60
## 274 2025-02-25 6587.09
## 275 2025-02-26 6606.18
## 276 2025-02-27 6485.45
## 277 2025-02-28 6270.60
## 278 2025-03-03 6519.66
## 279 2025-03-04 6380.40
## 280 2025-03-05 6531.40
## 281 2025-03-06 6617.85
## 282 2025-03-07 6636.00
## 283 2025-03-10 6598.21
## 284 2025-03-11 6545.85
## 285 2025-03-12 6665.04
## 286 2025-03-13 6647.42
## 287 2025-03-14 6515.63
## 288 2025-03-17 6471.95
## 289 2025-03-18 6223.39
## 290 2025-03-19 6311.66
## 291 2025-03-20 6381.67
## 292 2025-03-21 6258.18
## 293 2025-03-24 6161.22
## 294 2025-03-25 6235.62
## 295 2025-03-26 6472.36
## 296 2025-03-27 6510.62
## 297 2025-04-08 5996.14
## 298 2025-04-09 5972.56
plot(tanggal, saham, type = "o", col = "blue", lwd = 2)
Pada plot deret waktu tersebut terlihat bahwa pada 19 September 2024
memiliki harga saham tertinggi, namun setelahnya mengalami penurunan
yang cukup signifikan. Dengan demikian, dapat dinyatakan bahwa terdapat
intervensi pada periode tersebut sehingga dapat menggunakan pemodelan
ARIMA Intervensi serta dapat juga dilakukan pemodelan ARIMA Outlier.
Pemodelan ARIMA intervensi dilakukan dengan melakukan pemodelan ARIMA
pada data pra intervensi yaitu data pada 2 Januari 2024 hingga 9 April
2025.
plot(tanggal, saham, type = "o", col = "blue", lwd = 2)
abline(v = tanggal[230], col = "red", lty = 3, lwd = 1.5)
# Pemodelan ARIMA Outlier Pemodelan ARIMA Outlier memiliki tahapan yang
sama dengan ARIMA pada umumnya namun perbedaannya adalah terdapat
pendeteksian Additive Outlier dan Innovative Outlier.
saham.ujiragam <- min(saham)+1
BoxCox.lambda(saham.ujiragam)
## [1] 1
Hasil dari pemeriksaan stasioneritas terhadap ragam menggunakan Box-cox dapat diketahui bahwa nilai \(\lambda=1\) sehingga dapat dinyatakan bahwa data IHSG stasioner terhadap ragam.
Data deret waktu yang digunakan untuk pemodelan ARIMA harus stasioner
terhadap rata-rata. Pengujian hipotesis stasioneritas terhadap rata-rata
dapat menggunakan statistik uji Dickey Fuller dengan hipotesis sebagai
berikut.
\(H_0\) : \(\phi=1\) (data tidak stasioner terhadap
rata-rata) vs
\(H_1\) : \(\phi<1\) (data stasioner terhadap
rata-rata)
Taraf nyata: \(\alpha=0,05\)
Daerah penolakan:
apabila nilai-p kurang dari 0,05 maka \(H_0\) ditolak yang artinya data stasioner
terhadap rata-rata
adf.test(saham, k=1)
##
## Augmented Dickey-Fuller Test
##
## data: saham
## Dickey-Fuller = -0.78673, Lag order = 1, p-value = 0.9621
## alternative hypothesis: stationary
Hasil uji Dickey Fuller pada data IHSG didapatkan nilai-p sebesar \(0,9621\) yang di mana lebih dari \(\alpha=0,05\) sehingga menghasilkan keputusan terima \(H_0\). Dengan demikian, dapat dinyatakan bahwa data IHSG belum stasioner terhadap rata-rata.
saham1=diff(saham,diference=1)
adf.test(saham1)
## Warning in adf.test(saham1): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: saham1
## Dickey-Fuller = -7.5443, Lag order = 6, p-value = 0.01
## alternative hypothesis: stationary
Hasil uji Dickey Fuller pada data IHSG didapatkan nilai-p sebesar \(0,01\) yang di mana lebih dari \(\alpha=0,05\) sehingga menghasilkan keputusan tolak \(H_0\). Dengan demikian, dapat dinyatakan bahwa data IHSG hasil pembedaan pertama telah stasioner terhadap rata-rata.
Identifikasi model ARIMA dapat menggunakan plot ACF dan PACF. Nilai ACF dan PACF bertujuan untuk memilih orde \(p\) dan \(q\) pada model ARIMA. Pemeriksaan ACF dan PACF dilakukan pada data yang telah stasioner.
acf(saham1)
pacf(saham1)
Berdasarkan nilai pada plot ACF dan PACF, dapat diketahui bahwa ACF dan
PACF signifikan pada lag ke-2, 10, dan 19. Pada kasus ACF dan PACF yang
hanya signifikan pada lag tertentu dapat menggunakan model ARIMA
restricted. Model ARIMA restricted adalah model ARIMA yang menduga
parameter untuk lag tertentu saja. Pada plot ACF dan PACF data IHSG
hasil pembedaan dapat diketahui model ARIMA yang mungkin adalah model
ARIMA([2,10,19],1,0) dan ARIMA(0,1,[2,10,19]).
arima.1 <- arima(saham1, order = c(10,0,0), fixed=c(0,NA,rep(0,7),NA, NA),method = 'ML', include.mean = TRUE)
## Warning in stats::arima(x = x, order = order, seasonal = seasonal, xreg = xreg,
## : some AR parameters were fixed: setting transform.pars = FALSE
coeftest(arima.1)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar2 -0.127924 0.061816 -2.0694 0.038504 *
## ar10 0.181021 0.064725 2.7968 0.005162 **
## intercept -4.635100 4.516996 -1.0261 0.304822
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
arima.2 <- arima(saham1, order = c(0,0,10),fixed=c(0,NA,rep(0,7),NA, NA),method = 'ML', include.mean = TRUE)
coeftest(arima.2)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ma2 -0.098004 0.060638 -1.6162 0.10605
## ma10 0.163229 0.067087 2.4331 0.01497 *
## intercept -4.682361 4.577079 -1.0230 0.30631
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Berdasarkan hasil pendugaan parameter dari kedua model ARIMA tersebut, dapat diketahui bahwa parameter yang signifikan hanya pada model ARIMA(10,1,0) dan ma10 sehingga model tersebut dapat digunakan.
Langkah selanjutnya adalah melakukan pengujian asumsi sisaan yaitu
autokorelasi sisaan dan normalitas sisaan. Hipotesis untuk uji
autokorelasi sisaan
\(H_0\) :
\(\rho_1=\rho_2=...=\rho_k=0\) (tidak
terdapat autokorelasi pada sisaan) vs
\(H_1\) : minimal terdapat satu \(\rho_k \neq 0\) ( terdapat autokorelasi
pada sisaan)
Taraf nyata: 0,05
resid.arima1 <- residuals(arima.1)
resid.arima2 <- residuals(arima.2)
Box.test(resid.arima1, lag=2, type = c('Ljung-Box'))
##
## Box-Ljung test
##
## data: resid.arima1
## X-squared = 0.19574, df = 2, p-value = 0.9068
Box.test(resid.arima2, lag=2, type = c('Ljung-Box'))
##
## Box-Ljung test
##
## data: resid.arima2
## X-squared = 0.12312, df = 2, p-value = 0.9403
Berasarkan hasil uji autokorelasi sisaan model tentatif dengan Ljung-Box memiliki nilai-p \(>0.05\) sehingga \(H_0\) diterima. Dengan demikian, dapat dinyatakan bahwa tidak terdapat autokorelasi sisaan sehingga dapat dilanjutkan uji asumsi selanjutnya.
Uji normalitas sisaan menggunakan uji Jarque Bera dengan hipotesis
sebagai berikut.
\(H_0\) : \(\epsilon_i\sim N(0, \sigma_e^{2})\) (sisaan
menyebar normal) vs
\(H_1\) :
\(\varepsilon\not\sim N(0,
\sigma_e^2)\) (sisaan tidak menyebar normal) Taraf nyata: \(0,05\)
jarque.bera.test(resid.arima1)
##
## Jarque Bera Test
##
## data: resid.arima1
## X-squared = 341.02, df = 2, p-value < 2.2e-16
jarque.bera.test(resid.arima2)
##
## Jarque Bera Test
##
## data: resid.arima2
## X-squared = 444.86, df = 2, p-value < 2.2e-16
Berasarkan hasil uji normalitas sisaan model tentatif ARIMA dengan Jarque Bera dapat diperoleh informasi bahwa nilai-p yang didapatkan \(<0,05\) sehingga \(H_0\) ditolak. Dengan demikian, dapat dinyatakan bahwa residual tidak menyebar normal. Akan tetapi, pada pemodelan deret waktu asumsi normalitas tidak wajib terpenuhi, sehingga model tetap layak digunakan. Berdasarkan hasil uji asumsi sisaan model, dapat diperoleh informasi bahwa kedua model ARIMA layak untuk digunakan. Setelah seluruh asumsi terpenuhi, maka dapat dilanjutkan pemilihan model terbaik dengan AIC.
arima.1$aic
## [1] 3406.371
arima.2$aic
## [1] 3408.499
Berdasarhan nilai AIC dari kedua model tentatif, dapat diperoleh informasi bahwa model dengan nilai AIC terkecil adalah ARIMA(10,1,0).
Berdasarkan plot data deret waktu IHSG, dapat diperoleh informasi bahwa terdapat titik ekstrim pada data sehingga pada saat dilakukan pemodelan ARIMA akan terdapat outlier. Untuk mendeteksi outlier pada model ARIMA yang terpilih dapat menggunakan deteksi Additive Outlier, Innovative Outlier, Level Shif.
prediksi.arima <- saham1-resid.arima1
outlier <- tso(prediksi.arima, types = c('AO','IO','IS','TC'))
## Warning in locate.outliers.iloop(resid = resid, pars = pars, cval = cval, :
## stopped when 'maxit.iloop' was reached
print(outlier)
## Series: prediksi.arima
## Regression with ARIMA(0,0,0) errors
##
## Coefficients:
## intercept TC230 IO277 AO286 TC287 IO296
## -5.2425 38.3186 51.1298 -53.2861 38.0540 -54.8236
## s.e. 0.8262 10.0246 13.9233 13.9233 10.0247 13.9260
##
## sigma^2 = 197.2: log likelihood = -1203.07
## AIC=2420.14 AICc=2420.53 BIC=2446
##
## Outliers:
## type ind time coefhat tstat
## 1 TC 230 230 38.32 3.822
## 2 IO 277 277 51.13 3.672
## 3 AO 286 286 -53.29 -3.827
## 4 TC 287 287 38.05 3.796
## 5 IO 296 296 -54.82 -3.937
Pada hasil deteksi Additive Outlier, Innovative Outlier, Level Shift, dan Transitory Change dapat diketahui bahwa terdapat tipe outlier Transitory Change pada periode ke-230 dan ke-287, Inonovative Outlier pada periode ke-277, dan Additive Outlier pada periode ke-286 pada data IHSG. Berdasarkan hasil deteksi outlier tersebut, dapat dinyatakan bahwa model ARIMA yang sesuai adalah model ARIMA Transitory Change. Untuk efek dari outlier TC dapat melihat plot berikut.
plot(outlier$effects)
## Pemodelan ARIMA Outlier
xreg.outlier <- outlier$effects
xreg.outlier
## Time Series:
## Start = 1
## End = 297
## Frequency = 1
## [1] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [6] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [11] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [16] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [21] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [26] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [31] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [36] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [41] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [46] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [51] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [56] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [61] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [66] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [71] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [76] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [81] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [86] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [91] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [96] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [101] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [106] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [111] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [116] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [121] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [126] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [131] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [136] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [141] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [146] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [151] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [156] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [161] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [166] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [171] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [176] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [181] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [186] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [191] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [196] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [201] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [206] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [211] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [216] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [221] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
## [226] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 3.831858e+01
## [231] 2.682300e+01 1.877610e+01 1.314327e+01 9.200290e+00 6.440203e+00
## [236] 4.508142e+00 3.155700e+00 2.208990e+00 1.546293e+00 1.082405e+00
## [241] 7.576835e-01 5.303784e-01 3.712649e-01 2.598854e-01 1.819198e-01
## [246] 1.273439e-01 8.914070e-02 6.239849e-02 4.367894e-02 3.057526e-02
## [251] 2.140268e-02 1.498188e-02 1.048731e-02 7.341120e-03 5.138784e-03
## [256] 3.597149e-03 2.518004e-03 1.762603e-03 1.233822e-03 8.636754e-04
## [261] 6.045728e-04 4.232010e-04 2.962407e-04 2.073685e-04 1.451579e-04
## [266] 1.016106e-04 7.112739e-05 4.978917e-05 3.485242e-05 2.439669e-05
## [271] 1.707769e-05 1.195438e-05 8.368066e-06 5.857646e-06 4.100352e-06
## [276] 2.870247e-06 5.112985e+01 1.406421e-06 9.844946e-07 6.891462e-07
## [281] 4.824023e-07 3.376816e-07 2.363771e-07 1.654640e-07 1.158248e-07
## [286] -5.328612e+01 3.805404e+01 2.663783e+01 1.864648e+01 1.305254e+01
## [291] 9.136776e+00 6.395743e+00 4.477020e+00 3.133914e+00 2.193740e+00
## [296] -5.328799e+01 1.074933e+00
arima.tc <- arima(saham1, order=c(10,0,0), xreg = xreg.outlier, method = 'ML', include.mean=TRUE)
coeftest(arima.tc)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 0.056910 0.062524 0.9102 0.36271
## ar2 -0.105171 0.060931 -1.7261 0.08434 .
## ar3 0.065627 0.060701 1.0812 0.27963
## ar4 0.071309 0.060744 1.1739 0.24042
## ar5 0.097172 0.060764 1.5992 0.10978
## ar6 -0.120182 0.061077 -1.9677 0.04910 *
## ar7 -0.140967 0.061995 -2.2739 0.02297 *
## ar8 -0.017942 0.061826 -0.2902 0.77166
## ar9 -0.037463 0.062142 -0.6029 0.54660
## ar10 0.103632 0.068696 1.5086 0.13141
## intercept -5.921490 4.060254 -1.4584 0.14473
## xreg 2.225136 0.746612 2.9803 0.00288 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Berdasarkan hasil pemodelan ARIMA Outlier dapat diperoleh informasi
bahwa terdapat beberapa parameter yang tidak signifikan signifikan namun
model masih dapat digunakan karena terdapat efek outlier. ## Uji Asumsi
Sisaan Model Outlier Langkah selanjutnya adalah melakukan pengujian
asumsi sisaan yaitu autokorelasi sisaan dan normalitas sisaan. Hipotesis
untuk uji autokorelasi sisaan
\(H_0\) : \(\rho_1=\rho_2=...=\rho_k=0\) (tidak
terdapat autokorelasi pada sisaan) vs
\(H_1\) : minimal terdapat satu \(\rho_k \neq 0\) ( terdapat autokorelasi
pada sisaan)
Taraf nyata: 0,05
resid.arimatc <- residuals(arima.tc)
Box.test(resid.arimatc, lag=2, type = c('Ljung-Box'))
##
## Box-Ljung test
##
## data: resid.arimatc
## X-squared = 0.010725, df = 2, p-value = 0.9947
Berasarkan hasil uji autokorelasi sisaan model ARIMA Outlier dengan
Ljung-Box dapat diperoleh informasi bahwa nilai-p yang didapatkan \(>0,05\) sehingga \(H_0\) diterima. Dengan demikian, dapat
dinyatakan bahwa tidak terdapat autokorelasi sisaan sehingga dapat
dilakukan ke tahap selanjutnya yaitu uji normalitas sisaan. Uji
normalitas sisaan menggunakan uji Jarque Bera dengan hipotesis sebagai
berikut.
\(H_0\) : \(\epsilon_i\sim N(0, \sigma_e^{2})\) (sisaan
menyebar normal) vs
\(H_1\) :
\(\varepsilon\not\sim N(0,
\sigma_e^2)\) (sisaan tidak menyebar normal)
Taraf nyata:
0,05
jarque.bera.test(resid.arimatc)
##
## Jarque Bera Test
##
## data: resid.arimatc
## X-squared = 95.749, df = 2, p-value < 2.2e-16
Pada hasil uji normalitas sisaan dengan jarque bera,dapat diketahui bahwa nilai-p yang didapatkan dari sisaan kedua model tersebut kurang dari \(0,05\), sehingga menghasilkan keputusan tolak \(H_0\). Dengan demikian, dapat dinyatakan bahwa sisaan model tentatif ARIMA tidak menyebar normal. Akan tetapi, pada pemodelan deret waktu asumsi normalitas tidak wajib terpenuhi, sehingga model tetap layak digunakan. Berdasarkan hasil uji asumsi sisaan model, dapat diperoleh informasi bahwa kedua model ARIMA layak untuk digunakan.
tanggal.diff <- tanggal[-1]
prediksi.arimatc <- saham1-resid.arimatc
plot(tanggal.diff, saham1, type = "l", col = "blue", lwd = 2)
lines(tanggal.diff, prediksi.arima, type = "o", col = "red", lwd = 2)
lines(tanggal.diff, prediksi.arimatc, type = "o", col = "green", lwd = 2)
Berdasarkan hasil evaluasi grafis, dapat diperoleh informasi bahwa model
ARIMA Outlier memiliki kemampuan yang lebih baik dalam mengikuti pola
data IHSG sesungguhnya yang terdapat fluktuasi ekstrim.
Nilai ekstrim pada data IHSG, dapat dilakukan dengan model intervensi. Nama intervensi pada kasus tersebut adalah intervensi pasca RUU TNI, yang di mana pada waktu tersebut RUU TNI telah disahkan dan menimbulkan sentimen negatif sehingga harga saham anjlok.
Intervensi terjadi pada bulan April 2025, namun penurunan yang signifikan telah ditemukan pada akhir Februari 2025 hingga April 2025, sehingga intervensi dimulai dari Februari 2025.
saham.pra.intervensi <- saham[1:229]
saham.pra.intervensi
## [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
BoxCox.lambda(saham.pra.intervensi)
## [1] 1.999924
Berdasarkan hasil estimasi nilai lambda menggunakan metode Box-Cox, diperoleh nilai lambda sebesar \(1.999924\). Karena nilai lambda tersebut sangat mendekati 2, maka dapat disimpulkan bahwa data telah memenuhi asumsi kestasioneran terhadap ragam (homoskedastisitas). Oleh karena itu, transformasi Box-Cox tidak diperlukan sebelum dilakukan pemodelan lebih lanjut.
Data deret waktu yang digunakan untuk pemodelan ARIMA harus stasioner
terhadap rata-rata. Pengujian hipotesis stasioneritas terhadap rata-rata
dapat menggunakan statistik uji Dickey Fuller dengan hipotesis sebagai
berikut.
\(H_0\) : \(\phi=1\) (data tidak stasioner terhadap
rata-rata) vs
\(H_1\) : \(\phi<1\) (data stasioner terhadap
rata-rata)
Taraf nyata: \(\alpha=0,05\)
Daerah penolakan:
apabila nilai-p kurang dari 0,05 maka \(H_0\) ditolak yang artinya data stasioner
terhadap rata-rata
adf.test(saham.pra.intervensi)
##
## Augmented Dickey-Fuller Test
##
## data: saham.pra.intervensi
## Dickey-Fuller = -2.3316, Lag order = 6, p-value = 0.4366
## alternative hypothesis: stationary
Hasil uji Dickey Fuller pada data didapatkan nilai-p sebesar \(0,4366\) yang di mana lebih dari \(\alpha=0,05\) sehingga menghasilkan keputusan terima \(H_0\). Dengan demikian, dapat dinyatakan bahwa data IHSG pra intervensi belum stasioner terhadap rata-rata sehingga perlu dilakukan pembedaan.
# Differencing
saham.pra.intervensi1=diff(saham.pra.intervensi, difference=1)
saham.pra.intervensi1
## [1] -44.50 80.67 -9.14 -67.04 -83.38 27.10 -7.34 21.18 -17.14
## [10] 18.79 -42.16 52.34 -25.57 20.53 8.30 -28.41 -49.78 -40.95
## [19] 20.08 35.05 15.72 -6.24 37.09 -40.17 48.79 -12.26 62.52
## [28] -87.93 93.54 32.26 -38.84 55.90 -3.58 -9.38 -44.54 -11.28
## [37] 1.50 43.32 -12.53 -4.20 -35.16 -29.29 82.34 44.16 7.95
## [46] 39.30 12.10 -105.26 -25.60 34.30 -5.62 7.22 11.80 27.61
## [55] -12.10 -55.57 -21.28 -83.75 31.92 -70.14 87.56 32.48 -122.07
## [64] -33.97 35.97 -79.49 -13.50 36.99 63.72 -19.24 -119.21 119.70
## [73] 78.42 0.00 -116.78 17.30 1.17 -12.28 -34.82 10.47 -15.50
## [82] 96.07 66.87 70.54 -50.55 -80.65 36.34 -45.96 77.21 -113.40
## [91] -106.09 -63.40 65.45 63.12 -151.64 27.23 -76.95 23.60 -65.86
## [100] -5.59 -18.54 -96.73 -7.91 92.40 60.66 9.19 -6.47 22.94
## [109] 62.31 95.63 76.05 -14.49 71.61 24.14 32.48 -2.39 18.82
## [118] 17.24 13.37 27.17 -48.72 -54.57 -0.07 96.85 -26.57 27.48
## [127] -8.12 -51.10 -22.48 47.89 0.73 -47.04 13.90 70.22 -17.86
## [136] -248.47 69.56 82.92 -17.01 61.88 40.63 59.01 79.40 -26.54
## [145] 22.59 34.74 67.15 20.61 -65.91 55.62 61.89 -8.31 61.00
## [154] -31.28 43.13 23.80 -78.01 56.38 8.14 40.81 -19.11 58.65
## [163] -0.43 37.19 13.98 19.65 -2.65 76.26 -162.39 32.73 2.76
## [172] -37.59 3.62 -47.60 -168.99 114.20 -78.87 -19.43 -47.74 8.04
## [181] 53.01 -55.85 -21.21 40.52 39.05 67.30 21.99 86.10 25.02
## [190] 12.54 16.38 -1.42 -71.01 -21.89 -60.03 -28.03 -36.75 4.17
## [199] -68.76 -25.76 12.43 -108.06 -140.01 43.33 -20.73 55.53 -13.32
## [208] -94.11 -53.30 -26.98 61.43 -15.38 -39.42 54.65 118.55 -68.22
## [217] -45.73 -85.89 -67.28 149.03 130.74 -13.45 69.48 54.94 15.56
## [226] 11.46 -70.51 -69.45
adf.test(saham.pra.intervensi1)
## Warning in adf.test(saham.pra.intervensi1): p-value smaller than printed
## p-value
##
## Augmented Dickey-Fuller Test
##
## data: saham.pra.intervensi1
## Dickey-Fuller = -5.1425, Lag order = 6, p-value = 0.01
## alternative hypothesis: stationary
Hasil uji Dickey Fuller pada data hasil pembedaan satu kali didapatkan nilai-p sebesar \(0,01\) yang di mana kurang dari \(\alpha=0,05\) sehingga menghasilkan keputusan terima \(H_0\). Dengan demikian, dapat dinyatakan bahwa data IHSG pra intervensi telah stasioner terhadap rata-rata.
Identifikasi model ARIMA dapat menggunakan plot ACF dan PACF. Nilai ACF dan PACF bertujuan untuk memilih orde \(p\) dan \(q\) pada model ARIMA. Pemeriksaan ACF dan PACF dilakukan pada data yang telah stasioner.
acf(saham.pra.intervensi1)
pacf(saham.pra.intervensi1)
Berdasarkan plot tersebut, nilai ACF signifikan pada lag ke-19 sedangkan
nilai PACF signifikan pada lag ke-19. Berdasarkan informasi signifikansi
lag dan pola ACF dan PACF pada data IHSG pra intervensi, model
ARIMA(p,d,q) yang dapat dibentuk adalah ARIMA(0,0,19) dan
ARIMA(0,0,[19]).
arima.prainter.1 <- arima(saham.pra.intervensi, order = c(0,1,19), method = 'ML', include.mean = TRUE)
coeftest(arima.prainter.1)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ma1 -0.0360730 0.0667580 -0.5404 0.58895
## ma2 -0.0758220 0.0675553 -1.1224 0.26171
## ma3 -0.0046332 0.0670340 -0.0691 0.94490
## ma4 0.1074544 0.0688405 1.5609 0.11854
## ma5 0.0815686 0.0682967 1.1943 0.23235
## ma6 -0.0096793 0.0699612 -0.1384 0.88996
## ma7 -0.0472729 0.0697985 -0.6773 0.49823
## ma8 0.0970840 0.0691962 1.4030 0.16061
## ma9 0.0447176 0.0736633 0.6071 0.54382
## ma10 0.0377283 0.0687803 0.5485 0.58333
## ma11 0.0241818 0.0752266 0.3215 0.74787
## ma12 -0.1485417 0.0703859 -2.1104 0.03482 *
## ma13 -0.1157607 0.0793662 -1.4586 0.14468
## ma14 -0.0265676 0.0685105 -0.3878 0.69817
## ma15 0.0338110 0.0692274 0.4884 0.62526
## ma16 -0.0670508 0.0802329 -0.8357 0.40332
## ma17 -0.0232786 0.0707207 -0.3292 0.74203
## ma18 -0.0844486 0.0806169 -1.0475 0.29486
## ma19 -0.2012277 0.0895220 -2.2478 0.02459 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
arima.prainter.2 <- arima(saham.pra.intervensi, order = c(0,1,19), fixed = c(rep(0,18),NA), method = 'ML', include.mean = TRUE)
coeftest(arima.prainter.2)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ma19 -0.153811 0.069267 -2.2206 0.02638 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Berdasarkan hasil pendugaan parameter dari kedua model ARIMA tersebut, dapat diketahui bahwa seluruh parameter dari ARIMA(0,1,[19]) signifikan sedangkan pada model ARIMA(0,1,19) hanya dua parameter saja yang signifikan. Dengan demikian, model yang sesuai adalah ARIMA(0,1,[19]).
Langkah selanjutnya adalah melakukan pengujian asumsi sisaan yaitu
autokorelasi sisaan dan normalitas sisaan. Hipotesis untuk uji
autokorelasi sisaan
\(H_0\) :
\(\rho_1=\rho_2=...=\rho_k=0\) (tidak
terdapat autokorelasi pada sisaan) vs
\(H_1\) : minimal terdapat satu \(\rho_k \neq 0\) ( terdapat autokorelasi
pada sisaan)
Taraf nyata: 0,05
resid.arima.prainter <- residuals(arima.prainter.2)
Box.test(resid.arima.prainter, lag=2, type = c('Ljung-Box'))
##
## Box-Ljung test
##
## data: resid.arima.prainter
## X-squared = 1.931, df = 2, p-value = 0.3808
Berasarkan hasil uji autokorelasi sisaan model tentatif ARIMA(0,1,19)
dengan Ljung-Box dapat diperoleh informasi bahwa nilai-p yang didapatkan
\(>0,05\) sehingga \(H_0\) diterima. Dengan demikian, dapat
dinyatakan bahwa tidak terdapat autokorelasi sisaan sehingga dapat
dilakukan ke tahap selanjutnya yaitu uji normalitas sisaan. Uji
normalitas sisaan menggunakan uji Jarque Bera dengan hipotesis sebagai
berikut.
\(H_0\) : \(\epsilon_i\sim N(0, \sigma_e^{2})\) (sisaan
menyebar normal) vs
\(H_1\) :
\(\varepsilon\not\sim\ N(0,
\sigma_e^2)\) (sisaan tidak menyebar normal)
Taraf nyata:
0,05
jarque.bera.test(resid.arima.prainter)
##
## Jarque Bera Test
##
## data: resid.arima.prainter
## X-squared = 19.467, df = 2, p-value = 5.927e-05
Pada hasil uji normalitas sisaan dengan Jarque Bera, dapat diketahui bahwa nilai-p yang didapatkan dari sisaan kedua model tersebut kurang dari \(0,05\), sehingga menghasilkan keputusan tolak \(H_0\). Dengan demikian, dapat dinyatakan bahwa sisaan model tentatif ARIMA menyebar tidak normal. Akan tetapi, pada pemodelan deret waktu asumsi normalitas tidak wajib terpenuhi, sehingga model tetap layak digunakan.
Setelah mendapatkan model ARIMA terbaik pada data praintervensi, langkah selanjutnya adalah melakukan peramalan sepanjang sisa data yaitu data intervensi dan setelahnya. Peramalan dilakukan untuk 69 periode.
peramalan <- forecast(saham.pra.intervensi, model = arima.prainter.2, h=69)
peramalan$mean
## Time Series:
## Start = 230
## End = 298
## Frequency = 1
## [1] 7328.648 7319.239 7323.455 7330.632 7323.267 7305.952 7317.376 7324.460
## [9] 7339.273 7349.997 7326.987 7309.488 7314.711 7302.841 7294.636 7290.811
## [17] 7289.136 7302.094 7313.990 7313.990 7313.990 7313.990 7313.990 7313.990
## [25] 7313.990 7313.990 7313.990 7313.990 7313.990 7313.990 7313.990 7313.990
## [33] 7313.990 7313.990 7313.990 7313.990 7313.990 7313.990 7313.990 7313.990
## [41] 7313.990 7313.990 7313.990 7313.990 7313.990 7313.990 7313.990 7313.990
## [49] 7313.990 7313.990 7313.990 7313.990 7313.990 7313.990 7313.990 7313.990
## [57] 7313.990 7313.990 7313.990 7313.990 7313.990 7313.990 7313.990 7313.990
## [65] 7313.990 7313.990 7313.990 7313.990 7313.990
Tahapan setelah melakukan peramalan sepanjang sisa periode yang ada pada data penelitian, langkah selanjutnya adalah menghitung sisaan dari model peramalan dengan persamaan berikut. \[e_t = saham_t - \hat {saham_t}\]
sisaan.peramalan <- saham[230:298]-peramalan$mean
sisaan.peramalan
## Time Series:
## Start = 230
## End = 298
## Frequency = 1
## [1] -70.01842 -161.50947 -215.57520 -353.39181 -339.39703 -209.51243
## [7] -251.62648 -287.88969 -259.37341 -186.78730 -162.55687 -229.01817
## [13] -231.43103 -222.49087 -230.04587 -201.94106 -272.25630 -345.42372
## [19] -234.43020 -206.47020 -159.33020 -143.25020 -132.17020 -56.86020
## [25] -81.35020 -147.93020 -240.51020 -204.79020 -283.93020 -240.53020
## [31] -289.76020 -438.45020 -571.41020 -665.85020 -782.00020 -668.21020
## [37] -700.42020 -675.53020 -483.11020 -440.44020 -519.12020 -525.95020
## [43] -510.99020 -564.39020 -726.90020 -707.81020 -828.54020 -1043.39020
## [49] -794.33020 -933.59020 -782.59020 -696.14020 -677.99020 -715.78020
## [55] -768.14020 -648.95020 -666.57020 -798.36020 -842.04020 -1090.60020
## [61] -1002.33020 -932.32020 -1055.81020 -1152.77020 -1078.37020 -841.63020
## [67] -803.37020 -1317.85020 -1341.43020
Identifikasi model intervensi digunakan untuk melihat seberapa panjang periode yang terkena dampak intervensi dan menentukan fungsi intervensi yang digunakan. Identifikasi model intervensi juga dapat digunakan untuk menentukan orde b, r, dan s pada model intervensi. Cara untuk mengidentifikasi model intervensi adalah dengan melihat respon sisaan pada periode ke-t yang keluar dari batas signifikansi melalui plot. Batas signifikansi didapatkan melalui \(±3(Standar Deviasi Sisaan)\). Standar deviasi sisaan yang dimaksud adalah sisaan yang didapatkan dari model ARIMA yang terbentuk pada data pra intervensi.
## Identifikasi orde intervensi
error_idintv <- rep(0,298)
error_idintv[1:229] <- resid.arima2
## Warning in error_idintv[1:229] <- resid.arima2: number of items to replace is
## not a multiple of replacement length
error_idintv[230:298] <- sisaan.peramalan
plot(error_idintv, type="h", xlab="Waktu (T)", ylab = "Residual", xaxt = "n")
abline(h=c(-3*sd(resid.arima.prainter), 3*sd(resid.arima.prainter)), col="blue", lty=2)
abline(v = 230, col = "red", lty = 3, lwd = 1.5)
Sisaan pada periode ke-230 yaitu sisaan dari data IHSG pada bulan Desember 2024 keluar dari batas signifikansi. Akan tetapi, sisaan setelah periode ke-230 respon sisaan mengalami penurunan dan semakin signifikan. Hal tersebut memiliki arti bahwa dampak terjadinya intervensi terjadi secara kontinyu dan mempengaruhi periode berikutnya. Berdasarkan pola plot sisaan di setiap waktu, dapat menetapkan fungsi intervensi yang digunakan dan orde b, r, dan s. Fungsi yang dapat digunakan pada kasus tersebut adalah fungsi pulse. Fungsi pulse adalah fungsi yang digunakan pada model intervensi yang dampak dari intervensi tersebut hanya terjadi di satu titik waktu dan pada kasus tersebut hanya terjadi pada bulan Desember 2024. Selain menetapkan fungsi intervensi, dapat diketahui orde b, s, dan r. Orde yang ditetapkan untuk kasus data IHSG adalah b=0,s=0,r=1.
## Pemodelan Arima Intervensi
intervensi <- c(rep(0,229), 1, rep(0,68))
model.intervensi <- arimax(saham, order = c(0, 1, 19),xtransf = intervensi,transfer = list(c(1,0)), method = 'ML')
model.intervensi
##
## Call:
## arimax(x = saham, order = c(0, 1, 19), method = "ML", xtransf = intervensi,
## transfer = list(c(1, 0)))
##
## Coefficients:
## ma1 ma2 ma3 ma4 ma5 ma6 ma7 ma8
## -0.0145 -0.1155 0.0290 0.1220 0.0772 -0.1047 -0.1447 0.0670
## s.e. 0.0582 0.0600 0.0607 0.0611 0.0645 0.0693 0.0656 0.0678
## ma9 ma10 ma11 ma12 ma13 ma14 ma15 ma16 ma17
## 0.0294 0.0931 -0.0914 -0.1310 0.1289 0.0808 0.0713 0.0016 -0.0646
## s.e. 0.0721 0.0778 0.0812 0.0675 0.0815 0.0714 0.0704 0.0842 0.0835
## ma18 ma19 T1-AR1 T1-MA0
## 0.0070 -0.1704 0.0150 2.4671
## s.e. 0.0684 0.0908 0.0242 50.2688
##
## sigma^2 estimated as 4966: log likelihood = -1686.19, aic = 3414.38
coeftest(model.intervensi)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ma1 -0.0144567 0.0581613 -0.2486 0.80370
## ma2 -0.1155123 0.0600493 -1.9236 0.05440 .
## ma3 0.0289707 0.0607081 0.4772 0.63321
## ma4 0.1219532 0.0611175 1.9954 0.04600 *
## ma5 0.0772347 0.0645089 1.1973 0.23120
## ma6 -0.1046547 0.0693021 -1.5101 0.13101
## ma7 -0.1447477 0.0655853 -2.2070 0.02731 *
## ma8 0.0670367 0.0677951 0.9888 0.32275
## ma9 0.0294337 0.0720673 0.4084 0.68297
## ma10 0.0931236 0.0777587 1.1976 0.23107
## ma11 -0.0914310 0.0812458 -1.1254 0.26044
## ma12 -0.1309735 0.0674837 -1.9408 0.05228 .
## ma13 0.1288543 0.0815001 1.5810 0.11387
## ma14 0.0807958 0.0713865 1.1318 0.25772
## ma15 0.0712651 0.0703995 1.0123 0.31140
## ma16 0.0015792 0.0841824 0.0188 0.98503
## ma17 -0.0646306 0.0835454 -0.7736 0.43917
## ma18 0.0069817 0.0684044 0.1021 0.91870
## ma19 -0.1704143 0.0908276 -1.8762 0.06062 .
## T1-AR1 0.0149768 0.0241993 0.6189 0.53599
## T1-MA0 2.4671078 50.2687738 0.0491 0.96086
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Berdasarkan hasil pendugaan parameter dan uji signifikansi model
ARIMA intervensi dapat diperoleh informasi bahwa hanya terdapat beberapa
parameter yang signifikan, sehingga masih dapat dilakukan pemodelan.
### Pengujian Asumsi Sisaan Sama dengan model ARIMA, model
intervensi juga perlu melakukan uji asumsi sisaan yaitu autokorelasi
sisaan dan normalitas sisaan.
## UJi asumsi
resid.intervensi <- residuals(model.intervensi)
jarque.bera.test(resid.intervensi)
##
## Jarque Bera Test
##
## data: resid.intervensi
## X-squared = 102.53, df = 2, p-value < 2.2e-16
Box.test(resid.intervensi, lag = 4, type = "Ljung-Box")
##
## Box-Ljung test
##
## data: resid.intervensi
## X-squared = 0.085963, df = 4, p-value = 0.9991
Berdasarkan hasil uji autokorelasi dan normalitas sisaan dapat diperoleh informasi bahwa sisaan model intervensi tidak terdapat autokorelasi namun tidak menyebar normal.
Model ARIMA Intervensi yang telah memenuhi asumsi autokorelasi, dapat dilakukan evaluasi model dengan perbandingan secara grafis.
prediksi.arima.inter <- saham-resid.intervensi
plot(tanggal, saham, type = "l", col = "blue", lwd = 2)
lines(tanggal, prediksi.arima.inter, type = "o", col = "red", lwd = 2)
legend("topright", legend = c("IHSG Aktual", "IHSG Hasil Prediksi ARIMA(0,1,19)"), col = c("blue", "red"), lty = 1)
Berdasarkan evaluasi secara grafis, dapat diketahui bahwa prediksi data dengan model ARIMA Intervensi cukup mampu mengikuti pola fluktuasi pada seluruh periode.