Impor Library Yang Dibutuhkan

> library(tseries)
> library(TSA)
> library(lmtest)
> library(forecast)
> library(MLmetrics)
> library(readxl)
> library(tsoutliers)

Impor Data yang Dibutuhkan

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.

Eksplorasi Data

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 Harga Penutupan IHSG

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

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).

Uji Stasioneritas Data

Pemeriksaan stasioneritas terhadap ragam

> 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.

Stasioneritas terhadap Rata-Rata

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.

Proses Differencing

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

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.

Pendugaan Parameter Model ARIMA

> 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.

Uji Asumsi Sisaan

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.

Pemilihan Model Terbaik

> 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).

Deteksi Outlier

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)

Pemodelan ARIMA Outlier

> 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.

Uji Asumsi Sisaan Model Outlier

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.

Evaluasi Grafis ARIMA dan ARIMA TC

> 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.

Evaluasi Akurasi Peramalan Model ARIMA dan ARIMAX

> 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.

Pemodelan ARIMA Intervensi

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.

Pemodelan ARIMA Pra-Intervensi

Mengambil data pra-intervensi

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

Uji stasioneritas data

Stasioneritas terhadap ragam

> 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.

Stasioneritas terhadap rata-rata

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.

Proses Differencing

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

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).

Pendugaan Parameter Model ARIMA

> 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.

Uji Asumsi Sisaan

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.

Pemilihan Model Terbaik

> 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.

Peramalan

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

Pemodelan ARIMA Intervensi

Identifikasi Orde B,r,s

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.

Pendugaan Parameter Model Intervensi

> 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.

Pengujian Asumsi Sisaan

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.

Evaluasi Akurasi Peramalan Model ARIMA Intervensi

> 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.

Evaluasi Prediksi Grafis

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.

Plot peramalan

> 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.

KESIMPULAN

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.

SARAN

  1. Model yang telah diperoleh sebaiknya digunakan dengan pembaruan data secara berkala, agar hasil peramalan tetap sesuai dengan kondisi IHSG yang dinamis.

  2. Keberadaan outlier dan intervensi tetap perlu diperhatikan pada analisis selanjutnya karena terbukti berpengaruh terhadap kestabilan model.

  3. Model yang dihasilkan dapat dijadikan acuan awal, namun tetap terbuka untuk pengembangan lebih lanjut sesuai kebutuhan analisis.