PENERAPAN AUTOREGRESSIVE MOVING AVERAGE WITH EXOGENOUS VARIABLE AND OUTLIER EFFECT TERHADAP IHSG INDONESIA

Jamie Anugerah Keeyan Laksana

30/04/2025


1 STUDI KASUS

1.1 PERMASALAHAN

Indeks Harga Saham Gabungan (IHSG) merupakan salah satu indeks pasar saham yang digunakan oleh Bursa Efek Indonesia sebagai indikator utama pergerakan pasar modal Indonesia. IHSG berfungsi sebagai acuan pengukuran kinerja portofolio investasi, indikator pergerakan pasar modal, serta cerminan kondisi perekonomian secara umum (OCBC, 2023).

Beberapa hari terakhir, Indonesia mengalami fenomena pasar modal yang cukup mencengangkan dengan terjadinya apa yang disebut “Black Swan Tuesday” akibat kebijakan pemerintah yang menimbulkan sentimen negatif sehingga membuat saham-saham di Indonesia menjadi anjlok termasuk IHSG. Kebijakan pemerintah tersebut adalah pengesahan RUU TNI yang disahkan pada tanggal 20 Maret 2025, dilanjutkan penurunan 2.14% pada 21 Maret 2025, dan puncaknya, yaitu terjadi keanjlokan di 9.19% pada 8 April 2025 yang memicu penghentian sementara perdagangan (trading halt) di Bursa Efek Indonesia. Hal tersebut menunjukkan dampak yang krusial terhadap pasar modal Indonesia. Berdasarkan karakteristik dari data IHSG yang selalu mengalami perubahan dan terpengaruh oleh kejadian-kejadian khusus, seperti kebijakan pemerintah, perlu dilakukan peramalan menggunakan model yang mampu mengakomodasikan kedua aspek tersebut. Model Autoregressive Integrated Moving Average (ARIMA) telah terbukti efektif dalam meramalkan data time series, termasuk harga saham dan indeks pasar modal. Model ARIMA dapat mengidentifikasi pola dalam data historis dan menghasilkan peramalan berdasarkan pola tersebut.

Akan tetapi, model ARIMA standar memiliki keterbatasan dalam menangkap dampak dari kejadian-kejadian eksternal yang tidak terduga. Untuk mengatasi masalah tersebut, analisis intervensi merupakan metode yang tepat karena dirancang khusus untuk mengolah data time series yang dipengaruhi oleh suatu peristiwa yang disebut intervensi. Analisis intervensi adalah pengembangan dari model ARIMA yang dapat mengevaluasi besar dan lamanya efek dari dampak suatu intervensi terhadap data time series. Terdapat dua jenis fungsi dalam model intervensi, yaitu fungsi step untuk efek jangka panjang dan fungsi pulse untuk efek sementara. Dalam konteks pengesahan RUU TNI, analisis intervensi dengan fungsi step dapat digunakan untuk mengukur dampak berkelanjutan dari kebijakan tersebut terhadap IHSG.

1.2 PERTANYAAN PERMASALAHAN

  1. Model deret waktu manakah yang sesuai untuk permasalahan tersebut?

  2. Bagaimana kemampuan model deret waktu yang ditetapkan dalam memodelkan data IHSG?

  3. Bagaimana hasil peramalan dengan model deret waktu pada kasus data IHSG?

2 HASIL, SINTAKS DAN PEMBAHASAN

2.1 LIBRARY YANG DIBUTUHKAN

> #Library
> library(readxl)
> library(tseries)
> library(FSA) 
> library(knitr)
> library(TSA)
> library(lmtest)
> library(forecast)
> library(MLmetrics)
> library(xts)
> library(readxl)
> library(FSA)
> library(FinTS)
> library(ggplot2)
> library(ggrepel)
> library(MASS)
> library(tsoutliers)

2.2 STATISTIK DESKRIPTIF

Langkah awal dalam pemodelan time series Autoregressive Moving Average (ARIMA) Outlier adalah melakukan identifikasi karakteristik terhadap variabel yang digunakan, ada pun selanjutnya dilakukan identifikasi karakteristik dengan statistik deksriptif dan eksplorasi data menggunakan plot time series. Laporan praktikum ini menggunakan data sekunder dari Indeks Harga Saham Gabungan (IHSG) yang bersifat diskret time series dengan frekuensi harian (freq = 365). Periode observasi mencakup rentang waktu 2 Januari 2024 hingga 9 April 2025 dengan total 298 observasi sesuai jadwal operasional bursa efek Indonesia, berikut identifikasi karakteristik utama data ini.

> #Pre-Processing Data
> #Pemanggilan Data dari Windows ke Environment R
> Data_IHSG <- read_excel("Data IHSG.xlsx", 
+                         col_types = c("text", "date", "numeric"))
> Tanggal = as.Date(c(Data_IHSG$Tanggal))
> 
> "Tanggal = as.yearmon(seq(Tanggal), 
+                      
+                      by = )"
FALSE [1] "Tanggal = as.yearmon(seq(Tanggal), \n                     \n                     by = )"
> IHSG    = Data_IHSG$`Harga Saham`
> datafr.ihsg = data.frame("Tanggal" = as.Date(Tanggal), "IHSG" = IHSG)
> ts.saham    = ts(datafr.ihsg, start = c(2024, 1), end = c(2025,4),
+                  frequency = 298)
> Data_IHSG$Tanggal[which.min(datafr.ihsg$IHSG)]
FALSE [1] "2025-04-09 UTC"
> summary(datafr.ihsg$IHSG)
FALSE    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
FALSE    5973    7080    7235    7197    7351    7905
> skewness(datafr.ihsg$IHSG)
FALSE [1] -0.8097466
> kurtosis(datafr.ihsg$IHSG)
FALSE [1] 1.198214
> sd(datafr.ihsg$IHSG)
FALSE [1] 342.6589

Output di atas menunjukkan bahwa harga rata-rata indeks harga saham gabungan adalah 7197, dan ukuran pemusatan data adalah nilai rata-rata. Namun, untuk ukuran penyebaran data, nilai minimal atau maksimal dapat digunakan. Nilai standar deviasi juga dapat digunakan untuk melihat setiap ukuran penyebaran. Nilai standar deviasi (st. dev) sebesar 342.6 menunjukkan keragaman yang cukup besar dalam karakteristik IHSG. Nilai skewness pada data IHSG adalah -0.8056, yang menunjukkan derajat kemiringan data. Nilai skewness positif menunjukkan bahwa sebagian besar kemiringan grafik adalah ke kanan, yang menunjukkan bahwa nilai data harga saham lebih kecil dari rata-rata masing-masing variabel. Nilai skewness negatif menunjukkan bahwa sebagian besar kemiringan grafik adalah ke kiri. Nilai kurtosis adalah nilai yang menunjukkan tingkat kelancipan dari grafik distribusi normal. Data IHSG dari periode tersebut menunjukkan nilai kurtosis positif, yang menunjukkan bahwa grafik memiliki puncak yang lebih tinggi dari grafik distribusi normal yang terbentuk.

2.3 EKSPLORASI DERET WAKTU

> #Eksplorasi Data Deret Waktu dan Statistika Deskriptif
> plot(Tanggal, IHSG, type = "o", col = "red", lwd = 1.5,
+      main = "The Black Swan Tuesday Indonesia")
> abline(v = Tanggal[which.max(datafr.ihsg$IHSG)], 
+        col = "green", lty = 3, lwd = 1.5)
> abline(v = Tanggal[which.min(datafr.ihsg$IHSG)], 
+        col = "purple", lty = 3, lwd = 1.5)

Berdasarkan analisis terhadap grafik deret waktu di atas, dapat diasumsikan bahwa data Indeks Harga Saham Gabungan (IHSG) Indonesia untuk periode Januari 2024 hingga April 2025 belum menunjukkan stasioneritas. Hal ini dapat dilihat dari pola fluktuasi data secara keseluruhan yang tidak berkisar pada nilai tertentu, melainkan tampak acak. Selain itu, plot time series dari data IHSG Indonesia yang menunjukkan fenomena “Black Swan Tuesday” di atas memperlihatkan pola fluktuasi yang dibagi ke dalam tiga fase yang berbeda. Pada awal 2024, terdapat volatilitas dalam rentang harga 7000—7500, kemudian di pertengahan 2024 terjadi penurunan harga hingga mencapai level 6700. Selanjutnya, terdapat lonjakan signifikan yang membawa harga mencapai puncak di harga 7900 pada 9 September 2024. Meskipun demikian, setelah puncak tersebut, IHSG Indonesia menunjukkan tren penurunan yang berkelanjutan, yang diduga kuat diakibatkan oleh kebijakan baru RUU TNI, yang menyebabkan IHSG Indonesia mengalami penurunan drastis hingga mencapai titik terendah sekitar 6000 pada 9 April 2025.

2.4 UJI STASIONERITAS DATA DERET WAKTU

Sifat stationer sangat diperlukan pada model time series, dengan adanya sifat stationer pada data, model tidak bergantung pada waktu (t), tetapi bergantung dengan jarak waktu k atau lag k tertentu. Data time series memiliki syarat mutlak untuk dibentuknya model ARIMA Outlier, yaitu sifat stasioneritas baik itu terhadap varians, maupun terhadap mean. Langkah-langkah dari uji stasioner diawali dari pengujian data terhadap stationeritas varians, kemudian apabila terbukti bahwa data tersebut stasioner terhadap varians, maka dilanjutkan pengujian terhadap mean. Hal tersebut dikarenakan validitas uji stasioneritas bergantung pada keputusan uji dari Box-Cox test. ### UJI STASIONERITAS DATA TERHADAP VARIANS Proses identifikasi stasioner dalam varians terhadap data IHSG Indonesia dapat melalui transformasi Box-Cox yang dapat dilihat pada output di bawah ini

> BC.Results1  = boxcox(lm(as.vector(c(IHSG))~1))

> BC.Results1$y
FALSE   [1] 34.74257 35.14794 35.55095 35.95162 36.34994 36.74592 37.13955 37.53084
FALSE   [9] 37.91980 38.30641 38.69069 39.07263 39.45225 39.82953 40.20448 40.57711
FALSE  [17] 40.94742 41.31540 41.68106 42.04440 42.40543 42.76414 43.12054 43.47463
FALSE  [25] 43.82642 44.17589 44.52307 44.86794 45.21051 45.55078 45.88876 46.22445
FALSE  [33] 46.55784 46.88895 47.21777 47.54431 47.86856 48.19054 48.51023 48.82766
FALSE  [41] 49.14281 49.45568 49.76629 50.07464 50.38072 50.68454 50.98610 51.28541
FALSE  [49] 51.58246 51.87726 52.16981 52.46012 52.74818 53.03400 53.31758 53.59893
FALSE  [57] 53.87804 54.15491 54.42956 54.70199 54.97219 55.24017 55.50593 55.76947
FALSE  [65] 56.03080 56.28992 56.54683 56.80154 57.05404 57.30434 57.55245 57.79836
FALSE  [73] 58.04208 58.28361 58.52295 58.76011 58.99509 59.22789 59.45852 59.68697
FALSE  [81] 59.91325 60.13737 60.35932 60.57911 60.79674 61.01221 61.22554 61.43671
FALSE  [89] 61.64573 61.85262 62.05736 62.25996 62.46043 62.65876 62.85497 63.04905
FALSE  [97] 63.24100 63.43084 63.61855 63.80416
> lambda.Results  = BC.Results1$x[which.max(BC.Results1$y)]
> lambda.Results
FALSE [1] 2
> 
> NEW.IHSG = (IHSG^2-1)/2

Menurut Box, Jenkins, dan Reinsel (1964) implementasi transformasi Box-Cox dengan rounded value (λ) tidak selalu menjamin pemenuhan asumsi kenormalan atau optimasi karakteristik statistik data. Fenomena ini terobservasi pada data Indeks Harga Saham Gabungan (IHSG) Indonesia, Gambar 4.3 menunjukkan di mana transformasi menggunakan λ=2 tidak mengubah karakteristik data secara visual yang menyebabkan konsistensi nilai λ=2 (λ tidak di antara, atau tepat 1), hal ini mengindikasikan keterbatasan efektivitas transformasi Box-Cox untuk data IHSG Indonesia.

Akan tetapi, studi Ispiriyanti (2004) mengemukakan bahwa transformasi Box-Cox tetap memberikan manfaat meskipun nilai lambda tidak berubah, seperti: 1. Meminimumkan sum of square errors (SSE) 2. Peningkatan karakteristik normalitas (uji Saphiro-Wilk) 3. Mereduksi karakteristik heteroskedastisitas (uji Breusch-Pagan) Oleh karena itu, proses pemodelan dilanjutkan menggunakan data setelah transformasi bukan hanya karena tiga poin pertimbangan di atas, melainkan juga karena data IHSG Indonesia tidak jarang memiliki karakteristik fat tails, skewness ekstrem, dan volatilitas ekstrem (heteroskedastisitas).

2.4.1 UJI STASIONERITAS DATA TERHADAP MEAN

Setelah mengetahui asumsi stasioner terhadap varians maka dilanjutkan dengan pemerikaan asumsi stasioner terhadap mean melalui uji Augmented-Dickey Fuller.

> ##Stastioneritas Mean from real data
> adf.test(NEW.IHSG, alternative = "stationary", k = 1 )
FALSE 
FALSE   Augmented Dickey-Fuller Test
FALSE 
FALSE data:  NEW.IHSG
FALSE Dickey-Fuller = -0.87203, Lag order = 1, p-value = 0.9545
FALSE alternative hypothesis: stationary
> #diff 1st
> NEW.IHSG.diff1  = diff(NEW.IHSG) 
> ##Stastioneritas Mean from diff.1 data
> adf.test(NEW.IHSG.diff1, alternative = "stationary", k = 1)
FALSE 
FALSE   Augmented Dickey-Fuller Test
FALSE 
FALSE data:  NEW.IHSG.diff1
FALSE Dickey-Fuller = -13.307, Lag order = 1, p-value = 0.01
FALSE alternative hypothesis: stationary

Kesimpulan Bagi Uji ADF sebelum differencing Dengan taraf kepercayaan 95%, sudah cukup bukti bahwa data IHSG Indonesia sebelum differencing belum memenuhi asumsi stasioneritas terhadap mean, sehingga diperlukan dilakukan differencing hingga mendapatkan keputusan Terima H_0.

Kesimpulan Bagi Uji ADF setelah differencing Dengan taraf kepercayaan 95%, sudah cukup bukti bahwa data IHSG Indonesia sebelum differencing sudah memenuhi asumsi stasioneritas terhadap mean, sehingga dapat dilanjutkan ke identifikasi model dengan data differencing pertama.

2.5 IDENTIFIKASI MODEL

2.5.1 AUTO-CORRELATION FUNCTION

> #Identifikasi Model (Corellogram)
> ##Autocorrelation F.
> ACF.1 = acf(NEW.IHSG.diff1)

> Vector.ACF = as.vector(ACF.1$acf)
> 
> #threshold signifikan (1.96/sqrt(n))
> threshold <- 1.96/sqrt(length(NEW.IHSG.diff1))
> 
> for (i in 1:length(Vector.ACF)) {
+   
+ if (Vector.ACF[i] > threshold || Vector.ACF[i] < -threshold) {
+     cat("Nilai signifikan pada indeks", i, ":", Vector.ACF[i], "\n")
+   }
+   
+ }
FALSE Nilai signifikan pada indeks 7 : -0.1217438 
FALSE Nilai signifikan pada indeks 10 : 0.1366055 
FALSE Nilai signifikan pada indeks 19 : -0.1554487

Dengan memanfaatkan logika looping dan conditional statements, dibuat sintaks dengan tujuan mendapatkan lag k signifikan dengan mudah dan mengurangi kemungkinan human error, Sehingga model tentatif pertama berdasarkan Auto-Correlation Function (ACF) berbentuk ARIMA([7,10,19], 0, 0).

2.5.2 PARTIAL AUTO-CORRELATION FUNCTION

> ##Parsial A. F.
> pacf(NEW.IHSG.diff1)
> PACF.1 = pacf(NEW.IHSG.diff1)

> Vector.PACF = c(PACF.1$acf)
> 
> #threshold signifikan (1.96/sqrt(n))
> threshold <- 1.96/sqrt(length(NEW.IHSG.diff1))
> 
> for (j in 1:length(Vector.PACF)) {
+   
+   if (Vector.PACF[j] > threshold || Vector.PACF[j] < -threshold) {
+     cat("Nilai signifikan pada indeks", j, ":", Vector.PACF[j], "\n")
+   }
+ }
FALSE Nilai signifikan pada indeks 10 : 0.147611 
FALSE Nilai signifikan pada indeks 19 : -0.1596577

Dengan memanfaatkan logika looping dan conditional statements, dibuat sintaks dengan tujuan mendapatkan lag k signifikan dengan mudah dan mengurangi kemungkinan human error, Sehingga model tentatif pertama berdasarkan Auto-Correlation Function (ACF) berbentuk ARIMA(0, 0, [10,19]).

2.6 PENDUGAAN DAN UJI SIGNIFIKANSI PARAMETER

Setelah mengidentifikasi model, kemudian melakukan pendugaan parameter dan uji signifikansi parameter, tetapi berdasarkan output di bab sebelumnya dapat dilihat bahwa lag yang signifikan tidak berpola seperti pada umumnya, atau dalam kata lain lag k yang signifikan terpotong-potong, sehingga dilakukan pendugaan parameter model dengan konsep ARIMA Restricted yang dilakukan dengan metode OLS (Ordinary Least Square).

2.6.1 BERDASARKAN AUTO-CORRELATION FUNCTION

Berdasarkan plot auto-correlation function dan Gambar 4.4 diperoleh model tentative ARIMA Restricted, yaitu ARIMA([7,10,19], 0, 0) yang memiliki hasil pendugaan dan signifikansi sebagai output berikut.

> #Pendugaan Parameter dan Uji Signifikansi\
> ##AR
> Model.AR1 = arima(NEW.IHSG.diff1, 
+                   order = c(19, 0, 0),
+                   fixed = c(rep(0, 6), NA, rep(0, 2), NA, rep(0, 8), NA, NA),
+                   method = 'ML', 
+                   include.mean = TRUE)
> coeftest(Model.AR1)
FALSE 
FALSE z test of coefficients:
FALSE 
FALSE              Estimate  Std. Error z value Pr(>|z|)   
FALSE ar7       -1.6283e-01  6.0721e-02 -2.6817 0.007326 **
FALSE ar10       1.6578e-01  6.1834e-02  2.6811 0.007338 **
FALSE ar19      -1.9078e-01  6.2194e-02 -3.0675 0.002158 **
FALSE intercept -2.8960e+04  2.4729e+04 -1.1711 0.241555   
FALSE ---
FALSE Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2.6.2 BERDASARKAN PARTIAL AUTO-CORRELATION FUNCTION

> ##MA
> Model.MA1 = arima(NEW.IHSG.diff1, order = c(0, 0, 19),
+                   fixed = c(rep(0,9),NA,rep(0,8),NA,NA),
+                   method = 'ML', include.mean = TRUE)
> coeftest(Model.MA1)
FALSE 
FALSE z test of coefficients:
FALSE 
FALSE              Estimate  Std. Error z value Pr(>|z|)   
FALSE ma10       1.2803e-01  6.3298e-02  2.0226 0.043112 * 
FALSE ma19      -1.6263e-01  6.1612e-02 -2.6395 0.008302 **
FALSE intercept -3.0196e+04  2.8750e+04 -1.0503 0.293578   
FALSE ---
FALSE Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2.7 DIAGNOSTIK MODEL CHECKING

Setelah melakukan estimasi dan uji signifikansi maka langkah selanjutnya adalah melakukan pengujian pada sisaan modelnya. Pada tahap ini dilihat apakah sisaan {ε_t} sudah white noise dan bebas dari autokorelasi atau belum. Keadaan white noise adalah keadaan sisaan sudah identik independen dan berdistribusi normal, sedangkan kebebasan dari autokorelasi menentukan keabsahan model meramal (Wei, 2006).

2.7.1 UJI ASUMSI AUTOKORELASI SISAAN

2.7.2 SISAAN MODEL ARIMA([7,10,19], 0, 0)

> ##Ljung-Box Test
> resid.arima1 <- residuals(Model.AR1)
> Box.test(resid.arima1, lag=2, type = c('Ljung-Box'))
FALSE 
FALSE   Box-Ljung test
FALSE 
FALSE data:  resid.arima1
FALSE X-squared = 2.5397, df = 2, p-value = 0.2809

Kesimpulan Dengan taraf kepercayaan 95%, sudah cukup bukti bahwa data sisaan dari model ARIMA([7,10,19], 0, 0) memenuhi asumsi sisaan autokorelasi sisaan atau dalam kata lain sisaan bebas dari autokorelasi.

2.7.3 SISAAN MODEL ARIMA(0, 0, [10,19])

> resid.arima2 <- residuals(Model.MA1)
> Box.test(resid.arima2, lag=2, type = c('Ljung-Box'))
FALSE 
FALSE   Box-Ljung test
FALSE 
FALSE data:  resid.arima2
FALSE X-squared = 3.078, df = 2, p-value = 0.2146

Kesimpulan Dengan taraf kepercayaan 95%, sudah cukup bukti bahwa data sisaan dari model ARIMA(0, 0, [10,19]) memenuhi asumsi sisaan autokorelasi sisaan atau dalam kata lain sisaan bebas dari autokorelasi.

2.7.4 UJI ASUMSI NORMALITAS SISAAN

2.7.5 SISAAN MODEL ARIMA([7,10,19], 0, 0)

> resid.arima1 <- residuals(Model.MA1)
> jarque.bera.test(resid.arima1)
FALSE 
FALSE   Jarque Bera Test
FALSE 
FALSE data:  resid.arima1
FALSE X-squared = 182.55, df = 2, p-value < 2.2e-16

Kesimpulan Dengan taraf kepercayaan 95%, sudah cukup bukti bahwa data sisaan dari model ARIMA([7,10,19], 0, 0) belum memenuhi asumsi normalitas sisaan atau dalam kata lain sisaan tidak berdistribusi normal, tetapi Ledolter (1976) mengatakan dalam pemodelan deret waktu asumsi normalitas tidak wajib terpenuhi, sehingga model tetap layak digunakan.

2.7.6 SISAAN MODEL ARIMA(0, 0, [10,19])

> resid.arima2 <- residuals(Model.MA1)
> Box.test(resid.arima2, lag=2, type = c('Ljung-Box'))
FALSE 
FALSE   Box-Ljung test
FALSE 
FALSE data:  resid.arima2
FALSE X-squared = 3.078, df = 2, p-value = 0.2146

Kesimpulan Dengan taraf kepercayaan 95%, sudah cukup bukti bahwa data sisaan dari model ARIMA(0, 0, [10,19]) belum memenuhi asumsi normalitas sisaan atau dalam kata lain sisaan tidak berdistribusi normal, tetapi Ledolter (1976) mengatakan dalam pemodelan deret waktu asumsi normalitas tidak wajib terpenuhi, sehingga model tetap layak digunakan.

2.8 PEMILIHAN MODEL TERBAIK

Mengingat kedua model ARIMA menunjukkan karakteristik diagnostik yang identik, yaitu keduanya menerima hipotesis nol (H_0) pada pengujian autokorelasi residual, tetapi sama-sama menolak (H_0) pada pengujian normalitas residual, maka pemilihan model tentatif optimal dilakukan melalui pendekatan goodness-of-fit berbasis Akaike Information Criterion (AIC). Wahyudi (2017) mengatakan bahwa pemilihan berdasarkan AIC merupakan metode yang direkomendasikan dalam analisis deret waktu finansial, terkhusus pada data IHSG yang seringkali menunjukkan volatilitas tinggi, dimana model dengan nilai AIC terkecil model deret waktu terbaik untuk melakukan peramalan. Oleh karena itu, model ARIMA([7,10,19], 0, 0) dengan AIC sebesar 8648.535 terpilih sebagai model terbaik dibandingkan ARIMA(0, 0, [10,19]) yang memiliki AIC 8655.448.

2.9 PENDETEKSIAN MODEL ARIMA OUTLIER

Time series terkadang dipengaruhi suatu kerjadian tertentu, seperti perubahan kebijakan, krisis ekonomi, atau bencana alam. Konsekuensi dari kejadian tersebut membuat suatu observasi menjadi tidak seperti biasanya, suatu amatan dalam data time series yang disebabkan oleh kejadian seperti itu disebut outlier. Terdapat beberapa model dalam mendeteksi outlier dalam konteks ARIMA, seperti model additive outlier (AO), level shift (LS), innovational outlier (IO), dan transitory change (TC). Tabel 4.12 menunjukan output R terkait pendeteksian outlier sebagai berikut.

> #Pengujian Asumsi
> ##Ljung-Box Test
> resid.arima1 <- residuals(Model.AR1)
> resid.arima2 <- residuals(Model.MA1)
> 
> Box.test(resid.arima1, lag=2, type = c('Ljung-Box'))
FALSE 
FALSE   Box-Ljung test
FALSE 
FALSE data:  resid.arima1
FALSE X-squared = 2.5397, df = 2, p-value = 0.2809
> Box.test(resid.arima2, lag=2, type = c('Ljung-Box'))
FALSE 
FALSE   Box-Ljung test
FALSE 
FALSE data:  resid.arima2
FALSE X-squared = 3.078, df = 2, p-value = 0.2146
> 
> #Jarque-Bera
> jarque.bera.test(resid.arima1)
FALSE 
FALSE   Jarque Bera Test
FALSE 
FALSE data:  resid.arima1
FALSE X-squared = 119.44, df = 2, p-value < 2.2e-16
> jarque.bera.test(resid.arima2)
FALSE 
FALSE   Jarque Bera Test
FALSE 
FALSE data:  resid.arima2
FALSE X-squared = 182.55, df = 2, p-value < 2.2e-16
> 
> #Pemilihan Model Terbaik (Model Tentatif)
> Model.AR1$aic
FALSE [1] 8648.535
> Model.MA1$aic
FALSE [1] 8655.448
> ##Cond. Statements
> if (Model.AR1$aic > Model.MA1$aic) { 
+   cat("Model Terpilih Adalah Model.MA1", "\n")
+   } else 
+     cat("Model Terpilih Adalah Model.AR1", "\n")
FALSE Model Terpilih Adalah Model.AR1
> 
> #Deteksi Outlier
> prediksi.arima <- NEW.IHSG.diff1-resid.arima1
> outlier <- tso(prediksi.arima, types = c('AO','IO','IS','TC'))
> print(outlier)
FALSE Series: prediksi.arima 
FALSE Regression with ARIMA(0,0,0) errors 
FALSE 
FALSE Coefficients:
FALSE        intercept      AO286     TC294      AO296
FALSE       -28680.667  -638865.1  424759.2  -751608.4
FALSE s.e.    7349.728   125824.1   99596.0   134773.1
FALSE 
FALSE sigma^2 = 1.601e+10:  log likelihood = -3908.65
FALSE AIC=7827.3   AICc=7827.51   BIC=7845.77
FALSE 
FALSE Outliers:
FALSE   type ind time coefhat  tstat
FALSE 1   AO 286  286 -638865 -5.077
FALSE 2   TC 294  294  424759  4.265
FALSE 3   AO 296  296 -751608 -5.577

Berdasarkan Output di atas didapat beberapa poin penting, seperti Outlier tipe AO memiliki karakteristik pengaruh pada data time series berupa kejadian yang mengejutkan secara tiba-tiba. Dalam hal ini, di observasi ke-286 (AO286) terjadi penurunan IHSG secara mendadak dengan t-stat (-5.077) yang menunjukkan dampak dari AO286 bukan hanya fluktuasi biasa, sedangkan AO296 memiliki dampak penurunan yang lebih signifikan dan berdampak buruk, hal ini terbukti dari nilai koefisien dan t-stat yang lebih negatif dibandingkan AO286. Hal ini sudah cukup membuktikan bahwa telah terjadi suatu kejadian yang tidak biasa dan diduga kuat kejadian tersebut merupakan dampak buruk dari pengesahan RUU TNI oleh presiden prabowo subianto pada kamis, 20 maret 2025. Ada pun outlier tipe TC memiliki karakteristik pengaruh pada data time series yang mereda setelahnya, dalam hal ini TC294 memiliki dampak kenaikan secara tiba-tiba, tetapi tidak signifikan yang ditandakan dengan t-stat (4.265) dan mengalami penurunan secara eksponensial dengan tingkat penurunan eksponensial.

2.10 PLOT DETEKSI OUTLIER

> #plot outlier
> 
> plot(outlier$effects)

Pola outlier yang terekam dalam data IHSG memiliki dampak yang kuat dengan peristiwa politik signifikan pada pertengahan Maret 2025. Outlier terkonsentrasi pada rentang waktu yang berdekatan dengan pengesahan RUU TNI oleh Presiden Prabowo Subianto (20 Maret 2025) mengindikasikan respons pasar yang volatil terhadap keputusan politik tersebut.

2.11 DIAGNOSTIK MODEL ARIMA OUTLIER

Setelah kita mengetahui pengaruh dari outlier, kemudian dilakukan integrasi antara outlier terhadap model ARIMA agar lebih robust terhadap outlier dengan memasukkan variabel eksogen dari outlier$effect dan dibentuk model ARIMA Restricted berdasarkan model tentatif terpilih berdasarkan output sebagai berikut.

2.11.1 PENDUGAAN DAN UJI SIGNIFIKANSI PARAMETER

> xreg.outlier <- outlier$effects
> xreg.outlier = matrix(xreg.outlier)
> coeftest(Model.AR1AO.AO)
FALSE Error in eval(expr, envir, enclos): object 'Model.AR1AO.AO' not found
> Model.AR1AO.AO <- arima(NEW.IHSG.diff1, order = c(19, 0, 0), 
+                   fixed = c(0, NA, rep(0, 4), NA, rep(0, 2), NA, rep(0, 8), NA, NA, NA), 
+                   xreg = xreg.outlier,  method = 'ML', include.mean=TRUE, transform.pars = FALSE)
> coeftest(Model.AR1AO.AO)
FALSE 
FALSE z test of coefficients:
FALSE 
FALSE              Estimate  Std. Error z value  Pr(>|z|)    
FALSE ar2       -7.6284e-02  5.9258e-02 -1.2873    0.1980    
FALSE ar7       -9.0163e-02  6.1836e-02 -1.4581    0.1448    
FALSE ar10       6.5481e-02  6.2999e-02  1.0394    0.2986    
FALSE ar19      -1.0491e-01  6.4821e-02 -1.6185    0.1056    
FALSE intercept -2.6506e+04  2.3572e+04 -1.1245    0.2608    
FALSE xreg       2.3813e+00  5.7597e-01  4.1344 3.559e-05 ***
FALSE ---
FALSE Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2.11.2 UJI ASUMSI AUTOKORELASI SISAAN

2.11.2.1 SISAAN MODEL ARIMA([7,10,19], 0, 0) WITH OUTLIER EFFECT

> resid.Model.AR1AOAO <- residuals(Model.AR1AO.AO)
> Box.test(resid.Model.AR1AOAO, lag=2, type = c('Ljung-Box'))
FALSE 
FALSE   Box-Ljung test
FALSE 
FALSE data:  resid.Model.AR1AOAO
FALSE X-squared = 0.01932, df = 2, p-value = 0.9904

Kesimpulan Dengan taraf kepercayaan 95%, sudah cukup bukti bahwa data sisaan dari model ARIMA([7,10,19], 0, 0) with outlier effect memenuhi asumsi sisaan autokorelasi sisaan atau dalam kata lain sisaan bebas dari autokorelasi.

2.11.3 UJI ASUMSI NORMALITAS SISAAN

2.11.3.1 SISAAN MODEL ARIMA([7,10,19], 0, 0) WITH OUTLIER EFFECT

> resid.Model.AR1AOAO <- residuals(Model.AR1AO.AO)
> jarque.bera.test(resid.Model.AR1AOAO)
FALSE 
FALSE   Jarque Bera Test
FALSE 
FALSE data:  resid.Model.AR1AOAO
FALSE X-squared = 18.352, df = 2, p-value = 0.0001035

Kesimpulan Dengan taraf kepercayaan 95%, sudah cukup bukti bahwa data sisaan dari model ARIMA([7,10,19], 0, 0) with outlier effect belum memenuhi asumsi normalitas sisaan atau dalam kata lain sisaan tidak berdistribusi normal, tetapi Ledolter (1976) mengatakan dalam pemodelan deret waktu asumsi normalitas tidak wajib terpenuhi, sehingga model tetap layak digunakan.

2.12 PERBANDINGAN PLOT TIME SERIES DATA AKTUAL, ARIMA RESTRICTED, DAN ARIMA RESTRICTED WITH OUTLIER EFFECT

Setelah kita mengetahui seluruh karakteristik dari model tentatif terbaik antara ARIMA Restricted ([7,10,19], 0, 0) dengan ARIMA Restricted (0, 0, [10,19]) berdasarkan ukuran kebaikan model AIC yang kemudian ditambahkan variabel eksogen outlier effect (xreg.outlier) ke dalam model terpilihnya dan mengetahui seluruh karakteristik kedua model tersebut (model dengan dan tanpa xreg.outlier) melalui serangkaian diagnostik model checking yang mempertimbangkan keputusan hipotesis uji asumsi meliputi uji autokorelasi sisaan, normalitas sisaan, dan signifikansi parameter. Untuk mendapatkan perbandingan visual yang komprehensif, ada pun dilanjutkan dengan membandingkan plot time series mengidentifikasi model terbaik untuk menangkap dinamika dari fluktuasi dan volatilitas yang tetap mampu menangkap pola pergerakan di kondisi pasar normal di data IHSG Indonesia.

> #Perbandingan ARIMA dan ARIMA AO,TC,AO
> prediksi.arimaAOAO <- NEW.IHSG.diff1-resid.Model.AR1AOAO
> par(mfrow = c(3,1))
> plot(Tanggal[-length(IHSG)], NEW.IHSG.diff1, type = "l", col = "red", lwd = 2, xlab = "Waktu", ylab = "Data Lapangan IHSG (Asli)")
> plot(Tanggal[-length(IHSG)], prediksi.arima, type = "o", col = "blue", lwd = 2, xlab = "Waktu", ylab = "Data by ARIMA([7,10,19],0,0)")
> plot(Tanggal[-length(IHSG)], prediksi.arimaAOAO, type = "o", col = "green", lwd = 2, xlab = "Waktu", ylab = "Data by ARIMA With Outlier Effect")

Hasil perbandingan visual memperlihatkan bahwa model dengan penanganan outlier (hijau) menunjukkan kemampuan yang lebih baik dalam merespons perubahan secara tiba-tiba dalam data IHSG Indonesia dan di waktu yang bersamaan tetap mampu menangkap pola pergerakan pada kondisi pasar normal. Sehingga, Perbandingan ketiga plot ini mengungkapkan bahwa model ARIMA Restricted ([7,10,19], 0, 0) dengan efek outlier memberikan representasi yang lebih komprehensif terhadap dinamika data IHSG, terutama dalam konteks kejadian-kejadian ekstrem. Meskipun model ARIMA standar (biru) menunjukkan kesesuaian yang baik pada kondisi normal, tetapi model dengan penanganan outlier (hijau) mendemonstrasikan ketahanan yang lebih baik dalam menghadapi volatilitas pasar yang ekstrem. Hal ini juga terbukti secara kuantitatif melalui ukuran kebaikan pendekatan goodness-of-fit berbasis Akaike Information Criterion (AIC) dengan output berikut.

> Model.AR1$aic
FALSE [1] 8648.535
> Model.AR1AO.AO$aic
FALSE [1] 8633.674

Oleh karena itu, model ARIMA([7,10,19], 0, 0) with outlier effect dengan AIC sebesar 8633.674 terpilih sebagai model terbaik dalam penelitian ini.

2.13 PERAMALAN MENGGUNAKAN MODEL ARIMA RESTRICTED WITH OUTLIER EFFECT

Setelah kita mendapatkan model terbaik dalam penelitian ini adalah ARIMA([7,10,19], 0, 0) with outlier effect, kemudian dilakukan peramalan sebagai berikut

> # Mengambil prediksi dan standar error dari hasil peramalan
> hasil_peramalan1 <- predict(Model.AR1AO.AO, n.ahead = 63, newxreg = matrix(0, nrow = 63, ncol = 1))
> 
> predictions <- hasil_peramalan1$pred
> se <- hasil_peramalan1$se
> 
> # Menghitung interval kepercayaan 95%
> lower_bound <- predictions - 1.96 * se
> upper_bound <- predictions + 1.96 * se
> 
> # Membuat data frame untuk prediksi dan interval kepercayaan
> forecast_data <- data.frame(
+   Time = (length(NEW.IHSG.diff1) + 1):(length(NEW.IHSG.diff1) + 63),  # Periode waktu untuk prediksi
+   Value = predictions,
+   Lower = lower_bound,
+   Upper = upper_bound
+ )
> 
> # Membuat time_series_data (data asli) dengan kolom tambahan untuk prediksi
> time_series_data <- data.frame(
+   Time = 1:length(NEW.IHSG.diff1),  # Waktu untuk data asli
+   Value = NEW.IHSG.diff1,  # Data asli  # Kolom prediksi dengan nilai NA
+   Lower = NA,  # Kolom batas bawah dengan nilai NA
+   Upper = NA   # Kolom batas atas dengan nilai NA
+ )
> 
> # Menggabungkan data asli dan prediksi
> combined_data <- rbind(time_series_data, forecast_data)
> 
> # Memuat ggplot2
> library(ggplot2)
> 
> # Membuat plot time series dengan data asli dan prediksi
> ggplot(combined_data, aes(x = Time)) +
+   geom_line(aes(y = Value), color = "red") +  # Data asli dan prediksi
+   geom_ribbon(data = forecast_data, aes(ymin = Lower, ymax = Upper), fill = "maroon", alpha = 0.3) +  # Interval kepercayaan untuk prediksi
+   labs(title = "Plot Time Series Omon-Omon Effect with Forecast",
+        x = "Time", y = "Values") +
+   theme_minimal() +
+   theme(legend.position = "none")  # Menghilangkan legend jika tidak diperlukan

Berdasarkan analisis terhadap grafik deret waktu di atas, dapat diamati bahwa data Indeks Harga Saham Gabungan (IHSG) Indonesia untuk periode Januari 2024 hingga April 2025 menunjukkan pola fluktuasi yang sangat volatil dengan beberapa kejadian ekstrem yang signifikan. Menariknya, hasil peramalan sebanyak 63 periode ke depan (mengikuti konsep pembagian train-test data) yang ditunjukkan oleh area merah muda menggambarkan kembalinya data ke nilai rata-rata (di tengah-tengah), tetapi dengan interval kepercayaan yang semakin melebar seiring bertambahnya horizon peramalan, mencerminkan ketidakpastian yang meningkat untuk peramalan jangka panjang.

3 KESIMPULAN DAN SARAN

3.1 KESIMPULAN

Berdasarkan analisis model ARIMA dengan efek outlier terhadap data Indeks Harga Saham Gabungan (IHSG) Indonesia periode 2024–2025, diperoleh kesimpulan sebagai berikut:

  1.  PEMILIHAN MODEL TERBAIK 

    Model ARIMA(, 0, 0) dengan efek outlier terbukti sebagai model terbaik untuk memprediksi IHSG Indonesia. Hal ini ditunjukkan oleh nilai AIC 8648.535, lebih rendah dibandingkan model ARIMA(0, 0,) tanpa outlier (AIC 8655.448). Model ini mampu menangkap volatilitas IHSG dan efek kejadian ekstrem secara lebih akurat.

  2.  PENGARUH OUTLIER

    Berikut tiga outlier signifikan terdeteksi dalam data:

  1. AO286 (penurunan drastis secara tiba-tiba observasi ke-286)
  2. TC294 (kenaikan sementara pada observasi ke-294)
  3. AO296 (penurunan ekstrem pada observasi ke-295) Outlier AO296 berkorelasi temporal dengan pengesahan RUU TNI oleh presiden prabowo subianto atau yang acap kali dipanggil sebagai presiden “omon-omon” tersebut yang menyebabkan penurunan IHSG hingga level terendah 6000 pada April 2025.
  1.  KINERJA MODEL 
  1. Residual model memenuhi asumsi stasioneritas mean (ADF test p-value < 0.05) dan tidak terdapat autokorelasi sisaan.
  2. Residual berdistribusi normal.

3.2 SARAN

  1.  BAGI PENELITI LANJUTAN 
  1. Integrasi Variabel Eksternal sehingga dapat dikembangkan model dengan menambahkan variabel ekonomi, seperti (inflasi, suku bunga).
  2. Pemodelan Hybrid dengan mengombinasikan ARIMA dengan metode machine learning.