Analisis runtun waktu adalah metode statistik yang digunakan untuk menganalisis data yang dicatat secara berurutan berdasarkan waktu. Metode ini banyak diterapkan pada bidang ekonomi, keuangan, industri, dan energi karena mampu menggambarkan pola perubahan data dari waktu ke waktu serta digunakan untuk melakukan peramalan nilai pada periode mendatang.
Salah satu model yang sering digunakan dalam analisis runtun waktu adalah Autoregressive Integrated Moving Average (ARIMA). Model ini sesuai untuk data yang memiliki pola historis dan dapat dibuat stasioner melalui diferensiasi. Dalam analisis ini, model ARIMA digunakan untuk memodelkan variabel Terakhir pada data Pertamina agar dapat diketahui pola pergerakannya serta digunakan untuk memprediksi nilai pada periode berikutnya.
Runtun waktu merupakan sekumpulan data yang diamati secara berurutan dalam interval waktu tertentu, seperti harian, mingguan, bulanan, atau tahunan. Dalam analisis runtun waktu, salah satu syarat penting adalah stasioneritas, yaitu kondisi ketika rata-rata dan varians data relatif konstan dari waktu ke waktu. Jika data belum stasioner, maka perlu dilakukan transformasi atau diferensiasi sebelum pemodelan dilakukan.
Model ARIMA terdiri atas tiga komponen, yaitu Autoregressive (AR),
Integrated (I), dan Moving Average (MA), yang ditulis dalam bentuk
ARIMA(p,d,q). Nilai p menunjukkan orde autoregressive,
d menunjukkan banyaknya diferensiasi, dan q
menunjukkan orde moving average. Pembentukan model ARIMA umumnya
dilakukan melalui tahapan identifikasi model, estimasi parameter, uji
diagnostik residual, dan peramalan.
Jenis data yang digunakan dalam analisis ini adalah data sekunder kuantitatif berbentuk data runtun waktu. Data dikatakan kuantitatif karena dinyatakan dalam bentuk angka, dan disebut runtun waktu karena disusun berdasarkan urutan tanggal pengamatan.
Sumber data berasal dari data saham pada Investing.com pada Pertamina, yang memuat variabel Tanggal dan Terakhir. Variabel Tanggal berfungsi sebagai penanda waktu, sedangkan variabel Terakhir digunakan sebagai objek utama dalam analisis ARIMA untuk melihat pola historis dan melakukan peramalan.
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
## # A tibble: 399 Ă— 2
## Tanggal Terakhir
## <dttm> <dbl>
## 1 2024-01-02 00:00:00 1265
## 2 2024-01-03 00:00:00 1280
## 3 2024-01-04 00:00:00 1285
## 4 2024-01-05 00:00:00 1280
## 5 2024-01-08 00:00:00 1230
## 6 2024-01-09 00:00:00 1175
## 7 2024-01-10 00:00:00 1200
## 8 2024-01-11 00:00:00 1205
## 9 2024-01-12 00:00:00 1205
## 10 2024-01-15 00:00:00 1225
## # ℹ 389 more rows
data_ts <- data_pertamina %>%
select(Tanggal, Terakhir) %>%
mutate(
Tanggal = as.Date(Tanggal),
Terakhir = as.numeric(Terakhir)
) %>%
arrange(Tanggal)menyiapkan data untuk analisis, yaitu dengan memilih kolom yang relevan, mengubah format Tanggal menjadi tanggal, mengubah Terakhir menjadi numerik, lalu mengurutkan data berdasarkan waktu. Ini penting agar analisis runtun waktu berjalan benar
## tibble [399 Ă— 2] (S3: tbl_df/tbl/data.frame)
## $ Tanggal : Date[1:399], format: "2024-01-02" "2024-01-03" ...
## $ Terakhir: num [1:399] 1265 1280 1285 1280 1230 ...
## Tanggal Terakhir
## Min. :2024-01-02 Min. : 730
## 1st Qu.:2024-06-12 1st Qu.:1005
## Median :2024-11-04 Median :1190
## Mean :2024-11-07 Mean :1172
## 3rd Qu.:2025-04-12 3rd Qu.:1280
## Max. :2025-09-15 Max. :1830
## # A tibble: 6 Ă— 2
## Tanggal Terakhir
## <date> <dbl>
## 1 2024-01-02 1265
## 2 2024-01-03 1280
## 3 2024-01-04 1285
## 4 2024-01-05 1280
## 5 2024-01-08 1230
## 6 2024-01-09 1175
## # A tibble: 6 Ă— 2
## Tanggal Terakhir
## <date> <dbl>
## 1 2025-09-08 1395
## 2 2025-09-09 1380
## 3 2025-09-10 1395
## 4 2025-09-11 1405
## 5 2025-09-12 1400
## 6 2025-09-15 1390
ini digunakan untuk memeriksa struktur, ringkasan statistik, dan beberapa observasi awal serta akhir data. Tujuannya untuk memastikan tidak ada kesalahan format atau nilai yang aneh sebelum analisis dilakukan.
ggplot(data_ts, aes(x = Tanggal, y = Terakhir)) +
geom_line() +
labs(
title = "Plot Runtun Waktu Harga/Terakhir",
x = "Tanggal",
y = "Terakhir"
) +
theme_minimal()menampilkan pola pergerakan data dari waktu ke waktu. Grafik membantu melihat apakah data menunjukkan tren, fluktuasi, atau pola tertentu yang dapat memengaruhi pembentukan model ARIMA.
## Time Series:
## Start = c(1, 1)
## End = c(80, 4)
## Frequency = 5
## [1] 1265 1280 1285 1280 1230 1175 1200 1205 1205 1225 1245 1260 1250 1240 1240
## [16] 1245 1240 1255 1320 1315 1315 1310 1315 1285 1220 1220 1180 1215 1210 1235
## [31] 1205 1210 1195 1180 1205 1225 1230 1220 1230 1210 1220 1210 1195 1195 1200
## [46] 1185 1200 1185 1180 1180 1180 1185 1200 1195 1190 1190 1185 1175 1125 1130
## [61] 1160 1190 1190 1190 1210 1230 1220 1205 1205 1200 1225 1200 1210 1220 1205
## [76] 1215 1335 1305 1315 1260 1270 1250 1315 1290 1260 1280 1260 1235 1260 1265
## [91] 1235 1185 1210 1210 1190 1170 1180 1170 1170 1115 1120 1060 1005 1045 1155
## [106] 1150 1150 1180 1200 1190 1220 1210 1200 1200 1230 1230 1220 1260 1285 1285
## [121] 1275 1285 1260 1285 1290 1295 1280 1275 1270 1265 1285 1280 1315 1285 1255
## [136] 1210 1245 1250 1240 1230 1230 1225 1250 1235 1230 1215 1205 1200 1190 1175
## [151] 1185 1180 1155 1125 1145 1145 1130 1135 1140 1130 1130 1150 1130 1140 1120
## [166] 1120 1120 1125 1115 1150 1170 1160 1150 1135 1135 1125 1120 1120 1145 1140
## [181] 1125 1165 1170 1185 1180 1180 1185 1170 1145 1145 1140 1135 1130 1125 1110
## [196] 1110 1090 1090 1080 1065 1070 1055 1030 1035 1015 1045 1080 1050 1035 1025
## [211] 1040 1040 1020 1030 1020 1015 1005 990 965 960 1000 985 975 975 970
## [226] 965 960 955 935 900 900 965 975 960 955 950 935 940 935 925
## [241] 900 905 900 900 910 910 925 935 920 915 925 1060 1050 1000 975
## [256] 950 915 910 930 905 890 870 825 830 885 885 890 870 910 935
## [271] 915 945 925 925 910 875 895 855 865 865 840 825 815 815 805
## [286] 765 760 730 750 755 785 765 780 820 805 765 770 805 805 840
## [301] 860 835 840 850 865 865 920 965 925 940 910 915 915 940 945
## [316] 955 945 975 1080 1270 1240 1300 1395 1365 1335 1350 1345 1350 1305 1315
## [331] 1310 1335 1360 1355 1495 1435 1565 1610 1560 1470 1385 1320 1325 1320 1325
## [346] 1415 1385 1360 1440 1405 1430 1465 1475 1480 1490 1480 1635 1610 1630 1655
## [361] 1670 1585 1635 1600 1620 1690 1830 1705 1655 1685 1610 1585 1605 1595 1625
## [376] 1565 1580 1525 1540 1515 1465 1415 1420 1415 1440 1555 1540 1515 1460 1415
## [391] 1465 1435 1445 1395 1380 1395 1405 1400 1390
mengubah data numerik menjadi objek runtun waktu (ts) agar bisa dianalisis dengan metode ARIMA. frequency = 5 digunakan sebagai pendekatan data harian kerja, yaitu lima hari dalam seminggu.
##
## Augmented Dickey-Fuller Test
##
## data: ts_pertamina
## Dickey-Fuller = -1.3898, Lag order = 7, p-value = 0.835
## alternative hypothesis: stationary
menguji apakah data sudah stasioner. Dalam analisis ARIMA, data yang stasioner lebih mudah dimodelkan. Jika p-value > 0.05, maka data belum stasioner dan perlu dilakukan diferensiasi.
par(mfrow = c(1, 2))
Acf(ts_pertamina, main = "ACF Data Asli")
Pacf(ts_pertamina, main = "PACF Data Asli")menampilkan grafik ACF dan PACF untuk membantu identifikasi awal orde AR (p) dan MA (q). Pola pada kedua grafik menjadi petunjuk dalam pemilihan model ARIMA yang sesuai.
ts_diff <- diff(ts_pertamina)
plot(ts_diff, main = "Data Setelah Diferensiasi Orde 1", ylab = "Diff Terakhir")## Warning in adf.test(ts_diff): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: ts_diff
## Dickey-Fuller = -7.1591, Lag order = 7, p-value = 0.01
## alternative hypothesis: stationary
melakukan diferensiasi satu kali untuk menghilangkan tren dan membuat data lebih stasioner. Setelah itu dilakukan kembali uji ADF untuk mengecek apakah diferensiasi sudah cukup.
par(mfrow = c(1, 2))
Acf(ts_diff, main = "ACF Setelah Diferensiasi")
Pacf(ts_diff, main = "PACF Setelah Diferensiasi")menampilkan ACF dan PACF setelah data dibuat lebih stasioner. Grafik ini biasanya lebih tepat digunakan untuk menentukan dugaan orde ARIMA karena pola tren pada data asli sudah dikurangi.
## Series: ts_pertamina
## ARIMA(0,1,0)
##
## sigma^2 = 1178: log likelihood = -1971.99
## AIC=3945.99 AICc=3946 BIC=3949.97
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set 0.3164536 34.28016 22.34653 -0.01436519 1.869326 0.418069
## ACF1
## Training set 0.004321662
membentuk model ARIMA terbaik secara otomatis berdasarkan kriteria informasi, seperti AIC atau BIC. Output summary() menampilkan model terpilih, nilai parameter, dan ukuran kecocokan model.
##
## Ljung-Box test
##
## data: Residuals from ARIMA(0,1,0)
## Q* = 9.8524, df = 10, p-value = 0.4535
##
## Model df: 0. Total lags used: 10
mengevaluasi apakah residual model sudah menyerupai white noise. Model yang baik memiliki residual yang acak, tidak berautokorelasi, dan tidak menunjukkan pola tertentu.
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 80.80 1390 1346.013 1433.987 1322.728 1457.272
## 81.00 1390 1327.793 1452.207 1294.863 1485.137
## 81.20 1390 1313.812 1466.188 1273.481 1506.519
## 81.40 1390 1302.026 1477.974 1255.456 1524.544
## 81.60 1390 1291.642 1488.358 1239.575 1540.425
## 81.80 1390 1282.254 1497.746 1225.217 1554.783
## 82.00 1390 1273.621 1506.379 1212.014 1567.986
## 82.20 1390 1265.586 1514.414 1199.725 1580.275
## 82.40 1390 1258.039 1521.961 1188.183 1591.817
## 82.60 1390 1250.901 1529.099 1177.267 1602.733
menghasilkan prediksi 10 periode ke depan berdasarkan model ARIMA yang telah dipilih. Output menunjukkan nilai ramalan beserta interval kepercayaannya.
autoplot(forecast_arima) +
labs(
title = "Forecast ARIMA",
x = "Periode",
y = "Nilai Terakhir"
) +
theme_minimal()memvisualisasikan hasil peramalan. Grafik memudahkan pembaca melihat arah prediksi ke depan serta rentang ketidakpastian hasil forecast.
## ME RMSE MAE MPE MAPE MASE
## Training set 0.3164536 34.28016 22.34653 -0.01436519 1.869326 0.418069
## ACF1
## Training set 0.004321662
menampilkan ukuran akurasi model, seperti MAE, RMSE, dan MAPE. Nilai-nilai ini membantu menilai seberapa baik model mengikuti data historis.
## Model ARIMA terbaik berdasarkan auto.arima adalah:
## 0 1 0
menampilkan orde model ARIMA terbaik dalam bentuk (p,d,q). Nilai tersebut menunjukkan jumlah komponen autoregressive, tingkat diferensiasi, dan moving average yang digunakan dalam model.
Model ARIMA merupakan salah satu metode yang efektif dalam analisis runtun waktu karena mampu memodelkan hubungan antara data saat ini, data masa lalu, dan kesalahan pada periode sebelumnya. Model ini sangat berguna untuk data yang tidak stasioner pada level, tetapi dapat dibuat stasioner melalui proses diferensiasi.
Berdasarkan penggunaannya pada data Pertamina, model ARIMA dapat membantu menjelaskan pola pergerakan variabel Terakhir serta menghasilkan prediksi untuk beberapa periode ke depan. Dengan demikian, metode ini dapat digunakan sebagai alat bantu dalam pengambilan keputusan, terutama yang berkaitan dengan perencanaan dan peramalan berdasarkan data historis.