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.
Model deret waktu manakah yang sesuai untuk permasalahan tersebut?
Bagaimana kemampuan model deret waktu yang ditetapkan dalam memodelkan data IHSG?
Bagaimana hasil peramalan dengan model deret waktu pada kasus data IHSG?
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.6589Output 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.
> #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.
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$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)/2Menurut 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).
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: stationaryKesimpulan 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.
> 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.1554487Dengan 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).
> 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.1596577Dengan 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]).
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).
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> ##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 ' ' 1Setelah 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).
> ##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.2809Kesimpulan 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.
> 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.2146Kesimpulan 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.
> 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-16Kesimpulan 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.
> 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.2146Kesimpulan 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.
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.
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.577Berdasarkan 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.
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.
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.
> 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> 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.9904Kesimpulan 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.
> 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.0001035Kesimpulan 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.
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.
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.
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.
Berdasarkan analisis model ARIMA dengan efek outlier terhadap data Indeks Harga Saham Gabungan (IHSG) Indonesia periode 2024–2025, diperoleh kesimpulan sebagai berikut:
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.
PENGARUH OUTLIER
Berikut tiga outlier signifikan terdeteksi dalam data:
KINERJA MODEL BAGI PENELITI LANJUTAN