Impor library yang dibutuhkan

library(tseries)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(FSA)
## ## FSA v0.9.6. See citation('FSA') if used in publication.
## ## Run fishR() for related website and fishR('IFAR') for related book.
library(FinTS)
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
library(tseries)
library(TSA)
## 
## Attaching package: 'TSA'
## The following objects are masked from 'package:stats':
## 
##     acf, arima
## The following object is masked from 'package:utils':
## 
##     tar
library(lmtest)
library(forecast)
## Registered S3 methods overwritten by 'forecast':
##   method       from
##   fitted.Arima TSA 
##   plot.Arima   TSA
## 
## Attaching package: 'forecast'
## The following object is masked from 'package:FinTS':
## 
##     Acf
library(MLmetrics)
## 
## Attaching package: 'MLmetrics'
## The following object is masked from 'package:base':
## 
##     Recall
library(xts)
library(readxl)
library(ggplot2)
library(ggrepel)
library(MASS)
library(tsoutliers)

Impor Data yang Dibutuhkan

Indeks Harga Saham Gabungan (IHSG) merupakan salah satu indeks pasar saham yang digunakan oleh Bursa Efek Indonesia. Setiap hari IHSG mengalami fluktuasi secara tidak pasti dan menjadikan kegiatan perdagangan saham beresiko tinggi. Fluktuasi yang tinggi pada data IHSG kemungkinan besar akan memiliki nilai pencilan. Pada beberapa hari terakhir, terdapat kebijakan pemerintah yang ramai dan menimbulkan sentimen negative sehingga membuat saham-saham di Indonesia menjadi anjlok termasuk IHSG. Kebijakan pemerintah tersebut adalah pengesahan RUU TNI yang disahkan pada tanggal 20 Maret 2025. Semenjak RUU TNI disahkan, nilai IHSG mengalami penurunan dan pada awal bulan April 2025 mengalami penurunan yang sangat tinggi. Berdasarkan karakteristik dari data IHSG yang selalu mengalami perubahan perlu dilakukan peramalan. Peramalan pada data close price IHSG dapat membantu investor dalam mengambil keputusan dalam berinvestasi.

# Impor data
ihsg = read_excel("Data IHSG.xlsx")
head(ihsg)
## # A tibble: 6 × 3
##      No Tanggal             `Harga Saham`
##   <dbl> <dttm>                      <dbl>
## 1     1 2024-01-02 00:00:00         7324.
## 2     2 2024-01-03 00:00:00         7279.
## 3     3 2024-01-04 00:00:00         7360.
## 4     4 2024-01-05 00:00:00         7351.
## 5     5 2024-01-08 00:00:00         7284.
## 6     6 2024-01-09 00:00:00         7200.

Eksplorasi Data

Sebelum melakukan analisis deret waktu, langkah awal yang perlu dilakukan adalah melakukan eksplorasi data deret waktu untuk mengetahui pola dari data deret waktu tersebut.

# Mendefinisikan variabel
saham <- as.numeric(ihsg$`Harga Saham`)
tanggal <- as.Date(ihsg$Tanggal)
data.saham <- data.frame(tanggal, saham)
data.saham
##        tanggal   saham
## 1   2024-01-02 7323.59
## 2   2024-01-03 7279.09
## 3   2024-01-04 7359.76
## 4   2024-01-05 7350.62
## 5   2024-01-08 7283.58
## 6   2024-01-09 7200.20
## 7   2024-01-10 7227.30
## 8   2024-01-11 7219.96
## 9   2024-01-12 7241.14
## 10  2024-01-15 7224.00
## 11  2024-01-16 7242.79
## 12  2024-01-17 7200.63
## 13  2024-01-18 7252.97
## 14  2024-01-19 7227.40
## 15  2024-01-22 7247.93
## 16  2024-01-23 7256.23
## 17  2024-01-24 7227.82
## 18  2024-01-25 7178.04
## 19  2024-01-26 7137.09
## 20  2024-01-29 7157.17
## 21  2024-01-30 7192.22
## 22  2024-01-31 7207.94
## 23  2024-02-01 7201.70
## 24  2024-02-02 7238.79
## 25  2024-02-05 7198.62
## 26  2024-02-06 7247.41
## 27  2024-02-07 7235.15
## 28  2024-02-12 7297.67
## 29  2024-02-13 7209.74
## 30  2024-02-15 7303.28
## 31  2024-02-16 7335.54
## 32  2024-02-19 7296.70
## 33  2024-02-20 7352.60
## 34  2024-02-21 7349.02
## 35  2024-02-22 7339.64
## 36  2024-02-23 7295.10
## 37  2024-02-26 7283.82
## 38  2024-02-27 7285.32
## 39  2024-02-28 7328.64
## 40  2024-02-29 7316.11
## 41  2024-03-01 7311.91
## 42  2024-03-04 7276.75
## 43  2024-03-05 7247.46
## 44  2024-03-06 7329.80
## 45  2024-03-07 7373.96
## 46  2024-03-08 7381.91
## 47  2024-03-13 7421.21
## 48  2024-03-14 7433.31
## 49  2024-03-15 7328.05
## 50  2024-03-18 7302.45
## 51  2024-03-19 7336.75
## 52  2024-03-20 7331.13
## 53  2024-03-21 7338.35
## 54  2024-03-22 7350.15
## 55  2024-03-25 7377.76
## 56  2024-03-26 7365.66
## 57  2024-03-27 7310.09
## 58  2024-03-28 7288.81
## 59  2024-04-01 7205.06
## 60  2024-04-02 7236.98
## 61  2024-04-03 7166.84
## 62  2024-04-04 7254.40
## 63  2024-04-05 7286.88
## 64  2024-04-16 7164.81
## 65  2024-04-17 7130.84
## 66  2024-04-18 7166.81
## 67  2024-04-19 7087.32
## 68  2024-04-22 7073.82
## 69  2024-04-23 7110.81
## 70  2024-04-24 7174.53
## 71  2024-04-25 7155.29
## 72  2024-04-26 7036.08
## 73  2024-04-29 7155.78
## 74  2024-04-30 7234.20
## 75  2024-05-01 7234.20
## 76  2024-05-02 7117.42
## 77  2024-05-03 7134.72
## 78  2024-05-06 7135.89
## 79  2024-05-07 7123.61
## 80  2024-05-08 7088.79
## 81  2024-05-13 7099.26
## 82  2024-05-14 7083.76
## 83  2024-05-15 7179.83
## 84  2024-05-16 7246.70
## 85  2024-05-17 7317.24
## 86  2024-05-20 7266.69
## 87  2024-05-21 7186.04
## 88  2024-05-22 7222.38
## 89  2024-05-27 7176.42
## 90  2024-05-28 7253.63
## 91  2024-05-29 7140.23
## 92  2024-05-30 7034.14
## 93  2024-05-31 6970.74
## 94  2024-06-03 7036.19
## 95  2024-06-04 7099.31
## 96  2024-06-05 6947.67
## 97  2024-06-06 6974.90
## 98  2024-06-07 6897.95
## 99  2024-06-10 6921.55
## 100 2024-06-11 6855.69
## 101 2024-06-12 6850.10
## 102 2024-06-13 6831.56
## 103 2024-06-14 6734.83
## 104 2024-06-19 6726.92
## 105 2024-06-20 6819.32
## 106 2024-06-21 6879.98
## 107 2024-06-24 6889.17
## 108 2024-06-25 6882.70
## 109 2024-06-26 6905.64
## 110 2024-06-27 6967.95
## 111 2024-06-28 7063.58
## 112 2024-07-01 7139.63
## 113 2024-07-02 7125.14
## 114 2024-07-03 7196.75
## 115 2024-07-04 7220.89
## 116 2024-07-05 7253.37
## 117 2024-07-08 7250.98
## 118 2024-07-09 7269.80
## 119 2024-07-10 7287.04
## 120 2024-07-11 7300.41
## 121 2024-07-12 7327.58
## 122 2024-07-15 7278.86
## 123 2024-07-16 7224.29
## 124 2024-07-17 7224.22
## 125 2024-07-18 7321.07
## 126 2024-07-19 7294.50
## 127 2024-07-22 7321.98
## 128 2024-07-23 7313.86
## 129 2024-07-24 7262.76
## 130 2024-07-25 7240.28
## 131 2024-07-26 7288.17
## 132 2024-07-29 7288.90
## 133 2024-07-30 7241.86
## 134 2024-07-31 7255.76
## 135 2024-08-01 7325.98
## 136 2024-08-02 7308.12
## 137 2024-08-05 7059.65
## 138 2024-08-06 7129.21
## 139 2024-08-07 7212.13
## 140 2024-08-08 7195.12
## 141 2024-08-09 7257.00
## 142 2024-08-12 7297.63
## 143 2024-08-13 7356.64
## 144 2024-08-14 7436.04
## 145 2024-08-15 7409.50
## 146 2024-08-16 7432.09
## 147 2024-08-19 7466.83
## 148 2024-08-20 7533.98
## 149 2024-08-21 7554.59
## 150 2024-08-22 7488.68
## 151 2024-08-23 7544.30
## 152 2024-08-26 7606.19
## 153 2024-08-27 7597.88
## 154 2024-08-28 7658.88
## 155 2024-08-29 7627.60
## 156 2024-08-30 7670.73
## 157 2024-09-02 7694.53
## 158 2024-09-03 7616.52
## 159 2024-09-04 7672.90
## 160 2024-09-05 7681.04
## 161 2024-09-06 7721.85
## 162 2024-09-09 7702.74
## 163 2024-09-10 7761.39
## 164 2024-09-11 7760.96
## 165 2024-09-12 7798.15
## 166 2024-09-13 7812.13
## 167 2024-09-17 7831.78
## 168 2024-09-18 7829.13
## 169 2024-09-19 7905.39
## 170 2024-09-20 7743.00
## 171 2024-09-23 7775.73
## 172 2024-09-24 7778.49
## 173 2024-09-25 7740.90
## 174 2024-09-26 7744.52
## 175 2024-09-27 7696.92
## 176 2024-09-30 7527.93
## 177 2024-10-01 7642.13
## 178 2024-10-02 7563.26
## 179 2024-10-03 7543.83
## 180 2024-10-04 7496.09
## 181 2024-10-07 7504.13
## 182 2024-10-08 7557.14
## 183 2024-10-09 7501.29
## 184 2024-10-10 7480.08
## 185 2024-10-11 7520.60
## 186 2024-10-14 7559.65
## 187 2024-10-15 7626.95
## 188 2024-10-16 7648.94
## 189 2024-10-17 7735.04
## 190 2024-10-18 7760.06
## 191 2024-10-21 7772.60
## 192 2024-10-22 7788.98
## 193 2024-10-23 7787.56
## 194 2024-10-24 7716.55
## 195 2024-10-25 7694.66
## 196 2024-10-28 7634.63
## 197 2024-10-29 7606.60
## 198 2024-10-30 7569.85
## 199 2024-10-31 7574.02
## 200 2024-11-01 7505.26
## 201 2024-11-04 7479.50
## 202 2024-11-05 7491.93
## 203 2024-11-06 7383.87
## 204 2024-11-07 7243.86
## 205 2024-11-08 7287.19
## 206 2024-11-11 7266.46
## 207 2024-11-12 7321.99
## 208 2024-11-13 7308.67
## 209 2024-11-14 7214.56
## 210 2024-11-15 7161.26
## 211 2024-11-18 7134.28
## 212 2024-11-19 7195.71
## 213 2024-11-20 7180.33
## 214 2024-11-21 7140.91
## 215 2024-11-22 7195.56
## 216 2024-11-25 7314.11
## 217 2024-11-26 7245.89
## 218 2024-11-28 7200.16
## 219 2024-11-29 7114.27
## 220 2024-12-02 7046.99
## 221 2024-12-03 7196.02
## 222 2024-12-04 7326.76
## 223 2024-12-05 7313.31
## 224 2024-12-06 7382.79
## 225 2024-12-09 7437.73
## 226 2024-12-10 7453.29
## 227 2024-12-11 7464.75
## 228 2024-12-12 7394.24
## 229 2024-12-13 7324.79
## 230 2024-12-16 7258.63
## 231 2024-12-17 7157.73
## 232 2024-12-18 7107.88
## 233 2024-12-19 6977.24
## 234 2024-12-20 6983.87
## 235 2024-12-23 7096.44
## 236 2024-12-24 7065.75
## 237 2024-12-27 7036.57
## 238 2024-12-30 7079.90
## 239 2025-01-02 7163.21
## 240 2025-01-03 7164.43
## 241 2025-01-06 7080.47
## 242 2025-01-07 7083.28
## 243 2025-01-08 7080.35
## 244 2025-01-09 7064.59
## 245 2025-01-10 7088.87
## 246 2025-01-13 7016.88
## 247 2025-01-14 6956.67
## 248 2025-01-15 7079.56
## 249 2025-01-16 7107.52
## 250 2025-01-17 7154.66
## 251 2025-01-20 7170.74
## 252 2025-01-21 7181.82
## 253 2025-01-22 7257.13
## 254 2025-01-23 7232.64
## 255 2025-01-24 7166.06
## 256 2025-01-30 7073.48
## 257 2025-01-31 7109.20
## 258 2025-02-03 7030.06
## 259 2025-02-04 7073.46
## 260 2025-02-05 7024.23
## 261 2025-02-06 6875.54
## 262 2025-02-07 6742.58
## 263 2025-02-10 6648.14
## 264 2025-02-11 6531.99
## 265 2025-02-12 6645.78
## 266 2025-02-13 6613.57
## 267 2025-02-14 6638.46
## 268 2025-02-17 6830.88
## 269 2025-02-18 6873.55
## 270 2025-02-19 6794.87
## 271 2025-02-20 6788.04
## 272 2025-02-21 6803.00
## 273 2025-02-24 6749.60
## 274 2025-02-25 6587.09
## 275 2025-02-26 6606.18
## 276 2025-02-27 6485.45
## 277 2025-02-28 6270.60
## 278 2025-03-03 6519.66
## 279 2025-03-04 6380.40
## 280 2025-03-05 6531.40
## 281 2025-03-06 6617.85
## 282 2025-03-07 6636.00
## 283 2025-03-10 6598.21
## 284 2025-03-11 6545.85
## 285 2025-03-12 6665.04
## 286 2025-03-13 6647.42
## 287 2025-03-14 6515.63
## 288 2025-03-17 6471.95
## 289 2025-03-18 6223.39
## 290 2025-03-19 6311.66
## 291 2025-03-20 6381.67
## 292 2025-03-21 6258.18
## 293 2025-03-24 6161.22
## 294 2025-03-25 6235.62
## 295 2025-03-26 6472.36
## 296 2025-03-27 6510.62
## 297 2025-04-08 5996.14
## 298 2025-04-09 5972.56
plot(tanggal, saham, type = "o", col = "blue", lwd = 2)

Pada plot deret waktu tersebut terlihat bahwa pada 19 September 2024 memiliki harga saham tertinggi, namun setelahnya mengalami penurunan yang cukup signifikan. Dengan demikian, dapat dinyatakan bahwa terdapat intervensi pada periode tersebut sehingga dapat menggunakan pemodelan ARIMA Intervensi serta dapat juga dilakukan pemodelan ARIMA Outlier. Pemodelan ARIMA intervensi dilakukan dengan melakukan pemodelan ARIMA pada data pra intervensi yaitu data pada 2 Januari 2024 hingga 9 April 2025.

plot(tanggal, saham, type = "o", col = "blue", lwd = 2)
abline(v = tanggal[230], col = "red", lty = 3, lwd = 1.5)

# Pemodelan ARIMA Outlier Pemodelan ARIMA Outlier memiliki tahapan yang sama dengan ARIMA pada umumnya namun perbedaannya adalah terdapat pendeteksian Additive Outlier dan Innovative Outlier.

Uji Stasioneritas Data

Pemeriksaan stasioneritas terhadap ragam

saham.ujiragam <- min(saham)+1
BoxCox.lambda(saham.ujiragam)
## [1] 1

Hasil dari pemeriksaan stasioneritas terhadap ragam menggunakan Box-cox dapat diketahui bahwa nilai \(\lambda=1\) sehingga dapat dinyatakan bahwa data IHSG stasioner terhadap ragam.

Stasioneritas terhadap rata-rata

Data deret waktu yang digunakan untuk pemodelan ARIMA harus stasioner terhadap rata-rata. Pengujian hipotesis stasioneritas terhadap rata-rata dapat menggunakan statistik uji Dickey Fuller dengan hipotesis sebagai berikut.
\(H_0\) : \(\phi=1\) (data tidak stasioner terhadap rata-rata) vs
\(H_1\) : \(\phi<1\) (data stasioner terhadap rata-rata)
Taraf nyata: \(\alpha=0,05\)
Daerah penolakan: apabila nilai-p kurang dari 0,05 maka \(H_0\) ditolak yang artinya data stasioner terhadap rata-rata

adf.test(saham, k=1)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  saham
## Dickey-Fuller = -0.78673, Lag order = 1, p-value = 0.9621
## alternative hypothesis: stationary

Hasil uji Dickey Fuller pada data IHSG didapatkan nilai-p sebesar \(0,9621\) yang di mana lebih dari \(\alpha=0,05\) sehingga menghasilkan keputusan terima \(H_0\). Dengan demikian, dapat dinyatakan bahwa data IHSG belum stasioner terhadap rata-rata.

Pembedaan Pertama

saham1=diff(saham,diference=1)
adf.test(saham1)
## Warning in adf.test(saham1): p-value smaller than printed p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  saham1
## Dickey-Fuller = -7.5443, Lag order = 6, p-value = 0.01
## alternative hypothesis: stationary

Hasil uji Dickey Fuller pada data IHSG didapatkan nilai-p sebesar \(0,01\) yang di mana lebih dari \(\alpha=0,05\) sehingga menghasilkan keputusan tolak \(H_0\). Dengan demikian, dapat dinyatakan bahwa data IHSG hasil pembedaan pertama telah stasioner terhadap rata-rata.

Identifikasi Model ARIMA

Identifikasi model ARIMA dapat menggunakan plot ACF dan PACF. Nilai ACF dan PACF bertujuan untuk memilih orde \(p\) dan \(q\) pada model ARIMA. Pemeriksaan ACF dan PACF dilakukan pada data yang telah stasioner.

acf(saham1)

pacf(saham1)

Berdasarkan nilai pada plot ACF dan PACF, dapat diketahui bahwa ACF dan PACF signifikan pada lag ke-2, 10, dan 19. Pada kasus ACF dan PACF yang hanya signifikan pada lag tertentu dapat menggunakan model ARIMA restricted. Model ARIMA restricted adalah model ARIMA yang menduga parameter untuk lag tertentu saja. Pada plot ACF dan PACF data IHSG hasil pembedaan dapat diketahui model ARIMA yang mungkin adalah model ARIMA([2,10,19],1,0) dan ARIMA(0,1,[2,10,19]).

Pendugaan Parameter Model ARIMA

arima.1 <- arima(saham1, order = c(10,0,0), fixed=c(0,NA,rep(0,7),NA, NA),method = 'ML', include.mean = TRUE)
## Warning in stats::arima(x = x, order = order, seasonal = seasonal, xreg = xreg,
## : some AR parameters were fixed: setting transform.pars = FALSE
coeftest(arima.1)
## 
## z test of coefficients:
## 
##            Estimate Std. Error z value Pr(>|z|)   
## ar2       -0.127924   0.061816 -2.0694 0.038504 * 
## ar10       0.181021   0.064725  2.7968 0.005162 **
## intercept -4.635100   4.516996 -1.0261 0.304822   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
arima.2 <- arima(saham1, order = c(0,0,10),fixed=c(0,NA,rep(0,7),NA, NA),method = 'ML', include.mean = TRUE)
coeftest(arima.2)
## 
## z test of coefficients:
## 
##            Estimate Std. Error z value Pr(>|z|)  
## ma2       -0.098004   0.060638 -1.6162  0.10605  
## ma10       0.163229   0.067087  2.4331  0.01497 *
## intercept -4.682361   4.577079 -1.0230  0.30631  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Berdasarkan hasil pendugaan parameter dari kedua model ARIMA tersebut, dapat diketahui bahwa parameter yang signifikan hanya pada model ARIMA(10,1,0) dan ma10 sehingga model tersebut dapat digunakan.

Uji Asumsi Sisaan

Uji Non-Autokorelasi

Langkah selanjutnya adalah melakukan pengujian asumsi sisaan yaitu autokorelasi sisaan dan normalitas sisaan. Hipotesis untuk uji autokorelasi sisaan
\(H_0\) : \(\rho_1=\rho_2=...=\rho_k=0\) (tidak terdapat autokorelasi pada sisaan) vs
\(H_1\) : minimal terdapat satu \(\rho_k \neq 0\) ( terdapat autokorelasi pada sisaan)
Taraf nyata: 0,05

resid.arima1 <- residuals(arima.1)
resid.arima2 <- residuals(arima.2)

Box.test(resid.arima1, lag=2, type = c('Ljung-Box'))
## 
##  Box-Ljung test
## 
## data:  resid.arima1
## X-squared = 0.19574, df = 2, p-value = 0.9068
Box.test(resid.arima2, lag=2, type = c('Ljung-Box'))
## 
##  Box-Ljung test
## 
## data:  resid.arima2
## X-squared = 0.12312, df = 2, p-value = 0.9403

Berasarkan hasil uji autokorelasi sisaan model tentatif dengan Ljung-Box memiliki nilai-p \(>0.05\) sehingga \(H_0\) diterima. Dengan demikian, dapat dinyatakan bahwa tidak terdapat autokorelasi sisaan sehingga dapat dilanjutkan uji asumsi selanjutnya.

Uji Normalitas

Uji normalitas sisaan menggunakan uji Jarque Bera dengan hipotesis sebagai berikut.
\(H_0\) : \(\epsilon_i\sim N(0, \sigma_e^{2})\) (sisaan menyebar normal) vs
\(H_1\) : \(\varepsilon\not\sim N(0, \sigma_e^2)\) (sisaan tidak menyebar normal) Taraf nyata: \(0,05\)

jarque.bera.test(resid.arima1)
## 
##  Jarque Bera Test
## 
## data:  resid.arima1
## X-squared = 341.02, df = 2, p-value < 2.2e-16
jarque.bera.test(resid.arima2)
## 
##  Jarque Bera Test
## 
## data:  resid.arima2
## X-squared = 444.86, df = 2, p-value < 2.2e-16

Berasarkan hasil uji normalitas sisaan model tentatif ARIMA dengan Jarque Bera dapat diperoleh informasi bahwa nilai-p yang didapatkan \(<0,05\) sehingga \(H_0\) ditolak. Dengan demikian, dapat dinyatakan bahwa residual tidak menyebar normal. Akan tetapi, pada pemodelan deret waktu asumsi normalitas tidak wajib terpenuhi, sehingga model tetap layak digunakan. Berdasarkan hasil uji asumsi sisaan model, dapat diperoleh informasi bahwa kedua model ARIMA layak untuk digunakan. Setelah seluruh asumsi terpenuhi, maka dapat dilanjutkan pemilihan model terbaik dengan AIC.

Pemilihan Model Terbaik

arima.1$aic
## [1] 3406.371
arima.2$aic
## [1] 3408.499

Berdasarhan nilai AIC dari kedua model tentatif, dapat diperoleh informasi bahwa model dengan nilai AIC terkecil adalah ARIMA(10,1,0).

Deteksi Outlier

Berdasarkan plot data deret waktu IHSG, dapat diperoleh informasi bahwa terdapat titik ekstrim pada data sehingga pada saat dilakukan pemodelan ARIMA akan terdapat outlier. Untuk mendeteksi outlier pada model ARIMA yang terpilih dapat menggunakan deteksi Additive Outlier, Innovative Outlier, Level Shif.

prediksi.arima <- saham1-resid.arima1
outlier <- tso(prediksi.arima, types = c('AO','IO','IS','TC'))
## Warning in locate.outliers.iloop(resid = resid, pars = pars, cval = cval, :
## stopped when 'maxit.iloop' was reached
print(outlier)
## Series: prediksi.arima 
## Regression with ARIMA(0,0,0) errors 
## 
## Coefficients:
##       intercept    TC230    IO277     AO286    TC287     IO296
##         -5.2425  38.3186  51.1298  -53.2861  38.0540  -54.8236
## s.e.     0.8262  10.0246  13.9233   13.9233  10.0247   13.9260
## 
## sigma^2 = 197.2:  log likelihood = -1203.07
## AIC=2420.14   AICc=2420.53   BIC=2446
## 
## Outliers:
##   type ind time coefhat  tstat
## 1   TC 230  230   38.32  3.822
## 2   IO 277  277   51.13  3.672
## 3   AO 286  286  -53.29 -3.827
## 4   TC 287  287   38.05  3.796
## 5   IO 296  296  -54.82 -3.937

Pada hasil deteksi Additive Outlier, Innovative Outlier, Level Shift, dan Transitory Change dapat diketahui bahwa terdapat tipe outlier Transitory Change pada periode ke-230 dan ke-287, Inonovative Outlier pada periode ke-277, dan Additive Outlier pada periode ke-286 pada data IHSG. Berdasarkan hasil deteksi outlier tersebut, dapat dinyatakan bahwa model ARIMA yang sesuai adalah model ARIMA Transitory Change. Untuk efek dari outlier TC dapat melihat plot berikut.

plot(outlier$effects)

## Pemodelan ARIMA Outlier

xreg.outlier <- outlier$effects
xreg.outlier
## Time Series:
## Start = 1 
## End = 297 
## Frequency = 1 
##   [1]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
##   [6]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
##  [11]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
##  [16]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
##  [21]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
##  [26]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
##  [31]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
##  [36]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
##  [41]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
##  [46]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
##  [51]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
##  [56]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
##  [61]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
##  [66]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
##  [71]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
##  [76]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
##  [81]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
##  [86]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
##  [91]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
##  [96]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
## [101]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
## [106]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
## [111]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
## [116]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
## [121]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
## [126]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
## [131]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
## [136]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
## [141]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
## [146]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
## [151]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
## [156]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
## [161]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
## [166]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
## [171]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
## [176]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
## [181]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
## [186]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
## [191]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
## [196]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
## [201]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
## [206]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
## [211]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
## [216]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
## [221]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
## [226]  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  3.831858e+01
## [231]  2.682300e+01  1.877610e+01  1.314327e+01  9.200290e+00  6.440203e+00
## [236]  4.508142e+00  3.155700e+00  2.208990e+00  1.546293e+00  1.082405e+00
## [241]  7.576835e-01  5.303784e-01  3.712649e-01  2.598854e-01  1.819198e-01
## [246]  1.273439e-01  8.914070e-02  6.239849e-02  4.367894e-02  3.057526e-02
## [251]  2.140268e-02  1.498188e-02  1.048731e-02  7.341120e-03  5.138784e-03
## [256]  3.597149e-03  2.518004e-03  1.762603e-03  1.233822e-03  8.636754e-04
## [261]  6.045728e-04  4.232010e-04  2.962407e-04  2.073685e-04  1.451579e-04
## [266]  1.016106e-04  7.112739e-05  4.978917e-05  3.485242e-05  2.439669e-05
## [271]  1.707769e-05  1.195438e-05  8.368066e-06  5.857646e-06  4.100352e-06
## [276]  2.870247e-06  5.112985e+01  1.406421e-06  9.844946e-07  6.891462e-07
## [281]  4.824023e-07  3.376816e-07  2.363771e-07  1.654640e-07  1.158248e-07
## [286] -5.328612e+01  3.805404e+01  2.663783e+01  1.864648e+01  1.305254e+01
## [291]  9.136776e+00  6.395743e+00  4.477020e+00  3.133914e+00  2.193740e+00
## [296] -5.328799e+01  1.074933e+00
arima.tc <- arima(saham1, order=c(10,0,0), xreg = xreg.outlier,  method = 'ML', include.mean=TRUE)
coeftest(arima.tc)
## 
## z test of coefficients:
## 
##            Estimate Std. Error z value Pr(>|z|)   
## ar1        0.056910   0.062524  0.9102  0.36271   
## ar2       -0.105171   0.060931 -1.7261  0.08434 . 
## ar3        0.065627   0.060701  1.0812  0.27963   
## ar4        0.071309   0.060744  1.1739  0.24042   
## ar5        0.097172   0.060764  1.5992  0.10978   
## ar6       -0.120182   0.061077 -1.9677  0.04910 * 
## ar7       -0.140967   0.061995 -2.2739  0.02297 * 
## ar8       -0.017942   0.061826 -0.2902  0.77166   
## ar9       -0.037463   0.062142 -0.6029  0.54660   
## ar10       0.103632   0.068696  1.5086  0.13141   
## intercept -5.921490   4.060254 -1.4584  0.14473   
## xreg       2.225136   0.746612  2.9803  0.00288 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Berdasarkan hasil pemodelan ARIMA Outlier dapat diperoleh informasi bahwa terdapat beberapa parameter yang tidak signifikan signifikan namun model masih dapat digunakan karena terdapat efek outlier. ## Uji Asumsi Sisaan Model Outlier Langkah selanjutnya adalah melakukan pengujian asumsi sisaan yaitu autokorelasi sisaan dan normalitas sisaan. Hipotesis untuk uji autokorelasi sisaan
\(H_0\) : \(\rho_1=\rho_2=...=\rho_k=0\) (tidak terdapat autokorelasi pada sisaan) vs
\(H_1\) : minimal terdapat satu \(\rho_k \neq 0\) ( terdapat autokorelasi pada sisaan)
Taraf nyata: 0,05

resid.arimatc <- residuals(arima.tc)
Box.test(resid.arimatc, lag=2, type = c('Ljung-Box'))
## 
##  Box-Ljung test
## 
## data:  resid.arimatc
## X-squared = 0.010725, df = 2, p-value = 0.9947

Berasarkan hasil uji autokorelasi sisaan model ARIMA Outlier dengan Ljung-Box dapat diperoleh informasi bahwa nilai-p yang didapatkan \(>0,05\) sehingga \(H_0\) diterima. Dengan demikian, dapat dinyatakan bahwa tidak terdapat autokorelasi sisaan sehingga dapat dilakukan ke tahap selanjutnya yaitu uji normalitas sisaan. Uji normalitas sisaan menggunakan uji Jarque Bera dengan hipotesis sebagai berikut.

\(H_0\) : \(\epsilon_i\sim N(0, \sigma_e^{2})\) (sisaan menyebar normal) vs
\(H_1\) : \(\varepsilon\not\sim N(0, \sigma_e^2)\) (sisaan tidak menyebar normal)
Taraf nyata: 0,05

jarque.bera.test(resid.arimatc)
## 
##  Jarque Bera Test
## 
## data:  resid.arimatc
## X-squared = 95.749, df = 2, p-value < 2.2e-16

Pada hasil uji normalitas sisaan dengan jarque bera,dapat diketahui bahwa nilai-p yang didapatkan dari sisaan kedua model tersebut kurang dari \(0,05\), sehingga menghasilkan keputusan tolak \(H_0\). Dengan demikian, dapat dinyatakan bahwa sisaan model tentatif ARIMA tidak menyebar normal. Akan tetapi, pada pemodelan deret waktu asumsi normalitas tidak wajib terpenuhi, sehingga model tetap layak digunakan. Berdasarkan hasil uji asumsi sisaan model, dapat diperoleh informasi bahwa kedua model ARIMA layak untuk digunakan.

Evaluasi Grafis ARIMA dan ARIMA Outlier

tanggal.diff <- tanggal[-1]
prediksi.arimatc <- saham1-resid.arimatc
plot(tanggal.diff, saham1, type = "l", col = "blue", lwd = 2)
lines(tanggal.diff, prediksi.arima, type = "o", col = "red", lwd = 2)
lines(tanggal.diff, prediksi.arimatc, type = "o", col = "green", lwd = 2)

Berdasarkan hasil evaluasi grafis, dapat diperoleh informasi bahwa model ARIMA Outlier memiliki kemampuan yang lebih baik dalam mengikuti pola data IHSG sesungguhnya yang terdapat fluktuasi ekstrim.

Pemodelan ARIMA Intervensi

Nilai ekstrim pada data IHSG, dapat dilakukan dengan model intervensi. Nama intervensi pada kasus tersebut adalah intervensi pasca RUU TNI, yang di mana pada waktu tersebut RUU TNI telah disahkan dan menimbulkan sentimen negatif sehingga harga saham anjlok.

Pemodelan ARIMA Pra-Intervensi

Mengambil data pra-intervensi

Intervensi terjadi pada bulan April 2025, namun penurunan yang signifikan telah ditemukan pada akhir Februari 2025 hingga April 2025, sehingga intervensi dimulai dari Februari 2025.

saham.pra.intervensi <- saham[1:229]
saham.pra.intervensi
##   [1] 7323.59 7279.09 7359.76 7350.62 7283.58 7200.20 7227.30 7219.96 7241.14
##  [10] 7224.00 7242.79 7200.63 7252.97 7227.40 7247.93 7256.23 7227.82 7178.04
##  [19] 7137.09 7157.17 7192.22 7207.94 7201.70 7238.79 7198.62 7247.41 7235.15
##  [28] 7297.67 7209.74 7303.28 7335.54 7296.70 7352.60 7349.02 7339.64 7295.10
##  [37] 7283.82 7285.32 7328.64 7316.11 7311.91 7276.75 7247.46 7329.80 7373.96
##  [46] 7381.91 7421.21 7433.31 7328.05 7302.45 7336.75 7331.13 7338.35 7350.15
##  [55] 7377.76 7365.66 7310.09 7288.81 7205.06 7236.98 7166.84 7254.40 7286.88
##  [64] 7164.81 7130.84 7166.81 7087.32 7073.82 7110.81 7174.53 7155.29 7036.08
##  [73] 7155.78 7234.20 7234.20 7117.42 7134.72 7135.89 7123.61 7088.79 7099.26
##  [82] 7083.76 7179.83 7246.70 7317.24 7266.69 7186.04 7222.38 7176.42 7253.63
##  [91] 7140.23 7034.14 6970.74 7036.19 7099.31 6947.67 6974.90 6897.95 6921.55
## [100] 6855.69 6850.10 6831.56 6734.83 6726.92 6819.32 6879.98 6889.17 6882.70
## [109] 6905.64 6967.95 7063.58 7139.63 7125.14 7196.75 7220.89 7253.37 7250.98
## [118] 7269.80 7287.04 7300.41 7327.58 7278.86 7224.29 7224.22 7321.07 7294.50
## [127] 7321.98 7313.86 7262.76 7240.28 7288.17 7288.90 7241.86 7255.76 7325.98
## [136] 7308.12 7059.65 7129.21 7212.13 7195.12 7257.00 7297.63 7356.64 7436.04
## [145] 7409.50 7432.09 7466.83 7533.98 7554.59 7488.68 7544.30 7606.19 7597.88
## [154] 7658.88 7627.60 7670.73 7694.53 7616.52 7672.90 7681.04 7721.85 7702.74
## [163] 7761.39 7760.96 7798.15 7812.13 7831.78 7829.13 7905.39 7743.00 7775.73
## [172] 7778.49 7740.90 7744.52 7696.92 7527.93 7642.13 7563.26 7543.83 7496.09
## [181] 7504.13 7557.14 7501.29 7480.08 7520.60 7559.65 7626.95 7648.94 7735.04
## [190] 7760.06 7772.60 7788.98 7787.56 7716.55 7694.66 7634.63 7606.60 7569.85
## [199] 7574.02 7505.26 7479.50 7491.93 7383.87 7243.86 7287.19 7266.46 7321.99
## [208] 7308.67 7214.56 7161.26 7134.28 7195.71 7180.33 7140.91 7195.56 7314.11
## [217] 7245.89 7200.16 7114.27 7046.99 7196.02 7326.76 7313.31 7382.79 7437.73
## [226] 7453.29 7464.75 7394.24 7324.79

Uji stasioneritas data

Stasioneritas terhadap ragam

BoxCox.lambda(saham.pra.intervensi)
## [1] 1.999924

Berdasarkan hasil estimasi nilai lambda menggunakan metode Box-Cox, diperoleh nilai lambda sebesar \(1.999924\). Karena nilai lambda tersebut sangat mendekati 2, maka dapat disimpulkan bahwa data telah memenuhi asumsi kestasioneran terhadap ragam (homoskedastisitas). Oleh karena itu, transformasi Box-Cox tidak diperlukan sebelum dilakukan pemodelan lebih lanjut.

Stasioneritas terhadap rata-rata

Data deret waktu yang digunakan untuk pemodelan ARIMA harus stasioner terhadap rata-rata. Pengujian hipotesis stasioneritas terhadap rata-rata dapat menggunakan statistik uji Dickey Fuller dengan hipotesis sebagai berikut.
\(H_0\) : \(\phi=1\) (data tidak stasioner terhadap rata-rata) vs
\(H_1\) : \(\phi<1\) (data stasioner terhadap rata-rata)
Taraf nyata: \(\alpha=0,05\)
Daerah penolakan: apabila nilai-p kurang dari 0,05 maka \(H_0\) ditolak yang artinya data stasioner terhadap rata-rata

adf.test(saham.pra.intervensi)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  saham.pra.intervensi
## Dickey-Fuller = -2.3316, Lag order = 6, p-value = 0.4366
## alternative hypothesis: stationary

Hasil uji Dickey Fuller pada data didapatkan nilai-p sebesar \(0,4366\) yang di mana lebih dari \(\alpha=0,05\) sehingga menghasilkan keputusan terima \(H_0\). Dengan demikian, dapat dinyatakan bahwa data IHSG pra intervensi belum stasioner terhadap rata-rata sehingga perlu dilakukan pembedaan.

# Differencing
saham.pra.intervensi1=diff(saham.pra.intervensi, difference=1)
saham.pra.intervensi1
##   [1]  -44.50   80.67   -9.14  -67.04  -83.38   27.10   -7.34   21.18  -17.14
##  [10]   18.79  -42.16   52.34  -25.57   20.53    8.30  -28.41  -49.78  -40.95
##  [19]   20.08   35.05   15.72   -6.24   37.09  -40.17   48.79  -12.26   62.52
##  [28]  -87.93   93.54   32.26  -38.84   55.90   -3.58   -9.38  -44.54  -11.28
##  [37]    1.50   43.32  -12.53   -4.20  -35.16  -29.29   82.34   44.16    7.95
##  [46]   39.30   12.10 -105.26  -25.60   34.30   -5.62    7.22   11.80   27.61
##  [55]  -12.10  -55.57  -21.28  -83.75   31.92  -70.14   87.56   32.48 -122.07
##  [64]  -33.97   35.97  -79.49  -13.50   36.99   63.72  -19.24 -119.21  119.70
##  [73]   78.42    0.00 -116.78   17.30    1.17  -12.28  -34.82   10.47  -15.50
##  [82]   96.07   66.87   70.54  -50.55  -80.65   36.34  -45.96   77.21 -113.40
##  [91] -106.09  -63.40   65.45   63.12 -151.64   27.23  -76.95   23.60  -65.86
## [100]   -5.59  -18.54  -96.73   -7.91   92.40   60.66    9.19   -6.47   22.94
## [109]   62.31   95.63   76.05  -14.49   71.61   24.14   32.48   -2.39   18.82
## [118]   17.24   13.37   27.17  -48.72  -54.57   -0.07   96.85  -26.57   27.48
## [127]   -8.12  -51.10  -22.48   47.89    0.73  -47.04   13.90   70.22  -17.86
## [136] -248.47   69.56   82.92  -17.01   61.88   40.63   59.01   79.40  -26.54
## [145]   22.59   34.74   67.15   20.61  -65.91   55.62   61.89   -8.31   61.00
## [154]  -31.28   43.13   23.80  -78.01   56.38    8.14   40.81  -19.11   58.65
## [163]   -0.43   37.19   13.98   19.65   -2.65   76.26 -162.39   32.73    2.76
## [172]  -37.59    3.62  -47.60 -168.99  114.20  -78.87  -19.43  -47.74    8.04
## [181]   53.01  -55.85  -21.21   40.52   39.05   67.30   21.99   86.10   25.02
## [190]   12.54   16.38   -1.42  -71.01  -21.89  -60.03  -28.03  -36.75    4.17
## [199]  -68.76  -25.76   12.43 -108.06 -140.01   43.33  -20.73   55.53  -13.32
## [208]  -94.11  -53.30  -26.98   61.43  -15.38  -39.42   54.65  118.55  -68.22
## [217]  -45.73  -85.89  -67.28  149.03  130.74  -13.45   69.48   54.94   15.56
## [226]   11.46  -70.51  -69.45
adf.test(saham.pra.intervensi1)
## Warning in adf.test(saham.pra.intervensi1): p-value smaller than printed
## p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  saham.pra.intervensi1
## Dickey-Fuller = -5.1425, Lag order = 6, p-value = 0.01
## alternative hypothesis: stationary

Hasil uji Dickey Fuller pada data hasil pembedaan satu kali didapatkan nilai-p sebesar \(0,01\) yang di mana kurang dari \(\alpha=0,05\) sehingga menghasilkan keputusan terima \(H_0\). Dengan demikian, dapat dinyatakan bahwa data IHSG pra intervensi telah stasioner terhadap rata-rata.

Identifikasi Model ARIMA

Identifikasi model ARIMA dapat menggunakan plot ACF dan PACF. Nilai ACF dan PACF bertujuan untuk memilih orde \(p\) dan \(q\) pada model ARIMA. Pemeriksaan ACF dan PACF dilakukan pada data yang telah stasioner.

acf(saham.pra.intervensi1)

pacf(saham.pra.intervensi1)

Berdasarkan plot tersebut, nilai ACF signifikan pada lag ke-19 sedangkan nilai PACF signifikan pada lag ke-19. Berdasarkan informasi signifikansi lag dan pola ACF dan PACF pada data IHSG pra intervensi, model ARIMA(p,d,q) yang dapat dibentuk adalah ARIMA(0,0,19) dan ARIMA(0,0,[19]).

Pendugaan Parameter Model ARIMA

arima.prainter.1 <- arima(saham.pra.intervensi, order = c(0,1,19), method = 'ML', include.mean = TRUE)
coeftest(arima.prainter.1)
## 
## z test of coefficients:
## 
##        Estimate Std. Error z value Pr(>|z|)  
## ma1  -0.0360730  0.0667580 -0.5404  0.58895  
## ma2  -0.0758220  0.0675553 -1.1224  0.26171  
## ma3  -0.0046332  0.0670340 -0.0691  0.94490  
## ma4   0.1074544  0.0688405  1.5609  0.11854  
## ma5   0.0815686  0.0682967  1.1943  0.23235  
## ma6  -0.0096793  0.0699612 -0.1384  0.88996  
## ma7  -0.0472729  0.0697985 -0.6773  0.49823  
## ma8   0.0970840  0.0691962  1.4030  0.16061  
## ma9   0.0447176  0.0736633  0.6071  0.54382  
## ma10  0.0377283  0.0687803  0.5485  0.58333  
## ma11  0.0241818  0.0752266  0.3215  0.74787  
## ma12 -0.1485417  0.0703859 -2.1104  0.03482 *
## ma13 -0.1157607  0.0793662 -1.4586  0.14468  
## ma14 -0.0265676  0.0685105 -0.3878  0.69817  
## ma15  0.0338110  0.0692274  0.4884  0.62526  
## ma16 -0.0670508  0.0802329 -0.8357  0.40332  
## ma17 -0.0232786  0.0707207 -0.3292  0.74203  
## ma18 -0.0844486  0.0806169 -1.0475  0.29486  
## ma19 -0.2012277  0.0895220 -2.2478  0.02459 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
arima.prainter.2 <- arima(saham.pra.intervensi, order = c(0,1,19), fixed = c(rep(0,18),NA), method = 'ML', include.mean = TRUE)
coeftest(arima.prainter.2)
## 
## z test of coefficients:
## 
##       Estimate Std. Error z value Pr(>|z|)  
## ma19 -0.153811   0.069267 -2.2206  0.02638 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Berdasarkan hasil pendugaan parameter dari kedua model ARIMA tersebut, dapat diketahui bahwa seluruh parameter dari ARIMA(0,1,[19]) signifikan sedangkan pada model ARIMA(0,1,19) hanya dua parameter saja yang signifikan. Dengan demikian, model yang sesuai adalah ARIMA(0,1,[19]).

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

resid.arima.prainter <- residuals(arima.prainter.2)
Box.test(resid.arima.prainter, lag=2, type = c('Ljung-Box'))
## 
##  Box-Ljung test
## 
## data:  resid.arima.prainter
## X-squared = 1.931, df = 2, p-value = 0.3808

Berasarkan hasil uji autokorelasi sisaan model tentatif ARIMA(0,1,19) dengan Ljung-Box dapat diperoleh informasi bahwa nilai-p yang didapatkan \(>0,05\) sehingga \(H_0\) diterima. Dengan demikian, dapat dinyatakan bahwa tidak terdapat autokorelasi sisaan sehingga dapat dilakukan ke tahap selanjutnya yaitu uji normalitas sisaan. Uji normalitas sisaan menggunakan uji Jarque Bera dengan hipotesis sebagai berikut.
\(H_0\) : \(\epsilon_i\sim N(0, \sigma_e^{2})\) (sisaan menyebar normal) vs
\(H_1\) : \(\varepsilon\not\sim\ N(0, \sigma_e^2)\) (sisaan tidak menyebar normal)
Taraf nyata: 0,05

jarque.bera.test(resid.arima.prainter)
## 
##  Jarque Bera Test
## 
## data:  resid.arima.prainter
## X-squared = 19.467, df = 2, p-value = 5.927e-05

Pada hasil uji normalitas sisaan dengan Jarque Bera, dapat diketahui bahwa nilai-p yang didapatkan dari sisaan kedua model tersebut kurang dari \(0,05\), sehingga menghasilkan keputusan tolak \(H_0\). Dengan demikian, dapat dinyatakan bahwa sisaan model tentatif ARIMA menyebar tidak normal. Akan tetapi, pada pemodelan deret waktu asumsi normalitas tidak wajib terpenuhi, sehingga model tetap layak digunakan.

Peramalan

Setelah mendapatkan model ARIMA terbaik pada data praintervensi, langkah selanjutnya adalah melakukan peramalan sepanjang sisa data yaitu data intervensi dan setelahnya. Peramalan dilakukan untuk 69 periode.

peramalan <- forecast(saham.pra.intervensi, model = arima.prainter.2, h=69)
peramalan$mean
## Time Series:
## Start = 230 
## End = 298 
## Frequency = 1 
##  [1] 7328.648 7319.239 7323.455 7330.632 7323.267 7305.952 7317.376 7324.460
##  [9] 7339.273 7349.997 7326.987 7309.488 7314.711 7302.841 7294.636 7290.811
## [17] 7289.136 7302.094 7313.990 7313.990 7313.990 7313.990 7313.990 7313.990
## [25] 7313.990 7313.990 7313.990 7313.990 7313.990 7313.990 7313.990 7313.990
## [33] 7313.990 7313.990 7313.990 7313.990 7313.990 7313.990 7313.990 7313.990
## [41] 7313.990 7313.990 7313.990 7313.990 7313.990 7313.990 7313.990 7313.990
## [49] 7313.990 7313.990 7313.990 7313.990 7313.990 7313.990 7313.990 7313.990
## [57] 7313.990 7313.990 7313.990 7313.990 7313.990 7313.990 7313.990 7313.990
## [65] 7313.990 7313.990 7313.990 7313.990 7313.990

Tahapan setelah melakukan peramalan sepanjang sisa periode yang ada pada data penelitian, langkah selanjutnya adalah menghitung sisaan dari model peramalan dengan persamaan berikut. \[e_t = saham_t - \hat {saham_t}\]

sisaan.peramalan <- saham[230:298]-peramalan$mean
sisaan.peramalan
## Time Series:
## Start = 230 
## End = 298 
## Frequency = 1 
##  [1]   -70.01842  -161.50947  -215.57520  -353.39181  -339.39703  -209.51243
##  [7]  -251.62648  -287.88969  -259.37341  -186.78730  -162.55687  -229.01817
## [13]  -231.43103  -222.49087  -230.04587  -201.94106  -272.25630  -345.42372
## [19]  -234.43020  -206.47020  -159.33020  -143.25020  -132.17020   -56.86020
## [25]   -81.35020  -147.93020  -240.51020  -204.79020  -283.93020  -240.53020
## [31]  -289.76020  -438.45020  -571.41020  -665.85020  -782.00020  -668.21020
## [37]  -700.42020  -675.53020  -483.11020  -440.44020  -519.12020  -525.95020
## [43]  -510.99020  -564.39020  -726.90020  -707.81020  -828.54020 -1043.39020
## [49]  -794.33020  -933.59020  -782.59020  -696.14020  -677.99020  -715.78020
## [55]  -768.14020  -648.95020  -666.57020  -798.36020  -842.04020 -1090.60020
## [61] -1002.33020  -932.32020 -1055.81020 -1152.77020 -1078.37020  -841.63020
## [67]  -803.37020 -1317.85020 -1341.43020

Pemodelan ARIMA Intervensi

Identifikasi Orde B,r,s

Identifikasi model intervensi digunakan untuk melihat seberapa panjang periode yang terkena dampak intervensi dan menentukan fungsi intervensi yang digunakan. Identifikasi model intervensi juga dapat digunakan untuk menentukan orde b, r, dan s pada model intervensi. Cara untuk mengidentifikasi model intervensi adalah dengan melihat respon sisaan pada periode ke-t yang keluar dari batas signifikansi melalui plot. Batas signifikansi didapatkan melalui \(±3(Standar Deviasi Sisaan)\). Standar deviasi sisaan yang dimaksud adalah sisaan yang didapatkan dari model ARIMA yang terbentuk pada data pra intervensi.

## Identifikasi orde intervensi
error_idintv <- rep(0,298)
error_idintv[1:229] <- resid.arima2
## Warning in error_idintv[1:229] <- resid.arima2: number of items to replace is
## not a multiple of replacement length
error_idintv[230:298] <- sisaan.peramalan
plot(error_idintv, type="h", xlab="Waktu (T)", ylab = "Residual", xaxt = "n")
abline(h=c(-3*sd(resid.arima.prainter), 3*sd(resid.arima.prainter)), col="blue", lty=2)
abline(v = 230, col = "red", lty = 3, lwd = 1.5)

Sisaan pada periode ke-230 yaitu sisaan dari data IHSG pada bulan Desember 2024 keluar dari batas signifikansi. Akan tetapi, sisaan setelah periode ke-230 respon sisaan mengalami penurunan dan semakin signifikan. Hal tersebut memiliki arti bahwa dampak terjadinya intervensi terjadi secara kontinyu dan mempengaruhi periode berikutnya. Berdasarkan pola plot sisaan di setiap waktu, dapat menetapkan fungsi intervensi yang digunakan dan orde b, r, dan s. Fungsi yang dapat digunakan pada kasus tersebut adalah fungsi pulse. Fungsi pulse adalah fungsi yang digunakan pada model intervensi yang dampak dari intervensi tersebut hanya terjadi di satu titik waktu dan pada kasus tersebut hanya terjadi pada bulan Desember 2024. Selain menetapkan fungsi intervensi, dapat diketahui orde b, s, dan r. Orde yang ditetapkan untuk kasus data IHSG adalah b=0,s=0,r=1.

Pendugaan Parameter Model Intervensi

## Pemodelan Arima Intervensi
intervensi <- c(rep(0,229), 1, rep(0,68))
model.intervensi <- arimax(saham, order = c(0, 1, 19),xtransf = intervensi,transfer = list(c(1,0)), method = 'ML')
model.intervensi
## 
## Call:
## arimax(x = saham, order = c(0, 1, 19), method = "ML", xtransf = intervensi, 
##     transfer = list(c(1, 0)))
## 
## Coefficients:
##           ma1      ma2     ma3     ma4     ma5      ma6      ma7     ma8
##       -0.0145  -0.1155  0.0290  0.1220  0.0772  -0.1047  -0.1447  0.0670
## s.e.   0.0582   0.0600  0.0607  0.0611  0.0645   0.0693   0.0656  0.0678
##          ma9    ma10     ma11     ma12    ma13    ma14    ma15    ma16     ma17
##       0.0294  0.0931  -0.0914  -0.1310  0.1289  0.0808  0.0713  0.0016  -0.0646
## s.e.  0.0721  0.0778   0.0812   0.0675  0.0815  0.0714  0.0704  0.0842   0.0835
##         ma18     ma19  T1-AR1   T1-MA0
##       0.0070  -0.1704  0.0150   2.4671
## s.e.  0.0684   0.0908  0.0242  50.2688
## 
## sigma^2 estimated as 4966:  log likelihood = -1686.19,  aic = 3414.38
coeftest(model.intervensi)
## 
## z test of coefficients:
## 
##          Estimate Std. Error z value Pr(>|z|)  
## ma1    -0.0144567  0.0581613 -0.2486  0.80370  
## ma2    -0.1155123  0.0600493 -1.9236  0.05440 .
## ma3     0.0289707  0.0607081  0.4772  0.63321  
## ma4     0.1219532  0.0611175  1.9954  0.04600 *
## ma5     0.0772347  0.0645089  1.1973  0.23120  
## ma6    -0.1046547  0.0693021 -1.5101  0.13101  
## ma7    -0.1447477  0.0655853 -2.2070  0.02731 *
## ma8     0.0670367  0.0677951  0.9888  0.32275  
## ma9     0.0294337  0.0720673  0.4084  0.68297  
## ma10    0.0931236  0.0777587  1.1976  0.23107  
## ma11   -0.0914310  0.0812458 -1.1254  0.26044  
## ma12   -0.1309735  0.0674837 -1.9408  0.05228 .
## ma13    0.1288543  0.0815001  1.5810  0.11387  
## ma14    0.0807958  0.0713865  1.1318  0.25772  
## ma15    0.0712651  0.0703995  1.0123  0.31140  
## ma16    0.0015792  0.0841824  0.0188  0.98503  
## ma17   -0.0646306  0.0835454 -0.7736  0.43917  
## ma18    0.0069817  0.0684044  0.1021  0.91870  
## ma19   -0.1704143  0.0908276 -1.8762  0.06062 .
## T1-AR1  0.0149768  0.0241993  0.6189  0.53599  
## T1-MA0  2.4671078 50.2687738  0.0491  0.96086  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Berdasarkan hasil pendugaan parameter dan uji signifikansi model ARIMA intervensi dapat diperoleh informasi bahwa hanya terdapat beberapa parameter yang signifikan, sehingga masih dapat dilakukan pemodelan.
### Pengujian Asumsi Sisaan Sama dengan model ARIMA, model intervensi juga perlu melakukan uji asumsi sisaan yaitu autokorelasi sisaan dan normalitas sisaan.

## UJi asumsi
resid.intervensi <- residuals(model.intervensi)
jarque.bera.test(resid.intervensi)
## 
##  Jarque Bera Test
## 
## data:  resid.intervensi
## X-squared = 102.53, df = 2, p-value < 2.2e-16
Box.test(resid.intervensi, lag = 4, type = "Ljung-Box")
## 
##  Box-Ljung test
## 
## data:  resid.intervensi
## X-squared = 0.085963, df = 4, p-value = 0.9991

Berdasarkan hasil uji autokorelasi dan normalitas sisaan dapat diperoleh informasi bahwa sisaan model intervensi tidak terdapat autokorelasi namun tidak menyebar normal.

Evaluasi Prediksi Grafis

Model ARIMA Intervensi yang telah memenuhi asumsi autokorelasi, dapat dilakukan evaluasi model dengan perbandingan secara grafis.

prediksi.arima.inter <- saham-resid.intervensi
plot(tanggal, saham, type = "l", col = "blue", lwd = 2)
lines(tanggal, prediksi.arima.inter, type = "o", col = "red", lwd = 2)
legend("topright", legend = c("IHSG Aktual", "IHSG Hasil Prediksi ARIMA(0,1,19)"), col = c("blue", "red"), lty = 1)

Berdasarkan evaluasi secara grafis, dapat diketahui bahwa prediksi data dengan model ARIMA Intervensi cukup mampu mengikuti pola fluktuasi pada seluruh periode.