library(tseries)
## Warning: package 'tseries' was built under R version 4.3.3
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library(FSA)
## ## FSA v0.10.1. See citation('FSA') if used in publication.
## ## Run fishR() for related website and fishR('IFAR') for related book.
library(FinTS)
## Warning: package 'FinTS' was built under R version 4.3.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.3.3
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(TSA)
## Warning: package 'TSA' was built under R version 4.3.3
##
## Attaching package: 'TSA'
## The following objects are masked from 'package:stats':
##
## acf, arima
## The following object is masked from 'package:utils':
##
## tar
library(lmtest)
## Warning: package 'lmtest' was built under R version 4.3.3
library(forecast)
## Warning: package 'forecast' was built under R version 4.3.3
## 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)
## Warning: package 'MLmetrics' was built under R version 4.3.3
##
## Attaching package: 'MLmetrics'
## The following object is masked from 'package:base':
##
## Recall
library(xts)
## Warning: package 'xts' was built under R version 4.3.3
library(readxl)
## Warning: package 'readxl' was built under R version 4.3.3
library(MASS)
library(tsoutliers)
## Warning: package 'tsoutliers' was built under R version 4.3.3
Data yang digunakan berupa harga penutupan harian IHSG periode 12 Desember 2023 hingga 9 April 2025 yang menunjukkan fluktuasi tinggi dengan tren meningkat hingga mencapai puncak pada September 2024 kemudian mengalami penurunan tajam, yang dipengaruhi oleh berbagai faktor ekonomi, sentimen pasar, dan kebijakan pemerintah seperti pengesahan RUU TNI pada 20 Maret 2025, sehingga adanya perubahan ekstrem dan indikasi pencilan menyebabkan model ARIMA standar kurang optimal dan diperlukan pendekatan ARIMA Outlier serta intervensi untuk menghasilkan peramalan yang lebih akurat.
data <- read_excel("Salsabila Diva Pusvitasari - ihsg 2.xlsx")
data
## # A tibble: 311 × 2
## Tanggal `Harga Saham Penutup`
## <dttm> <dbl>
## 1 2023-12-12 00:00:00 7125.
## 2 2023-12-13 00:00:00 7075.
## 3 2023-12-14 00:00:00 7176.
## 4 2023-12-15 00:00:00 7191.
## 5 2023-12-18 00:00:00 7120.
## 6 2023-12-19 00:00:00 7188.
## 7 2023-12-20 00:00:00 7220.
## 8 2023-12-21 00:00:00 7210.
## 9 2023-12-22 00:00:00 7238.
## 10 2023-12-26 00:00:00 7238.
## # ℹ 301 more rows
Sebelum melakukan analisis deret waktu, tahap awal yang dilakukan adalah eksplorasi data untuk mengetahuipola yang terdapat pada data tersebut.
Harga <- as.numeric(data$`Harga Saham Penutup`)
Tanggal <- as.Date(data$Tanggal)
IHSG <- data.frame(Tanggal, Harga)
IHSG
## Tanggal Harga
## 1 2023-12-12 7125.31
## 2 2023-12-13 7075.34
## 3 2023-12-14 7176.02
## 4 2023-12-15 7190.99
## 5 2023-12-18 7119.52
## 6 2023-12-19 7187.85
## 7 2023-12-20 7219.67
## 8 2023-12-21 7209.62
## 9 2023-12-22 7237.52
## 10 2023-12-26 7237.52
## 11 2023-12-27 7245.92
## 12 2023-12-28 7303.89
## 13 2023-12-29 7272.80
## 14 2024-01-02 7323.59
## 15 2024-01-03 7279.09
## 16 2024-01-04 7359.76
## 17 2024-01-05 7350.62
## 18 2024-01-08 7283.58
## 19 2024-01-09 7200.20
## 20 2024-01-10 7227.30
## 21 2024-01-11 7219.96
## 22 2024-01-12 7241.14
## 23 2024-01-15 7224.00
## 24 2024-01-16 7242.79
## 25 2024-01-17 7200.63
## 26 2024-01-18 7252.97
## 27 2024-01-19 7227.40
## 28 2024-01-22 7247.93
## 29 2024-01-23 7256.23
## 30 2024-01-24 7227.82
## 31 2024-01-25 7178.04
## 32 2024-01-26 7137.09
## 33 2024-01-29 7157.17
## 34 2024-01-30 7192.22
## 35 2024-01-31 7207.94
## 36 2024-02-01 7201.70
## 37 2024-02-02 7238.79
## 38 2024-02-05 7198.62
## 39 2024-02-06 7247.41
## 40 2024-02-07 7235.15
## 41 2024-02-12 7297.67
## 42 2024-02-13 7209.74
## 43 2024-02-15 7303.28
## 44 2024-02-16 7335.54
## 45 2024-02-19 7296.70
## 46 2024-02-20 7352.60
## 47 2024-02-21 7349.02
## 48 2024-02-22 7339.64
## 49 2024-02-23 7295.10
## 50 2024-02-26 7283.82
## 51 2024-02-27 7285.32
## 52 2024-02-28 7328.64
## 53 2024-02-29 7316.11
## 54 2024-03-01 7311.91
## 55 2024-03-04 7276.75
## 56 2024-03-05 7247.46
## 57 2024-03-06 7329.80
## 58 2024-03-07 7373.96
## 59 2024-03-08 7381.91
## 60 2024-03-13 7421.21
## 61 2024-03-14 7433.31
## 62 2024-03-15 7328.05
## 63 2024-03-18 7302.45
## 64 2024-03-19 7336.75
## 65 2024-03-20 7331.13
## 66 2024-03-21 7338.35
## 67 2024-03-22 7350.15
## 68 2024-03-25 7377.76
## 69 2024-03-26 7365.66
## 70 2024-03-27 7310.09
## 71 2024-03-28 7288.81
## 72 2024-04-01 7205.06
## 73 2024-04-02 7236.98
## 74 2024-04-03 7166.84
## 75 2024-04-04 7254.40
## 76 2024-04-05 7286.88
## 77 2024-04-16 7164.81
## 78 2024-04-17 7130.84
## 79 2024-04-18 7166.81
## 80 2024-04-19 7087.32
## 81 2024-04-22 7073.82
## 82 2024-04-23 7110.81
## 83 2024-04-24 7174.53
## 84 2024-04-25 7155.29
## 85 2024-04-26 7036.08
## 86 2024-04-29 7155.78
## 87 2024-04-30 7234.20
## 88 2024-05-01 7234.20
## 89 2024-05-02 7117.42
## 90 2024-05-03 7134.72
## 91 2024-05-06 7135.89
## 92 2024-05-07 7123.61
## 93 2024-05-08 7088.79
## 94 2024-05-13 7099.26
## 95 2024-05-14 7083.76
## 96 2024-05-15 7179.83
## 97 2024-05-16 7246.70
## 98 2024-05-17 7317.24
## 99 2024-05-20 7266.69
## 100 2024-05-21 7186.04
## 101 2024-05-22 7222.38
## 102 2024-05-27 7176.42
## 103 2024-05-28 7253.63
## 104 2024-05-29 7140.23
## 105 2024-05-30 7034.14
## 106 2024-05-31 6970.74
## 107 2024-06-03 7036.19
## 108 2024-06-04 7099.31
## 109 2024-06-05 6947.67
## 110 2024-06-06 6974.90
## 111 2024-06-07 6897.95
## 112 2024-06-10 6921.55
## 113 2024-06-11 6855.69
## 114 2024-06-12 6850.10
## 115 2024-06-13 6831.56
## 116 2024-06-14 6734.83
## 117 2024-06-19 6726.92
## 118 2024-06-20 6819.32
## 119 2024-06-21 6879.98
## 120 2024-06-24 6889.17
## 121 2024-06-25 6882.70
## 122 2024-06-26 6905.64
## 123 2024-06-27 6967.95
## 124 2024-06-28 7063.58
## 125 2024-07-01 7139.63
## 126 2024-07-02 7125.14
## 127 2024-07-03 7196.75
## 128 2024-07-04 7220.89
## 129 2024-07-05 7253.37
## 130 2024-07-08 7250.98
## 131 2024-07-09 7269.80
## 132 2024-07-10 7287.04
## 133 2024-07-11 7300.41
## 134 2024-07-12 7327.58
## 135 2024-07-15 7278.86
## 136 2024-07-16 7224.29
## 137 2024-07-17 7224.22
## 138 2024-07-18 7321.07
## 139 2024-07-19 7294.50
## 140 2024-07-22 7321.98
## 141 2024-07-23 7313.86
## 142 2024-07-24 7262.76
## 143 2024-07-25 7240.28
## 144 2024-07-26 7288.17
## 145 2024-07-29 7288.90
## 146 2024-07-30 7241.86
## 147 2024-07-31 7255.76
## 148 2024-08-01 7325.98
## 149 2024-08-02 7308.12
## 150 2024-08-05 7059.65
## 151 2024-08-06 7129.21
## 152 2024-08-07 7212.13
## 153 2024-08-08 7195.12
## 154 2024-08-09 7257.00
## 155 2024-08-12 7297.63
## 156 2024-08-13 7356.64
## 157 2024-08-14 7436.04
## 158 2024-08-15 7409.50
## 159 2024-08-16 7432.09
## 160 2024-08-19 7466.83
## 161 2024-08-20 7533.98
## 162 2024-08-21 7554.59
## 163 2024-08-22 7488.68
## 164 2024-08-23 7544.30
## 165 2024-08-26 7606.19
## 166 2024-08-27 7597.88
## 167 2024-08-28 7658.88
## 168 2024-08-29 7627.60
## 169 2024-08-30 7670.73
## 170 2024-09-02 7694.53
## 171 2024-09-03 7616.52
## 172 2024-09-04 7672.90
## 173 2024-09-05 7681.04
## 174 2024-09-06 7721.85
## 175 2024-09-09 7702.74
## 176 2024-09-10 7761.39
## 177 2024-09-11 7760.96
## 178 2024-09-12 7798.15
## 179 2024-09-13 7812.13
## 180 2024-09-17 7831.78
## 181 2024-09-18 7829.13
## 182 2024-09-19 7905.39
## 183 2024-09-20 7743.00
## 184 2024-09-23 7775.73
## 185 2024-09-24 7778.49
## 186 2024-09-25 7740.90
## 187 2024-09-26 7744.52
## 188 2024-09-27 7696.92
## 189 2024-09-30 7527.93
## 190 2024-10-01 7642.13
## 191 2024-10-02 7563.26
## 192 2024-10-03 7543.83
## 193 2024-10-04 7496.09
## 194 2024-10-07 7504.13
## 195 2024-10-08 7557.14
## 196 2024-10-09 7501.29
## 197 2024-10-10 7480.08
## 198 2024-10-11 7520.60
## 199 2024-10-14 7559.65
## 200 2024-10-15 7626.95
## 201 2024-10-16 7648.94
## 202 2024-10-17 7735.04
## 203 2024-10-18 7760.06
## 204 2024-10-21 7772.60
## 205 2024-10-22 7788.98
## 206 2024-10-23 7787.56
## 207 2024-10-24 7716.55
## 208 2024-10-25 7694.66
## 209 2024-10-28 7634.63
## 210 2024-10-29 7606.60
## 211 2024-10-30 7569.85
## 212 2024-10-31 7574.02
## 213 2024-11-01 7505.26
## 214 2024-11-04 7479.50
## 215 2024-11-05 7491.93
## 216 2024-11-06 7383.87
## 217 2024-11-07 7243.86
## 218 2024-11-08 7287.19
## 219 2024-11-11 7266.46
## 220 2024-11-12 7321.99
## 221 2024-11-13 7308.67
## 222 2024-11-14 7214.56
## 223 2024-11-15 7161.26
## 224 2024-11-18 7134.28
## 225 2024-11-19 7195.71
## 226 2024-11-20 7180.33
## 227 2024-11-21 7140.91
## 228 2024-11-22 7195.56
## 229 2024-11-25 7314.11
## 230 2024-11-26 7245.89
## 231 2024-11-28 7200.16
## 232 2024-11-29 7114.27
## 233 2024-12-02 7046.99
## 234 2024-12-03 7196.02
## 235 2024-12-04 7326.76
## 236 2024-12-05 7313.31
## 237 2024-12-06 7382.79
## 238 2024-12-09 7437.73
## 239 2024-12-10 7453.29
## 240 2024-12-11 7464.75
## 241 2024-12-12 7394.24
## 242 2024-12-13 7324.79
## 243 2024-12-16 7258.63
## 244 2024-12-17 7157.73
## 245 2024-12-18 7107.88
## 246 2024-12-19 6977.24
## 247 2024-12-20 6983.87
## 248 2024-12-23 7096.44
## 249 2024-12-24 7065.75
## 250 2024-12-27 7036.57
## 251 2024-12-30 7079.90
## 252 2025-01-02 7163.21
## 253 2025-01-03 7164.43
## 254 2025-01-06 7080.47
## 255 2025-01-07 7083.28
## 256 2025-01-08 7080.35
## 257 2025-01-09 7064.59
## 258 2025-01-10 7088.87
## 259 2025-01-13 7016.88
## 260 2025-01-14 6956.67
## 261 2025-01-15 7079.56
## 262 2025-01-16 7107.52
## 263 2025-01-17 7154.66
## 264 2025-01-20 7170.74
## 265 2025-01-21 7181.82
## 266 2025-01-22 7257.13
## 267 2025-01-23 7232.64
## 268 2025-01-24 7166.06
## 269 2025-01-30 7073.48
## 270 2025-01-31 7109.20
## 271 2025-02-03 7030.06
## 272 2025-02-04 7073.46
## 273 2025-02-05 7024.23
## 274 2025-02-06 6875.54
## 275 2025-02-07 6742.58
## 276 2025-02-10 6648.14
## 277 2025-02-11 6531.99
## 278 2025-02-12 6645.78
## 279 2025-02-13 6613.57
## 280 2025-02-14 6638.46
## 281 2025-02-17 6830.88
## 282 2025-02-18 6873.55
## 283 2025-02-19 6794.87
## 284 2025-02-20 6788.04
## 285 2025-02-21 6803.00
## 286 2025-02-24 6749.60
## 287 2025-02-25 6587.09
## 288 2025-02-26 6606.18
## 289 2025-02-27 6485.45
## 290 2025-02-28 6270.60
## 291 2025-03-03 6519.66
## 292 2025-03-04 6380.40
## 293 2025-03-05 6531.40
## 294 2025-03-06 6617.85
## 295 2025-03-07 6636.00
## 296 2025-03-10 6598.21
## 297 2025-03-11 6545.85
## 298 2025-03-12 6665.04
## 299 2025-03-13 6647.42
## 300 2025-03-14 6515.63
## 301 2025-03-17 6471.95
## 302 2025-03-18 6223.39
## 303 2025-03-19 6311.66
## 304 2025-03-20 6381.67
## 305 2025-03-21 6258.18
## 306 2025-03-24 6161.22
## 307 2025-03-25 6235.62
## 308 2025-03-26 6472.36
## 309 2025-03-27 6510.62
## 310 2025-04-08 5996.14
## 311 2025-04-09 5967.99
plot(Tanggal, Harga,
main = "Indeks Harga Saham Gabungan (12 Des 2023 - 9 Apr 2025)",
type = "l", col = "blue", lwd = 2, xaxt = "n",
xlab = "Tanggal", ylab = "Harga Penutupan")
axis.Date(1,
at = seq(min(Tanggal), max(Tanggal), by = "1 month"),
format = "%d-%b-%Y")
abline(v = as.Date("2025-03-20"), col = "red", lty = 3, lwd = 1.5)
::: {style=“text-align: justify;”} Berdasarkan plot deret waktu IHSG
periode 12 Desember 2023 hingga 9 April 2025, terlihat bahwa data
mengalami fluktuasi yang cukup tinggi tanpa pola musiman yang jelas.
Pada pertengahan tahun 2024, IHSG menunjukkan kecenderungan meningkat
dan mencapai puncak sekitar Agustus–Oktober 2024. Namun, setelah periode
tersebut, IHSG mulai mengalami penurunan secara bertahap. Penurunan yang
lebih signifikan terlihat pada awal tahun 2025, terutama setelah tanggal
20 Maret 2025 yang ditandai sebagai peristiwa intervensi (pengesahan RUU
TNI), di mana IHSG mengalami penurunan yang cukup tajam. Hal ini
menunjukkan adanya pengaruh kejadian eksternal terhadap pergerakan IHSG.
Selain itu, variansi data yang tidak konstan mengindikasikan bahwa data
belum stasioner, sehingga diperlukan transformasi dan pemodelan deret
waktu yang sesuai. :::
ihsg.ujiragam <- min(IHSG$Harga) + 1
BoxCox.lambda(ihsg.ujiragam)
## [1] 1
Nilai λ = 1 yang menunjukkan bahwa data telah stasioner terhadap ragam.
adf.test(Harga, k=1)
##
## Augmented Dickey-Fuller Test
##
## data: Harga
## Dickey-Fuller = -0.85579, Lag order = 1, p-value = 0.9559
## alternative hypothesis: stationary
p-value sebesar 0,9559 > α (0,05) sehingga menghasilkan keputusan terima H0, yang berarti data belum stasioner terhadap rata-rata. Oleh karena itu, diperlukan proses differencing untuk membuat data menjadi stasioner.
diff.IHSG <- diff(Harga)
diff.IHSG
## [1] -49.97 100.68 14.97 -71.47 68.33 31.82 -10.05 27.90 0.00
## [10] 8.40 57.97 -31.09 50.79 -44.50 80.67 -9.14 -67.04 -83.38
## [19] 27.10 -7.34 21.18 -17.14 18.79 -42.16 52.34 -25.57 20.53
## [28] 8.30 -28.41 -49.78 -40.95 20.08 35.05 15.72 -6.24 37.09
## [37] -40.17 48.79 -12.26 62.52 -87.93 93.54 32.26 -38.84 55.90
## [46] -3.58 -9.38 -44.54 -11.28 1.50 43.32 -12.53 -4.20 -35.16
## [55] -29.29 82.34 44.16 7.95 39.30 12.10 -105.26 -25.60 34.30
## [64] -5.62 7.22 11.80 27.61 -12.10 -55.57 -21.28 -83.75 31.92
## [73] -70.14 87.56 32.48 -122.07 -33.97 35.97 -79.49 -13.50 36.99
## [82] 63.72 -19.24 -119.21 119.70 78.42 0.00 -116.78 17.30 1.17
## [91] -12.28 -34.82 10.47 -15.50 96.07 66.87 70.54 -50.55 -80.65
## [100] 36.34 -45.96 77.21 -113.40 -106.09 -63.40 65.45 63.12 -151.64
## [109] 27.23 -76.95 23.60 -65.86 -5.59 -18.54 -96.73 -7.91 92.40
## [118] 60.66 9.19 -6.47 22.94 62.31 95.63 76.05 -14.49 71.61
## [127] 24.14 32.48 -2.39 18.82 17.24 13.37 27.17 -48.72 -54.57
## [136] -0.07 96.85 -26.57 27.48 -8.12 -51.10 -22.48 47.89 0.73
## [145] -47.04 13.90 70.22 -17.86 -248.47 69.56 82.92 -17.01 61.88
## [154] 40.63 59.01 79.40 -26.54 22.59 34.74 67.15 20.61 -65.91
## [163] 55.62 61.89 -8.31 61.00 -31.28 43.13 23.80 -78.01 56.38
## [172] 8.14 40.81 -19.11 58.65 -0.43 37.19 13.98 19.65 -2.65
## [181] 76.26 -162.39 32.73 2.76 -37.59 3.62 -47.60 -168.99 114.20
## [190] -78.87 -19.43 -47.74 8.04 53.01 -55.85 -21.21 40.52 39.05
## [199] 67.30 21.99 86.10 25.02 12.54 16.38 -1.42 -71.01 -21.89
## [208] -60.03 -28.03 -36.75 4.17 -68.76 -25.76 12.43 -108.06 -140.01
## [217] 43.33 -20.73 55.53 -13.32 -94.11 -53.30 -26.98 61.43 -15.38
## [226] -39.42 54.65 118.55 -68.22 -45.73 -85.89 -67.28 149.03 130.74
## [235] -13.45 69.48 54.94 15.56 11.46 -70.51 -69.45 -66.16 -100.90
## [244] -49.85 -130.64 6.63 112.57 -30.69 -29.18 43.33 83.31 1.22
## [253] -83.96 2.81 -2.93 -15.76 24.28 -71.99 -60.21 122.89 27.96
## [262] 47.14 16.08 11.08 75.31 -24.49 -66.58 -92.58 35.72 -79.14
## [271] 43.40 -49.23 -148.69 -132.96 -94.44 -116.15 113.79 -32.21 24.89
## [280] 192.42 42.67 -78.68 -6.83 14.96 -53.40 -162.51 19.09 -120.73
## [289] -214.85 249.06 -139.26 151.00 86.45 18.15 -37.79 -52.36 119.19
## [298] -17.62 -131.79 -43.68 -248.56 88.27 70.01 -123.49 -96.96 74.40
## [307] 236.74 38.26 -514.48 -28.15
adf.test(diff.IHSG)
## Warning in adf.test(diff.IHSG): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: diff.IHSG
## Dickey-Fuller = -7.703, Lag order = 6, p-value = 0.01
## alternative hypothesis: stationary
p-value sebesar 0,01 < α (0,05) sehingga menghasilkan keputusan tolak H0, yang berarti data telah stasioner terhadap rata-rata setelah dilakukan differencing. Oleh karena itu,, data sudah memenuhi asumsi stasioneritas dan dapat digunakan untuk pemodelan ARIMA.
Identifikasi model ARIMA dilakukan dengan menggunakan plot ACF dan PACF, di mana kedua plot tersebut digunakan untuk menentukan orde p dan q pada model. Analisis ACF dan PACF dilakukan setelah data telah memenuhi kondisi stasioner.
acf(diff.IHSG)
pacf(diff.IHSG)
::: {style=“text-align: justify;”} Berdasarkan plot ACF dan PACF pada
data IHSG setelah differencing, terlihat beberapa lag yang signifikan
pada kedua plot. Namun, tidak terdapat pola cut-off yang jelas baik pada
ACF maupun PACF, sehingga tidak menunjukkan dominasi komponen AR atau MA
tertentu. Oleh karena itu, model yang dapat dipertimbangkan adalah ARIMA
dengan orde rendah seperti ARIMA(0,1,0), ARIMA(1,1,0), dan ARIMA(0,1,1),
serta alternatif model ARIMA restricted dengan memasukkan lag-lag
signifikan yang teridentifikasi. :::
fixed1 <- rep(0, 19)
fixed1[2] <- NA
fixed1[10] <- NA
fixed1[19] <- NA
arima.1 <- arima(diff.IHSG, order = c(19,0,0), fixed = fixed1, method = "ML", include.mean = FALSE)
## 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.123401 0.059480 -2.0747 0.038017 *
## ar10 0.170636 0.062387 2.7351 0.006236 **
## ar19 -0.191447 0.063179 -3.0302 0.002444 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
fixed2 <- rep(0, 19)
fixed2[2] <- NA
fixed2[7] <- NA
fixed2[10] <- NA
fixed2[19] <- NA
arima.2 <- arima(diff.IHSG, order = c(0,0,19), fixed = fixed2, method = "ML", include.mean = FALSE)
coeftest(arima.2)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ma2 -0.096868 0.054647 -1.7726 0.076293 .
## ma7 -0.127668 0.055612 -2.2957 0.021694 *
## ma10 0.120976 0.058198 2.0787 0.037645 *
## ma19 -0.177817 0.060364 -2.9457 0.003222 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Berdasarkan hasil pendugaan parameter pada kedua model ARIMA, diketahui bahwa seluruh parameter pada model ARIMA([2,10,19],1,0) bersifat signifikan sehingga model ini mampu merepresentasikan hubungan dalam data dengan baik. Sementara itu, intersep tidak disertakan dalam kedua model karena setelah dilakukan differencing, rata-rata data deret waktu mendekati nol sehingga keberadaan intersep tidak memberikan kontribusi yang berarti dan hanya menambah kompleksitas model.
Tahap berikutnya adalah melakukan pengujian asumsi terhadap sisaan, yaitu uji autokorelasi dan normalitas sisaan. Hipotesis pada uji autokorelasi sisaan adalah H0: ρ1 = ρ2 = … = ρk = 0 yang menyatakan tidak adanya autokorelasi, sedangkan H1: terdapat setidaknya satu ρk ≠ 0 yang menunjukkan adanya autokorelasi, dengan taraf signifikansi sebesar 0,05
resid.arima1 <- residuals(arima.1)
Box.test(resid.arima1, lag=20, type = c('Ljung-Box'))
##
## Box-Ljung test
##
## data: resid.arima1
## X-squared = 18.925, df = 20, p-value = 0.5267
resid.arima2 <- residuals(arima.2)
Box.test(resid.arima2, lag = 20, type = c('Ljung-Box'))
##
## Box-Ljung test
##
## data: resid.arima2
## X-squared = 14.538, df = 20, p-value = 0.8022
Berdasarkan uji Ljung-Box diperoleh p-value > 0,05 sehingga terima H0, yang berarti tidak terdapat autokorelasi pada residual dan residual bersifat acak (white noise). Hal ini menunjukkan bahwa model telah memenuhi asumsi independensi residual.
jarque.bera.test(resid.arima1)
##
## Jarque Bera Test
##
## data: resid.arima1
## X-squared = 220.25, df = 2, p-value < 2.2e-16
jarque.bera.test(resid.arima2)
##
## Jarque Bera Test
##
## data: resid.arima2
## X-squared = 344.21, df = 2, p-value < 2.2e-16
Berdasarkan uji Jarque-Bera diperoleh p-value sebesar 2.2e-16 < 0,05, sehingga tolak H0, yang berarti residual tidak berdistribusi normal. Akan tetapi, pada pemodelan deret waktu tidak wajib memenuhi asumsi normalitas, sehingga model tetap layak digunakan. Tidak perlu dilakukan pemilihan model terbaik dengan AIC karena hanya terdapat 1 model dengan semua parameter yang signifikan dan memenuhi semua asumsi.
prediksi.arima <- diff.IHSG-resid.arima1
outlier <- tso(prediksi.arima, types = c('AO','IO','IS','TC'))
print(outlier)
## Series: prediksi.arima
## Regression with ARIMA(0,1,1) errors
##
## Coefficients:
## ma1 TC252 AO299 AO309
## -0.9787 -53.4884 -94.6409 -106.2463
## s.e. 0.0128 12.9592 17.7202 17.8139
##
## sigma^2 = 314.2: log likelihood = -1326.41
## AIC=2662.82 AICc=2663.02 BIC=2681.49
##
## Outliers:
## type ind time coefhat tstat
## 1 TC 252 252 -53.49 -4.127
## 2 AO 299 299 -94.64 -5.341
## 3 AO 309 309 -106.25 -5.964
Berdasarkan hasil deteksi outlier, terdapat tiga titik outlier yang signifikan pada data, yaitu pada observasi ke-252 dengan tipe Temporary Change (TC), serta pada observasi ke-299 dan ke-309 dengan tipe Additive Outlier (AO). Nilai koefisien pada ketiga outlier tersebut bernilai negatif dan signifikan (|t-stat| > 1,96), yang menunjukkan adanya penurunan tajam pada nilai IHSG di waktu tersebut. Plot efek outlier menunjukkan adanya penyimpangan yang jelas dari nol pada ketiga titik tersebut, sedangkan pada periode lainnya nilai efek relatif mendekati nol, sehingga dapat disimpulkan bahwa outlier hanya terjadi pada waktu-waktu tertentu dan tidak mempengaruhi keseluruhan pola data secara berkelanjutan.
plot(outlier$effects)
xreg.outlier <- matrix(outlier$effects)
xreg.outlier
## [,1]
## [1,] 0.000000e+00
## [2,] 0.000000e+00
## [3,] 0.000000e+00
## [4,] 0.000000e+00
## [5,] 0.000000e+00
## [6,] 0.000000e+00
## [7,] 0.000000e+00
## [8,] 0.000000e+00
## [9,] 0.000000e+00
## [10,] 0.000000e+00
## [11,] 0.000000e+00
## [12,] 0.000000e+00
## [13,] 0.000000e+00
## [14,] 0.000000e+00
## [15,] 0.000000e+00
## [16,] 0.000000e+00
## [17,] 0.000000e+00
## [18,] 0.000000e+00
## [19,] 0.000000e+00
## [20,] 0.000000e+00
## [21,] 0.000000e+00
## [22,] 0.000000e+00
## [23,] 0.000000e+00
## [24,] 0.000000e+00
## [25,] 0.000000e+00
## [26,] 0.000000e+00
## [27,] 0.000000e+00
## [28,] 0.000000e+00
## [29,] 0.000000e+00
## [30,] 0.000000e+00
## [31,] 0.000000e+00
## [32,] 0.000000e+00
## [33,] 0.000000e+00
## [34,] 0.000000e+00
## [35,] 0.000000e+00
## [36,] 0.000000e+00
## [37,] 0.000000e+00
## [38,] 0.000000e+00
## [39,] 0.000000e+00
## [40,] 0.000000e+00
## [41,] 0.000000e+00
## [42,] 0.000000e+00
## [43,] 0.000000e+00
## [44,] 0.000000e+00
## [45,] 0.000000e+00
## [46,] 0.000000e+00
## [47,] 0.000000e+00
## [48,] 0.000000e+00
## [49,] 0.000000e+00
## [50,] 0.000000e+00
## [51,] 0.000000e+00
## [52,] 0.000000e+00
## [53,] 0.000000e+00
## [54,] 0.000000e+00
## [55,] 0.000000e+00
## [56,] 0.000000e+00
## [57,] 0.000000e+00
## [58,] 0.000000e+00
## [59,] 0.000000e+00
## [60,] 0.000000e+00
## [61,] 0.000000e+00
## [62,] 0.000000e+00
## [63,] 0.000000e+00
## [64,] 0.000000e+00
## [65,] 0.000000e+00
## [66,] 0.000000e+00
## [67,] 0.000000e+00
## [68,] 0.000000e+00
## [69,] 0.000000e+00
## [70,] 0.000000e+00
## [71,] 0.000000e+00
## [72,] 0.000000e+00
## [73,] 0.000000e+00
## [74,] 0.000000e+00
## [75,] 0.000000e+00
## [76,] 0.000000e+00
## [77,] 0.000000e+00
## [78,] 0.000000e+00
## [79,] 0.000000e+00
## [80,] 0.000000e+00
## [81,] 0.000000e+00
## [82,] 0.000000e+00
## [83,] 0.000000e+00
## [84,] 0.000000e+00
## [85,] 0.000000e+00
## [86,] 0.000000e+00
## [87,] 0.000000e+00
## [88,] 0.000000e+00
## [89,] 0.000000e+00
## [90,] 0.000000e+00
## [91,] 0.000000e+00
## [92,] 0.000000e+00
## [93,] 0.000000e+00
## [94,] 0.000000e+00
## [95,] 0.000000e+00
## [96,] 0.000000e+00
## [97,] 0.000000e+00
## [98,] 0.000000e+00
## [99,] 0.000000e+00
## [100,] 0.000000e+00
## [101,] 0.000000e+00
## [102,] 0.000000e+00
## [103,] 0.000000e+00
## [104,] 0.000000e+00
## [105,] 0.000000e+00
## [106,] 0.000000e+00
## [107,] 0.000000e+00
## [108,] 0.000000e+00
## [109,] 0.000000e+00
## [110,] 0.000000e+00
## [111,] 0.000000e+00
## [112,] 0.000000e+00
## [113,] 0.000000e+00
## [114,] 0.000000e+00
## [115,] 0.000000e+00
## [116,] 0.000000e+00
## [117,] 0.000000e+00
## [118,] 0.000000e+00
## [119,] 0.000000e+00
## [120,] 0.000000e+00
## [121,] 0.000000e+00
## [122,] 0.000000e+00
## [123,] 0.000000e+00
## [124,] 0.000000e+00
## [125,] 0.000000e+00
## [126,] 0.000000e+00
## [127,] 0.000000e+00
## [128,] 0.000000e+00
## [129,] 0.000000e+00
## [130,] 0.000000e+00
## [131,] 0.000000e+00
## [132,] 0.000000e+00
## [133,] 0.000000e+00
## [134,] 0.000000e+00
## [135,] 0.000000e+00
## [136,] 0.000000e+00
## [137,] 0.000000e+00
## [138,] 0.000000e+00
## [139,] 0.000000e+00
## [140,] 0.000000e+00
## [141,] 0.000000e+00
## [142,] 0.000000e+00
## [143,] 0.000000e+00
## [144,] 0.000000e+00
## [145,] 0.000000e+00
## [146,] 0.000000e+00
## [147,] 0.000000e+00
## [148,] 0.000000e+00
## [149,] 0.000000e+00
## [150,] 0.000000e+00
## [151,] 0.000000e+00
## [152,] 0.000000e+00
## [153,] 0.000000e+00
## [154,] 0.000000e+00
## [155,] 0.000000e+00
## [156,] 0.000000e+00
## [157,] 0.000000e+00
## [158,] 0.000000e+00
## [159,] 0.000000e+00
## [160,] 0.000000e+00
## [161,] 0.000000e+00
## [162,] 0.000000e+00
## [163,] 0.000000e+00
## [164,] 0.000000e+00
## [165,] 0.000000e+00
## [166,] 0.000000e+00
## [167,] 0.000000e+00
## [168,] 0.000000e+00
## [169,] 0.000000e+00
## [170,] 0.000000e+00
## [171,] 0.000000e+00
## [172,] 0.000000e+00
## [173,] 0.000000e+00
## [174,] 0.000000e+00
## [175,] 0.000000e+00
## [176,] 0.000000e+00
## [177,] 0.000000e+00
## [178,] 0.000000e+00
## [179,] 0.000000e+00
## [180,] 0.000000e+00
## [181,] 0.000000e+00
## [182,] 0.000000e+00
## [183,] 0.000000e+00
## [184,] 0.000000e+00
## [185,] 0.000000e+00
## [186,] 0.000000e+00
## [187,] 0.000000e+00
## [188,] 0.000000e+00
## [189,] 0.000000e+00
## [190,] 0.000000e+00
## [191,] 0.000000e+00
## [192,] 0.000000e+00
## [193,] 0.000000e+00
## [194,] 0.000000e+00
## [195,] 0.000000e+00
## [196,] 0.000000e+00
## [197,] 0.000000e+00
## [198,] 0.000000e+00
## [199,] 0.000000e+00
## [200,] 0.000000e+00
## [201,] 0.000000e+00
## [202,] 0.000000e+00
## [203,] 0.000000e+00
## [204,] 0.000000e+00
## [205,] 0.000000e+00
## [206,] 0.000000e+00
## [207,] 0.000000e+00
## [208,] 0.000000e+00
## [209,] 0.000000e+00
## [210,] 0.000000e+00
## [211,] 0.000000e+00
## [212,] 0.000000e+00
## [213,] 0.000000e+00
## [214,] 0.000000e+00
## [215,] 0.000000e+00
## [216,] 0.000000e+00
## [217,] 0.000000e+00
## [218,] 0.000000e+00
## [219,] 0.000000e+00
## [220,] 0.000000e+00
## [221,] 0.000000e+00
## [222,] 0.000000e+00
## [223,] 0.000000e+00
## [224,] 0.000000e+00
## [225,] 0.000000e+00
## [226,] 0.000000e+00
## [227,] 0.000000e+00
## [228,] 0.000000e+00
## [229,] 0.000000e+00
## [230,] 0.000000e+00
## [231,] 0.000000e+00
## [232,] 0.000000e+00
## [233,] 0.000000e+00
## [234,] 0.000000e+00
## [235,] 0.000000e+00
## [236,] 0.000000e+00
## [237,] 0.000000e+00
## [238,] 0.000000e+00
## [239,] 0.000000e+00
## [240,] 0.000000e+00
## [241,] 0.000000e+00
## [242,] 0.000000e+00
## [243,] 0.000000e+00
## [244,] 0.000000e+00
## [245,] 0.000000e+00
## [246,] 0.000000e+00
## [247,] 0.000000e+00
## [248,] 0.000000e+00
## [249,] 0.000000e+00
## [250,] 0.000000e+00
## [251,] 0.000000e+00
## [252,] -5.348836e+01
## [253,] -3.744185e+01
## [254,] -2.620930e+01
## [255,] -1.834651e+01
## [256,] -1.284255e+01
## [257,] -8.989788e+00
## [258,] -6.292852e+00
## [259,] -4.404996e+00
## [260,] -3.083497e+00
## [261,] -2.158448e+00
## [262,] -1.510914e+00
## [263,] -1.057640e+00
## [264,] -7.403477e-01
## [265,] -5.182434e-01
## [266,] -3.627704e-01
## [267,] -2.539393e-01
## [268,] -1.777575e-01
## [269,] -1.244302e-01
## [270,] -8.710117e-02
## [271,] -6.097082e-02
## [272,] -4.267957e-02
## [273,] -2.987570e-02
## [274,] -2.091299e-02
## [275,] -1.463909e-02
## [276,] -1.024737e-02
## [277,] -7.173156e-03
## [278,] -5.021209e-03
## [279,] -3.514846e-03
## [280,] -2.460392e-03
## [281,] -1.722275e-03
## [282,] -1.205592e-03
## [283,] -8.439146e-04
## [284,] -5.907402e-04
## [285,] -4.135182e-04
## [286,] -2.894627e-04
## [287,] -2.026239e-04
## [288,] -1.418367e-04
## [289,] -9.928571e-05
## [290,] -6.950000e-05
## [291,] -4.865000e-05
## [292,] -3.405500e-05
## [293,] -2.383850e-05
## [294,] -1.668695e-05
## [295,] -1.168086e-05
## [296,] -8.176605e-06
## [297,] -5.723624e-06
## [298,] -4.006537e-06
## [299,] -9.464095e+01
## [300,] -1.963203e-06
## [301,] -1.374242e-06
## [302,] -9.619694e-07
## [303,] -6.733786e-07
## [304,] -4.713650e-07
## [305,] -3.299555e-07
## [306,] -2.309689e-07
## [307,] -1.616782e-07
## [308,] -1.131747e-07
## [309,] -1.062463e+02
## [310,] -5.545562e-08
arima.tc.ao <- arima(diff.IHSG, order = c(19, 0, 0), fixed = c(0, NA, rep(0,7), NA, rep(0,8), NA,NA), xreg = xreg.outlier, method = "ML", include.mean = FALSE)
## Warning in stats::arima(x = x, order = order, seasonal = seasonal, xreg = xreg,
## : some AR parameters were fixed: setting transform.pars = FALSE
coeftest(arima.tc.ao)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar2 -0.100490 0.058265 -1.7247 0.08458 .
## ar10 0.071818 0.061981 1.1587 0.24657
## ar19 -0.113729 0.063838 -1.7815 0.07483 .
## xreg 2.261292 0.476969 4.7410 2.127e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Berdasarkan hasil uji signifikansi parameter, terlihat bahwa variabel intervensi (xreg) signifikan pada taraf 5%, yang menunjukkan bahwa kejadian intervensi memiliki pengaruh yang signifikan terhadap pergerakan IHSG. Sementara itu, parameter autoregresif lag ke-2 dan ke-19 signifikan pada taraf 10% ditandai dengan (‘.’), sedangkan lag ke-10 tidak signifikan karena memiliki p-value > 0,05, namun model masih dapat digunakan karena terdapat efek outlier.
Tahap berikutnya adalah melakukan pengujian asumsi terhadap sisaan, yaitu uji autokorelasi dan normalitas sisaan. Hipotesis pada uji autokorelasi sisaan adalah H0: ρ1 = ρ2 = … = ρk = 0 yang menyatakan tidak adanya autokorelasi, sedangkan H1: terdapat setidaknya satu ρk ≠ 0 yang menunjukkan adanya autokorelasi, dengan taraf signifikansi sebesar 0,05
resid.arima.tc.ao <- residuals(arima.tc.ao)
Box.test(resid.arima.tc.ao, lag=20, type = c('Ljung-Box'))
##
## Box-Ljung test
##
## data: resid.arima.tc.ao
## X-squared = 17.087, df = 20, p-value = 0.6473
Berdasarkan uji Ljung-Box diperoleh p-value sebesar 0,6473 > 0,05 sehingga terima H0, yang berarti tidak terdapat autokorelasi pada residual dan residual bersifat acak (white noise). Hal ini menunjukkan bahwa model ARIMA dengan outlier telah memenuhi asumsi independensi residual.
jarque.bera.test(resid.arima.tc.ao)
##
## Jarque Bera Test
##
## data: resid.arima.tc.ao
## X-squared = 24.488, df = 2, p-value = 4.814e-06
Berdasarkan uji Jarque-Bera diperoleh p-value sebesar 4,814e-06 < 0,05, sehingga tolak H0, yang berarti residual tidak berdistribusi normal. Akan tetapi, pada pemodelan deret waktu tidak wajib memenuhi asumsi normalitas, sehingga model ARIMA TC AO tetap layak digunakan.
arima.1$aic
## [1] 3539.839
arima.tc.ao$aic
## [1] 3521.05
Karena model terbaik dipilih berdasarkan nilai AIC terkecil, maka model ARIMA dengan outlier TC AO lebih baik dibandingkan model ARIMA tanpa outlier dalam memodelkan data IHSG.
prediksi.arima.tc.ao <- diff.IHSG - resid.arima.tc.ao
prediksi.arima.tc.ao.level <- c(Harga[1], Harga[1] + cumsum(prediksi.arima.tc.ao))
prediksi.arima.level <- c(Harga[1], Harga[1] + cumsum(prediksi.arima))
n <- min(length(Harga),
length(prediksi.arima.level),
length(prediksi.arima.tc.ao.level))
IHSG_ts <- ts(Harga[1:n])
pred1_ts <- ts(prediksi.arima.level[1:n])
pred2_ts <- ts(prediksi.arima.tc.ao.level[1:n])
ts.plot(IHSG_ts, pred1_ts, pred2_ts,
col = c("blue","red","green"),
lwd = 2)
Grafik menunjukkan bahwa model ARIMA dengan outlier (garis hijau) lebih mampu mengikuti pola data aktual IHSG (garis biru), terutama saat terjadi penurunan tajam, dibandingkan model ARIMA tanpa outlier (garis merah) yang cenderung lebih halus. Hal ini menunjukkan bahwa penambahan outlier meningkatkan kemampuan model dalam menangkap fluktuasi ekstrem.
new.outlier <- matrix(0, nrow = 10, ncol = 1)
prediksi <- predict(arima.tc.ao, n.ahead = 10, newxreg = new.outlier)
last_value <- tail(Harga, 1)
forecast_original <- cumsum(c(last_value, prediksi$pred))[-1]
upper <- cumsum(c(last_value, prediksi$pred + 1.96 * prediksi$se))[-1]
lower <- cumsum(c(last_value, prediksi$pred - 1.96 * prediksi$se))[-1]
tanggal_prediksi <- seq(max(Tanggal) + 1, by = "day", length.out = 20)
tanggal_prediksi <- tanggal_prediksi[!weekdays(tanggal_prediksi) %in% c("Saturday", "Sunday")]
plot(Tanggal, Harga, type = "l", col = "blue", lwd = 2,
main = "Forecast Harga IHSG (ARIMA + Outlier TC AO)",
ylab = "Harga", xlab = "Tanggal", xaxt = "n")
axis.Date(1,
at = seq(min(Tanggal), max(Tanggal), by = "3 days"),
format = "%d-%b")
lines(tanggal_prediksi,
forecast_original[1:length(tanggal_prediksi)],
col = "green", lwd = 2)
lines(tanggal_prediksi,
upper[1:length(tanggal_prediksi)],
col = "red", lty = 2, lwd = 2)
lines(tanggal_prediksi,
lower[1:length(tanggal_prediksi)],
col = "red", lty = 2, lwd = 2)
hasil_peramalan <- data.frame(
Tanggal = tanggal_prediksi,
Prediksi = forecast_original[1:length(tanggal_prediksi)],
Upper = upper[1:length(tanggal_prediksi)],
Lower = lower[1:length(tanggal_prediksi)]
)
hasil_peramalan
## Tanggal Prediksi Upper Lower
## 1 2025-04-10 5960.523 6097.483 5823.562
## 2 2025-04-11 5959.859 6233.780 5685.938
## 3 2025-04-14 5963.573 6375.144 5552.002
## 4 2025-04-15 5959.069 6508.290 5409.848
## 5 2025-04-16 5957.687 6644.565 5270.809
## 6 2025-04-17 5949.928 6774.463 5125.392
## 7 2025-04-18 5969.073 6931.265 5006.880
## 8 2025-04-21 5963.249 7063.099 4863.400
## 9 2025-04-22 5946.599 7184.106 4709.092
## 10 2025-04-23 5973.431 7348.595 4598.267
## 11 2025-04-24 NA NA NA
## 12 2025-04-25 NA NA NA
## 13 2025-04-28 NA NA NA
## 14 2025-04-29 NA NA NA
Berdasarkan hasil peramalan, diperoleh nilai prediksi IHSG untuk 10 periode ke depan yang cenderung stabil di kisaran tertentu. Nilai Upper dan Lower merupakan batas interval kepercayaan 95% yang menunjukkan tingkat ketidakpastian model setelah dikembalikan ke skala data awal. Terlihat bahwa interval tersebut semakin melebar pada setiap periode, yang menandakan ketidakpastian prediksi semakin meningkat. Selain itu, terdapat nilai NA pada beberapa periode akhir yang menunjukkan model tidak menghasilkan prediksi untuk periode tersebut.
Nilai ekstrem pada data harga penutupan IHSG dapat dimodelkan menggunakan pendekatan intervensi yang merepresentasikan kebijakan pemerintah, yaitu pengesahan RUU TNI pada 20 Maret 2025. Setelah kebijakan tersebut diberlakukan, IHSG menunjukkan tren penurunan, yang kemudian di awal April 2025 mengalami penurunan yang cukup signifikan.
IHSG.pra.intervensi <- Harga[Tanggal < as.Date("2025-03-20")]
IHSG.pra.intervensi
## [1] 7125.31 7075.34 7176.02 7190.99 7119.52 7187.85 7219.67 7209.62 7237.52
## [10] 7237.52 7245.92 7303.89 7272.80 7323.59 7279.09 7359.76 7350.62 7283.58
## [19] 7200.20 7227.30 7219.96 7241.14 7224.00 7242.79 7200.63 7252.97 7227.40
## [28] 7247.93 7256.23 7227.82 7178.04 7137.09 7157.17 7192.22 7207.94 7201.70
## [37] 7238.79 7198.62 7247.41 7235.15 7297.67 7209.74 7303.28 7335.54 7296.70
## [46] 7352.60 7349.02 7339.64 7295.10 7283.82 7285.32 7328.64 7316.11 7311.91
## [55] 7276.75 7247.46 7329.80 7373.96 7381.91 7421.21 7433.31 7328.05 7302.45
## [64] 7336.75 7331.13 7338.35 7350.15 7377.76 7365.66 7310.09 7288.81 7205.06
## [73] 7236.98 7166.84 7254.40 7286.88 7164.81 7130.84 7166.81 7087.32 7073.82
## [82] 7110.81 7174.53 7155.29 7036.08 7155.78 7234.20 7234.20 7117.42 7134.72
## [91] 7135.89 7123.61 7088.79 7099.26 7083.76 7179.83 7246.70 7317.24 7266.69
## [100] 7186.04 7222.38 7176.42 7253.63 7140.23 7034.14 6970.74 7036.19 7099.31
## [109] 6947.67 6974.90 6897.95 6921.55 6855.69 6850.10 6831.56 6734.83 6726.92
## [118] 6819.32 6879.98 6889.17 6882.70 6905.64 6967.95 7063.58 7139.63 7125.14
## [127] 7196.75 7220.89 7253.37 7250.98 7269.80 7287.04 7300.41 7327.58 7278.86
## [136] 7224.29 7224.22 7321.07 7294.50 7321.98 7313.86 7262.76 7240.28 7288.17
## [145] 7288.90 7241.86 7255.76 7325.98 7308.12 7059.65 7129.21 7212.13 7195.12
## [154] 7257.00 7297.63 7356.64 7436.04 7409.50 7432.09 7466.83 7533.98 7554.59
## [163] 7488.68 7544.30 7606.19 7597.88 7658.88 7627.60 7670.73 7694.53 7616.52
## [172] 7672.90 7681.04 7721.85 7702.74 7761.39 7760.96 7798.15 7812.13 7831.78
## [181] 7829.13 7905.39 7743.00 7775.73 7778.49 7740.90 7744.52 7696.92 7527.93
## [190] 7642.13 7563.26 7543.83 7496.09 7504.13 7557.14 7501.29 7480.08 7520.60
## [199] 7559.65 7626.95 7648.94 7735.04 7760.06 7772.60 7788.98 7787.56 7716.55
## [208] 7694.66 7634.63 7606.60 7569.85 7574.02 7505.26 7479.50 7491.93 7383.87
## [217] 7243.86 7287.19 7266.46 7321.99 7308.67 7214.56 7161.26 7134.28 7195.71
## [226] 7180.33 7140.91 7195.56 7314.11 7245.89 7200.16 7114.27 7046.99 7196.02
## [235] 7326.76 7313.31 7382.79 7437.73 7453.29 7464.75 7394.24 7324.79 7258.63
## [244] 7157.73 7107.88 6977.24 6983.87 7096.44 7065.75 7036.57 7079.90 7163.21
## [253] 7164.43 7080.47 7083.28 7080.35 7064.59 7088.87 7016.88 6956.67 7079.56
## [262] 7107.52 7154.66 7170.74 7181.82 7257.13 7232.64 7166.06 7073.48 7109.20
## [271] 7030.06 7073.46 7024.23 6875.54 6742.58 6648.14 6531.99 6645.78 6613.57
## [280] 6638.46 6830.88 6873.55 6794.87 6788.04 6803.00 6749.60 6587.09 6606.18
## [289] 6485.45 6270.60 6519.66 6380.40 6531.40 6617.85 6636.00 6598.21 6545.85
## [298] 6665.04 6647.42 6515.63 6471.95 6223.39 6311.66
boxcox <- boxcox(lm(IHSG.pra.intervensi ~ 1))
lambda <- boxcox$x[which.max(boxcox$y)]
lambda
## [1] 2
Transformasi_ihsg <- BoxCox(IHSG.pra.intervensi, lambda = lambda)
ts_Transformasi <- as.ts(Transformasi_ihsg)
boxcox2 <- boxcox(lm(ts_Transformasi ~ 1))
lambda2 <- boxcox2$x[which.max(boxcox2$y)]
lambda2
## [1] 2
Transformasi_ihsg_2 <- BoxCox(ts_Transformasi, lambda = lambda2)
ts_Transformasi_2 <- as.ts(Transformasi_ihsg_2)
boxcox3 <- boxcox(lm(ts_Transformasi_2 ~ 1))
lambda3 <- boxcox3$x[which.max(boxcox3$y)]
lambda3
## [1] 1.070707
Nilai λ = 1.070707 sehingga dapat dinyatakan bahwa data IHSG Pra Intervensi mendekati nilai 1, yang berarti transformasi Box-Cox yang dilakukan hampir bersifat linier. Hal ini menunjukkan bahwa data tidak memerlukan perubahan transformasi yang terlalu besar dan ragam data relatif sudah stabil. Dengan demikian, data tersebut sudah cukup memenuhi asumsi kestasioneran terhadap ragam
adf.test(ts_Transformasi_2, k=1)
##
## Augmented Dickey-Fuller Test
##
## data: ts_Transformasi_2
## Dickey-Fuller = -1.2824, Lag order = 1, p-value = 0.8788
## alternative hypothesis: stationary
p-value sebesar 0,8788 > α (0,05) sehingga keputusan yang diambil adalah menerima H0, yang berarti data hasil transformasi kuadrat IHSG pra intervensi belum stasioner terhadap rata-rata. Oleh karena itu, diperlukan proses differencing agar data menjadi stasioner.
diff.ts_Transformasi_2 <- diff(ts_Transformasi_2)
diff.ts_Transformasi_2
## Time Series:
## Start = 2
## End = 303
## Frequency = 1
## [1] -8.943745e+12 1.821436e+13 2.774607e+12 -1.309122e+13 1.250780e+13
## [6] 5.947713e+12 -1.887040e+12 5.258132e+12 0.000000e+00 1.595051e+12
## [11] 1.115995e+13 -6.018378e+12 9.871880e+12 -8.660476e+12 1.581707e+13
## [16] -1.818436e+12 -1.313198e+13 -1.583442e+13 5.086559e+12 -1.383352e+12
## [21] 4.003233e+12 -3.242346e+12 3.555691e+12 -7.939523e+12 9.877511e+12
## [26] -4.852338e+12 3.891842e+12 1.582836e+12 -5.395391e+12 -9.301600e+12
## [31] -7.507984e+12 3.665469e+12 6.472483e+12 2.933831e+12 -1.166874e+12
## [36] 6.980483e+12 -7.555324e+12 9.193086e+12 -2.327592e+12 1.199380e+13
## [41] -1.678041e+13 1.787182e+13 6.325061e+12 -7.604922e+12 1.098370e+13
## [46] -7.109821e+11 -1.857931e+12 -8.725479e+12 -2.184567e+12 2.899166e+11
## [51] 8.450376e+12 -2.459672e+12 -8.216483e+11 -6.823035e+12 -5.608913e+12
## [56] 1.594162e+13 8.774012e+12 1.596400e+12 7.967745e+12 2.478800e+12
## [61] -2.116141e+13 -5.010705e+12 6.725561e+12 -1.108456e+12 1.424497e+12
## [66] 2.337193e+12 5.512788e+12 -2.423597e+12 -1.097811e+13 -4.138214e+12
## [71] -1.593795e+13 6.009394e+12 -1.310054e+13 1.641382e+13 6.241746e+12
## [76] -2.302904e+13 -6.202828e+12 6.570784e+12 -1.438892e+13 -2.396121e+12
## [81] 6.598137e+12 1.161011e+13 -3.538409e+12 -2.129592e+13 2.138568e+13
## [86] 1.460496e+13 0.000000e+00 -2.157645e+13 3.130163e+12 2.125169e+11
## [91] -2.225315e+12 -6.247606e+12 1.868939e+12 -2.763875e+12 1.742505e+13
## [96] 1.254892e+13 1.361954e+13 -9.800091e+12 -1.521765e+13 6.793863e+12
## [101] -8.575182e+12 1.450005e+13 -2.113741e+13 -1.888383e+13 -1.088470e+13
## [106] 1.124160e+13 1.114267e+13 -2.627201e+13 4.592906e+12 -1.284101e+13
## [111] 3.892873e+12 -1.076461e+13 -8.995061e+11 -2.967611e+12 -1.509580e+13
## [116] -1.206039e+12 1.435584e+13 9.747339e+12 1.499399e+12 -1.056241e+12
## [121] 3.758466e+12 1.039952e+13 1.651237e+13 1.361919e+13 -2.628713e+12
## [126] 1.314818e+13 4.521692e+12 6.155840e+12 -4.557983e+11 3.601390e+12
## [131] 3.323680e+12 2.593880e+12 5.315267e+12 -9.489105e+12 -1.040464e+13
## [136] -1.319615e+10 1.862799e+13 -5.184660e+12 5.363233e+12 -1.591069e+12
## [141] -9.891832e+12 -4.286023e+12 9.178832e+12 1.413232e+11 -9.020214e+12
## [146] 2.647191e+12 1.360752e+13 -3.498325e+12 -4.607358e+13 1.241917e+13
## [151] 1.528703e+13 -3.179276e+12 1.167436e+13 7.829495e+12 1.160661e+13
## [156] 1.606400e+13 -5.427131e+12 4.615710e+12 7.180861e+12 1.416703e+13
## [161] 4.424896e+12 -1.402382e+13 1.181006e+13 1.345203e+13 -1.825411e+12
## [166] 1.353953e+13 -6.983466e+12 9.651504e+12 5.396072e+12 -1.750074e+13
## [171] 1.259459e+13 1.841467e+12 9.320867e+12 -4.383109e+12 1.355597e+13
## [176] -1.005127e+11 8.755137e+12 3.323683e+12 4.701963e+12 -6.361754e+11
## [181] 1.856725e+13 -3.889511e+13 7.645334e+12 6.491332e+11 -8.781705e+12
## [186] 8.401514e+11 -1.095354e+13 -3.727808e+13 2.491912e+13 -1.732991e+13
## [191] -4.186933e+12 -1.015087e+13 1.696013e+12 1.131952e+13 -1.191923e+13
## [196] -4.457344e+12 8.548412e+12 8.370080e+12 1.473280e+13 4.899206e+12
## [201] 1.959309e+13 5.817704e+12 2.937077e+12 3.857940e+12 -3.354141e+11
## [206] -1.654052e+13 -5.007683e+12 -1.351516e+13 -6.202469e+12 -8.028797e+12
## [211] 9.051628e+11 -1.473556e+13 -5.417221e+12 2.607002e+12 -2.223355e+13
## [216] -2.739111e+13 8.309283e+12 -3.993889e+12 1.077560e+13 -2.607212e+12
## [221] -1.801871e+13 -9.897171e+12 -4.926349e+12 1.129812e+13 -2.855977e+12
## [226] -7.236720e+12 1.006475e+13 2.263514e+13 -1.316089e+13 -8.616540e+12
## [231] -1.574564e+13 -1.194212e+13 2.691576e+13 2.503070e+13 -2.637741e+12
## [236] 1.378338e+13 1.117802e+13 3.211171e+12 2.377936e+12 -1.445801e+13
## [241] -1.384202e+13 -1.282515e+13 -1.889554e+13 -9.045270e+12 -2.281787e+13
## [246] 1.127596e+12 1.964116e+13 -5.448415e+12 -5.114920e+12 7.618178e+12
## [251] 1.504550e+13 2.242662e+11 -1.516861e+13 4.990236e+11 -5.203210e+11
## [256] -2.787662e+12 4.302470e+12 -1.262851e+13 -1.026779e+13 2.124131e+13
## [261] 4.989970e+12 8.547361e+12 2.954520e+12 2.047426e+12 1.416940e+13
## [266] -4.656445e+12 -1.242233e+13 -1.670719e+13 6.368969e+12 -1.398201e+13
## [271] 7.609505e+12 -8.621027e+12 -2.495941e+13 -2.098910e+13 -1.417325e+13
## [276] -1.662233e+13 1.627580e+13 -4.692886e+12 3.620376e+12 2.939394e+13
## [281] 6.864198e+12 -1.255780e+13 -1.069743e+12 2.347309e+12 -8.307988e+12
## [286] -2.409732e+13 2.739960e+12 -1.693220e+13 -2.787964e+13 3.258268e+13
## [291] -1.868668e+13 2.031780e+13 1.228476e+13 2.641092e+12 -5.474627e+12
## [296] -7.431477e+12 1.717716e+13 -2.598134e+12 -1.878779e+13 -5.980703e+12
## [301] -3.179880e+13 1.086658e+13
adf.test(diff.ts_Transformasi_2)
## Warning in adf.test(diff.ts_Transformasi_2): p-value smaller than printed
## p-value
##
## Augmented Dickey-Fuller Test
##
## data: diff.ts_Transformasi_2
## Dickey-Fuller = -7.0596, Lag order = 6, p-value = 0.01
## alternative hypothesis: stationary
p-value sebesar 0,01 < α (0,05) sehingga menghasilkan keputusan tolak H0, yang berarti data kuadrat IHSG Pra Intervensi telah stasioner terhadap rata-rata setelah dilakukan differencing.
acf(diff.ts_Transformasi_2)
pacf(diff.ts_Transformasi_2)
Berdasarkan plot ACF dan PACF sebagian besar berada dalam batas signifikansi, meskipun terdapat beberapa nilai yang relatif lebih besar pada lag tertentu. Namun, nilai tersebut tidak menunjukkan pola yang jelas. Berdasarkan informasi tersebut, model ARIMA(p,d,q) yang dapat dipertimbangkan adalah model dengan orde rendah, seperti ARIMA(0,1,0), ARIMA(0,1,1), atau ARIMA(1,1,0).
arima_praintervensi_1 <- arima(ts_Transformasi_2,
order = c(0,1,0),
method = "ML",
include.mean = FALSE)
arima_praintervensi_1
##
## Call:
## arima(x = ts_Transformasi_2, order = c(0, 1, 0), include.mean = FALSE, method = "ML")
##
##
## sigma^2 estimated as 1.452e+26: log likelihood = -9524.83, aic = 19049.65
arima_praintervensi_2 <- arima(ts_Transformasi_2,
order = c(0,1,1),
method = "ML",
include.mean = FALSE)
coeftest(arima_praintervensi_2)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ma1 -0.016687 0.058421 -0.2856 0.7752
arima_praintervensi_3 <- arima(ts_Transformasi_2,
order = c(1,1,0),
method = "ML",
include.mean = FALSE)
coeftest(arima_praintervensi_3)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 -0.016130 0.057572 -0.2802 0.7793
Berdasarkan hasil estimasi parameter pada kedua model overfitting ARIMA, diketahui bahwa seluruh parameter pada ARIMA(0,1,1) maupun ARIMA(1,1,0) tidak signifikan. Oleh karena itu, model yang paling sesuai untuk digunakan tetap ARIMA(0,1,0).
Tahap berikutnya adalah melakukan pengujian asumsi terhadap sisaan, yaitu uji autokorelasi dan normalitas sisaan. Hipotesis pada uji autokorelasi sisaan adalah H0: ρ1 = ρ2 = … = ρk = 0 yang menyatakan tidak adanya autokorelasi, sedangkan H1: terdapat setidaknya satu ρk ≠ 0 yang menunjukkan adanya autokorelasi, dengan taraf signifikansi sebesar 0,05
resid.arima.prainter <- residuals(arima_praintervensi_1)
Box.test(resid.arima.prainter, lag=2, type = c('Ljung-Box'))
##
## Box-Ljung test
##
## data: resid.arima.prainter
## X-squared = 0.207, df = 2, p-value = 0.9017
Berdasarkan uji Ljung-Box diperoleh p-value sebesar 0,9017 > 0,05 sehingga terima H0, yang berarti tidak terdapat autokorelasi pada residual dan residual bersifat acak (white noise). Hal ini menunjukkan bahwa model ARIMA yang digunakan telah memenuhi asumsi independensi residual.
jarque.bera.test(resid.arima.prainter)
##
## Jarque Bera Test
##
## data: resid.arima.prainter
## X-squared = 10.974, df = 2, p-value = 0.004141
Berdasarkan uji Jarque-Bera diperoleh p-value sebesar 0,004141 < 0,05, sehingga tolak H0, yang berarti residual tidak berdistribusi normal. Akan tetapi, dalam pemodelan deret waktu, asumsi normalitas tidak bersifat wajib, sehingga model ARIMA tetap layak digunakan.
Setelah diperoleh model ARIMA terbaik pada data pra intervensi, tahap selanjutnya adalah melakukan peramalan untuk periode berikutnya, yaitu data intervensi dan seterusnya, dengan jumlah 8 periode ke depan.
peramalan <- forecast(ts_Transformasi_2,
model = arima_praintervensi_1,
h = 8)
peramalan$mean
## Time Series:
## Start = 304
## End = 311
## Frequency = 1
## [1] 1.983738e+14 1.983738e+14 1.983738e+14 1.983738e+14 1.983738e+14
## [6] 1.983738e+14 1.983738e+14 1.983738e+14
Setelah melakukan peramalan untuk seluruh sisa periode pada data penelitian, tahap berikutnya adalah menghitung residual (sisaan) dari hasil peramalan model.
sisaan_peramalan <- Harga[304:311] - peramalan$mean
sisaan_peramalan
## Time Series:
## Start = 304
## End = 311
## Frequency = 1
## [1] -1.983738e+14 -1.983738e+14 -1.983738e+14 -1.983738e+14 -1.983738e+14
## [6] -1.983738e+14 -1.983738e+14 -1.983738e+14
error_idintv <- rep(0, length(resid.arima.prainter) + length(sisaan_peramalan))
n1 <- length(resid.arima.prainter)
error_idintv[1:n1] <- resid.arima.prainter
error_idintv[(n1+1):length(error_idintv)] <- 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 = 304, col = "red", lty = 3, lwd = 1.5)
batas_atas <- 3 * sd(resid.arima.prainter)
batas_bawah <- -3 * sd(resid.arima.prainter)
indeks_keluar_batas <- which(error_idintv < batas_bawah |
error_idintv > batas_atas)
keluar_batas <- data.frame(
Index = indeks_keluar_batas,
Residual = error_idintv[indeks_keluar_batas]
)
print(keluar_batas)
## Index Residual
## 1 150 -4.607358e+13
## 2 183 -3.889511e+13
## 3 189 -3.727808e+13
## 4 304 -1.983738e+14
## 5 305 -1.983738e+14
## 6 306 -1.983738e+14
## 7 307 -1.983738e+14
## 8 308 -1.983738e+14
## 9 309 -1.983738e+14
## 10 310 -1.983738e+14
## 11 311 -1.983738e+14
Berdasarkan plot residual dan tabel nilai residual, terlihat bahwa sebagian besar residual berada di sekitar nol dan dalam batas kendali. Namun, terdapat beberapa residual ekstrem pada indeks tertentu, yaitu pada indeks 150, 183, 189, serta terutama pada periode sekitar indeks 304–311 dengan nilai yang sangat besar. Hal ini mengindikasikan adanya pencilan (outlier) yang cukup signifikan. Nilai residual yang sangat besar dan negatif menunjukkan bahwa model secara drastis overestimate pada periode tersebut. Oleh karena itu, model ARIMA yang digunakan belum sepenuhnya mampu menangkap adanya shock atau perubahan ekstrem pada data, sehingga perlu dipertimbangkan penggunaan model dengan komponen intervensi atau penanganan outlier.
BoxCox.lambda(Harga)
## [1] 1.999924
trans.IHSG <- Harga^2
pos_intervensi <- which(Tanggal == as.Date("2025-03-20"))
intervensi <- rep(0, length(Harga))
intervensi[pos_intervensi] <- 1
model.intervensi <- arima(trans.IHSG,
order = c(0, 1, 0),
xreg = intervensi,
method = "ML",
include.mean = FALSE)
model.intervensi
##
## Call:
## arima(x = trans.IHSG, order = c(0, 1, 0), xreg = intervensi, include.mean = FALSE,
## method = "ML")
##
## Coefficients:
## xreg
## 1224778
## s.e. 727489
##
## sigma^2 estimated as 1.058e+12: log likelihood = -4731.46, aic = 9464.92
coeftest(model.intervensi)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## xreg 1224778 727489 1.6836 0.09227 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Berdasarkan hasil uji koefisien, variabel intervensi (xreg) memiliki nilai p-value sebesar 0,09227 yang lebih besar dari 0,05, sehingga tidak signifikan pada taraf 5%, namun masih signifikan pada taraf 10%. Hal ini menunjukkan bahwa intervensi memiliki pengaruh yang lemah terhadap model, tetapi masih dapat dipertimbangkan dalam menjelaskan perubahan pada data IHSG.
resid.intervensi <- residuals(model.intervensi)
Box.test(resid.intervensi, lag = 2, type = "Ljung-Box")
##
## Box-Ljung test
##
## data: resid.intervensi
## X-squared = 2.1641, df = 2, p-value = 0.3389
Berdasarkan uji Ljung-Box diperoleh p-value sebesar 0,3389 > 0,05 sehingga terima H0, yang berarti tidak terdapat autokorelasi pada residual dan residual bersifat acak (white noise). Hal ini menunjukkan bahwa model intervensi telah memenuhi asumsi independensi residual.
jarque.bera.test(resid.intervensi)
##
## Jarque Bera Test
##
## data: resid.intervensi
## X-squared = 348.32, df = 2, p-value < 2.2e-16
Berdasarkan uji Jarque-Bera diperoleh p-value < 2,2×10⁻¹⁶ < 0,05, sehingga tolak H0, yang berarti residual tidak berdistribusi normal. Namun, dalam pemodelan deret waktu, asumsi normalitas tidak bersifat wajib, sehingga model intervensi tetap layak digunakan.
prediksi.arima.inter <- trans.IHSG - resid.intervensi
prediksi.arima.inter.level <- sqrt(abs(prediksi.arima.inter))
plot(Tanggal, Harga,
type = "l", col = "blue", lwd = 2,
main = "Perbandingan Data Aktual dan Prediksi Model Intervensi",
xlab = "Tanggal", ylab = "Harga")
lines(Tanggal, prediksi.arima.inter.level,
col = "red", lwd = 2)
Berdasarkan plot evaluasi secara grafis, dapat diketahui bahwa prediksi data dengan model ARIMA intervensi mampu mengikuti pola fluktuasi IHSG dengan cukup baik, namun masih terdapat perbedaan pada periode penurunan tajam sehingga model kurang mampu menangkap perubahan ekstrem secara optimal.
future.intervensi <- matrix(0, nrow = 10, ncol = 1)
forecast.intervensi <- predict(model.intervensi,
n.ahead = 10,
newxreg = future.intervensi)
Tanggal.forecast <- seq(from = max(Tanggal) + 1,
by = "day",
length.out = 20)
Tanggal.forecast <- Tanggal.forecast[!weekdays(Tanggal.forecast) %in% c("Saturday","Sunday")][1:10]
plot(Tanggal, Harga,
type = "l", col = "blue", lwd = 2,
main = "Forecast Model Intervensi IHSG",
xlab = "Tanggal", ylab = "Harga",
xaxt = "n")
axis.Date(1,
at = seq(min(Tanggal), max(Tanggal), by = "7 days"),
format = "%d-%b")
pred.trans <- forecast.intervensi$pred
se.trans <- forecast.intervensi$se
forecast.asli <- sqrt(abs(pred.trans))
lower <- sqrt(abs(pred.trans - 1.96 * se.trans))
upper <- sqrt(abs(pred.trans + 1.96 * se.trans))
lines(Tanggal.forecast, forecast.asli,
col = "green", lwd = 2)
lines(Tanggal.forecast, lower,
col = "red", lty = 2)
lines(Tanggal.forecast, upper,
col = "red", lty = 2)
hasil_forecast <- data.frame(
Tanggal = Tanggal.forecast,
Prediksi = forecast.asli,
Lower_95 = lower,
Upper_95 = upper
)
hasil_forecast
## Tanggal Prediksi Lower_95 Upper_95
## 1 2025-04-10 5967.99 5796.603 6134.590
## 2 2025-04-11 5967.99 5724.110 6202.288
## 3 2025-04-14 5967.99 5667.855 6253.737
## 4 2025-04-15 5967.99 5619.992 6296.785
## 5 2025-04-16 5967.99 5577.484 6334.468
## 6 2025-04-17 5967.99 5538.773 6368.344
## 7 2025-04-18 5967.99 5502.934 6399.338
## 8 2025-04-21 5967.99 5469.365 6428.052
## 9 2025-04-22 5967.99 5437.648 6454.904
## 10 2025-04-23 5967.99 5407.478 6480.200
Berdasarkan hasil peramalan model intervensi, nilai prediksi IHSG cenderung konstan di sekitar 5967,99 pada periode 10–23 April 2025, dengan interval kepercayaan 95% yang semakin melebar seiring bertambahnya horizon waktu. Hal ini menunjukkan bahwa model memprediksi pergerakan IHSG relatif stabil setelah penurunan tajam, namun tingkat ketidakpastian prediksi meningkat untuk periode yang lebih jauh.