Analisis deret waktu (time series analysis) merupakan metode statistik yang digunakan untuk menganalisis data berdasarkan urutan waktu. Pada analisis deret waktu, data dapat memiliki tren maupun perubahan variansi sehingga perlu dilakukan transformasi dan differencing sebelum digunakan dalam pemodelan.
Transformasi logaritma digunakan untuk membantu menstabilkan variansi, sedangkan differencing digunakan untuk mengurangi atau menghilangkan tren pada data. Selain itu, hasil ramalan perlu dievaluasi menggunakan beberapa metrik seperti ME, MAE, MSE, RMSE, dan MAPE.
Pada tugas ini digunakan data harga gabah kering panen (GKP) di tingkat petani Kabupaten Serang periode Januari 2023 sampai Desember 2024. Data terdiri dari 24 observasi bulanan.
Tujuan dari analisis ini adalah:
Data yang digunakan merupakan harga gabah kering panen (GKP) di tingkat petani Kabupaten Serang periode Januari 2023 sampai Desember 2024 dalam satuan Rp/kg.
Data tahun 2023 terdiri dari nilai 5.200, 5.150, 5.300, 5.400, 5.250, 5.350, 5.450, 5.500, 5.400, 5.550, 5.600, dan 5.700.
Data tahun 2024 terdiri dari nilai 5.650, 5.700, 5.800, 5.900, 5.750, 5.850, 5.950, 6.000, 5.900, 6.050, 6.150, dan 6.300.
Pengolahan data dilakukan menggunakan RStudio.
Data dimasukkan ke dalam R kemudian dibuat menjadi objek
ts. Karena data yang digunakan merupakan data bulanan, maka
frekuensi yang digunakan adalah 12.
gkp <- c(
5200, 5150, 5300, 5400, 5250, 5350,
5450, 5500, 5400, 5550, 5600, 5700,
5650, 5700, 5800, 5900, 5750, 5850,
5950, 6000, 5900, 6050, 6150, 6300
)
gkp_ts <- ts(
gkp,
start = c(2023, 1),
frequency = 12
)
gkp_ts
## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2023 5200 5150 5300 5400 5250 5350 5450 5500 5400 5550 5600 5700
## 2024 5650 5700 5800 5900 5750 5850 5950 6000 5900 6050 6150 6300
Selanjutnya dibuat plot untuk melihat pola harga GKP selama periode pengamatan.
plot(
gkp_ts,
type = "o",
pch = 16,
col = "#D88195",
lwd = 2,
main = "Harga Gabah Kering Panen Kabupaten Serang",
xlab = "Tahun",
ylab = "Harga (Rp/kg)"
)
grid()
Berdasarkan plot, harga GKP secara umum menunjukkan kecenderungan meningkat dari tahun 2023 sampai tahun 2024. Meskipun terdapat beberapa penurunan pada bulan tertentu, pola keseluruhan data menunjukkan adanya tren naik.
Transformasi logaritma dilakukan untuk membantu menstabilkan variansi data. Transformasi yang digunakan adalah logaritma natural.
log_gkp <- log(gkp_ts)
log_gkp
## Jan Feb Mar Apr May Jun Jul Aug
## 2023 8.556414 8.546752 8.575462 8.594154 8.565983 8.584852 8.603371 8.612503
## 2024 8.639411 8.648221 8.665613 8.682708 8.656955 8.674197 8.691146 8.699515
## Sep Oct Nov Dec
## 2023 8.594154 8.621553 8.630522 8.648221
## 2024 8.682708 8.707814 8.724207 8.748305
Perbandingan antara data asli dan data setelah transformasi logaritma ditampilkan melalui plot berikut.
par(mfrow = c(1, 2))
plot(
gkp_ts,
type = "o",
pch = 16,
col = "#D88195",
main = "Data Asli",
xlab = "Tahun",
ylab = "Harga (Rp/kg)"
)
plot(
log_gkp,
type = "o",
pch = 16,
col = "#C96F86",
main = "Hasil Transformasi Log",
xlab = "Tahun",
ylab = "Log Harga"
)
par(mfrow = c(1, 1))
Dari hasil plot, data setelah transformasi logaritma masih menunjukkan kecenderungan meningkat. Hal ini karena transformasi logaritma digunakan untuk membantu menstabilkan variansi, bukan untuk menghilangkan tren.
Setelah dilakukan transformasi logaritma, langkah berikutnya adalah melakukan differencing tingkat pertama.
Rumus yang digunakan adalah:
\[ W_t = \log(Z_t) - \log(Z_{t-1}) \]
diff_log_gkp <- diff(log_gkp)
diff_log_gkp
## Jan Feb Mar Apr May
## 2023 -0.009661911 0.028710106 0.018692133 -0.028170877
## 2024 -0.008810630 0.008810630 0.017391743 0.017094433 -0.025752496
## Jun Jul Aug Sep Oct
## 2023 0.018868484 0.018519048 0.009132484 -0.018349139 0.027398974
## 2024 0.017241806 0.016949558 0.008368250 -0.016807118 0.025105921
## Nov Dec
## 2023 0.008968670 0.017699577
## 2024 0.016393810 0.024097552
Hasil differencing kemudian divisualisasikan menggunakan plot.
plot(
diff_log_gkp,
type = "o",
pch = 16,
col = "#D88195",
lwd = 2,
main = "Differencing Pertama Data Log GKP",
xlab = "Tahun",
ylab = "Differencing Log"
)
grid()
Berdasarkan plot tersebut, data hasil differencing berfluktuasi di sekitar nilai yang relatif stabil. Tren naik yang terlihat pada data asli sudah tidak terlihat dengan jelas.
Dengan demikian, differencing tingkat pertama sudah cukup untuk mengurangi tren pada data.
Sesuai ketentuan tugas, 21 observasi pertama digunakan sebagai data latih dan 3 observasi terakhir digunakan sebagai data uji.
train <- head(gkp, 21)
test <- tail(gkp, 3)
train
## [1] 5200 5150 5300 5400 5250 5350 5450 5500 5400 5550 5600 5700 5650 5700 5800
## [16] 5900 5750 5850 5950 6000 5900
test
## [1] 6050 6150 6300
Data latih berakhir pada September 2024 dengan harga sebesar Rp5.900/kg. Tiga observasi terakhir yang digunakan sebagai data uji adalah harga bulan Oktober, November, dan Desember 2024.
Pada metode ramalan naif, nilai terakhir dari data latih digunakan sebagai ramalan untuk seluruh periode data uji.
naive_forecast <- rep(tail(train, 1), 3)
naive_forecast
## [1] 5900 5900 5900
Hasil perbandingan antara nilai aktual dan ramalan ditampilkan sebagai berikut.
hasil_ramalan <- data.frame(
Bulan = c(
"Oktober 2024",
"November 2024",
"Desember 2024"
),
Aktual = test,
Ramalan = naive_forecast
)
hasil_ramalan
## Bulan Aktual Ramalan
## 1 Oktober 2024 6050 5900
## 2 November 2024 6150 5900
## 3 Desember 2024 6300 5900
Hasil ramalan naif dapat dilihat pada tabel berikut.
| Bulan | Aktual | Ramalan |
|---|---|---|
| Oktober 2024 | 6050 | 5900 |
| November 2024 | 6150 | 5900 |
| Desember 2024 | 6300 | 5900 |
Terlihat bahwa nilai aktual lebih besar daripada hasil ramalan naif pada ketiga bulan tersebut. Hal ini sesuai dengan pola data yang masih menunjukkan kecenderungan meningkat.
Error ramalan dihitung menggunakan selisih antara nilai aktual dan nilai ramalan.
\[ e_t = Z_t - \hat{Z}_t \]
error <- test - naive_forecast
error
## [1] 150 250 400
Tabel error ramalan:
hasil_error <- data.frame(
Bulan = c(
"Oktober 2024",
"November 2024",
"Desember 2024"
),
Aktual = test,
Ramalan = naive_forecast,
Error = error
)
hasil_error
## Bulan Aktual Ramalan Error
## 1 Oktober 2024 6050 5900 150
## 2 November 2024 6150 5900 250
## 3 Desember 2024 6300 5900 400
Hasil error yang diperoleh adalah:
| Bulan | Aktual | Ramalan | Error |
|---|---|---|---|
| Oktober 2024 | 6050 | 5900 | 150 |
| November 2024 | 6150 | 5900 | 250 |
| Desember 2024 | 6300 | 5900 | 400 |
ME digunakan untuk melihat arah bias dari hasil ramalan.
ME <- mean(error)
ME
## [1] 266.6667
Nilai ME yang diperoleh adalah 266,67. Nilai positif menunjukkan bahwa hasil ramalan cenderung lebih rendah dibandingkan nilai aktual.
MAE menunjukkan rata-rata besar kesalahan ramalan tanpa memperhatikan arah kesalahan.
MAE <- mean(abs(error))
MAE
## [1] 266.6667
Nilai MAE yang diperoleh adalah 266,67. Artinya, rata-rata kesalahan ramalan sekitar Rp266,67/kg.
MSE diperoleh dengan mengkuadratkan error kemudian mengambil nilai rata-ratanya.
MSE <- mean(error^2)
MSE
## [1] 81666.67
Nilai MSE yang diperoleh adalah 81.666,67.
RMSE merupakan akar dari MSE sehingga satuannya kembali sama dengan data asli.
RMSE <- sqrt(MSE)
RMSE
## [1] 285.7738
Nilai RMSE yang diperoleh adalah 285,77.
MAPE digunakan untuk melihat rata-rata kesalahan ramalan dalam bentuk persentase.
MAPE <- mean(abs(error / test)) * 100
MAPE
## [1] 4.297862
Nilai MAPE yang diperoleh adalah 4,30%.
Seluruh metrik evaluasi dirangkum dalam satu tabel.
hasil_metrik <- data.frame(
Metrik = c(
"ME",
"MAE",
"MSE",
"RMSE",
"MAPE"
),
Nilai = c(
ME,
MAE,
MSE,
RMSE,
MAPE
)
)
hasil_metrik
## Metrik Nilai
## 1 ME 266.666667
## 2 MAE 266.666667
## 3 MSE 81666.666667
## 4 RMSE 285.773803
## 5 MAPE 4.297862
Hasil evaluasi ramalan adalah sebagai berikut.
| Metrik | Hasil |
|---|---|
| ME | 266,67 |
| MAE | 266,67 |
| MSE | 81.666,67 |
| RMSE | 285,77 |
| MAPE | 4,30% |
Berdasarkan hasil tersebut, nilai ME dan MAE sama-sama sebesar 266,67. ME yang bernilai positif menunjukkan adanya kecenderungan under-forecast, yaitu ramalan lebih rendah daripada nilai aktual.
Nilai MAPE sebesar 4,30% menunjukkan bahwa rata-rata kesalahan ramalan sekitar 4,30% dari nilai aktual.
Berdasarkan analisis yang telah dilakukan, harga GKP Kabupaten Serang periode Januari 2023 sampai Desember 2024 menunjukkan kecenderungan meningkat. Transformasi logaritma digunakan untuk membantu menstabilkan variansi, sedangkan differencing tingkat pertama digunakan untuk mengurangi tren.
Setelah dilakukan differencing pada data hasil transformasi logaritma, pola tren sudah tidak terlihat dengan jelas sehingga differencing pertama cukup untuk mengurangi tren pada data.
Pada ramalan naif dengan 21 observasi sebagai data latih dan 3 observasi sebagai data uji diperoleh ME sebesar 266,67, MAE sebesar 266,67, MSE sebesar 81.666,67, RMSE sebesar 285,77, dan MAPE sebesar 4,30%.
Secara keseluruhan, hasil evaluasi menunjukkan bahwa ramalan naif memiliki rata-rata kesalahan sebesar 4,30% berdasarkan MAPE.