> library(tseries)
> library(TSA)
> library(lmtest)
> library(forecast)
> library(MLmetrics)
> library(readxl)
> library(tsoutliers)
Data yang digunakan dalam penerapan model ARIMA Outlier dan intervensi ini adalah data harian Harga Penutupan (Close Price) Indeks Harga Saham Gabungan (IHSG). Periode pengamatan yang digunakan dimulai dari 12 Desember 2023 hingga 9 April 2025.IHSG dipilih karena merupakan indikator utama performa pasar modal di Indonesia yang sangat likuid namun memiliki tingkat volatilitas yang tinggi. Dalam rentang waktu pengamatan tersebut, pergerakan IHSG menunjukkan fluktuasi yang dipengaruhi oleh berbagai sentimen ekonomi dan kebijakan pemerintah. Fokus utama penelitian ini adalah melihat dampak dari pengesahan RUU TNI pada 20 Maret 2025, yang teridentifikasi menyebabkan guncangan ekstrem pada pasar dan mengakibatkan penurunan harga yang sangat tajam hingga awal April 2025.Karena model ARIMA konvensional tidak mampu menangani data yang memiliki lonjakan atau penurunan drastis secara tiba-tiba (efek pencilan), maka digunakanlah pendekatan ARIMA Intervensi dan ARIMA Outlier. Metode ini memungkinkan model untuk melakukan penyesuaian terhadap nilai-nilai ekstrem tersebut, sehingga hasil peramalan tetap akurat dan objektif meskipun data berada dalam kondisi pasar yang sedang tidak stabil.
> # Impor Data
> data1 = read_excel("C:/Users/akmal/Downloads/IRSX.xlsx")
> head(data1)
# A tibble: 6 × 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.
Sebelum melakukan analisis deret waktu, langkah awal yang perlu dilakukan adalah eksplorasi data.
Eksplorasi data dilakukan untuk mengetahui karakteristik awal data harga penutupan IHSG melalui visualisasi plot pergerakan IHSG, serta statistik deskriptif.
> # Mendefinisikan variabel
> Tanggal = as.Date(data1$Tanggal)
> Harga = as.numeric(gsub(",", ".", data1$`Harga Saham Penutup`))
> data.saham = data.frame(Tanggal, Harga)
> data.saham
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, type = "l", col = "blue", lwd = 2,
+ main = "Pergerakan IHSG")
Berdasarkan plot data tersebut, terdeteksi adanya intervensi yang dimulai pada tanggal 20 Maret 2025. Intervensi ini ditandai dengan adanya perubahan struktural pada data, di mana harga IHSG yang sebelumnya relatif stabil mengalami penurunan drastis akibat sentimen negatif pasar terhadap kebijakan pemerintah.
Kondisi tersebut menjadi dasar penggunaan model ARIMA Intervensi untuk menangkap efek guncangan secara lebih akurat. Selain itu, pemodelan juga dilakukan menggunakan ARIMA Outlier untuk mengakomodasi adanya nilai pencilan pada data.
Pemodelan ARIMA Intervensi diawali dengan pembentukan model ARIMA pada data pra-intervensi, yaitu periode 12 Desember 2023 hingga 19 Maret 2025. Tahap ini bertujuan untuk memperoleh model terbaik yang mampu merepresentasikan perilaku data dalam kondisi normal. Selanjutnya, efek kebijakan pengesahan RUU TNI pada 20 Maret 2025 diintegrasikan ke dalam model untuk mengukur besarnya perubahan yang terjadi.
Sementara itu, pemodelan ARIMA Outlier digunakan untuk mengidentifikasi dan menyesuaikan pengaruh nilai-nilai ekstrem yang muncul pada data, sehingga model yang dihasilkan tetap stabil dan mampu memberikan hasil peramalan yang lebih akurat.
> plot(Tanggal, Harga, type = "l", col = "blue", lwd = 2,
+ main = "Pergerakan IHSG")
> abline(v = Tanggal[304], col = "red", lty = 3, lwd = 1.5)
Statistik deskriptif digunakan untuk memberikan gambaran ringkas mengenai karakteristik data harga penutupan IHSG selama periode Desember 2023 hingga April 2025.
> summary(data.saham)
Tanggal Harga
Min. :2023-12-12 Min. :5968
1st Qu.:2024-04-17 1st Qu.:7084
Median :2024-08-13 Median :7234
Mean :2024-08-08 Mean :7197
3rd Qu.:2024-12-02 3rd Qu.:7339
Max. :2025-04-09 Max. :7905
Hasil statistik deskriptif menunjukkan bahwa rata-rata (mean) harga penutupan IHSG sebesar 7.197 dengan median 7.234. Rentang nilai yang cukup lebar, dari 5.968 hingga 7.905, mencerminkan pergerakan indeks yang dinamis. Selain itu, 50% data berada pada kisaran 7.084 hingga 7.339 (Q1–Q3). Secara keseluruhan, hal ini menunjukkan adanya fluktuasi yang cukup tinggi pada IHSG selama periode pengamatan.
Pemodelan ARIMA Outlier dilakukan melalui tahapan yang serupa dengan prosedur ARIMA pada umumnya. Perbedaannya terletak pada adanya proses identifikasi dan penanganan nilai pencilan, khususnya Additive Outlier (AO) dan Innovative Outlier (IO).
> Harga.ujiragam = Harga - min(Harga)+1
> BoxCox.lambda(Harga.ujiragam)
[1] 1.467291
Hasil pemeriksaan stasioneritas terhadap ragam menggunakan transformasi Box-Cox menunjukkan nilai $ $. Nilai ini relatif mendekati 1, sehingga data dapat dianggap cukup stasioner terhadap ragam.
Dalam pemodelan ARIMA, data deret waktu yang digunakan harus bersifat
stasioner terhadap rata-rata. Pengujian kondisi tersebut dapat dilakukan
melalui 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(Harga, k=1)
Augmented Dickey-Fuller Test
data: Harga
Dickey-Fuller = -0.85579, Lag order = 1, p-value = 0.9559
alternative hypothesis: stationary
Hasil uji Dickey-Fuller menunjukkan bahwa p-value sebesar \(0,9559\) lebih besar dari \(\alpha=0,05\), sehingga gagal menolak \(H_0\). Hal ini mengindikasikan bahwa data harga belum stasioner terhadap rata-rata. Oleh karena itu, diperlukan proses differencing (pembedaan) agar data menjadi stasioner sebelum dilakukan pemodelan ARIMA.
Berdasarkan hasil uji Dickey-Fuller, data belum stasioner terhadap rata-rata. Oleh karena itu, dilakukan proses differencing orde pertama untuk menghilangkan tren dan mencapai kondisi stasioner.
> df_diff = diff(data.saham$Harga)
> adf.test(df_diff)
Augmented Dickey-Fuller Test
data: df_diff
Dickey-Fuller = -7.703, Lag order = 6, p-value = 0.01
alternative hypothesis: stationary
Hasil uji Augmented Dickey-Fuller pada data setelah differencing menunjukkan p-value sebesar \(0,01\) < \(\alpha(0,05)\), sehingga \(H_0\) ditolak. Hal ini mengindikasikan bahwa data telah stasioner terhadap rata-rata. Dengan demikian, differencing orde pertama (\(d = 1\)) sudah cukup untuk memenuhi asumsi stasioneritas sebelum dilakukan pemodelan ARIMA.
Identifikasi model ARIMA dilakukan menggunakan plot ACF dan PACF. Plot ACF dan PACF digunakan untuk menentukan orde \(p\) dan \(q\) pada model ARIMA. Analisis ACF dan PACF dilakukan pada data yang telah distasionerkan melalui proses differencing.
> acf(df_diff)
> pacf(df_diff)
Berdasarkan plot ACF dan PACF pada data hasil differencing, terlihat beberapa lag yang signifikan. Pada plot ACF, lag signifikan muncul pada lag ke-2, 7, 10, dan 19, sedangkan pada plot PACF terlihat pada lag ke-2, 10, dan 19.
Kondisi ini menunjukkan adanya indikasi komponen Moving Average (MA) pada ACF serta Autoregressive (AR) pada PACF. Kemunculan lag signifikan yang tidak berurutan mengindikasikan bahwa model yang sesuai adalah ARIMA restricted, yaitu model yang hanya memasukkan parameter pada lag-lag tertentu saja.
Berdasarkan hal tersebut, kandidat model yang dapat digunakan adalah ARIMA([2,10,19],1,0) untuk komponen AR dan ARIMA(0,1,[2,7,10,19]) untuk komponen MA.
> pola_fixed1 = c(0, NA,rep(0, 7),NA, rep(0, 8),NA)
> arima1 = arima(Harga,
+ order = c(19, 1, 0),
+ fixed = pola_fixed1,
+ method = 'ML',
+ include.mean = TRUE)
> coeftest(arima1)
z test of coefficients:
Estimate Std. Error z value Pr(>|z|)
ar2 -0.123401 0.059480 -2.0747 0.038018 *
ar10 0.170636 0.062387 2.7351 0.006236 **
ar19 -0.191446 0.063179 -3.0302 0.002444 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
> pola_fixed2 = c(0, NA,rep(0, 4),NA, 0, 0,NA,rep(0, 8),NA)
> arima2 = arima(Harga,
+ order = c(0, 1, 19),
+ fixed = pola_fixed2,
+ method = 'ML',
+ include.mean = TRUE)
> coeftest(arima2)
z test of coefficients:
Estimate Std. Error z value Pr(>|z|)
ma2 -0.096868 0.054647 -1.7726 0.076294 .
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 uji signifikansi parameter pada model ARIMA, diketahui bahwa seluruh parameter AR, yaitu AR(2), AR(10), dan AR(19), memiliki p-value kurang dari \(0,05\). Hal ini menunjukkan bahwa parameter tersebut signifikan secara statistik pada tingkat signifikansi\(\alpha=0,05\), sehingga model layak digunakan untuk analisis dan peramalan.
Sementara itu, pada komponen MA, parameter MA(2) tidak signifikan karena memiliki p-value lebih besar dari \(0,05\). Oleh karena itu, parameter MA(2) dikeluarkan dari model, sedangkan parameter MA(7), MA(10), dan MA(19) tetap dipertahankan.
Selanjutnya, dilakukan pemodelan ulang dengan menghilangkan MA(2) untuk memperoleh model yang lebih sederhana namun tetap signifikan secara statistik.
> pola_fixed3 = c(rep(0,6),NA, 0, 0,NA,rep(0, 8),NA)
> arima3 = arima(Harga,
+ order = c(0, 1, 19),
+ fixed = pola_fixed3,
+ method = 'ML',
+ include.mean = TRUE)
> coeftest(arima3)
z test of coefficients:
Estimate Std. Error z value Pr(>|z|)
ma7 -0.129664 0.056762 -2.2843 0.022352 *
ma10 0.137507 0.058432 2.3533 0.018608 *
ma19 -0.173809 0.061461 -2.8279 0.004685 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Berdasarkan hasil uji signifikansi parameter setelah dilakukan modifikasi model, seluruh parameter Moving Average (MA), yaitu MA(7), MA(10), dan MA(19), memiliki p-value kurang dari \(0,05\). Hal ini menunjukkan bahwa seluruh parameter signifikan secara statistik.
Dengan demikian, model ARIMA hasil revisi telah memenuhi kriteria signifikansi parameter dan dapat digunakan untuk analisis lebih lanjut.
Tahap berikutnya adalah melakukan pengujian asumsi residual, yang
meliputi uji autokorelasi dan normalitas. Adapun hipotesis yang
digunakan dalam uji autokorelasi residual adalah sebagai berikut.
\(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\)
> resarima1 = residuals(arima1)
> resarima3 = residuals(arima3)
> Box.test(resarima1, lag=2, type = c('Ljung-Box'))
Box-Ljung test
data: resarima1
X-squared = 0.14256, df = 2, p-value = 0.9312
> Box.test(resarima1, lag=6, type = c('Ljung-Box'))
Box-Ljung test
data: resarima1
X-squared = 4.1667, df = 6, p-value = 0.6541
> Box.test(resarima1, lag=20, type = c('Ljung-Box'))
Box-Ljung test
data: resarima1
X-squared = 19.039, df = 20, p-value = 0.5193
> Box.test(resarima3, lag=2, type = c('Ljung-Box'))
Box-Ljung test
data: resarima3
X-squared = 3.9754, df = 2, p-value = 0.137
> Box.test(resarima3, lag=6, type = c('Ljung-Box'))
Box-Ljung test
data: resarima3
X-squared = 8.4738, df = 6, p-value = 0.2054
> Box.test(resarima3, lag=20, type = c('Ljung-Box'))
Box-Ljung test
data: resarima3
X-squared = 19.101, df = 20, p-value = 0.5153
Berdasarkan hasil uji white noise, residual model tidak menunjukkan
adanya autokorelasi yang signifikan, yang ditunjukkan oleh nilai p-value
seluruhnya lebih besar dari \(0,05\).
Dengan demikian, \(H_0\) diterima. Hal
ini mengindikasikan bahwa residual bersifat acak (white noise). Oleh
karena itu, model telah memenuhi asumsi tidak adanya autokorelasi dan
dapat dilanjutkan ke tahap berikutnya, yaitu uji normalitas
residual.
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(resarima1)
Jarque Bera Test
data: resarima1
X-squared = 223.39, df = 2, p-value < 2.2e-16
> jarque.bera.test(resarima3)
Jarque Bera Test
data: resarima3
X-squared = 426.33, df = 2, p-value < 2.2e-16
Hasil uji normalitas residual menunjukkan p-value yang sangat kecil (\(<2,2e-16\)), sehingga \(H_0\) ditolak. Hal ini mengindikasikan bahwa residual model tidak berdistribusi normal.Meskipun demikian, ketidaknormalan residual merupakan hal yang umum terjadi pada data keuangan seperti IHSG yang memiliki volatilitas tinggi. Selama residual telah memenuhi asumsi white noise, model ARIMA tetap dapat digunakan untuk peramalan. Setelah seluruh asumsi terpenuhi, maka dapat dilanjutkan pemilihan model terbaik dengan AIC.
> arima1$aic
[1] 3539.839
> arima3$aic
[1] 3541.331
Berdasarkan perbandingan nilai Akaike Information Criterion (AIC), model AR menunjukkan nilai AIC yang lebih rendah dibandingkan dengan model MA. Hal ini mengindikasikan bahwa model AR memiliki tingkat kecocokan yang lebih baik terhadap data.
Oleh karena itu, model terbaik yang dipilih adalah ARIMA([2,10,19],1,0).
Berdasarkan plot data deret waktu harga penutupan IHSG, terlihat adanya beberapa titik ekstrem pada data. Kondisi ini mengindikasikan kemungkinan adanya outlier yang dapat mempengaruhi hasil pemodelan ARIMA.
Untuk mengidentifikasi keberadaan outlier pada model ARIMA yang telah dipilih, digunakan metode deteksi Additive Outlier (AO), Innovative Outlier (IO), dan Level Shift (LS).
> pred.arima = Harga-resarima1
> outlier = tso(pred.arima, types = c('AO','IO','IS','TC'))
> print(outlier)
Series: pred.arima
Regression with ARIMA(0,1,0) errors
Coefficients:
TC151 AO292 AO311
-251.9818 225.5138 -400.6103
s.e. 61.6684 47.2975 66.8888
sigma^2 = 4518: log likelihood = -1742.81
AIC=3493.62 AICc=3493.75 BIC=3508.57
Outliers:
type ind time coefhat tstat
1 TC 151 151 -252.0 -4.086
2 AO 292 292 225.5 4.768
3 AO 311 311 -400.6 -5.989
Berdasarkan hasil pengujian, teridentifikasi tiga pencilan signifikan pada data IHSG, yaitu satu Temporary Change (TC) pada periode ke-151 dan dua Additive Outlier (AO) pada periode ke-292 dan ke-311. Nilai koefisien dan t-statistik yang signifikan menunjukkan adanya guncangan ekstrem dan kejutan pasar yang bersifat sementara. Hal ini mengindikasikan volatilitas tinggi yang berpotensi memengaruhi kestabilan model ARIMA.
Untuk melihat efek dari pencilan AO dan TC terhadap data, dapat diamati pada plot berikut.
> plot(outlier$effects)
> xr.outlier = outlier$effects
> xr.outlier
Time Series:
Start = 1
End = 311
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] -2.519818e+02 -1.763872e+02 -1.234711e+02 -8.642975e+01 -6.050083e+01
[156] -4.235058e+01 -2.964540e+01 -2.075178e+01 -1.452625e+01 -1.016837e+01
[161] -7.117862e+00 -4.982503e+00 -3.487752e+00 -2.441427e+00 -1.708999e+00
[166] -1.196299e+00 -8.374093e-01 -5.861865e-01 -4.103306e-01 -2.872314e-01
[171] -2.010620e-01 -1.407434e-01 -9.852037e-02 -6.896426e-02 -4.827498e-02
[176] -3.379249e-02 -2.365474e-02 -1.655832e-02 -1.159082e-02 -8.113576e-03
[181] -5.679503e-03 -3.975652e-03 -2.782956e-03 -1.948070e-03 -1.363649e-03
[186] -9.545541e-04 -6.681879e-04 -4.677315e-04 -3.274120e-04 -2.291884e-04
[191] -1.604319e-04 -1.123023e-04 -7.861163e-05 -5.502814e-05 -3.851970e-05
[196] -2.696379e-05 -1.887465e-05 -1.321226e-05 -9.248580e-06 -6.474006e-06
[201] -4.531804e-06 -3.172263e-06 -2.220584e-06 -1.554409e-06 -1.088086e-06
[206] -7.616603e-07 -5.331622e-07 -3.732136e-07 -2.612495e-07 -1.828746e-07
[211] -1.280123e-07 -8.960858e-08 -6.272600e-08 -4.390820e-08 -3.073574e-08
[216] -2.151502e-08 -1.506051e-08 -1.054236e-08 -7.379652e-09 -5.165756e-09
[221] -3.616029e-09 -2.531220e-09 -1.771854e-09 -1.240298e-09 -8.682086e-10
[226] -6.077460e-10 -4.254222e-10 -2.977956e-10 -2.084569e-10 -1.459198e-10
[231] -1.021439e-10 -7.150071e-11 -5.005050e-11 -3.503535e-11 -2.452474e-11
[236] -1.716732e-11 -1.201712e-11 -8.411987e-12 -5.888391e-12 -4.121874e-12
[241] -2.885312e-12 -2.019718e-12 -1.413803e-12 -9.896619e-13 -6.927633e-13
[246] -4.849343e-13 -3.394540e-13 -2.376178e-13 -1.663325e-13 -1.164327e-13
[251] -8.150291e-14 -5.705204e-14 -3.993643e-14 -2.795550e-14 -1.956885e-14
[256] -1.369819e-14 -9.588736e-15 -6.712115e-15 -4.698481e-15 -3.288937e-15
[261] -2.302256e-15 -1.611579e-15 -1.128105e-15 -7.896737e-16 -5.527716e-16
[266] -3.869401e-16 -2.708581e-16 -1.896006e-16 -1.327205e-16 -9.290432e-17
[271] -6.503302e-17 -4.552312e-17 -3.186618e-17 -2.230633e-17 -1.561443e-17
[276] -1.093010e-17 -7.651070e-18 -5.355749e-18 -3.749024e-18 -2.624317e-18
[281] -1.837022e-18 -1.285915e-18 -9.001407e-19 -6.300985e-19 -4.410690e-19
[286] -3.087483e-19 -2.161238e-19 -1.512867e-19 -1.059007e-19 -7.413046e-20
[291] -5.189132e-20 2.255138e+02 -2.542675e-20 -1.779872e-20 -1.245911e-20
[296] -8.721375e-21 -6.104962e-21 -4.273474e-21 -2.991431e-21 -2.094002e-21
[301] -1.465801e-21 -1.026061e-21 -7.182427e-22 -5.027699e-22 -3.519389e-22
[306] -2.463572e-22 -1.724501e-22 -1.207151e-22 -8.450054e-23 -5.915037e-23
[311] -4.006103e+02
> pola_fixedd = c(0, NA,rep(0, 7),NA, rep(0, 8),NA,NA)
> arimaout = arima(Harga,
+ order = c(19, 1, 0),
+ fixed = pola_fixedd,
+ xreg=xr.outlier,
+ method = 'ML',
+ include.mean = TRUE)
> coeftest(arimaout)
z test of coefficients:
Estimate Std. Error z value Pr(>|z|)
ar2 -0.137412 0.060524 -2.2704 0.023186 *
ar10 0.165169 0.062887 2.6265 0.008628 **
ar19 -0.186563 0.063297 -2.9474 0.003204 **
xreg -0.185065 0.130459 -1.4186 0.156024
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Parameter AR(2), AR(10), dan AR(19) signifikan (p-value < \(0.05\)), sedangkan variabel xreg (outlier) tidak signifikan (p-value = \(0.156\)). Meskipun demikian, variabel outlier tetap dipertahankan sebagai variabel kontrol untuk menjaga kestabilan estimasi model terhadap pengaruh volatilitas ekstrem.
Tahap selanjutnya adalah pengujian asumsi residual, yaitu uji autokorelasi dan uji normalitas residual. 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\)
> resarimaout = residuals(arimaout)
> Box.test(resarimaout, lag=2, type = c('Ljung-Box'))
Box-Ljung test
data: resarimaout
X-squared = 0.88389, df = 2, p-value = 0.6428
> Box.test(resarimaout, lag=6, type = c('Ljung-Box'))
Box-Ljung test
data: resarimaout
X-squared = 4.3513, df = 6, p-value = 0.6292
> Box.test(resarimaout, lag=20, type = c('Ljung-Box'))
Box-Ljung test
data: resarimaout
X-squared = 18.307, df = 20, p-value = 0.5672
Hasil uji Ljung-Box menunjukkan p-value lebih besar dari 0,05 pada lag 2, 6, dan 20, sehingga residual bersifat white noise. Dengan demikian, model ARIMAX([2,10,19],1,0) telah memenuhi asumsi diagnostik dan layak digunakan untuk peramalan.
Selanjutnya, dilakukan pengujian normalitas residual 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(resarimaout)
Jarque Bera Test
data: resarimaout
X-squared = 221.43, df = 2, p-value < 2.2e-16
Diperoleh p-value sebesar \(<2,2e-16\) (\(<\alpha (0.05)\)), sehingga residual model ARIMAX dinyatakan tidak berdistribusi normal. Kondisi ini umum terjadi pada data keuangan yang memiliki karakteristik leptokurtic dan fat-tail akibat volatilitas yang tinggi.
Namun demikian, model tetap dianggap valid untuk peramalan karena asumsi diagnostik utama, yaitu white noise, telah terpenuhi.
> pred.arimaout = Harga-resarimaout
> plot(Tanggal, Harga, type = "l", col = "blue", lwd = 2,main = "Pergerakan IHSG")
> lines(Tanggal, pred.arima, type = "o", col = "red", lwd = 2)
> lines(Tanggal, pred.arimatc, type = "o", col = "green", lwd = 2)
Error: object 'pred.arimatc' not found
Berdasarkan evaluasi grafis, kedua model menunjukkan kemampuan yang baik dalam mengikuti fluktuasi data aktual, di mana garis prediksi cenderung berhimpit dengan data observasi. Hal ini menunjukkan bahwa pemilihan lag pada komponen Autoregressive serta penanganan pencilan mampu merepresentasikan dinamika pergerakan IHSG dengan cukup akurat.
> MAE(Harga, pred.arima)
[1] 53.34647
> MAPE(Harga, pred.arima)
[1] 0.007528704
> RMSE(Harga, pred.arima)
[1] 72.05631
> MAE(Harga, pred.arimaout)
[1] 53.29689
> MAPE(Harga, pred.arimaout)
[1] 0.007522786
> RMSE(Harga, pred.arimaout)
[1] 71.82964
Berdasarkan hasil evaluasi, model ARIMAX menunjukkan performa yang sedikit lebih baik dibandingkan model ARIMA. Hal ini ditunjukkan oleh nilai MAE, RMSE, dan MAPE yang secara konsisten lebih rendah, meskipun perbedaannya relatif sangat kecil.
Nilai MAPE sebesar \(0.752\)% pada kedua model menunjukkan bahwa tingkat kesalahan peramalan tergolong sangat rendah (\(<1\)%). Namun demikian, model ARIMAX tetap memberikan peningkatan akurasi dibandingkan model ARIMA standar, sehingga dapat disimpulkan bahwa penanganan pencilan memberikan kontribusi dalam meningkatkan performa model.
Keberadaan nilai ekstrem pada data harga penutupan IHSG dapat ditangani menggunakan model intervensi. Pada penelitian ini, intervensi yang digunakan adalah peristiwa pengesahan RUU TNI pada 20 Maret 2025, yang memicu perubahan struktural pada pergerakan IHSG akibat respons negatif pasar.
Intervensi terjadi pada 20 Maret 2025, sehingga data pra intervensi adalah data pada 12 Desember 2023 hingga 19 Maret 2025
> Harga.pra.intervensi = Harga[1:303]
> Harga.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
> Harga_plus1 = Harga.pra.intervensi - min(Harga.pra.intervensi) + 1
> BoxCox.lambda(Harga_plus1)
[1] 1.38358
Hasil Box-Cox menunjukkan nilai \(\lambda=0,992\),38358 yang mendekati 1, sehingga data IHSG tidak memerlukan transformasi. Varians data dianggap sudah stabil dan analisis dapat dilanjutkan menggunakan data asli.
Data deret waktu yang digunakan dalam pemodelan ARIMA harus bersifat
stasioner terhadap rata-rata. Untuk menguji kondisi tersebut, dapat
digunakan 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(Harga.pra.intervensi, k=1)
Augmented Dickey-Fuller Test
data: Harga.pra.intervensi
Dickey-Fuller = -1.1288, Lag order = 1, p-value = 0.9167
alternative hypothesis: stationary
Hasil uji ADF menunjukkan nilai statistik \(-1,1288\) dengan p-value \(0,9167\) (\(>0,05\)), sehingga \(H_0\) gagal ditolak. Hal ini mengindikasikan bahwa data IHSG belum stasioner dan perlu dilakukan differencing untuk menstasionerkan rata-rata.
Berdasarkan hasil uji Dickey-Fuller, data belum stasioner terhadap rata-rata. Oleh karena itu, dilakukan proses differencing orde pertama untuk menghilangkan tren dan mencapai kondisi stasioner.
> df_diffe = diff(Harga.pra.intervensi)
> adf.test(df_diffe)
Augmented Dickey-Fuller Test
data: df_diffe
Dickey-Fuller = -7.1821, Lag order = 6, p-value = 0.01
alternative hypothesis: stationary
Setelah differencing tingkat pertama (\(d = 1\)), uji Dickey-Fuller menghasilkan nilai statistik \(-7,1821\) dengan p-value \(0,01\) (\(<0,05\)), sehingga \(H_0\) ditolak dan data dinyatakan sudah stasioner. Data kemudian dapat digunakan pada tahap identifikasi model ARIMA.
Identifikasi model ARIMA dilakukan menggunakan plot ACF dan PACF. Nilai ACF dan PACF digunakan untuk menentukan orde \(p\) dan \(q\) pada model ARIMA. Analisis ACF dan PACF dilakukan pada data yang telah stasioner.
> acf(df_diffe)
> pacf(df_diffe)
Berdasarkan plot ACF, nilai korelasi pada lag 1 hingga 9 berada dalam batas signifikansi, sedangkan pada lag ke-10 terdapat lonjakan signifikan yang menunjukkan adanya ketergantungan terhadap error pada 10 periode sebelumnya. Hal ini mengindikasikan kandidat model MA pada lag tersebut, yaitu ARIMA(0,1,[10]).
Sementara itu, plot PACF menunjukkan pola serupa, di mana lag 1 hingga 9 tidak signifikan dan terdapat lonjakan signifikan pada lag ke-10. Kondisi ini mengindikasikan adanya komponen AR pada lag tersebut, sehingga kandidat model yang diperoleh adalah ARIMA([10],1,0).
> fixid = c(rep(0, 9),NA)
> arima.printer1 = arima(Harga.pra.intervensi,
+ order = c(10, 1, 0),
+ fixed = fixid,
+ method = 'ML',
+ include.mean = TRUE)
> coeftest(arima.printer1)
z test of coefficients:
Estimate Std. Error z value Pr(>|z|)
ar10 0.125697 0.059117 2.1262 0.03348 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
>
> fixid2 = c(rep(0, 9),NA)
> arima.printer2 = arima(Harga.pra.intervensi,
+ order = c(0, 1, 10),
+ fixed = fixid2,
+ method = 'ML',
+ include.mean = TRUE)
> coeftest(arima.printer2)
z test of coefficients:
Estimate Std. Error z value Pr(>|z|)
ma10 0.135865 0.062529 2.1729 0.02979 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Parameter AR(10) memiliki koefisien sebesar \(0,125697\) dengan p-value \(0,0334\). Karena p-value < \(0,05\), maka parameter tersebut signifikan secara statistik. Hal ini menunjukkan bahwa nilai IHSG saat ini dipengaruhi oleh nilai IHSG pada 10 periode sebelumnya.
Sementara itu, parameter MA(10) memiliki koefisien sebesar \(0,135865\) dengan p-value \(0,0297\). Karena p-value < \(0,05\), maka parameter ini juga signifikan. Hal ini mengindikasikan adanya pengaruh dari komponen error pada 10 periode sebelumnya terhadap fluktuasi nilai IHSG saat ini.
Dengan demikian, kedua parameter tersebut signifikan dan model yang dibentuk dapat digunakan untuk analisis dan peramalan.
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
> resarima.printer = residuals(arima.printer1)
> resarima.printer2 = residuals(arima.printer2)
> Box.test(resarima.printer, lag=2, type = c('Ljung-Box'))
Box-Ljung test
data: resarima.printer
X-squared = 0.034089, df = 2, p-value = 0.9831
> Box.test(resarima.printer, lag=6, type = c('Ljung-Box'))
Box-Ljung test
data: resarima.printer
X-squared = 2.9743, df = 6, p-value = 0.8121
> Box.test(resarima.printer, lag=11, type = c('Ljung-Box'))
Box-Ljung test
data: resarima.printer
X-squared = 10.104, df = 11, p-value = 0.521
> Box.test(resarima.printer2, lag=2, type = c('Ljung-Box'))
Box-Ljung test
data: resarima.printer2
X-squared = 0.042143, df = 2, p-value = 0.9791
> Box.test(resarima.printer2, lag=6, type = c('Ljung-Box'))
Box-Ljung test
data: resarima.printer2
X-squared = 2.986, df = 6, p-value = 0.8106
> Box.test(resarima.printer2, lag=11, type = c('Ljung-Box'))
Box-Ljung test
data: resarima.printer2
X-squared = 9.9814, df = 11, p-value = 0.5321
Hasil uji white noise menunjukkan bahwa baik model AR maupun MA memiliki p-value yang konsisten lebih besar dari \(0,05\) pada seluruh lag pengujian. Hal ini mengindikasikan bahwa kedua kandidat model telah memenuhi asumsi white noise, yang berarti tidak terdapat autokorelasi yang tersisa pada residual. 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(resarima.printer)
Jarque Bera Test
data: resarima.printer
X-squared = 21.252, df = 2, p-value = 2.427e-05
> jarque.bera.test(resarima.printer2)
Jarque Bera Test
data: resarima.printer2
X-squared = 21.062, df = 2, p-value = 2.669e-05
Hasil uji menunjukkan bahwa model AR memiliki p-value sebesar \(2,427e-05\) dan model MA sebesar \(2,669e-05\). Karena kedua nilai tersebut lebih kecil dari \(0,05\), maka residual dari kedua model dinyatakan tidak berdistribusi normal.
Ketidaknormalan ini mengindikasikan adanya pengaruh pencilan (outlier) atau fluktuasi ekstrem pada data IHSG yang tidak dapat sepenuhnya ditangkap oleh model ARIMA standar. Temuan ini menjadi dasar untuk melanjutkan analisis ke tahap model intervensi guna mengakomodasi efek pencilan sehingga diperoleh model yang lebih akurat.
> arima.printer1$aic #AR
[1] 3400.397
> arima.printer2$aic #MA
[1] 3400.109
Berdasarkan nilai Akaike Information Criterion (AIC), model MA memiliki nilai AIC lebih kecil dibandingkan model AR. Oleh karena itu, model MA dipilih sebagai model terbaik karena memiliki nilai AIC minimum.
Setelah diperoleh model ARIMA terbaik pada data pra-intervensi, tahap selanjutnya adalah melakukan peramalan pada periode berikutnya, yaitu mencakup data intervensi dan setelahnya. Peramalan dilakukan untuk 10 periode ke depan.
> peramalan = forecast(Harga.pra.intervensi, model = arima.printer2, h=10)
> peramalan$mean
Time Series:
Start = 304
End = 313
Frequency = 1
[1] 6323.150 6325.003 6320.593 6316.195 6332.345 6332.127 6318.235 6308.218
[9] 6277.111 6286.138
Tahapan setelah melakukan peramalan yang ada pada data penelitian, langkah selanjutnya adalah menghitung sisaan dari model peramalan dengan persamaan berikut. \[e_t = Harga_t - \hat {Harga_t}\]
> sisaan.ramalan = Harga[304:311] - peramalan$mean
> sisaan.ramalan
Time Series:
Start = 304
End = 313
Frequency = 1
[1] 58.51988 -66.82323 -159.37277 -80.57503 140.01505 178.49277
[7] -322.09521 -340.22804 104.55904 -27.95800
Identifikasi model intervensi digunakan untuk menentukan durasi dampak intervensi serta memilih bentuk fungsi intervensi yang sesuai. Tahap ini juga bertujuan untuk menentukan orde b, r, dan s pada model intervensi.
Proses identifikasi dilakukan dengan menganalisis respon residual pada setiap periode yang keluar dari batas signifikansi berdasarkan plot. Batas signifikansi ditentukan dari \(±3(Standar Deviasi Residual)\), di mana standar deviasi tersebut diperoleh dari residual model ARIMA pada data pra-intervensi.
> errorintv = rep(0,311)
> errorintv[1:303] = resarima1
> errorintv[304:311] = sisaan.ramalan
>
> plot(errorintv, type="h", xlab="Waktu (T)", ylab = "Residual", xaxt = "n")
> abline(h=c(-3*sd(resarima.printer2), 3*sd(resarima.printer2)), col="blue", lty=2)
> abline(v = 304, col = "red", lty = 3, lwd = 1.5)
Sisaan pada periode ke-304 yang merepresentasikan tanggal 20 Maret 2025 (pengesahan RUU TNI) berada di luar batas signifikansi. Namun, pada periode-periode setelahnya, respon sisaan mengalami penurunan dan kembali tidak signifikan. Hal ini menunjukkan bahwa dampak intervensi hanya terjadi pada satu titik waktu dan tidak berlanjut pada periode berikutnya.
Berdasarkan pola tersebut, fungsi intervensi yang digunakan adalah fungsi pulse, yaitu fungsi yang menggambarkan kejutan yang hanya terjadi pada satu periode tertentu dan tidak memiliki efek jangka panjang.
Selain itu, dapat ditentukan parameter orde intervensi yaitu b = 0, r = 0, dan s = 0, yang menunjukkan bahwa efek intervensi terjadi secara langsung pada saat kejadian dan tidak menyebar ke periode berikutnya.
> n=311
> AO1 = rep(0, n)
> AO2 = rep(0, n)
> TC = rep(0, n)
>
> AO1[292:n] = 1
> AO2[311:n] = 1
> TC[151:n] = 1
> interven = cbind(AO1, AO2, TC)
> interven = as.matrix(interven)
> model.intervensi = arimax(Harga, order = c(0, 1, 10),
+ fixed = c(rep(0, 9),NA, NA,NA,NA),xreg = interven,
+ method = 'ML')
> model.intervensi
Call:
arimax(x = Harga, order = c(0, 1, 10), xreg = interven, fixed = c(rep(0, 9),
NA, NA, NA, NA), method = "ML")
Coefficients:
ma1 ma2 ma3 ma4 ma5 ma6 ma7 ma8 ma9 ma10 AO1 AO2
0 0 0 0 0 0 0 0 0 0.1682 -104.5954 -14.7745
s.e. 0 0 0 0 0 0 0 0 0 0.0646 73.6858 73.9039
TC
57.8635
s.e. 72.7083
sigma^2 estimated as 5412: log likelihood = -1772.45, aic = 3552.91
> coef(model.intervensi)
ma1 ma2 ma3 ma4 ma5 ma6
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
ma7 ma8 ma9 ma10 AO1 AO2
0.0000000 0.0000000 0.0000000 0.1682414 -104.5953654 -14.7745462
TC
57.8635182
Berdasarkan hasil analisis, model terbaik yang diperoleh adalah model intervensi dengan komponen utama MA(10). Model ini dianggap paling sesuai dalam merepresentasikan pola data IHSG, khususnya dalam kondisi adanya gangguan pasar.
Walaupun parameter intervensi berupa Additive Outlier (AO) dan Temporary Change (TC) tidak signifikan secara statistik (\(|t| < 1,96\)), kedua parameter tersebut tetap dipertahankan dalam model. Hal ini dilakukan karena secara substantif keduanya diperlukan untuk mengakomodasi keberadaan outlier ekstrem pada data IHSG akibat shock pasar.
Dengan mempertahankan komponen intervensi tersebut, sisaan model menjadi lebih stabil dan mendekati white noise, sehingga hasil pemodelan dan peramalan yang diperoleh menjadi lebih objektif dan reliabel.
Model intervensi perlu melakukan uji asumsi sisaan yaitu autokorelasi sisaan dan normalitas sisaan.
> resinterven = residuals(model.intervensi)
> jarque.bera.test(resinterven)
Jarque Bera Test
data: resinterven
X-squared = 659.23, df = 2, p-value < 2.2e-16
>
> Box.test(resinterven, lag = 2, type = "Ljung-Box")
Box-Ljung test
data: resinterven
X-squared = 3.9748, df = 2, p-value = 0.1371
> Box.test(resinterven, lag = 6, type = "Ljung-Box")
Box-Ljung test
data: resinterven
X-squared = 8.3348, df = 6, p-value = 0.2146
> Box.test(resinterven, lag = 11, type = "Ljung-Box")
Box-Ljung test
data: resinterven
X-squared = 14.813, df = 11, p-value = 0.1912
Hasil menunjukkan bahwa model intervensi telah memenuhi asumsi independensi (white noise), ditandai dengan seluruh p-value uji Ljung-Box pada lag 2, 6, dan 11 yang lebih besar dari 0,05. Hal ini berarti tidak terdapat korelasi antar sisaan sehingga model telah menangkap pola data dengan baik.
Namun, uji Jarque-Bera menunjukkan bahwa sisaan tidak berdistribusi normal (p-value < \(0,05\)), yang umum terjadi pada data keuangan yang bersifat volatil.
Meskipun demikian, model tetap layak digunakan untuk peramalan karena asumsi utama white noise telah terpenuhi.
> prediksi.arima.interven = Harga-resinterven
> MAE(Harga, prediksi.arima.interven)
[1] 53.0025
> MAPE(Harga, prediksi.arima.interven)
[1] 0.007482692
> RMSE(Harga, prediksi.arima.interven)
[1] 73.44933
Menunjukkan hasil evaluasi akurasi model intervensi berdasarkan nilai MAE, MAPE, dan RMSE. Nilai MAPE sebesar \(0,748\)% menunjukkan bahwa model memiliki tingkat akurasi yang sangat tinggi (highly accurate) karena berada jauh di bawah batas \(10\)%.
Selain itu, nilai MAE dan RMSE yang relatif kecil dibandingkan skala data mengindikasikan bahwa kesalahan prediksi model tergolong rendah. Secara keseluruhan, model intervensi ini dapat dinilai sangat akurat dan reliabel dalam memprediksi pergerakan harga IHSG.
Model ARIMA intervensi yang telah memenuhi seluruh asumsi dapat dievaluasi lebih lanjut melalui perbandingan secara visual (grafis) untuk menilai kesesuaian model terhadap data.
> plot(Tanggal, Harga, type = "l", col = "blue", lwd = 2)
> lines(Tanggal, prediksi.arima.interven, type = "l", col = "red", lwd = 2)
> legend("topright",
+ legend = c("Aktual", "Prediksi"),
+ col = c("blue", "red"),
+ lty = 1,
+ cex = 0.5)
Menunjukkan bahwa model intervensi mampu mengikuti pola pergerakan IHSG
dengan baik, ditandai dengan kedekatan antara nilai aktual (garis biru)
dan nilai hasil pemodelan (garis merah). Hal ini mengindikasikan bahwa
model mampu merepresentasikan data yang mengandung guncangan
(intervensi) secara akurat.
> library(ggplot2)
> autoplot(peramalan) +
+ ggtitle("Forecast IHSG") +
+ xlab("Periode") +
+ ylab("Harga") +
+ theme_minimal()
Hasil forecast model intervensi ARIMA menunjukkan IHSG diprediksi
stagnan di kisaran 6.300 dalam jangka pendek, tanpa sinyal pemulihan
yang kuat. Ketidakpastian meningkat seiring bertambahnya horizon
peramalan, tercermin dari pita confidence interval yang semakin
melebar.
Berdasarkan hasil analisis data deret waktu IHSG, diperoleh bahwa model yang paling sesuai adalah model ARIMA yang dikembangkan menjadi ARIMAX dan model intervensi. Data IHSG terbukti tidak stasioner pada level, namun menjadi stasioner setelah dilakukan differencing. Model terbaik yang dihasilkan mampu memenuhi asumsi white noise meskipun residual tidak berdistribusi normal, yang merupakan karakteristik umum pada data keuangan. Hasil evaluasi menunjukkan bahwa model memiliki tingkat akurasi yang sangat tinggi dengan nilai MAPE di bawah 1%, sehingga layak digunakan untuk peramalan. Selain itu, penambahan komponen outlier dan intervensi terbukti mampu meningkatkan kinerja model dalam menangkap pola fluktuasi IHSG. Hasil peramalan menunjukkan bahwa IHSG diprediksi bergerak stagnan di kisaran 6.300 dalam jangka pendek, tanpa indikasi pemulihan yang kuat dalam horizon peramalan yang diamati.
Model yang telah diperoleh sebaiknya digunakan dengan pembaruan data secara berkala, agar hasil peramalan tetap sesuai dengan kondisi IHSG yang dinamis.
Keberadaan outlier dan intervensi tetap perlu diperhatikan pada analisis selanjutnya karena terbukti berpengaruh terhadap kestabilan model.
Model yang dihasilkan dapat dijadikan acuan awal, namun tetap terbuka untuk pengembangan lebih lanjut sesuai kebutuhan analisis.