## Warning: package 'tseries' was built under R version 4.4.3
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
## Warning: package 'FSA' was built under R version 4.4.3
## ## FSA v0.9.6. See citation('FSA') if used in publication.
## ## Run fishR() for related website and fishR('IFAR') for related book.
## Warning: package 'FinTS' was built under R version 4.4.3
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
## Warning: package 'TSA' was built under R version 4.4.2
##
## Attaching package: 'TSA'
## The following objects are masked from 'package:stats':
##
## acf, arima
## The following object is masked from 'package:utils':
##
## tar
## Warning: package 'forecast' was built under R version 4.4.3
## 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
## Warning: package 'MLmetrics' was built under R version 4.4.3
##
## Attaching package: 'MLmetrics'
## The following object is masked from 'package:base':
##
## Recall
## Warning: package 'xts' was built under R version 4.4.3
## Warning: package 'readxl' was built under R version 4.4.3
## Warning: package 'ggplot2' was built under R version 4.4.3
## Warning: package 'ggrepel' was built under R version 4.4.3
## Warning: package 'tsoutliers' was built under R version 4.4.3
## Warning: package 'dplyr' was built under R version 4.4.3
##
## ######################### Warning from 'xts' package ##########################
## # #
## # The dplyr lag() function breaks how base R's lag() function is supposed to #
## # work, which breaks lag(my_xts). Calls to lag(my_xts) that you type or #
## # source() into this session won't work correctly. #
## # #
## # Use stats::lag() to make sure you're not using dplyr::lag(), or you can add #
## # conflictRules('dplyr', exclude = 'lag') to your .Rprofile to stop #
## # dplyr from breaking base R's lag() function. #
## # #
## # Code in packages is not affected. It's protected by R's namespace mechanism #
## # Set `options(xts.warn_dplyr_breaks_lag = FALSE)` to suppress this warning. #
## # #
## ###############################################################################
##
## Attaching package: 'dplyr'
## The following object is masked from 'package:MASS':
##
## select
## The following objects are masked from 'package:xts':
##
## first, last
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
## Warning: package 'DT' was built under R version 4.4.3
Data yang digunakan dalam penerapan model ARIMA Outlier adalah data
harga saham harian IHSG dari tanggal 1 Februari 2024 hingga 4 September
2025. Harga saham IHSG dipengaruhi oleh berbagai faktor ekonomi, seperti
kondisi pasar domestik, situasi politik, pergerakan pasar global, serta
peristiwa besar seperti ketidakstabilan ekonomi pasca-pandemi COVID-19,
ketegangan geopolitik, dan perubahan kebijakan moneter. Faktor-faktor
tersebut dapat menyebabkan fluktuasi harga yang tajam dan munculnya
nilai ekstrem (outlier) dalam pergerakan IHSG. Karena model ARIMA
konvensional memiliki keterbatasan dalam menangani data dengan pola
fluktuasi ekstrem, analisis ini menggunakan pendekatan model ARIMA
Outlier untuk mendeteksi dan mengakomodasi nilai-nilai ekstrem, serta
ARIMA Intervensi untuk menangkap dampak peristiwa khusus terhadap
pergerakan harga saham. Pendekatan ini diharapkan menghasilkan model
peramalan yang lebih akurat dan sesuai dengan karakteristik data IHSG.
#Impor Data
Data_Saham <- read_excel("C:/Users/Shella Mitha/Downloads/Data IHSG (1).xlsx")
Saham <- as.numeric(Data_Saham$'Harga Saham')
Data_Saham$Tanggal <- as.Date(Data_Saham$'Tanggal')
Tanggal <- Data_Saham$Tanggal
#Format kolom tanggal
Data_Saham <- Data_Saham %>%
mutate(Tanggal = format(as.Date(Tanggal), "%d %B %Y"))
#Tampilkan tanpa kolom No
datatable(head(Data_Saham),
options = list(pageLength = 6),
rownames = FALSE,
caption = "Tabel 1. Data Harga Saham IHSG")#Convert to Time Series
ts_Saham <- ts(Saham, frequency = 252)
#Visualisasi Data Saham
plot(Tanggal, Saham, type = "o", col = "blue", lwd = 2)
abline(v = Tanggal[64], col = "red", lty = 3, lwd = 1.5)Pada plot deret waktu tersebut, dapat diketahui bahwa nilai Indeks Harga Saham Gabungan (IHSG) mengalami fluktuasi cukup tinggi sepanjang periode Januari 2024 hingga April 2025. Secara umum, IHSG sempat bergerak stabil di awal tahun 2024, lalu mengalami penurunan hingga pertengahan tahun 2024. Setelah itu, IHSG menunjukkan kenaikan yang cukup signifikan hingga mencapai puncaknya pada akhir tahun 2024. Namun, mulai awal tahun 2025, terjadi penurunan bertahap yang kemudian diikuti oleh penurunan yang sangat tajam pada awal April 2025.
Pergerakan IHSG ini menunjukkan karakteristik deret waktu yang tidak stasioner, dengan fluktuasi yang cukup besar dan adanya tren yang berubah-ubah, sehingga perlu dilakukan pemodelan deret waktu untuk memahami pola pergerakan dan melakukan peramalan. Fluktuasi yang tinggi juga memungkinkan adanya nilai pencilan (outlier) pada data IHSG.
## [1] 1.999924
Hasil dari pemeriksaan stasioneritas terhadap ragam menggunakan Box-cox dapat diketahui bahwa nilai \(\lambda=1.999924\) sehingga dapat dinyatakan bahwa data saham tidak stasioner terhadap ragam.
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
##
## 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 Saham harian 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 saham hasil pembedaan pertama tidak stasioner terhadap rata-rata.
#Visualisasi Setelah Differencing
ggplot(data.frame(tanggal_diff, diff_Saham.bc), aes(x = tanggal_diff, y = diff_Saham.bc)) +
geom_line(color = "blue", size = 1.2) +
geom_point(color = "blue", size = 2) +
labs(title = "Saham Setelah Transformasi dan Differencing", x = "Tanggal", y = "Diff Saham") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5)) +
geom_vline(xintercept = as.numeric(tanggal_diff[63]), linetype = "dashed", color = "red", size = 1.2)## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Don't know how to automatically pick scale for object of type <ts>. Defaulting
## to continuous.
Plot di atas menunjukkan hasil differencing pertama pada data IHSG
(yaitu selisih nilai IHSG antar hari), yang bertujuan untuk
menghilangkan tren dan membuat data menjadi stasioner. Berdasarkan plot
tersebut, terlihat bahwa fluktuasi data menjadi lebih stabil secara
rata-rata (berkisar di sekitar nilai nol), meskipun masih terdapat
variasi yang tinggi, terutama di bagian akhir grafik (sekitar
Maret–April 2025), di mana terjadi penurunan yang sangat tajam (outlier
negatif) yang mengindikasikan adanya kejadian ekstrem dalam pasar
saham.
Secara keseluruhan, pola ini menunjukkan bahwa data IHSG setelah differencing cenderung stasioner dalam ragam dan rata-rata, namun masih memiliki nilai pencilan (outlier) pada periode tertentu. Ini sesuai dengan karakteristik pasar saham yang volatil dan terpengaruh oleh berbagai sentimen atau kebijakan. Oleh karena itu, data ini layak untuk dilakukan pemodelan dengan pendekatan deret waktu seperti ARIMA, karena asumsi kestasioneran (stationarity) telah lebih mendekati terpenuhi setelah proses differencing.
## [1] 1
Hasil dari pemeriksaan stasioneritas terhadap ragam menggunakan Box-cox dapat diketahui bahwa nilai \(\lambda=1\) sehingga dapat dinyatakan bahwa data saham stasioner terhadap ragam.
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
## Warning in adf.test(diff_Saham.bc, k = 1): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: diff_Saham.bc
## Dickey-Fuller = -13.307, Lag order = 1, p-value = 0.01
## alternative hypothesis: stationary
Hasil uji Dickey Fuller pada data Saham harian didapatkan nilai-p sebesar \(0,01\) yang di mana kurang dari \(\alpha=0,05\) sehinggamenghasilkan keputusan tolak \(H_0\). Dengan demikian, data mengandung akar unit (non-stasioner), dan menerima hipotesis alternatif bahwa data sudah stasioner.Dengan demikian, dapat disimpulkan bahwa data differencing IHSG (diff_Saham) sudah stasioner terhadap rata-rata, artinya nilai perubahan harian IHSG sudah berfluktuasi secara acak di sekitar nilai rata-rata nol dan tidak lagi membentuk pola tren.
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.
Hasil analisis terhadap grafik Autocorrelation Function (ACF) dan Partial Autocorrelation Function (PACF) setelah dilakukan transformasi Box-Cox dan differencing pada data saham menunjukkan indikasi yang sesuai untuk pendekatan model ARIMA. Berdasarkan plot di atas, dua kandidat model yang dianggap paling sesuai untuk dianalisis lebih lanjut adalah ARIMA(0,1,0) sebagai model dasar tanpa komponen moving average, serta ARIMA(0,1,1) yang menambahkan elemen moving average pada struktur model. Pemilihan ini dilakukan untuk menangkap dinamika residual yang mungkin masih tersisa setelah diferensiasi pertama.
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ma1 -7.3202e-05 6.5242e-02 -0.0011 0.9991
Model ARIMA(0,1,0) tidak memiliki komponen AR maupun MA, sehingga sepenuhnya mengandalkan proses differencing untuk mencapai stasioneritas. Karena tidak ada parameter yang diestimasi, uji signifikansi (coeftest) tidak dapat dilakukan.Sebaliknya, model ARIMA(0,1,1) memiliki satu parameter MA(1), namun hasil uji menunjukkan p-value sebesar 0.9991, jauh di atas taraf signifikansi 0,05. Ini berarti parameter tersebut tidak signifikan secara statistik.Maka, model ARIMA(0,1,0) dipilih karena lebih sederhana dan parameter pada ARIMA(0,1,1) tidak memberikan kontribusi yang signifikan.
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
##
## Box-Ljung test
##
## data: residuals(arima.m1)
## X-squared = 3.4973, df = 2, p-value = 0.174
##
## Box-Ljung test
##
## data: residuals(arima.m2)
## X-squared = 3.4971, df = 2, p-value = 0.174
Berasarkan hasil uji autokorelasi sisaan model tentatif ARIMA 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
##
## data: residuals(arima.m1)
## X-squared = 309.43, df = 2, p-value < 2.2e-16
##
## Jarque Bera Test
##
## data: residuals(arima.m2)
## X-squared = 309.42, 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. Setelah seluruh asumsi terpenuhi, maka dapat dilanjutkan pemilihan model terbaik dengan AIC.
## [1] 8663.477
## [1] 8665.477
Berdasarhan nilai AIC dari kedua model tentatif, dapat diperoleh informasi bahwa model dengan nilai AIC terkecil adalah ARIMA(0,1,0).
Berdasarkan plot data 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 <- ts_Saham.bc - residuals(arima.m1)
outlier <- tso(prediksi.arima, types = c("AO", "IO", "IS", "TC"))
outlier## Series: prediksi.arima
## 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
Grafik di atas menampilkan hasil deteksi outlier dari fungsi tso(), yang
menggambarkan seberapa besar pengaruh masing-masing jenis outlier
terhadap data deret waktu saham. Sebagian besar titik memiliki efek
mendekati nol, menandakan bahwa data tersebut tidak tergolong outlier
dan tidak memengaruhi pola utama deret waktu.
Namun, beberapa titik menunjukkan lonjakan atau penurunan yang mencolok, mencerminkan adanya outlier signifikan seperti Additive Outlier (AO), Innovational Outlier (IO), atau Temporary Change (TC), yang dapat memengaruhi analisis jika tidak ditangani.
xreg.outlier <- outlier$effects
arima.tc <- arima(ts_Saham.bc, 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
Berdasarkan hasil pemodelan ARIMA Outlier dapat diperoleh informasi bahwa terdapat salah satu parameter yang tidak signifikan namun model masih dapat digunakan karena terdapat efek outlier.
Langkah selanjutnya adalah melakukan pengujian asumsi model ARIMA
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
##
## Box-Ljung test
##
## data: residuals(arima.tc)
## X-squared = 4.4337, df = 2, p-value = 0.109
Berasarkan hasil uji autokorelasi sisaan model ARIMA Outlier LS
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
##
## data: residuals(arima.tc)
## X-squared = 307.14, 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 LS layak untuk digunakan.
prediksi.arimatc <- ts_Saham.bc - residuals(arima.tc)
ggplot() +
geom_line(data = data.frame(Tanggal, Saham.bc), aes(x = Tanggal, y = Saham.bc), color = "blue", size = 1.2) +
geom_line(data = data.frame(Tanggal, prediksi.arima), aes(x = Tanggal, y = prediksi.arima), color = "red", size = 1.2) +
geom_line(data = data.frame(Tanggal, prediksi.arimatc), aes(x = Tanggal, y = prediksi.arimatc), color = "green", size = 1.2) +
labs(title = "Plot Data dan Prediksi", x = "Tanggal", y = "Harga Saham") +
theme_minimal()Plot ini menunjukkan perbandingan antara data asli IHSG dan hasil prediksi dari dua jenis model ARIMA satu tanpa penyesuaian outlier, dan satu lagi yang telah disempurnakan dengan mempertimbangkan pengaruh outlier.
Dalam grafik, garis biru mewakili data IHSG sebenarnya, garis merah menunjukkan hasil prediksi dari model ARIMA standar, dan garis hijau menunjukkan hasil prediksi dari model ARIMA yang sudah disesuaikan dengan outlier. Terlihat bahwa garis merah sering menyimpang dari data asli, terutama pada saat terjadi lonjakan atau penurunan tajam. Hal ini menunjukkan bahwa model awal belum cukup akurat dalam menangkap perubahan mendadak pada data.
Sementara itu, garis hijau tampak mengikuti pergerakan data asli dengan lebih baik. Ini menunjukkan bahwa menambahkan informasi tentang outlier ke dalam model membantu meningkatkan akurasi prediksi. Dengan demikian, penyesuaian terhadap outlier terbukti memberikan dampak positif dan membuat model lebih andal dalam memprediksi pergerakan IHSG.
Setelah mendapatkan model ARIMA terbaik, langkah selanjutnya adalah melakukan peramalan. Peramalan dilakukan untuk 30 periode.
peramalan <- forecast(ts_Saham.bc, model = arima.m1, h = 30)
# Fungsi Invers Transformasi Box-Cox
inv_BoxCox <- function(x, lambda) {
if (lambda == 0) exp(x) else (lambda * x + 1)^(1/lambda)
}
peramalan$mean <- inv_BoxCox(peramalan$mean, lambda)
peramalan$lower <- inv_BoxCox(peramalan$lower, lambda)
peramalan$upper <- inv_BoxCox(peramalan$upper, lambda)
# Data untuk Plot Peramalan
df <- data.frame(Hari = 1:(length(Saham) + 30),
Saham = c(Saham, peramalan$mean))
ribbon <- data.frame(Hari = (length(Saham) + 1):(length(Saham) + 30),
lower = peramalan$lower[,2],
upper = peramalan$upper[,2])
# Plot Forecast Saham
ggplot() +
# Plot Data Saham Aktual
geom_line(data = df, aes(x = Hari, y = Saham), color = "black", size = 1.5, alpha = 0.8) +
# Plot Interval Prediksi
geom_ribbon(data = ribbon, aes(x = Hari, ymin = lower, ymax = upper),
fill = "#4682B4", alpha = 0.2) + # Gunakan warna biru yang lebih elegan
# Garis Tren (Forecast Mean)
geom_line(data = df, aes(x = Hari, y = Saham), color = "#FF6347", size = 1.5, alpha = 1) + # Garis Tren berwarna merah
# Titik Data Prediksi
geom_point(data = df, aes(x = Hari, y = Saham), color = "#FF6347", size = 3, alpha = 0.6) +
# Labels dan Judul
labs(title = "Peramalan Harga Saham (30 Hari Ke Depan)",
x = "Hari ke-",
y = "Harga Saham",
subtitle = "Interval Prediksi dengan Confidence Interval 95%") +
# Tema dan Tampilan
theme_minimal(base_size = 14) +
theme(
plot.title = element_text(hjust = 0.5, size = 18, face = "bold", color = "#2F4F4F"), # Warna dan ukuran judul
plot.subtitle = element_text(hjust = 0.5, size = 12, color = "#2F4F4F"),
axis.title = element_text(size = 14, face = "bold", color = "#2F4F4F"),
axis.text = element_text(size = 12, color = "#2F4F4F"),
panel.grid.major = element_line(color = "#D3D3D3", size = 0.5), # Grid utama berwarna abu-abu
panel.grid.minor = element_line(color = "#E8E8E8", size = 0.3), # Grid minor lebih halus
legend.position = "none"
) +
# Tambahkan garis vertikal untuk memperjelas perbedaan antara data aktual dan prediksi
geom_vline(xintercept = length(Saham), linetype = "dashed", color = "#2F4F4F", size = 1.2) +
annotate("text", x = length(Saham) + 3, y = max(df$Saham) * 0.95, label = "Forecast Period", color = "#2F4F4F", size = 4)## Warning: The `size` argument of `element_line()` is deprecated as of ggplot2 3.4.0.
## ℹ Please use the `linewidth` argument instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
Plot yang ditampilkan menggambarkan hasil peramalan Indeks Harga Saham Gabungan (IHSG) untuk 30 hari ke depan menggunakan model ARIMA berdasarkan data historis. Garis merah menunjukkan data IHSG aktual hingga hari ke-298, sedangkan area berwarna biru muda menggambarkan hasil prediksi beserta rentang ketidakpastian (interval kepercayaan 95%).
Menjelang akhir periode data historis, IHSG terlihat mengalami penurunan secara bertahap. Setelah itu, hasil prediksi menunjukkan bahwa pergerakan IHSG cenderung stabil atau sedikit menurun. Garis tengah (mean forecast) menggambarkan tren yang mendatar, tanpa perubahan tajam. Sementara itu, interval kepercayaan yang semakin melebar ke depan menandakan bahwa ketidakpastian prediksi meningkat seiring bertambahnya waktu.
Secara keseluruhan, IHSG diperkirakan akan bergerak di kisaran 5800 hingga 6400, dengan nilai rata-rata mendekati 6100. Hal ini mencerminkan kondisi pasar yang relatif stabil dalam jangka pendek, tanpa indikasi perubahan besar.