Berikut data harga gabah kering panen (GKP) di tingkat petani Kabupaten Serang periode Januari 2023–Desember 2024 (Rp/kg):
| Tahun | Jan | Feb | Mar | Apr | Mei | Jun | Jul | Agu | Sep | Okt | Nov | Des |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2023 | 5.200 | 5.150 | 5.300 | 5.400 | 5.250 | 5.350 | 5.450 | 5.500 | 5.400 | 5.550 | 5.600 | 5.700 |
| 2024 | 5.650 | 5.700 | 5.800 | 5.900 | 5.750 | 5.850 | 5.950 | 6.000 | 5.900 | 6.050 | 6.150 | 6.300 |
#1. Buat objek ts dan plot runtun waktu dari data harga GKP di atas.
#mengimport data harga gabah kering panen(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)
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
#melihat plot data asli:
# Plot data asli
plot(
GKP_ts,
main = "Runtun Waktu Harga GKP Kabupaten Serang",
xlab = "Tahun",
ylab = "Harga GKP (Rp/kg)"
)
Berdasarkan plot data asli, harga GKP mengalami fluktuasi setiap bulan dengan kecenderungan tren meningkat dari awal 2023 hingga akhir 2024. Hal ini menunjukkan bahwa data belum stasioner terhadap rataan, sedangkan varians data masih terlihat relatif stabil.
#2. Lakukan transformasi logaritma, lalu bandingkan plot data asli dan hasil transformasi.
log_GKP <- log(GKP_ts)
print(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
#membandingkan plot data asli dan data hasil transformasi
plot(
GKP_ts,
main = "Data Asli Harga GKP",
xlab = "Tahun",
ylab = "Harga (Rp/kg)"
)
plot(
log_GKP,
main = "Data Harga GKP Setelah Transformasi Logaritma",
xlab = "Tahun",
ylab = "Log(Harga GKP)"
)
Berdasarkan perbandingan grafik data asli dan setelah transformasi logaritma, pola pergerakan data secara umum tetap sama, yaitu masih menunjukkan tren meningkat dan fluktuasi dari waktu ke waktu. Pada data asli, harga berada pada kisaran Rp5.150–Rp6.300/kg, sedangkan setelah transformasi logaritma nilainya berada pada kisaran 8,547–8,748. Transformasi logaritma mengubah skala data dan membuat perubahan data menjadi lebih kecil, tetapi belum menghilangkan tren pada data.
#3. Lakukan differencing tingkat pertama pada data hasil transformasi. Apakah tren sudah hilang?
diff_log_GKP <- diff(log_GKP)
print(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
#plot hasil differencing
plot(
diff_log_GKP,
main = "Differencing Tingkat Pertama Data Log GKP",
xlab = "Tahun",
ylab = "Differensi Log GKP"
)
#membandingkan data log dengan hasil differencing
par(mfrow = c(2, 1))
plot(
log_GKP,
main = "Data Setelah Transformasi Logaritma",
xlab = "Tahun",
ylab = "Log(Harga GKP)"
)
plot(
diff_log_GKP,
main = "Data Setelah Differencing Tingkat Pertama",
xlab = "Tahun",
ylab = "Differensi Log GKP"
)
par(mfrow = c(1, 1))
#perbandingan standar deviasinya:
sd(GKP_ts)
## [1] 314.1514
sd(log_GKP)
## [1] 0.05539227
sd(diff_log_GKP)
## [1] 0.01725887
Setelah dilakukan differencing tingkat pertama pada data hasil transformasi logaritma, tren meningkat sudah tidak terlihat dan nilai data berfluktuasi di sekitar nol. Dengan demikian, differencing tingkat pertama sudah mampu menghilangkan tren sehingga data menjadi lebih stasioner terhadap rataan. Nilai Januari 2023 tidak ada karena differencing pertama mengurangi jumlah observasi dari 24 menjadi 23.
#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.
#Membagi data menjadi data training dan testing
data_train <- head(GKP, 21)
data_test <- tail(GKP, 3)
print(data_train)
## [1] 5200 5150 5300 5400 5250 5350 5450 5500 5400 5550 5600 5700 5650 5700 5800
## [16] 5900 5750 5850 5950 6000 5900
print(data_test)
## [1] 6050 6150 6300
# Ramalan naif: Nilai ramalan untuk semua periode sama dengan nilai observasi terakhir pada data training
naive_forecast <- rep(tail(data_train, 1), 3)
print(naive_forecast)
## [1] 5900 5900 5900
#tabel perbandingan data aktual dengan hasil forecasting
hasil_ramalan <- data.frame(
Periode = c("Oktober 2024", "November 2024", "Desember 2024"),
Aktual = data_test,
Ramalan_Naif = naive_forecast
)
print(hasil_ramalan)
## Periode Aktual Ramalan_Naif
## 1 Oktober 2024 6050 5900
## 2 November 2024 6150 5900
## 3 Desember 2024 6300 5900
#menghitung error:
error <- data_test - naive_forecast
print(error)
## [1] 150 250 400
#menghitung ME, MAE, MSE, RMSE, DAN MAPE
ME <- mean(error)
MAE <- mean(abs(error))
MSE <- mean(error^2)
RMSE <- sqrt(MSE)
MAPE <- mean(abs(error / data_test)) * 100
#menampilkan hasil evaluasi
cat("Nilai Mean Square Error:", ME)
## Nilai Mean Square Error: 266.6667
cat("Nilai Mean Absolute Error:", MAE)
## Nilai Mean Absolute Error: 266.6667
cat("Nilai Mean Square Error:", MSE)
## Nilai Mean Square Error: 81666.67
cat("Nilai Root Mean Squared Error:", RMSE)
## Nilai Root Mean Squared Error: 285.7738
cat("Nilai Mean Absolute Percentage Error:", MAPE)
## Nilai Mean Absolute Percentage Error: 4.297862
#membuat tabel hasil evaluasi
evaluasi <- data.frame(
ME = ME,
MAE = MAE,
MSE = MSE,
RMSE = RMSE,
MAPE = MAPE
)
print(evaluasi)
## ME MAE MSE RMSE MAPE
## 1 266.6667 266.6667 81666.67 285.7738 4.297862
Berdasarkan hasil ramalan naif, digunakan 21 observasi pertama sebagai data latih dan 3 observasi terakhir sebagai data uji. Karena ramalan naif menggunakan nilai terakhir data latih, yaitu Rp5.900/kg, maka ramalan untuk Oktober, November, dan Desember 2024 masing-masing adalah Rp5.900/kg.
Hasil evaluasi menunjukkan 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 lebih rendah dibandingkan data aktual. MAPE sebesar 4,30% menunjukkan bahwa rata-rata kesalahan ramalan sekitar 4,30% dari nilai aktual.