Data harga gabah kering panen (GKP) di tingkat petani Kabupaten Serang periode Januari 2023–Desember 2024

1. Buat objek ts dan plot runtun waktu dari data harga GKP di atas Data harga GKP (Rp/kg), Jan 2023 - Des 2024

gkp <- c(5200,5150,5300,5400,5250,5350,5450,5500,5400,5550,5600,5700,   # 2023
         5650,5700,5800,5900,5750,5850,5950,6000,5900,6050,6150,6300)   # 2024

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
plot(gkp_ts, main = "Harga GKP Kabupaten Serang (Rp/kg)",
     ylab = "Rp/kg", xlab = "Tahun", col = "darkblue", lwd = 2)
grid()

Plot tersebut menunjukkan bahwa harga GKP Kabupaten Serang periode Januari 2023 - Desember 2024 mempunyai tren naik yang cukup konsisten.

2. Lakukan transformasi logaritma, lalu bandingkan plot data asli dan hasil transformasi

log_gkp <- log(gkp_ts)

plot(log_gkp, main = "Log(Data GKP)",
     ylab = "ln(Rp/kg)", xlab = "Tahun", col = "darkorange", lwd = 2)
grid()

sd(gkp_ts)
## [1] 314.1514
sd(log_gkp)
## [1] 0.05539227

Berdasarkan hasil plot tersebut, terlihat bahwa plot hasil transformasi logaritma mirip dengan bentuk pola pada plot data asli. Keduanya menunjukkan tren naik dengan sedikit fluktuasi kecil (naik turun) di sepanjang periode. Namun terdapat perbedaan antara kedua plot tersebut, yaitu skala pada sumbu y pada plot hasil transformasi telah berubah menjadi skala logaritma natural (ln(Rp/Kg)). Didapatkan juga nilai standar deviasi logaritma yang lebih kecil daripada standar deviasi data asli, yaitu bernilai 0.05539227 menunjukkan bahwa fluktuasi data berhasil diskalakan agar lebih stabil. Namun, transformasi logaritma ini belum menghilangkan tren yang ada.

3. Lakukan differencing tingkat pertama pada data hasil transformasi. Apakah tren sudah hilang?

diff_log_gkp <- diff(log_gkp)

plot(diff_log_gkp, main = "Differencing Log(Data GKP)",
     ylab = "W_t = ln(Z_t) - ln(Z_t-1)", col = "darkred", lwd = 2)
abline(h = 0, lty = 2)

mean(diff_log_gkp)
## [1] 0.008343087
sd(diff_log_gkp)
## [1] 0.01725887

Setelah dilakukan differencing tingkat pertama, didapatkan hasil bahwa tren sudah berhasil dihilangkan. Hal ini terlihat dari plot yang berfluktuasi secara konstan di sekitar garis nol dengan nilai rata-rata mean = 0,0083 dan standar deviasi sd = 0,0172. Karena tidak ada lagi kecenderungan pola kenaikan atau penurunan panjang, sehingga data telah stasioner dalam rata-rata (mean).

4. Gunakan 21 observasi pertama sebagai data latih dan 3 observasi terakhir sebagai data uji. Hitung ramalan naif untuk 3 bulan tersebut, lalu hitung ME, MAE, MSE, RMSE, dan MAPE-nya

train <- head(gkp, 21)
test  <- tail(gkp, 3)

naive_forecast <- rep(tail(train, 1), 3)
error <- test - naive_forecast

ME   <- mean(error)
ME
## [1] 266.6667
MAE  <- mean(abs(error))
MAE
## [1] 266.6667
MSE  <- mean(error^2)
MSE
## [1] 81666.67
RMSE <- sqrt(MSE)
RMSE
## [1] 285.7738
MAPE <- mean(abs(error/test)) * 100
MAPE
## [1] 4.297862

Dari perhitungan evaluasi peramalan naif pada data uji, diperoleh nilai ME sebesar 266,6667 yang bernilai positif sehingga menunjukkan ramalan cenderung meleset ke bawah (under-forecast) akibat tren harga yang sedang naik, nilai MAE sebesar 266,67 yang berarti rata-rata kesalahan absolutnya adalah Rp266,67/kg, nilai MSE sebesar 81.666,67 dan RMSE sebesar 285,7738 yang mencerminkan besarnya akar rata-rata kuadrat galat sebesar Rp285,77/kg, serta nilai MAPE sebesar 4,2979% yang menunjukkan bahwa tingkat persentase kesalahan peramalan relatif cukup kecil.