library(knitr)
library(kableExtra)
Data yang digunakan merupakan data harga Gabah Kering Panen (GKP) di tingkat petani Kabupaten Serang periode Januari 2023 sampai Desember 2024. Data terdiri dari 24 observasi bulanan dengan satuan harga Rp/kg.
| No | Periode | Harga.GKP..Rp.kg. |
|---|---|---|
| 1 | Jan 2023 | 5200 |
| 2 | Feb 2023 | 5150 |
| 3 | Mar 2023 | 5300 |
| 4 | Apr 2023 | 5400 |
| 5 | May 2023 | 5250 |
| 6 | Jun 2023 | 5350 |
| 7 | Jul 2023 | 5450 |
| 8 | Aug 2023 | 5500 |
| 9 | Sep 2023 | 5400 |
| 10 | Oct 2023 | 5550 |
| 11 | Nov 2023 | 5600 |
| 12 | Dec 2023 | 5700 |
| 13 | Jan 2024 | 5650 |
| 14 | Feb 2024 | 5700 |
| 15 | Mar 2024 | 5800 |
| 16 | Apr 2024 | 5900 |
| 17 | May 2024 | 5750 |
| 18 | Jun 2024 | 5850 |
| 19 | Jul 2024 | 5950 |
| 20 | Aug 2024 | 6000 |
| 21 | Sep 2024 | 5900 |
| 22 | Oct 2024 | 6050 |
| 23 | Nov 2024 | 6150 |
| 24 | Dec 2024 | 6300 |
gkp_ts <- ts(
harga_gkp,
start = c(2023, 1),
frequency = 12
)
# Menampilkan objek ts
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,
type = "o",
pch = 19,
lwd = 2,
col = "darkgreen",
main = "Dinamika Harga Gabah Kering Panen (GKP)",
sub = "Kabupaten Serang | Januari 2023 – Desember 2024",
xlab = "Periode",
ylab = "Harga GKP (Rp/kg)",
xaxt = "n"
)
grid(
nx = NA,
ny = NULL,
lty = 3,
col = "gray80"
)
axis(
1,
at = c(2023, 2024),
labels = c("2023", "2024")
)
abline(
v = 2024,
lty = 2,
col = "gray50",
lwd = 1.5
)
min_harga <- min(gkp_ts)
min_waktu <- time(gkp_ts)[which.min(gkp_ts)]
points(
min_waktu,
min_harga,
pch = 19,
col = "red",
cex = 1.4
)
text(
min_waktu,
min_harga,
labels = paste0("Terendah: Rp ", min_harga),
pos = 1,
cex = 0.8
)
max_harga <- max(gkp_ts)
max_waktu <- time(gkp_ts)[which.max(gkp_ts)]
points(
max_waktu,
max_harga,
pch = 19,
col = "blue",
cex = 1.4
)
text(
max_waktu,
max_harga,
labels = paste0("Tertinggi: Rp ", max_harga),
pos = 3,
cex = 0.8
)
log_gkp <- log(gkp_ts)
# Melihat hasil transformasi
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
par(
mfrow = c(1, 2),
mar = c(4, 4, 3, 1)
)
plot(
gkp_ts,
type = "o",
pch = 19,
lwd = 2,
col = "darkgreen",
main = "Data Asli",
sub = "Harga GKP (Rp/kg)",
xlab = "Tahun",
ylab = "Harga (Rp/kg)"
)
grid(
nx = NA,
ny = NULL,
lty = 3,
col = "gray80"
)
abline(
v = 2024,
lty = 2,
col = "gray50"
)
plot(
log_gkp,
type = "o",
pch = 19,
lwd = 2,
col = "steelblue",
main = "Transformasi Logaritma",
sub = "ln(Harga GKP)",
xlab = "Tahun",
ylab = "ln(Harga)"
)
grid(
nx = NA,
ny = NULL,
lty = 3,
col = "gray80"
)
abline(
v = 2024,
lty = 2,
col = "gray50"
)
par(mfrow = c(1, 1))
Interpretasi
Berdasarkan perbandingan plot, pola pergerakan harga GKP sebelum dan sesudah transformasi logaritma secara umum tetap sama. Transformasi logaritma tidak mengubah arah maupun urutan perubahan harga tetapi mengubah skala data. Nilai pada data hasil transformasi menjadi lebih terkompresi dibandingkan data asli.
diff_log_gkp <- diff(log_gkp, differences = 1)
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
Secara matematis:
\[ W_t = \ln(Y_t)-\ln(Y_{t-1}) \]
atau ekuivalen dengan:
\[ W_t = \ln\left(\frac{Y_t}{Y_{t-1}}\right) \]
Data yang dianalisis bukan lagi harga absolut, tetapi perubahan relatif harga dari satu bulan ke bulan berikutnya.
plot( diff_log_gkp, type = "o", pch = 19, lwd = 2, main = "Differencing Tingkat Pertama Log Harga GKP", sub = "Perubahan Bulanan Harga GKP", xlab = "Tahun", ylab = "Differenced Log Harga" )
abline( h = 0, lty = 2, lwd = 1.5 )
grid( nx = NA, ny = NULL, lty = 3, col = "gray80" )
Agar lebih jelas apakah tren sudah hilang:
par(
mfrow = c(1, 2),
mar = c(4, 4, 3, 1)
)
plot(
log_gkp,
type = "o",
pch = 19,
lwd = 2,
main = "Sebelum Differencing",
sub = "Log Harga GKP",
xlab = "Tahun",
ylab = "ln(Harga)"
)
grid(nx = NA, lty = 3, col = "gray80")
plot(
diff_log_gkp,
type = "o",
pch = 19,
lwd = 2,
main = "Setelah Differencing",
sub = "Differenced Log Harga GKP",
xlab = "Tahun",
ylab = "Δ ln(Harga)"
)
abline(
h = 0,
lty = 2,
lwd = 1.5
)
grid(nx = NA, lty = 3, col = "gray80")
par(mfrow = c(1, 1))
Berdasarkan plot hasil differencing tingkat pertama, tren kenaikan pada data logaritma telah berkurang dan nilai data berfluktuasi di sekitar nilai nol. Hal ini menunjukkan bahwa differencing tingkat pertama telah menghilangkan kecenderungan tren pada data.
# Membagi data menjadi data latih dan data uji
train <- head(harga_gkp, 21)
test <- tail(harga_gkp, 3)
naive_forecast <- rep(tail(train, 1), 3)
hasil_ramalan <- data.frame(
Observasi = 22:24,
Aktual = test,
Ramalan_Naif = naive_forecast,
Error = test - naive_forecast
)
hasil_ramalan
## Observasi Aktual Ramalan_Naif Error
## 1 22 6050 5900 150
## 2 23 6150 5900 250
## 3 24 6300 5900 400
Karena nilai terakhir data latih adalah **Rp5.950**, maka:
\[ \hat{Y}_{22}=\hat{Y}_{23}=\hat{Y}_{24}=5.950 \]
error <- test - naive_forecast
ME <- mean(error)
MAE <- mean(abs(error))
MSE <- mean(error^2)
RMSE <- sqrt(MSE)
MAPE <- mean(abs(error / test)) * 100
hasil_evaluasi <- data.frame(
ME = ME,
MAE = MAE,
MSE = MSE,
RMSE = RMSE,
MAPE = MAPE
)
hasil_evaluasi
## ME MAE MSE RMSE MAPE
## 1 266.6667 266.6667 81666.67 285.7738 4.297862
Berdasarkan hasil evaluasi ramalan naif diperoleh nilai ME sebesar 266,67, MAE sebesar 266,67, MSE sebesar 81.666,67, RMSE sebesar 285,77, dan MAPE sebesar 4,30%. Nilai ME yang positif menunjukkan bahwa hasil ramalan cenderung berada di bawah nilai aktual. Hal ini terlihat pada tiga bulan data uji, ketika harga GKP aktual terus meningkat sementara ramalan naif tetap menggunakan nilai observasi terakhir pada data latih yaitu Rp5.900/kg.