harga_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
)
bulan <- c("Jan", "Feb", "Mar", "Apr", "Mei", "Jun",
"Jul", "Agu", "Sep", "Okt", "Nov", "Des")
df <- data.frame(
Tahun = rep(2023:2024, each = 12),
Bulan = rep(bulan, times = 2),
Harga_GKP = harga_gkp
)
print(df)
## Tahun Bulan Harga_GKP
## 1 2023 Jan 5200
## 2 2023 Feb 5150
## 3 2023 Mar 5300
## 4 2023 Apr 5400
## 5 2023 Mei 5250
## 6 2023 Jun 5350
## 7 2023 Jul 5450
## 8 2023 Agu 5500
## 9 2023 Sep 5400
## 10 2023 Okt 5550
## 11 2023 Nov 5600
## 12 2023 Des 5700
## 13 2024 Jan 5650
## 14 2024 Feb 5700
## 15 2024 Mar 5800
## 16 2024 Apr 5900
## 17 2024 Mei 5750
## 18 2024 Jun 5850
## 19 2024 Jul 5950
## 20 2024 Agu 6000
## 21 2024 Sep 5900
## 22 2024 Okt 6050
## 23 2024 Nov 6150
## 24 2024 Des 6300
gkp_ts <- ts(harga_gkp, start = c(2023, 1), frequency = 12)
print(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 di Tingkat Petani\nKabupaten Serang (Jan 2023 - Des 2024)",
xlab = "Waktu",
ylab = "Harga (Rp/kg)",
col = "purple", lwd = 2, type = "o", pch = 16)
grid()
Interpretasi
Berdasarkan plot runtun waktu, harga GKP di tingkat petani Kabupaten Serang periode Januari 2023–Desember 2024 menunjukkan tren yang jelas meningkat, dari Rp5.200/kg menjadi Rp6.300/kg atau naik sekitar 21%. Meskipun terdapat fluktuasi jangka pendek pada beberapa bulan, secara umum harga terus meningkat. Nilai terendah terjadi pada Februari 2023 sebesar Rp5.150/kg dan tertinggi pada Desember 2024 sebesar Rp6.300/kg. Penurunan yang muncul pada bulan-bulan tertentu di kedua tahun menunjukkan kemungkinan adanya pola musiman, meskipun belum dapat dipastikan karena data hanya mencakup dua tahun. Variasi harga juga relatif stabil. Dengan adanya tren tersebut, data belum stasioner dalam rata-rata, sehingga perlu dilakukan transformasi dan/atau differencing pada tahap selanjutnya.
log_gkp <- log(gkp_ts)
par(mfrow = c(2, 1))
plot(gkp_ts,
main = "Data Asli",
xlab = "Waktu",
ylab = "Rp/kg",
col = "purple", lwd = 2)
grid()
plot(log_gkp,
main = "Data Hasil Transformasi Logaritma",
xlab = "Waktu",
ylab = "log(Rp/kg)",
col = "blue", lwd = 2)
grid()
par(mfrow = c(1, 1))
Interpretasi
Berdasarkan perbandingan kedua plot, data asli dan data hasil transformasi logaritma memiliki pola yang hampir identik, yaitu sama-sama menunjukkan tren meningkat dari awal 2023 hingga akhir 2024 dengan fluktuasi pada beberapa bulan. Perbedaan utama hanya terletak pada skala sumbu-y, karena transformasi logaritma memperkecil rentang nilai dan sedikit menghaluskan fluktuasi. Namun, tren naik tetap terlihat jelas, sehingga transformasi logaritma belum menghilangkan ketidakstasioneran dalam rata-rata. Oleh karena itu, differencing perlu dilakukan pada tahap selanjutnya.
diff_log_gkp <- diff(log_gkp)
print(round(diff_log_gkp, 4))
## Jan Feb Mar Apr May Jun Jul Aug Sep
## 2023 -0.0097 0.0287 0.0187 -0.0282 0.0189 0.0185 0.0091 -0.0183
## 2024 -0.0088 0.0088 0.0174 0.0171 -0.0258 0.0172 0.0169 0.0084 -0.0168
## Oct Nov Dec
## 2023 0.0274 0.0090 0.0177
## 2024 0.0251 0.0164 0.0241
plot(diff_log_gkp,
main = "Differencing Pertama dari log(GKP)",
xlab = "Waktu",
ylab = "Selisih log (perubahan relatif)",
col = "purple", lwd = 2, type = "o", pch = 16)
abline(h = 0, lty = 2, col = "red")
abline(h = mean(diff_log_gkp), lty = 3, col = "orange")
grid()
Interpretasi
Setelah dilakukan differencing pertama pada log(GKP), tren kenaikan sudah hilang dan data berfluktuasi di sekitar nilai rata-rata sekitar 0,0083 (0,83% per bulan). Nilai differencing berada pada kisaran -0,0282 hingga 0,0287, dengan variasi yang relatif stabil. Terdapat penurunan pada beberapa bulan yang berulang di kedua tahun, sehingga diduga terdapat pola musiman, meskipun belum dapat dipastikan karena data hanya mencakup dua tahun. Secara keseluruhan, data hasil differencing pertama sudah mendekati stasioner dalam rata-rata, sehingga dapat digunakan untuk analisis time series selanjutnya.
train <- head(harga_gkp, 21); test <- tail(harga_gkp, 3)
naive_forecast <- rep(tail(train, 1), 3)
error <- test - naive_forecast
ME <- mean(error); MAE <- mean(abs(error))
MSE <- mean(error^2); RMSE <- sqrt(MSE)
MAPE <- mean(abs(error/test)) * 100
# Tampilkan hasil
hasil <- data.frame(
Bulan = c("Okt 2024", "Nov 2024", "Des 2024"),
Aktual = test,
Ramalan = naive_forecast,
Error = error
)
cat("Perbandingan Aktual vs Ramalan Naif")
## Perbandingan Aktual vs Ramalan Naif
print(hasil)
## Bulan Aktual Ramalan Error
## 1 Okt 2024 6050 5900 150
## 2 Nov 2024 6150 5900 250
## 3 Des 2024 6300 5900 400
cat("Ukuran Akurasi Ramalan")
## Ukuran Akurasi Ramalan
round(c(ME = ME, MAE = MAE, MSE = MSE, RMSE = RMSE, MAPE = MAPE), 4)
## ME MAE MSE RMSE MAPE
## 266.6667 266.6667 81666.6667 285.7738 4.2979
Interpretasi
Berdasarkan hasil ramalan naif, ramalan untuk Oktober–Desember 2024 menggunakan nilai terakhir data latih, yaitu Rp5.900/kg. Hasil dan ukuran sebagai berikut:
Ramalan: Nilai ramalan untuk Oktober, November, dan Desember 2024 tetap sebesar Rp5.900/kg karena metode naif menggunakan nilai observasi terakhir sebagai ramalan.
Error: Error masing-masing bulan adalah Rp150 (Oktober), Rp250 (November), dan Rp400 (Desember). Semua error bernilai positif karena harga aktual lebih tinggi daripada hasil ramalan.
ME = Rp266,67: Menunjukkan bahwa ramalan cenderung lebih rendah (underestimate) dari harga aktual dengan rata-rata kesalahan Rp266,67/kg.
MAE = Rp266,67: Menunjukkan bahwa rata-rata besar kesalahan absolut ramalan adalah sekitar Rp267/kg.
MSE = 81.666,67: Menunjukkan rata-rata kuadrat kesalahan ramalan. Nilai ini dipengaruhi lebih besar oleh error yang besar, terutama error Rp400 pada Desember.
RMSE = Rp285,77: Menunjukkan besar kesalahan ramalan setelah dikembalikan ke satuan harga, yaitu sekitar Rp286/kg.
MAPE = 4,30%: Menunjukkan bahwa rata-rata kesalahan ramalan sekitar 4,3% dari harga aktual.
Kesimpulan:
Ramalan naif cukup dekat dengan nilai aktual, tetapi cenderung underestimate karena harga GKP masih mengalami kenaikan selama periode ramalan.