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)
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(forecast)
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
## Registered S3 methods overwritten by 'forecast':
## method from
## fitted.Arima TSA
## plot.Arima TSA
library(xts)
library(readxl)
library(MASS)
library(zoo)
library(tsoutliers)
library(tseries)
library(knitr)
Data yang digunakan pada penerapan model ARIMA Outlier adalah data
saham IHSG bulan Januari 2024 hingga April 2025.Indeks Harga Saham
Gabungan merupakan salah satu indeks pasar saham yang digunakan oleh
Bursa Efek Indonesia. IHSG diperkenalkan pertama kali pada tanggal 1
April 1983 sebagai indikator pergerakan harga saham di BEJ. Indeks ini
mencakup pergerakan harga seluruh saham biasa dan saham preferen yang
tercatat di BEI.
# Impor Data
sahamihsg<-read_excel("D:/metode peramalan 2025/Data IHSG.xlsx")
saham<- as.numeric(sahamihsg$`Harga Saham`)
harian<- as.Date(sahamihsg$Tanggal)
head(sahamihsg)
## # A tibble: 6 x 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.
Berdasarkan data harian IHSG dari Januari 2024 hingga April 2025,
nilai rata-rata (mean) adalah 7.197, median sebesar 7.235, nilai
maksimum (max) mencapai 7.905, dan nilai minimum (min) tercatat sebesar
5.973.
# Statistika Deskriptif
summary(sahamihsg$`Harga Saham`)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 5973 7080 7235 7197 7351 7905
Berdasarkan grafik deret waktu IHSG dari Januari 2024 hingga April 2025, terlihat bahwa pergerakan indeks mengalami perubahan yang cukup dinamis. Pada awal tahun 2024, pergerakan IHSG cenderung stabil dengan kecenderungan naik secara perlahan. Memasuki pertengahan tahun, indeks menunjukkan lonjakan signifikan hingga mendekati angka 7900. Namun, tren ini tidak bertahan lama karena setelah mencapai puncaknya, IHSG mulai melemah secara bertahap. Penurunan semakin tajam menjelang awal tahun 2025, di mana indeks sempat menyentuh level terendah di bawah 6100. Secara umum, data menunjukkan pola yang fluktuatif dengan kecenderungan penurunan pada akhir periode. Hal ini menunjukkan tidak terjadi stasioneritas terhadap rata rata dan ragam
# Visualisasi Data
plot(harian, saham, type = "o", col = "slategray", lwd = 2)
# Stasioneritas terhadap ragam
BoxCox.lambda(saham)
## [1] 1.999924
Berdasarkan hasil pengujian bahwa data tidak stasioner terhadap ragam
karena nilainya mendekati 2. Ragam dinyatakan stasioner jika mendekati
satu maka di lakukan transforamsi boxcox
Pengujian stasioneritas terhadap rata rata menggunakan uji dicky fuller dengan kriteria sebagai berikut :
\(H_0\) : \(\phi=1\) (data tidak stasioner terhadap
rata-rata)
\(H_1\) : \(\phi<1\) (data stasioner terhadap
rata-rata)
Taraf nyata: \(\alpha=0,05\)
# Stasioneritas 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
Berdasarkan nilai pvalue (0,9621) > alpha (0,05) maka dapat
disimpulkan bahwa tidak stasioner terhadap rata rata
#Transformasi boxcox
lambda <- BoxCox.lambda(saham)
saham_bc <- BoxCox(saham, lambda)
tssahambc<-ts(saham_bc,frequency=252)
tssahambc
## Time Series:
## Start = c(1, 1)
## End = c(2, 46)
## Frequency = 252
## [1] 26800428 26475737 27065798 26998616 26508409 25904986 26100347 26047362
## [9] 26200402 26076519 26212343 25908080 26286076 26101070 26249559 26309711
## [17] 26104103 25745782 25452877 25596295 25847599 25960708 25915780 26183399
## [25] 25893619 26245793 26157074 26611064 25973675 26651992 26887957 26603991
## [33] 27013163 26986865 26918021 26592325 26510155 26521075 26837400 26745713
## [41] 26715014 26458719 26246155 26845896 27170336 27228951 27519636 27609446
## [49] 26833079 26645935 26896828 26855639 26908560 26995164 27198346 27109208
## [57] 26701717 26546490 25939967 26170307 25665505 26296442 26532434 25650968
## [65] 25408320 25665290 25099140 25003617 25265785 25720611 25582850 24737542
## [73] 25586354 26150206 26150206 25312778 25435976 25444319 25356825 25109553
## [81] 25183777 25073933 25758624 26240651 26753975 26385614 25803200 26064825
## [89] 25734163 26290860 25475277 24723903 24280246 24738315 25184132 24119804
## [97] 24309233 23775833 23938794 23485413 23447131 23320387 22664687 22611481
## [105] 23236899 23652121 23715348 23670826 23828872 24260814 24931282 25470996
## [113] 25367718 25880168 26054072 26288976 26271655 26408203 26533599 26631050
## [121] 26829638 26474064 26078612 26078107 26781988 26587951 26788646 26729265
## [129] 26357083 26194179 26541828 26547145 26205612 26306303 26817923 26687328
## [137] 24903548 25396706 25990898 25868447 26315294 26610773 27042855 27629729
## [145] 27432861 27600384 27859003 28362315 28517698 28022282 28440067 28908581
## [153] 28845451 29310467 29071549 29401234 29583957 28987153 29417870 29480319
## [161] 29794402 29647119 30100298 30096963 30386088 30495130 30648727 30627990
## [169] 31227540 29957831 30211623 30233073 29941584 29969594 29602337 28316784
## [177] 29182408 28583189 28436523 28077763 28138023 28536952 28116730 27957960
## [185] 28261668 28555911 29066594 29234439 29896271 30089983 30187307 30314669
## [193] 30303618 29753518 29584956 29125159 28911698 28633019 28664573 28146498
## [201] 27953624 28046609 27243412 26220088 26534691 26383944 26788720 26691345
## [209] 26008415 25625557 25432839 25872689 25762212 25480130 25871610 26731092
## [217] 26234785 25904698 25290378 24814313 25874918 26823633 26725245 27235444
## [225] 27642288 27758062 27843485 27319985 26809211 26327117 25600301 25244969
## [233] 24325546 24371796 25163775 24946602 24740987 25046615 25639514 25648248
## [241] 25050648 25070535 25049799 24938412 25110120 24602724 24182332 25044210
## [249] 25242412 25578346 25693445 25772904 26316237 26138929 25659919 25001213
## [257] 25254346 24695231 25001072 24654290 23621604 22716877 22084989 21320062
## [265] 22069312 21855913 22020724 23315745 23607933 23070577 23024222 23125815
## [273] 22764203 21681252 21807098 21017348 19647938 21239652 20342018 21316211
## [281] 21884209 22004408 21754514 21410631 22197410 22080205 21213404 20929944
## [289] 19353213 19906081 20350116 19570186 18968492 19429349 20932595 21180795
## [297] 17965685 17824667
## attr(,"lambda")
## [1] 1.999924
saham_diff <- diff(tssahambc, differences = 1)
# Stasioneritas terhadap ragam setelah differencing
BoxCox.lambda(saham_diff)
## [1] 1
Berdasarkan hasil pengujian bahwa data stasioner terhadap ragam karena nilainya sama dengan 1 karena Ragam dinyatakan stasioner jika mendekati satu
Pengujian stasioneritas terhadap rata rata menggunakan uji dicky fuller dengan kriteria 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\)
# Stasioneritas terhadap rata rata setelah differencing
adf.test(saham_diff)
## Warning in adf.test(saham_diff): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: saham_diff
## Dickey-Fuller = -7.4284, Lag order = 6, p-value = 0.01
## alternative hypothesis: stationary
Berdasarkan nilai pvalue (0,01) < alpha (0,05) maka dapat disimpulkan bahwa stasioner terhadap rata rata
#Visualisasi Data
plot(saham_diff, type = "l", col = "slategray", main = "Data Setelah Differencing", ylab = "Nilai Diferensi")
Setelah dilakukan transformasi untuk mengatasi ketidakstasioneran
terhadap rata rata dan ragam maka diperoleh grafik speerti gambar
diatas. Dapat dilihat bahwa grafik tidak terlalu fluktuatif dan grafik
berada disekitar rata rata = 0, meskipun terjadi penurunan yang sangat
tajam (outlier negative) pada sekitar bulan maret ke april dimana
terdapat kejadian yang ekstrim pada pasar saham. Meskipun demikian dapat
dilakukan uji berikutnya.
# ACF
acf(saham_diff)
# PACF
pacf(saham_diff)
# Pemilihan model terbaik
model_arima <- auto.arima(tssahambc)
model_arima
## Series: tssahambc
## ARIMA(0,1,0)
##
## sigma^2 = 2.728e+11: log likelihood = -4331.74
## AIC=8665.48 AICc=8665.49 BIC=8669.17
arima1 <- arima(tssahambc, order = c(0, 1, 0))
Berdasarkan syntax auto.arima maka diperoleh model arima terbaik pada data ini adalah arima(0,1,0) hal itu juga senada dengan plot acf dan pacf tidak terdapat cutoff pada lag lag diawal sehingga data ini hanya terdapat 1 kali differencing saja tidak cutoff di lag manapun sehingga tidak terdapat koefisien AR dan MA.
Kemudian dilakukan pengujian asumsi autokorelasi sisaan dan
normalitas sisaan, dengan hipotesis untuk uji tersebut adalah: \(H_0\) : \(\rho_1=\rho_2=\rho_3=...=\rho_x=0\) (tidak
terdapat autokorelasi pada sisaan)
\(H_1\) : minimal terdapat satu \(\rho_x \neq 0\) ( terdapat autokorelasi
pada sisaan)
Box.test(residuals(arima1), lag = 2, type = "Ljung-Box")
##
## Box-Ljung test
##
## data: residuals(arima1)
## X-squared = 3.4973, df = 2, p-value = 0.174
Berdasarkan hasil Rstudio maka diperoleh nilai pvalue (0,174) lebih dari nilai alpha (0,05) maka dapat disimpulkan tidak terdapat autokorelasi sisaan sehingga dapat dilanjutkan ke uji normalitas sisaan
H0 : residual menyebar secara normal
H1 : residual tidak
menyebar secara normal
jarque.bera.test(residuals(arima1))
##
## Jarque Bera Test
##
## data: residuals(arima1)
## X-squared = 309.43, df = 2, p-value < 2.2e-16
Berdasarkan hasil perhitungan maka diperoleh nilai pvalue (0,000) kurang dari alpha (0,05) maka dapat disimpulkan bahwa model arima yang dihasilkan tidak menyebar secara normal. Berdasarkan literatur yang ada tidak menjadi suatu masalah jika uji normalitas tidak terpenuhi maka model tetap dapat dipakai.
prediksioutlier <- tssahambc - residuals(arima1)
outlier <- tso(prediksioutlier, types = c("AO", "IO", "IS", "TC"))
print(outlier)
## Series: prediksioutlier
## Regression with ARIMA(0,1,0) errors
##
## Coefficients:
## TC138 AO278 AO298
## -1831870.2 -1480561.8 -3215109.3
## s.e. 421702.3 323427.7 458602.4
##
## sigma^2 = 2.12e+11: log likelihood = -4292.8
## AIC=8593.6 AICc=8593.74 BIC=8608.38
##
## Outliers:
## type ind time coefhat tstat
## 1 TC 138 1:138 -1831870 -4.344
## 2 AO 278 2:26 -1480562 -4.578
## 3 AO 298 2:46 -3215109 -7.011
xreg.outlier <- outlier$effects
plot(outlier$effects)
Berdasarkan grafik pada bagian ke enam pembahasan maka dapat
disimpuplkan terdapat outlier pada data ini, hal tersebut senada dengan
hasil syntax yang menyatakan terdapat outlier additive outlier (AO) pada
data ke 278 dan 298 dan temporary change (TC) pada data ke-138. Data ini
juga diperkuat dengan grafik yang menandakan bahwa terdapat outlier
dalam data saham IHSG.
# Pemodelan Arima Outlier
arima.tc <- arima(tssahambc, order=c(0,1,0), xreg = xreg.outlier, method = 'ML', include.mean=TRUE, transform.pars = FALSE)
coeftest(arima.tc)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## xreg -0.19021 0.12038 -1.58 0.1141
Karena pvalue (0,1141) lebih dari alpha (0,05) maka dapat disimpulkan terdapat parameter yang tidak signifikan akan tetapi dapat dilanjutkan ke perhitungan berikutnya
Kemudian dilakukan pengujian asumsi autokorelasi sisaan dan
normalitas sisaan, dengan hipotesis untuk uji tersebut adalah: \(H_0\) : \(\rho_1=\rho_2=\rho_3=...=\rho_x=0\) (tidak
terdapat autokorelasi pada sisaan)
\(H_1\) : minimal terdapat satu \(\rho_x \neq 0\) ( terdapat autokorelasi
pada sisaan)
residarimatc<- residuals(arima.tc)
Box.test(residarimatc, lag=2, type = c('Ljung-Box'))
##
## Box-Ljung test
##
## data: residarimatc
## X-squared = 4.4337, df = 2, p-value = 0.109
Berdasarkan hasil Rstudio maka diperoleh nilai pvalue (0,109) lebih dari nilai alpha (0,05) maka dapat disimpulkan tidak terdapat autokorelasi sisaan sehingga dapat dilanjutkan ke uji normalitas sisaan
H0 : residual menyebar secara normal
H1 : residual tidak
menyebar secara normal
jarque.bera.test(residarimatc)
##
## Jarque Bera Test
##
## data: residarimatc
## X-squared = 307.14, df = 2, p-value < 2.2e-16
Berdasarkan hasil perhitungan maka diperoleh nilai pvalue (0,000) kurang dari alpha (0,05) maka dapat disimpulkan bahwa model arima outlier yang dihasilkan tidak menyebar secara normal. Berdasarkan literatur yang ada tidak menjadi suatu masalah jika uji normalitas tidak terpenuhi maka model tetap dapat dipakai.
prediksi.arimatc <- tssahambc - residuals(arima.tc)
plot(harian, tssahambc, type = "o", col = "blue", lwd = 2,
ylab = "Nilai", xlab = "Tanggal", main = "Saham Aktual vs Prediksi ARIMA + Outlier")
lines(harian, prediksi.arimatc, type = "o", col = "red", lwd = 2)
legend("bottomleft",
legend = c("Saham Aktual", "Prediksi ARIMA + Outlier"),
col = c("blue", "red"), lty = 1, pch = 1, cex = 0.8)
Berdasarkan grafik yang ditampilkan bahwa pemodelan data IHSG harian
dari Januari 2024 hingga April 2025 dengan pemodelan outlier dapat
menangkap fluktuatif nilai saham harian. Hal tersebut dapat ditunjukkan
melalui grafik antara garis merah dan biru tidak begitu jauh jarak
antara titiknya yang berarti standard deviasinya tidak besar maka dapat
dikatakan bahwa model ini mampu menangkap pola data deret waktu sehingga
model ini dapat digunakan para investor untuk mengambil keputusan baik
jangka pendek maupun jangka panjang agar lebih bijak dalam membeli.
Pemodelan data IHSG harian dari Januari 2024 hingga April 2025 menggunakan metode ARIMA (0,1,0) yang dikombinasikan dengan deteksi outlier (AO, IO, IS, TC) menunjukkan bahwa model ini mampu menangkap pola fluktuatif pergerakan indeks secara baik. Hasil visualisasi menunjukkan bahwa prediksi model sangat mendekati nilai aktual, ditunjukkan oleh garis prediksi (merah) yang hampir berimpit dengan data aktual (biru). Hal ini menandakan bahwa simpangan antara prediksi dan data aktual kecil (standar deviasi rendah), sehingga model ini cukup baik untuk digunakan sebagai dasar pengambilan keputusan investasi. Model ini bermanfaat baik untuk strategi jangka pendek maupun jangka panjang, khususnya dalam mengantisipasi pergerakan pasar yang beresiko.
Berdasarkan hasil pemodelan yang dilakukan ,yaitu model arima outlier dalam menggambarkan pergerakan IHSG dari Januari 2024 – April 2025 maka dapat digunakan model ini. Akan tetapi, investor harus lebih berhati hati dalam mengambil Keputusan. Model ini memiliki kekurangan seperti tidak mempertimbangkan faktor atau variabel lain serta dapat mengeksplore model lain yang lebih baik untuk meminimalisir resiko bagi para investor. untuk melakukan analisis tambahan guna meningkatkan akurasi prediksi.