Bab 1: Pendahuluan

1.1. Latar Belakang

Harga minyak dunia merupakan salah satu indikator penting dalam perekonomian global karena memiliki pengaruh yang luas terhadap berbagai sektor seperti industri, transportasi, energi, hingga perdagangan internasional. Perubahan harga minyak dunia dapat mempengaruhi biaya produksi, harga energi, serta stabilitas ekonomi di berbagai negara. Oleh karena itu, pergerakan harga minyak dunia sering menjadi perhatian bagi pemerintah, pelaku industri, maupun investor.

Pergerakan harga minyak dipengaruhi oleh berbagai faktor seperti kondisi geopolitik, kebijakan produksi negara-negara penghasil minyak, perubahan permintaan energi global, serta dinamika ekonomi dunia. Dalam beberapa tahun terakhir pasar energi global mengalami berbagai dinamika yang cukup signifikan yang menyebabkan fluktuasi harga minyak menjadi semakin tinggi.

Ketegangan geopolitik di berbagai kawasan seperti konflik Rusia–Ukraina serta meningkatnya ketegangan di kawasan Timur Tengah turut memberikan dampak terhadap stabilitas pasar energi global. Konflik yang melibatkan Iran, Israel, serta pengaruh kebijakan Amerika Serikat terhadap stabilitas kawasan Timur Tengah menjadi salah satu faktor yang berpotensi mempengaruhi pasokan minyak dunia dan memicu volatilitas harga minyak di pasar internasional.

1.2. Rumusan Masalah

Berdasarkan latar belakang yang telah diuraikan, maka rumusan masalah dalam penelitian ini adalah sebagai berikut:

  1. Bagaimana pola pergerakan harga minyak dunia pada periode Januari 2023 hingga Maret 2026?

  2. Bagaimana model ARIMA yang paling sesuai untuk memodelkan pergerakan harga minyak dunia?

  3. Bagaimana hasil peramalan harga minyak dunia pada periode mendatang menggunakan model ARIMA terbaik?

1.3. Tujuan Penelitian

Tujuan dari penelitian ini adalah sebagai berikut:

  1. Menganalisis pola pergerakan harga minyak dunia pada periode pengamatan.

  2. Menentukan model ARIMA terbaik yang dapat digunakan untuk memodelkan data harga minyak dunia.

  3. Melakukan peramalan harga minyak dunia pada periode mendatang menggunakan model yang diperoleh.

BAB 2: Tinjauan Pustaka

Analisis deret waktu (time series) merupakan metode statistik yang digunakan untuk menganalisis data yang diamati secara berurutan berdasarkan waktu. Tujuan utama dari analisis deret waktu adalah untuk mengidentifikasi pola yang terdapat pada data serta melakukan peramalan terhadap nilai di masa mendatang.

Salah satu metode yang sering digunakan dalam analisis deret waktu adalah metode Autoregressive Integrated Moving Average (ARIMA) yang diperkenalkan oleh Box dan Jenkins. Model ARIMA terdiri dari tiga komponen utama yaitu komponen autoregressive (AR), differencing atau integrasi (I), dan moving average (MA). Model ini dinotasikan sebagai ARIMA(p,d,q) dimana p merupakan orde autoregressive, d merupakan jumlah differencing yang dilakukan untuk membuat data stasioner, dan q merupakan orde moving average.

Pada data ekonomi dan komoditas seperti harga minyak dunia, pergerakan harga sering kali menunjukkan volatilitas yang tinggi akibat pengaruh faktor eksternal seperti kondisi geopolitik, kebijakan energi global, serta perubahan permintaan dan penawaran pasar energi. Oleh karena itu, penggunaan model deret waktu seperti ARIMA dapat membantu dalam memahami pola pergerakan harga serta memberikan gambaran awal mengenai kemungkinan pergerakan harga di masa mendatang.

Bab 3: Metodologi Penelitian

Penelitian ini menggunakan data harga minyak dunia yang diperoleh dari situs Investing.com (https://www.investing.com/commodities/brent-oil-historical-data) dengan periode pengamatan Januari 2023 hingga Maret 2026. Data yang digunakan merupakan harga penutupan (closing price) minyak dunia yang dicatat setiap hari perdagangan.

Bab 4: Hasil dan Pembahasan

4.1. Import Library

Seluruh proses analisis dilakukan menggunakan perangkat lunak R dengan beberapa library pendukung sebagai berikut:

library(readr)
library(lubridate)
## 
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union
library(forecast)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(tseries)
library(ggplot2)
library(FinTS)
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
## 
## Attaching package: 'FinTS'
## The following object is masked from 'package:forecast':
## 
##     Acf

4.2. Load Data

data <- read.csv("data harga minyak dunia.csv", sep=";")

data$Date <- as.Date(data$Date, format="%d/%m/%Y")

data <- data[order(data$Date),]

head(data)
##         Date Price
## 1 2023-01-03 82.10
## 2 2023-01-04 77.84
## 3 2023-01-05 78.69
## 4 2023-01-06 78.57
## 5 2023-01-09 79.65
## 6 2023-01-10 80.10
str(data)
## 'data.frame':    820 obs. of  2 variables:
##  $ Date : Date, format: "2023-01-03" "2023-01-04" ...
##  $ Price: num  82.1 77.8 78.7 78.6 79.7 ...

4.3. Visualisasi Data Time Series

ggplot(data, aes(x=Date, y=Price)) +
  geom_line(color="blue") +
  labs(title="Pergerakan Harga Minyak Dunia",
       x="Tanggal",
       y="Harga")

Grafik menunjukkan bahwa harga minyak dunia mengalami perubahan yang cukup dinamis sepanjang periode pengamatan. Terdapat beberapa kenaikan dan penurunan harga yang cukup tajam yang menunjukkan adanya volatilitas pada pasar minyak dunia.

4.4. Split Data

price_ts <- ts(data$Price)

n <- length(price_ts)

train_size <- floor(0.8 * n)

train <- price_ts[1:train_size]
test <- price_ts[(train_size+1):n]

Data dibagi menjadi dua bagian yaitu 80% data training untuk membangun model dan 20% data testing untuk mengevaluasi kemampuan prediksi model.

4.5. Uji Stationeritas

Sebelum membentuk model ARIMA, data deret waktu harus memenuhi sifat stasioner. Stasioneritas dapat diartikan sebagai kondisi dimana nilai rata-rata dan varians data relatif konstan sepanjang waktu.

Uji stasioneritas dalam mean secara formal dapat dilakukan dengan Augmented Dickey-Fuller test (ADF test).

  • Hipotesis

    H₀ :𝛿 = 0 (terdapat unit roots sehingga data tidak stasioner)

    H₁ :𝛿 ≠ 0 (tidak terdapat unit roots sehingga data stasioner)

  • Taraf Signifikansi

    𝛼 = 5% = 0,05

  • Statistik Uji

adf.test(train)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  train
## Dickey-Fuller = -2.9631, Lag order = 8, p-value = 0.1706
## alternative hypothesis: stationary

Terlihat bahwa output dari Augmented Dickey-Fuller Test menghasilkan p-value = 0.1706.

  • Daerah Kritis

    H₀ ditolak jika p-value < 𝛼(0,05)

  • Keputusan dan Kesimpulan

    Pada taraf signifikansi 𝛼 = 5%, H₀ gagal ditolak karena nilai p-value (0.1706) > 0,05. Dengan ini, dapat dinyatakan bahwa data yang digunakan belum stationer sehingga perlu dilakukan penanganan, metode yang dipilih pada kasus ini adalah differencing.

4.6 Differencing

Differencing dilakukan untuk menghilangkan tren pada data sehingga data menjadi lebih stabil di sekitar nilai rata-rata. Secara matematis differencing dapat dituliskan sebagai:

\[ Z_t=Y_t - Y_{t-1} \]

diff_train <- diff(train)
plot(diff_train)

4.7 Uji Stationersitas Setelah Diffferencing

  • Statistik Uji
adf.test(diff_train)
## Warning in adf.test(diff_train): p-value smaller than printed p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  diff_train
## Dickey-Fuller = -10.169, Lag order = 8, p-value = 0.01
## alternative hypothesis: stationary

Terlihat bahwa output dari Augmented Dickey-Fuller Test setelah dilakukan differencing menghasilkan p-value = 0.01.

  • Keputusan dan Kesimpulan

    Pada taraf signifikansi 𝛼 = 5%, H0 ditolak karena nilai p-value (0.01) < 0,05. Dengan ini, dapat dinyatakan bahwa data yang digunakan telah
    stationer dan siap dimodelkan.

4.8. Identifikasi Model ARIMA (ACF dan PACF)

1. Plot ACF

acf(diff_train)

Plot ACF menunjukkan bahwa sebagian besar nilai autokorelasi berada di dalam batas signifikansi dan nilai autokorelasi cepat menurun menuju nol. Pola tersebut menunjukkan bahwa pengaruh hubungan antar lag relatif kecil. Pola seperti ini biasanya mengindikasikan bahwa komponen Moving Average (MA) yang mungkin terbentuk berada pada orde rendah, seperti MA(1).

2. Plot PACF

pacf(diff_train)

Plot PACF tidak menunjukkan pola cut-off yang jelas pada lag tertentu. Sebagian besar nilai PACF berada di dalam batas signifikansi sehingga tidak terdapat indikasi kuat adanya komponen autoregressive.

3. Identifikasi Model ARIMA

Berdasarkan indikasi dari grafik ACF dan PACF yang tidak menunjukkan cut-off yang jelas mengindikasikan bahwa data setelah differencing mendekati proses white noise. Dengan ini, beberapa model ARIMA yang mungkin terbentuk antara lain:

  1. ARIMA(0,1,0)

  2. ARIMA(1,1,0)

  3. ARIMA(0,1,1)

  4. ARIMA(1,1,1)

4.9. Estimasi Parameter

model_010 <- Arima(train, order=c(0,1,0))
model_110 <- Arima(train, order=c(1,1,0))
model_011 <- Arima(train, order=c(0,1,1))
model_111 <- Arima(train, order=c(1,1,1))

summary(model_010)
## Series: train 
## ARIMA(0,1,0) 
## 
## sigma^2 = 2.066:  log likelihood = -1167.12
## AIC=2336.24   AICc=2336.25   BIC=2340.73
## 
## Training set error measures:
##                       ME     RMSE      MAE         MPE     MAPE      MASE
## Training set -0.01905168 1.436435 1.089668 -0.04228074 1.398411 0.9985903
##                    ACF1
## Training set 0.01163539
summary(model_110)
## Series: train 
## ARIMA(1,1,0) 
## 
## Coefficients:
##          ar1
##       0.0122
## s.e.  0.0393
## 
## sigma^2 = 2.069:  log likelihood = -1167.07
## AIC=2338.14   AICc=2338.16   BIC=2347.11
## 
## Training set error measures:
##                       ME     RMSE      MAE         MPE     MAPE      MASE
## Training set -0.01879786 1.436329 1.089786 -0.04172783 1.398531 0.9986986
##                       ACF1
## Training set -0.0008668714
summary(model_011)
## Series: train 
## ARIMA(0,1,1) 
## 
## Coefficients:
##          ma1
##       0.0117
## s.e.  0.0384
## 
## sigma^2 = 2.069:  log likelihood = -1167.07
## AIC=2338.15   AICc=2338.17   BIC=2347.12
## 
## Training set error measures:
##                       ME     RMSE      MAE         MPE   MAPE      MASE
## Training set -0.01881227 1.436333 1.089761 -0.04175934 1.3985 0.9986754
##                       ACF1
## Training set -0.0003025781
summary(model_111)
## Series: train 
## ARIMA(1,1,1) 
## 
## Coefficients:
##          ar1      ma1
##       0.1692  -0.1552
## s.e.  0.9068   0.9061
## 
## sigma^2 = 2.072:  log likelihood = -1167.06
## AIC=2340.11   AICc=2340.15   BIC=2353.56
## 
## Training set error measures:
##                       ME     RMSE      MAE         MPE     MAPE      MASE
## Training set -0.01870937 1.436292 1.090008 -0.04153276 1.398812 0.9989024
##                      ACF1
## Training set -0.002521981

4.10. Pemilihan Model terbaik

model_list <- list(
ARIMA010 = model_010,
ARIMA110 = model_110,
ARIMA011 = model_011,
ARIMA111 = model_111
)

model_compare <- data.frame(
Model = names(model_list),
AIC = sapply(model_list, AIC),
BIC = sapply(model_list, BIC)
)

model_compare
##             Model      AIC      BIC
## ARIMA010 ARIMA010 2336.241 2340.725
## ARIMA110 ARIMA110 2338.144 2347.113
## ARIMA011 ARIMA011 2338.148 2347.118
## ARIMA111 ARIMA111 2340.110 2353.564

Model terbaik dipilih berdasarkan nilai AIC terkecil karena nilai AIC menunjukkan keseimbangan antara kompleksitas model dan kemampuan model dalam menjelaskan data.

best_model_name <- model_compare$Model[which.min(model_compare$AIC)]

best_model <- model_list[[best_model_name]]

summary(best_model)
## Series: train 
## ARIMA(0,1,0) 
## 
## sigma^2 = 2.066:  log likelihood = -1167.12
## AIC=2336.24   AICc=2336.25   BIC=2340.73
## 
## Training set error measures:
##                       ME     RMSE      MAE         MPE     MAPE      MASE
## Training set -0.01905168 1.436435 1.089668 -0.04228074 1.398411 0.9985903
##                    ACF1
## Training set 0.01163539

Berdasarkan hasil pemilihan model menggunakan kriteria AIC, diperoleh model terbaik yaitu ARIMA(0,1,0). Model ini tidak memiliki komponen Autoregressive (AR) maupun Moving Average (MA), sehingga setelah dilakukan differencing model dapat dituliskan sebagai berikut:

\[ Z_t=Y_t - Y_{t-1} \]

dengan model:

\[ Z_t=\epsilon_t \]

Jika dikembalikan ke bentuk data asli maka diperoleh:

\[ Y_t=Y_{t-1}+\epsilon_t \]

Model ini dikenal sebagai Random Walk Model, yang berarti bahwa nilai suatu periode dipengaruhi oleh nilai pada periode sebelumnya ditambah dengan komponen error acak. Hal ini menunjukkan bahwa perubahan harga minyak dunia cenderung tidak memiliki pola deterministik yang kuat dan pergerakannya lebih dipengaruhi oleh faktor acak atau dinamika pasar global.

4.11. Uji Asumsi Model (Diagnostic Checking)

1. Uji Normalitas Residual

Uji normalitas residual dilakukan untuk mengetahui apakah residual mengikuti distribusi normal. Pengujian dapat dilakukan menggunakan uji Shapiro-Wilk.

  • Hipotesis:

    H₀ : residual berdistribusi normal

    H₁ : residual tidak berdistribusi normal

  • Taraf Signifikansi

    𝛼 = 5% = 0,05

  • Statistik Uji

shapiro.test(residuals(best_model))
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(best_model)
## W = 0.97966, p-value = 6.616e-08

Terlihat bahwa output dari Shapiro-Wilk Normality Test adalah 6.616e-08

  • Daerah Kritis

    H₀ ditolak jika p-value < 𝛼(0,05)

  • Keputusan dan Kesimpulan

    Pada taraf signifikansi 𝛼 = 5%, H₀ ditolak karena p-value(6.616e-08) < 0.05 sehingga residual tidak berdistribusi normal.Akan tetapi, pada analisis time series asumsi normalitas residual tidak terlalu ketat terutama pada jumlah observasi yang besar sehingga model masih dapat digunakan untuk proses peramalan.

2. Uji White Noise

  • Hipotesis

    H₀ : 𝜌1 = 𝜌2 = ⋯ = 𝜌𝑘 (residual white noise)

    H₁ : Minimal ada satu nilai 𝜌𝑘 ≠ 0; 𝑘 = 1, 2, … ,𝑘 (residual tidak white noise)

  • Taraf Signifikansi

    𝛼 = 5% = 0.05

  • Statistik Uji

Box.test(residuals(best_model), lag=20, type="Ljung-Box")
## 
##  Box-Ljung test
## 
## data:  residuals(best_model)
## X-squared = 28.217, df = 20, p-value = 0.1044

Terlihat bahwa output dari Box-Ljung Test adalah 0.1044.

  • Daerah Kritis

    H₀ ditolak jika p-value < 𝛼(0,05)

  • Keputusan dan Kesimpulan

    Pada taraf signifikansi 𝛼 = 5%, H₀ gagal ditolak karena p-value(0.1044) > 0.05 sehingga residual white noise ((asumsi non autokorelasi terpenuhi).

3. Uji Homoskedastisitas

  • Hipotesis

    H₀ : varian residual sama (asumsi homoskedastisitas terpenuhi)

    H₁ : varian residual tidak sama (asumsi homoskedastisita tidak terpenuhi)

  • Taraf Signifikansi

    𝛼 = 5% = 0,05

  • Statistik Uji

ArchTest(residuals(best_model))
## 
##  ARCH LM-test; Null hypothesis: no ARCH effects
## 
## data:  residuals(best_model)
## Chi-squared = 25.22, df = 12, p-value = 0.01382

Terlihat bahwa output dari ARCH LM-Test adalah 0.01382

  • Daerah Kritis

    H₀ ditolak jika p-value < 𝛼(0,05)

  • Keputusan dan Kesimpulan

    Pada taraf signifikansi 𝛼 = 5%, H₀ ditolak karena p-value(0.01382) < 0.05 sehingga asumsi homoskedastisita tidak terpenuhi.

Berdasarkan hasil diagnostic checking, residual model tidak memiliki autokorelasi yang signifikan namun menunjukkan adanya residual yang tidak berdistribusi normal dan efek heteroskedastisitas. Meskipun demikian, model masih dapat digunakan untuk tujuan peramalan jangka pendek.

4.12. Evaluasi Model

pred <- forecast(best_model, h = length(test))

forecast::accuracy(pred, test)
##                       ME     RMSE      MAE         MPE     MAPE      MASE
## Training set -0.01905168 1.436435 1.089668 -0.04228074 1.398411 0.9985903
## Test set     -3.38201220 5.620678 4.568232 -5.54471198 7.004430 4.1864059
##                    ACF1
## Training set 0.01163539
## Test set             NA

Berdasarkan hasil evaluasi model, diperoleh beberapa ukuran kesalahan prediksi pada data training dan data testing yang meliputi ME, RMSE, MAE, MPE, MAPE, dan MASE.

1.Data Training

  • Pada data training, diperoleh nilai Mean Error (ME) sebesar -0.019 yang mendekati nol. Hal ini menunjukkan bahwa model tidak memiliki bias prediksi yang signifikan pada data pelatihan.

  • Nilai Root Mean Square Error (RMSE) sebesar 1.436 dan Mean Absolute Error (MAE) sebesar 1.089 menunjukkan bahwa rata-rata kesalahan prediksi model relatif kecil terhadap data historis.

  • Nilai Mean Absolute Percentage Error (MAPE) pada data training sebesar 1.398% menunjukkan bahwa tingkat kesalahan prediksi model pada data pelatihan sangat rendah.Secara umum, nilai MAPE di bawah 10% dapat dikategorikan sebagai model dengan kemampuan prediksi yang sangat baik.

  • Selain itu, nilai MASE sebesar 0.998 menunjukkan bahwa performa model hampir setara dengan metode naive forecast, yang memang konsisten dengan karakteristik model ARIMA(0,1,0) yang menyerupai random walk.

2.Data Testing

  • Pada data testing, nilai ME sebesar -3.382 menunjukkan bahwa model cenderung sedikit overestimate, yaitu hasil prediksi sedikit lebih tinggi dibandingkan nilai aktual.

  • Nilai RMSE sebesar 5.620 dan MAE sebesar 4.568 menunjukkan bahwa tingkat kesalahan prediksi pada data pengujian lebih besar dibandingkan data training, yang merupakan hal yang umum karena model dihadapkan pada data yang belum pernah dilihat sebelumnya.

  • Nilai MAPE pada data testing sebesar 7.004% menunjukkan bahwa tingkat kesalahan prediksi model masih berada di bawah 10%. Hal ini menunjukkan bahwa model masih memiliki kemampuan prediksi yang baik dalam memprediksi pergerakan harga minyak dunia pada data pengujian.

  • Sementara itu, nilai MASE pada data testing sebesar 4.186 menunjukkan bahwa performa model pada data pengujian lebih rendah dibandingkan metode naive forecast. Hal ini dapat terjadi karena pergerakan harga minyak dunia yang sangat dipengaruhi oleh faktor eksternal seperti kondisi geopolitik, kebijakan energi global, serta dinamika pasar internasional yang sulit diprediksi secara deterministik.

  • Secara keseluruhan, hasil evaluasi model menunjukkan bahwa model ARIMA(0,1,0) masih mampu memberikan prediksi yang cukup baik terhadap pergerakan harga minyak dunia, terutama untuk peramalan jangka pendek. Nilai MAPE yang relatif kecil menunjukkan bahwa model masih dapat digunakan sebagai alat untuk memberikan gambaran awal mengenai pergerakan harga minyak pada periode mendatang.

4.13. Tabel Perbandingan Data Aktual vs Hasil Forecast

forecast_eval <- data.frame(
Period=1:length(test),
Actual=as.numeric(test),
Forecast=as.numeric(pred$mean)
)

forecast_eval$Error <- forecast_eval$Actual - forecast_eval$Forecast
forecast_eval$MAPE <- abs(forecast_eval$Error/forecast_eval$Actual)*100

forecast_eval
##     Period Actual Forecast  Error        MAPE
## 1        1  69.28    69.52  -0.24  0.34642032
## 2        2  68.38    69.52  -1.14  1.66715414
## 3        3  67.77    69.52  -1.75  2.58226354
## 4        4  67.83    69.52  -1.69  2.49152292
## 5        5  68.36    69.52  -1.16  1.69689877
## 6        6  68.44    69.52  -1.08  1.57802455
## 7        7  70.04    69.52   0.52  0.74243290
## 8        8  72.51    69.52   2.99  4.12356916
## 9        9  73.24    69.52   3.72  5.07919170
## 10      10  72.53    69.52   3.01  4.15000689
## 11      11  69.67    69.52   0.15  0.21530070
## 12      12  68.76    69.52  -0.76  1.10529378
## 13      13  67.64    69.52  -1.88  2.77942046
## 14      14  66.89    69.52  -2.63  3.93182837
## 15      15  66.43    69.52  -3.09  4.65151287
## 16      16  66.59    69.52  -2.93  4.40006007
## 17      17  66.63    69.52  -2.89  4.33738556
## 18      18  66.12    69.52  -3.40  5.14216576
## 19      19  65.63    69.52  -3.89  5.92716745
## 20      20  66.84    69.52  -2.68  4.00957510
## 21      21  65.85    69.52  -3.67  5.57327259
## 22      22  66.01    69.52  -3.51  5.31737616
## 23      23  65.30    69.52  -4.22  6.46248086
## 24      24  66.31    69.52  -3.21  4.84089881
## 25      25  67.12    69.52  -2.40  3.57568534
## 26      26  67.22    69.52  -2.30  3.42160071
## 27      27  68.80    69.52  -0.72  1.04651163
## 28      28  67.22    69.52  -2.30  3.42160071
## 29      29  68.05    69.52  -1.47  2.16017634
## 30      30  68.62    69.52  -0.90  1.31157097
## 31      31  68.12    69.52  -1.40  2.05519671
## 32      32  68.15    69.52  -1.37  2.01027146
## 33      33  69.14    69.52  -0.38  0.54960949
## 34      34  67.60    69.52  -1.92  2.84023669
## 35      35  66.99    69.52  -2.53  3.77668309
## 36      36  65.50    69.52  -4.02  6.13740458
## 37      37  66.02    69.52  -3.50  5.30142381
## 38      38  66.39    69.52  -3.13  4.71456545
## 39      39  67.49    69.52  -2.03  3.00785302
## 40      40  66.37    69.52  -3.15  4.74612024
## 41      41  66.99    69.52  -2.53  3.77668309
## 42      42  67.44    69.52  -2.08  3.08422301
## 43      43  68.47    69.52  -1.05  1.53351833
## 44      44  67.95    69.52  -1.57  2.31052244
## 45      45  67.44    69.52  -2.08  3.08422301
## 46      46  66.68    69.52  -2.84  4.25914817
## 47      47  65.97    69.52  -3.55  5.38123389
## 48      48  66.97    69.52  -2.55  3.80767508
## 49      49  69.31    69.52  -0.21  0.30298658
## 50      50  69.42    69.52  -0.10  0.14405071
## 51      51  70.13    69.52   0.61  0.86981320
## 52      52  67.97    69.52  -1.55  2.28041783
## 53      53  67.02    69.52  -2.50  3.73022978
## 54      54  65.35    69.52  -4.17  6.38102525
## 55      55  64.11    69.52  -5.41  8.43862112
## 56      56  64.53    69.52  -4.99  7.73283744
## 57      57  65.47    69.52  -4.05  6.18603941
## 58      58  65.45    69.52  -4.07  6.21848739
## 59      59  66.25    69.52  -3.27  4.93584906
## 60      60  65.22    69.52  -4.30  6.59306961
## 61      61  62.73    69.52  -6.79 10.82416707
## 62      62  63.32    69.52  -6.20  9.79153506
## 63      63  62.39    69.52  -7.13 11.42811348
## 64      64  61.91    69.52  -7.61 12.29203683
## 65      65  61.06    69.52  -8.46 13.85522437
## 66      66  61.29    69.52  -8.23 13.42796541
## 67      67  60.88    69.52  -8.64 14.19185283
## 68      68  61.03    69.52  -8.49 13.91119122
## 69      69  62.23    69.52  -7.29 11.71460710
## 70      70  65.29    69.52  -4.23  6.47878695
## 71      71  65.20    69.52  -4.32  6.62576687
## 72      72  65.62    69.52  -3.90  5.94330997
## 73      73  64.40    69.52  -5.12  7.95031056
## 74      74  64.92    69.52  -4.60  7.08564387
## 75      75  65.00    69.52  -4.52  6.95384615
## 76      76  65.07    69.52  -4.45  6.83878900
## 77      77  64.89    69.52  -4.63  7.13515180
## 78      78  64.44    69.52  -5.08  7.88330230
## 79      79  63.52    69.52  -6.00  9.44584383
## 80      80  63.38    69.52  -6.14  9.68759861
## 81      81  63.63    69.52  -5.89  9.25663995
## 82      82  64.06    69.52  -5.46  8.52325944
## 83      83  65.16    69.52  -4.36  6.69122161
## 84      84  62.71    69.52  -6.81 10.85951204
## 85      85  63.01    69.52  -6.51 10.33169338
## 86      86  64.39    69.52  -5.13  7.96707563
## 87      87  63.76    69.52  -5.76  9.03387704
## 88      88  64.43    69.52  -5.09  7.90004656
## 89      89  63.00    69.52  -6.52 10.34920635
## 90      90  62.80    69.52  -6.72 10.70063694
## 91      91  61.94    69.52  -7.58 12.23764934
## 92      92  63.37    69.52  -6.15  9.70490769
## 93      93  62.48    69.52  -7.04 11.26760563
## 94      94  63.13    69.52  -6.39 10.12197054
## 95      95  63.34    69.52  -6.18  9.75686770
## 96      96  63.20    69.52  -6.32 10.00000000
## 97      97  63.17    69.52  -6.35 10.05223999
## 98      98  62.45    69.52  -7.07 11.32105685
## 99      99  62.67    69.52  -6.85 10.93026967
## 100    100  63.26    69.52  -6.26  9.89566867
## 101    101  63.75    69.52  -5.77  9.05098039
## 102    102  62.49    69.52  -7.03 11.24979997
## 103    103  61.94    69.52  -7.58 12.23764934
## 104    104  62.21    69.52  -7.31 11.75052242
## 105    105  61.28    69.52  -8.24 13.44647520
## 106    106  61.12    69.52  -8.40 13.74345550
## 107    107  60.56    69.52  -8.96 14.79524439
## 108    108  58.92    69.52 -10.60 17.99049559
## 109    109  59.68    69.52  -9.84 16.48793566
## 110    110  59.82    69.52  -9.70 16.21531260
## 111    111  60.47    69.52  -9.05 14.96609889
## 112    112  61.58    69.52  -7.94 12.89379669
## 113    113  61.87    69.52  -7.65 12.36463553
## 114    114  61.80    69.52  -7.72 12.49190939
## 115    115  60.64    69.52  -8.88 14.64379947
## 116    116  61.94    69.52  -7.58 12.23764934
## 117    117  61.92    69.52  -7.60 12.27390181
## 118    118  60.85    69.52  -8.67 14.24815119
## 119    119  60.75    69.52  -8.77 14.43621399
## 120    120  61.76    69.52  -7.76 12.56476684
## 121    121  60.70    69.52  -8.82 14.53047776
## 122    122  59.96    69.52  -9.56 15.94396264
## 123    123  61.99    69.52  -7.53 12.14712050
## 124    124  63.34    69.52  -6.18  9.75686770
## 125    125  63.87    69.52  -5.65  8.84609363
## 126    126  65.47    69.52  -4.05  6.18603941
## 127    127  66.52    69.52  -3.00  4.50992183
## 128    128  63.76    69.52  -5.76  9.03387704
## 129    129  64.13    69.52  -5.39  8.40480274
## 130    130  63.22    69.52  -6.30  9.96520089
## 131    131  64.19    69.52  -5.33  8.30347406
## 132    132  64.53    69.52  -4.99  7.73283744
## 133    133  63.34    69.52  -6.18  9.75686770
## 134    134  65.07    69.52  -4.45  6.83878900
## 135    135  65.59    69.52  -3.93  5.99176704
## 136    136  67.57    69.52  -1.95  2.88589611
## 137    137  68.40    69.52  -1.12  1.63742690
## 138    138  70.71    69.52   1.19  1.68293028
## 139    139  70.69    69.52   1.17  1.65511388
## 140    140  66.30    69.52  -3.22  4.85671192
## 141    141  67.33    69.52  -2.19  3.25263627
## 142    142  69.46    69.52  -0.06  0.08638065
## 143    143  67.55    69.52  -1.97  2.91635825
## 144    144  68.05    69.52  -1.47  2.16017634
## 145    145  69.04    69.52  -0.48  0.69524913
## 146    146  68.80    69.52  -0.72  1.04651163
## 147    147  69.40    69.52  -0.12  0.17291066
## 148    148  67.52    69.52  -2.00  2.96208531
## 149    149  67.75    69.52  -1.77  2.61254613
## 150    150  67.97    69.52  -1.55  2.28041783
## 151    151  66.87    69.52  -2.65  3.96291311
## 152    152  69.77    69.52   0.25  0.35832019
## 153    153  71.27    69.52   1.75  2.45545110
## 154    154  71.30    69.52   1.78  2.49649369
## 155    155  71.49    69.52   1.97  2.75563016
## 156    156  70.77    69.52   1.25  1.76628515
## 157    157  70.85    69.52   1.33  1.87720536
## 158    158  70.75    69.52   1.23  1.73851590
## 159    159  72.48    69.52   2.96  4.08388521
## 160    160  77.74    69.52   8.22 10.57370723
## 161    161  81.40    69.52  11.88 14.59459459
## 162    162  81.40    69.52  11.88 14.59459459
## 163    163  85.41    69.52  15.89 18.60437888
## 164    164  93.04    69.52  23.52 25.27944970

Tabel di atas menunjukkan perbandingan antara nilai aktual harga minyak dunia dengan nilai hasil forecast dari model ARIMA(0,1,0) pada data testing. Terlihat bahwa nilai forecast relatif berada di sekitar 69,52, sedangkan nilai aktual mengalami fluktuasi naik dan turun.

Kolom Error menunjukkan selisih antara nilai aktual dan hasil prediksi, sedangkan kolom MAPE menunjukkan persentase kesalahan prediksi pada setiap periode. Berdasarkan tabel tersebut terlihat bahwa nilai MAPE pada setiap periode relatif kecil sehingga dapat disimpulkan bahwa model masih mampu memberikan prediksi yang cukup baik terhadap pergerakan harga minyak dunia.

4.14. Grafik Perbandingan Data Aktual vs Hasil Forecast

plot(test, type="l", col="black", lwd=2,
     main="Perbandingan Actual vs Forecast",
     ylab="Harga Minyak")

lines(ts(pred$mean, start=start(test), frequency=frequency(test)),
      col="red", lwd=2)

legend("topleft",
       legend=c("Actual","Forecast"),
       col=c("black","red"),
       lty=1,
       lwd=2)

4.15. Forecast Harga Minyak Dunia di Masa Depan

forecast_model <- forecast(best_model, h=30)

plot(forecast_model)

Grafik menunjukkan hasil peramalan harga minyak dunia untuk 30 periode ke depan menggunakan model ARIMA(0,1,0). Garis biru merepresentasikan nilai prediksi, sedangkan area abu-abu menunjukkan interval prediksi yang menggambarkan tingkat ketidakpastian model. Hasil peramalan menunjukkan bahwa harga minyak diperkirakan bergerak relatif stabil di sekitar nilai terakhir dari data historis. Hal ini terjadi karena model ARIMA(0,1,0) merupakan random walk model, dimana nilai harga pada periode berikutnya sangat dipengaruhi oleh harga pada periode sebelumnya. Selain itu terlihat bahwa interval prediksi semakin melebar seiring bertambahnya periode peramalan. Hal ini menunjukkan bahwa ketidakpastian prediksi akan meningkat pada periode yang lebih jauh di masa depan.

Bab 5: Kesimpulan

Berdasarkan hasil analisis deret waktu menggunakan metode Autoregressive Integrated Moving Average (ARIMA) terhadap data harga minyak dunia periode Januari 2023 hingga Maret 2026, diperoleh model terbaik yaitu ARIMA(0,1,0). Model ini menunjukkan bahwa pergerakan harga minyak dunia cenderung mengikuti pola random walk, dimana perubahan harga pada suatu periode sangat dipengaruhi oleh nilai harga pada periode sebelumnya serta komponen error acak.

Hasil diagnostic checking menunjukkan bahwa residual model tidak memiliki autokorelasi yang signifikan sehingga model telah mampu menangkap pola ketergantungan pada data. Meskipun residual tidak sepenuhnya berdistribusi normal dan menunjukkan adanya heteroskedastisitas, kondisi tersebut umum terjadi pada data ekonomi dan komoditas yang memiliki volatilitas tinggi.

Evaluasi model menunjukkan bahwa pada data training diperoleh nilai MAPE sebesar 1,398%, sedangkan pada data testing diperoleh nilai MAPE sebesar 7,004%. Nilai tersebut menunjukkan bahwa tingkat kesalahan prediksi model relatif kecil dan masih berada di bawah batas 10%, sehingga model dapat dikategorikan memiliki kemampuan prediksi yang sangat baik untuk peramalan jangka pendek.

Hasil peramalan menunjukkan bahwa harga minyak dunia diperkirakan bergerak relatif stabil di sekitar nilai terakhir dari data historis, namun interval prediksi semakin melebar seiring bertambahnya periode peramalan. Hal ini menunjukkan bahwa ketidakpastian prediksi akan meningkat pada periode yang lebih jauh di masa depan.

Secara umum, pergerakan harga minyak dunia sangat dipengaruhi oleh faktor eksternal seperti kondisi geopolitik global, kebijakan produksi negara penghasil minyak, serta dinamika permintaan energi dunia. Oleh karena itu, model ARIMA yang digunakan dalam penelitian ini dapat memberikan gambaran awal mengenai pergerakan harga minyak dunia dalam jangka pendek, namun tetap perlu mempertimbangkan faktor eksternal yang dapat mempengaruhi volatilitas harga di masa mendatang.