Pada tugas ini digunakan data jumlah pengunjung perpustakaan bulanan dari Januari 2023 hingga Juni 2024. Analisis dilakukan menggunakan Single Moving Average (SMA) orde 3 dan Double Moving Average (DMA) orde 3. SMA digunakan untuk memperoleh pola data yang lebih halus, sedangkan DMA digunakan untuk memperhitungkan kecenderungan tren pada data.
library(zoo)
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
pengunjung <- c(210,195,220,205,230,215,240,225,250,235,245,260,
255,265,270,280,275,290)
pengunjung_ts <- ts(pengunjung, start = c(2023,1), frequency = 12)
label_bulan <- format(as.yearmon(time(pengunjung_ts)), "%b %Y")
plot(pengunjung_ts, xaxt = "n", col = "red", type = "o",
main = "Pengunjung Perpustakaan", xlab = "Bulan", ylab = "Jumlah Pengunjung")
axis(1, at = time(pengunjung_ts), labels = label_bulan, cex.axis = 0.7)
Pada grafik “Pengunjung Perpustakaan”, jumlah pengunjung perpustakaan selama periode Januari 2023 sampai Juni 2024 menunjukkan pola yang secara umum cenderung meningkat dari waktu ke waktu. Meskipun terjadi beberapa penurunan pada bulan-bulan tertentu. Pada grafik “Pengunjung Perpustakaan”, jumlah pengunjung perpustakaan selama periode Januari 2023 sampai Juni 2024 menunjukkan pola yang secara umum cenderung meningkat dari waktu ke waktu. Meskipun terjadi beberapa penurunan pada bulan-bulan tertentu.
sma3 <- rollmean(pengunjung_ts, k = 3, align = "right", fill = NA)
plot(pengunjung_ts, xaxt = "n", col = "red", type = "o",
main = "Aktual vs SMA(3)", xlab = "Bulan", ylab = "Jumlah Pengunjung")
lines(sma3, col = "steelblue", lwd = 2)
axis(1, at = time(pengunjung_ts), labels = label_bulan, cex.axis = 0.7)
legend("topleft", legend = c("Aktual","SMA(3)"), col = c("red","steelblue"), lty = 1)
Pada metode Single Moving Average orde 3 atau SMA(3), setiap nilai moving average diperoleh dari rata-rata jumlah pengunjung selama tiga bulan terakhir, termasuk bulan yang sedang diamati. Karena memerlukan tiga observasi untuk menghasilkan satu nilai rata-rata bergerak, maka dua periode pertama belum memiliki nilai SMA. Secara umum, SMA(3) mengikuti arah pergerakan data aktual, tetapi mengalami sedikit keterlambatan atau lag ketika terjadi kenaikan maupun penurunan yang cukup cepat. Kondisi ini merupakan karakteristik metode moving average karena nilai pada suatu periode dipengaruhi oleh beberapa periode sebelumnya.
data.frame(Bulan = tail(label_bulan, 6),
Aktual = tail(pengunjung_ts, 6),
SMA3 = round(tail(sma3, 6), 2))
## Bulan Aktual SMA3
## 1 Jan 2024 255 253.33
## 2 Feb 2024 265 260.00
## 3 Mar 2024 270 263.33
## 4 Apr 2024 280 271.67
## 5 May 2024 275 275.00
## 6 Jun 2024 290 281.67
Secara keseluruhan, metode SMA(3) mampu menghaluskan fluktuasi data dan menggambarkan kecenderungan umum jumlah pengunjung. Namun, karena data memiliki kecenderungan meningkat, nilai SMA sering kali berada di bawah nilai aktual. Hal ini menunjukkan adanya keterlambatan SMA dalam mengikuti perubahan tren.
m <- 3
Mp <- rollmean(pengunjung_ts, k = m, align = "right", fill = NA)
Mpp <- rollmean(Mp, k = m, align = "right", fill = NA)
a_t <- 2*Mp - Mpp
b_t <- (2/(m-1)) * (Mp - Mpp)
cbind(Mp, Mpp, a_t, b_t)
## Mp Mpp a_t b_t
## Jan 2023 NA NA NA NA
## Feb 2023 NA NA NA NA
## Mar 2023 208.3333 NA NA NA
## Apr 2023 206.6667 NA NA NA
## May 2023 218.3333 211.1111 225.5556 7.222222
## Jun 2023 216.6667 213.8889 219.4444 2.777778
## Jul 2023 228.3333 221.1111 235.5556 7.222222
## Aug 2023 226.6667 223.8889 229.4444 2.777778
## Sep 2023 238.3333 231.1111 245.5556 7.222222
## Oct 2023 236.6667 233.8889 239.4444 2.777778
## Nov 2023 243.3333 239.4444 247.2222 3.888889
## Dec 2023 246.6667 242.2222 251.1111 4.444444
## Jan 2024 253.3333 247.7778 258.8889 5.555556
## Feb 2024 260.0000 253.3333 266.6667 6.666667
## Mar 2024 263.3333 258.8889 267.7778 4.444444
## Apr 2024 271.6667 265.0000 278.3333 6.666667
## May 2024 275.0000 270.0000 280.0000 5.000000
## Jun 2024 281.6667 276.1111 287.2222 5.555556
Pada metode Double Moving Average orde 3 atau DMA(3), dilakukan moving average sebanyak dua tahap. Moving average pertama dilambangkan sebagai \(M'_t\) atau Mp, sedangkan moving average kedua dilambangkan sebagai \(M''_t\) atau Mpp. Selanjutnya kedua nilai tersebut digunakan untuk menentukan komponen level \(a_t\) dan komponen tren \(b_t\).
Rumus yang digunakan adalah:
\[a_t = 2M'_t-M''_t\]
dan
\[b_t=\frac{2}{m-1}(M'_t-M''_t)\] dengan \(m=3\).
Karena moving average dilakukan sebanyak dua kali, nilai DMA baru dapat dihitung setelah tersedia jumlah observasi yang mencukupi.
Pada Januari dan Februari 2023, nilai Mp, Mpp, \(a_t\), dan \(b_t\) masih bernilai NA karena belum tersedia tiga observasi yang diperlukan untuk menghitung moving average pertama. Pada Maret dan April 2023, nilai Mp sudah dapat dihitung, yaitu masing-masing sebesar 208,33 dan 206,67, tetapi Mpp, \(a_t\), dan \(b_t\) masih bernilai NA. Hal ini terjadi karena moving average kedua juga membutuhkan tiga nilai moving average pertama.
Jadi, munculnya NA pada awal periode bukan merupakan error, melainkan konsekuensi dari penggunaan metode moving average dengan orde 3 dua kali.
# Peramalan 1 & 2 bulan ke depan (DMA)
a_last <- tail(na.omit(a_t), 1); b_last <- tail(na.omit(b_t), 1)
forecast_1 <- a_last + b_last * 1
forecast_2 <- a_last + b_last * 2
sma_last <- tail(na.omit(sma3), 1) # ramalan SMA (flat, konstan)
data.frame(Bulan_ke_depan = 1:2,
Forecast_DMA = c(forecast_1, forecast_2),
Forecast_SMA = rep(sma_last, 2))
## Bulan_ke_depan Forecast_DMA Forecast_SMA
## 1 1 292.7778 281.6667
## 2 2 298.3333 281.6667
Metode SMA(3) menghasilkan ramalan yang konstan sebesar 281,67 pengunjung karena hanya menggunakan nilai moving average terakhir sebagai dasar peramalan. Sementara itu, metode DMA(3) menghasilkan ramalan yang meningkat, yaitu 292,78 pengunjung untuk Juli 2024 dan 298,33 pengunjung untuk Agustus 2024. Hal ini terjadi karena metode DMA tidak hanya memperhitungkan level data, tetapi juga memasukkan komponen tren \(b_t\) ke dalam peramalan.
Karena data jumlah pengunjung menunjukkan kecenderungan meningkat, hasil DMA lebih responsif terhadap pola tren tersebut dibandingkan SMA. Namun, ada satu hal yang perlu dibedakan secara statistik: belum bisa langsung menyimpulkan bahwa DMA “lebih akurat” daripada SMA hanya dari grafik dan angka ramalan. Untuk menyatakan metode mana yang lebih akurat, lo perlu menghitung ukuran kesalahan peramalan seperti MAE, MSE, RMSE, atau MAPE menggunakan data aktual sebagai pembanding. Tanpa evaluasi error, yang aman adalah mengatakan bahwa DMA lebih mampu mengikuti tren data, bukan otomatis “lebih baik”.