1. Membuat Objek ts dan Plot Runtun Waktu

# Data harga GKP tingkat petani Kabupaten Serang (Rp/kg)
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)

plot(GKP_ts, main = "Harga GKP Kabupaten Serang (Rp/kg)",
     ylab = "Rp/kg", xlab = "Tahun", col = "red", lwd = 2)

Dari plot terlihat data memiliki tren naik yang cukup jelas dari Januari 2023 hingga Desember 2024.

2. Transformasi Logaritma

# Transformasi logaritma
log_GKP <- log(GKP_ts)

# Bandingkan plot data asli vs hasil transformasi
par(mfrow = c(1,2))
plot(GKP_ts, main = "Data Asli (Rp/kg)", ylab = "Rp/kg", col = "darkblue", lwd = 2)
plot(log_GKP, main = "Log(Data)", ylab = "ln(Rp/kg)", col = "orange", lwd = 2)

par(mfrow = c(1,1))

sd(GKP_ts); sd(log_GKP)
## [1] 314.1514
## [1] 0.05539227

Interpretasi: Bentuk kurva log(data) masih mirip data asli, tren naik tetap kelihatan. Wajar, karena fluktuasi harga GKP tiap bulan memang relatif kecil dan stabil, jadi log di sini fungsinya lebih ke persiapan sebelum differencing, bukan buat “meratakan” lonjakan variansi.

3. Differencing Tingkat Pertama pada Data Hasil Transformasi

diff_log_GKP <- diff(log_GKP)

plot(diff_log_GKP, main = "Differencing Log(Data)",
     ylab = "Selisih ln(Zt)", xlab = "Tahun", col = "firebrick", lwd = 2)
abline(h = 0, lty = 2)

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

Apakah tren sudah hilang? Ya, tren sudah hilang. Setelah dilakukan log lalu differencing tingkat pertama, data diff_log_GKP berfluktuasi di sekitar nilai rata-rata mendekati nol (tanpa arah naik/turun yang sistematis), berbeda dengan data asli maupun data log yang masih menunjukkan tren naik. yang menunjukkan bahwa differencing berhasil menstabilkan mean deret waktu tersebut.

4. Evaluasi Ramalan Naif (21 Data Latih, 3 Data Uji)

# 21 observasi pertama sebagai data latih, 3 observasi terakhir sebagai data uji
train <- head(GKP, 21)   # Jan 2023 - Sep 2024
test  <- tail(GKP, 3)    # Okt, Nov, Des 2024

# Ramalan naif: nilai terakhir data latih dibawa mendatar
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

data.frame(Bulan = c("Okt 2024","Nov 2024","Des 2024"),
           Aktual = test,
           Ramalan_Naif = naive_forecast,
           Error = error)
cat("ME   =", round(ME, 2), "\n")
## ME   = 266.67
cat("MAE  =", round(MAE, 2), "\n")
## MAE  = 266.67
cat("MSE  =", round(MSE, 2), "\n")
## MSE  = 81666.67
cat("RMSE =", round(RMSE, 2), "\n")
## RMSE = 285.77
cat("MAPE =", round(MAPE, 2), "%\n")
## MAPE = 4.3 %

Interpretasi:

  • Nilai latih terakhir (Sep 2024) = Rp5.900, dibawa mendatar sebagai ramalan naif untuk Okt-Des 2024.

  • ME bernilai positif = 266,67. artinya ramalan naif cenderung meleset ke bawah (under forecast). wajar karena harga GKP sedang tren naik.

  • MAE = 266,67 menunjukkan rata-rata besar galat sekitar Rp266,67/kg.

  • MSE = 81.666,67 dan RMSE = 285,77 menghukum galat besar (khususnya galat Desember yang mencapai 400) lebih berat.

  • MAPE = 4,30% menunjukkan rata-rata galat sekitar 4,3% dari harga aktual (relatif kecil), sehingga ramalan naif masih cukup dekat dengan aktual untuk horizon pendek ini, meski ada bias under forecast akibat tren naik yang terus berlanjut.