ANALISIS DERET WAKTU (SINGLE & DOUBLE MOVING AVERAGE)

Data yang digunakan adalah jumlah pengunjung Perpustakaan Daerah Kabupaten Serang periode Januari 2023???Juni 2024 (18 observasi bulanan, dalam satuan orang/bulan). Tujuan dari analisis ini adalah untuk memahami pola atau tren pada data, menghaluskan data menggunakan Single Moving Average (SMA) orde 3, menghitung Double Moving Average (DMA) dengan orde m = 3, dan menggunakan hasil DMA untuk meramalkan jumlah pengunjung satu dan dua bulan setelah data terakhir, kemudian membandingkannya dengan ramalan SMA biasa.

# 1. Input data & buat objek ts (time series)
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,     # 2023
                255,265,270,280,275,290)                             # 2024

pengunjung_ts <- ts(pengunjung, start = c(2023,1), frequency = 12)

pengunjung_ts
##      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2023 210 195 220 205 230 215 240 225 250 235 245 260
## 2024 255 265 270 280 275 290
# Plot runtun waktu
plot(pengunjung_ts, type = "o", col = "navy",
     xlab = "Tahun", ylab = "Jumlah pengunjung (orang/bulan)",
     main = "Jumlah Pengunjung Perpustakaan Daerah Kab. Serang)")

Interpretasi: Data pengunjung diubah menjadi objek ts dengan frequency = 12 karena data bersifat bulanan. Grafik menunjukkan jumlah pengunjung hampir terus naik selama satu setengah tahun, dimulai dari 210 orang di Januari 2023 mencapai 290 orang di Juni 2024, meskipun ada beberapa bulan di mana jumlah pengunjungnya turun (misalnya Februari dan April 2023). Artinya, iya data asli ini masih menunjukkan adanya tren kenaikan.

Kemudian, data diperhalus dengan menggunakan Single Moving Average orde 3 untuk melihat pola pergerakan data tanpa perubahan besar tiap bulan.

# 2. Single moving average orde 3
sma3 <- rollmean(pengunjung_ts, k = 3, align = "right", fill = NA)

sma3
##           Jan      Feb      Mar      Apr      May      Jun      Jul      Aug
## 2023       NA       NA 208.3333 206.6667 218.3333 216.6667 228.3333 226.6667
## 2024 253.3333 260.0000 263.3333 271.6667 275.0000 281.6667                  
##           Sep      Oct      Nov      Dec
## 2023 238.3333 236.6667 243.3333 246.6667
## 2024
# Bentuk tabelnya
hasil_sma <- data.frame(
  Bulan = time(pengunjung_ts),
  Aktual = as.numeric(pengunjung_ts),
  SMA3 = round(as.numeric(sma3), 3)
)

hasil_sma
##       Bulan Aktual    SMA3
## 1  2023.000    210      NA
## 2  2023.083    195      NA
## 3  2023.167    220 208.333
## 4  2023.250    205 206.667
## 5  2023.333    230 218.333
## 6  2023.417    215 216.667
## 7  2023.500    240 228.333
## 8  2023.583    225 226.667
## 9  2023.667    250 238.333
## 10 2023.750    235 236.667
## 11 2023.833    245 243.333
## 12 2023.917    260 246.667
## 13 2024.000    255 253.333
## 14 2024.083    265 260.000
## 15 2024.167    270 263.333
## 16 2024.250    280 271.667
## 17 2024.333    275 275.000
## 18 2024.417    290 281.667
# Plotnya
ts.plot(pengunjung_ts, sma3, col = c("black","purple"), lwd = 2,
        main = "Data Asli vs SMA(3)", ylab = "Jumlah pengunjung")
legend("topleft", legend = c("Data asli","SMA(3)"),
       col = c("black","purple"), lwd = 2)

Interpretasi:

Selanjutnya dihitung Double Moving Average untuk memperbaiki kekurangan dari Simple Moving Average sebelumnya, dengan menghitung dua kali rata-rata bergerak (M’t dan M’’t) lalu menurunkan komponen level (at) serta komponen tren (bt).

# 3. Double moving average (DMA) m = 3
m <- 3
# Moving average pertama
Mp  <- rollmean(pengunjung_ts, k = m, align = "right", fill = NA)
# Moving average kedua
Mpp <- rollmean(Mp, k = m, align = "right", fill = NA)
# Menghitung komponen level
a_t <- 2*Mp - Mpp     
# Menghitung komponen tren
b_t <- (2/(m-1)) * (Mp - Mpp)

# Membuat tabel hasil DMA
tabel_dma <- data.frame(
  Bulan = time(pengunjung_ts),
  Aktual = as.numeric(pengunjung_ts),
  Mp  = round(as.numeric(Mp), 2),
  Mpp = round(as.numeric(Mpp), 2),
  at  = round(as.numeric(a_t), 2),
  bt  = round(as.numeric(b_t), 2)
)

tabel_dma
##       Bulan Aktual     Mp    Mpp     at   bt
## 1  2023.000    210     NA     NA     NA   NA
## 2  2023.083    195     NA     NA     NA   NA
## 3  2023.167    220 208.33     NA     NA   NA
## 4  2023.250    205 206.67     NA     NA   NA
## 5  2023.333    230 218.33 211.11 225.56 7.22
## 6  2023.417    215 216.67 213.89 219.44 2.78
## 7  2023.500    240 228.33 221.11 235.56 7.22
## 8  2023.583    225 226.67 223.89 229.44 2.78
## 9  2023.667    250 238.33 231.11 245.56 7.22
## 10 2023.750    235 236.67 233.89 239.44 2.78
## 11 2023.833    245 243.33 239.44 247.22 3.89
## 12 2023.917    260 246.67 242.22 251.11 4.44
## 13 2024.000    255 253.33 247.78 258.89 5.56
## 14 2024.083    265 260.00 253.33 266.67 6.67
## 15 2024.167    270 263.33 258.89 267.78 4.44
## 16 2024.250    280 271.67 265.00 278.33 6.67
## 17 2024.333    275 275.00 270.00 280.00 5.00
## 18 2024.417    290 281.67 276.11 287.22 5.56

Interpretasi: Dari tabel tabel_dma, keliatan kalau M’t (rata-rata bergerak pertama) dan M’‘t (rata-rata bergerak kedua) sama-sama tertinggal dari data aktual, tetapi M’’t tertinggal lebih jauh karena dihaluskan dua kali. Komponenn a_t berfungsi memperbaiki selisih yang ada agar nilainya makin mirip dengan data aktual, sementara komponen b_t mencatat seberapa banyak kenaikan (tren) setiap bulannya. Nilai b_t berada di antara 2,78 hingga 7,22, yang artinya rata-rata kenaikan jumlah pengunjung setiap bulan sekitar 5 orang.

# 4. Peramalan dengan DMA vs SMA biasa
a_last <- tail(na.omit(a_t), 1)     # Mengambil nilai a dan b terakhir
b_last <- tail(na.omit(b_t), 1)

forecast_1 <- a_last + b_last * 1   # ramalan 1 bulan ke depan (Jul 2024)
forecast_2 <- a_last + b_last * 2   # ramalan 2 bulan ke depan (Agu 2024)

sma3_last <- tail(na.omit(sma3), 1)

c(a_last = a_last, b_last = b_last)
##     a_last     b_last 
## 287.222222   5.555556
c(Forecast_DMA_Jul24 = forecast_1, Forecast_DMA_Agu24 = forecast_2)
## Forecast_DMA_Jul24 Forecast_DMA_Agu24 
##           292.7778           298.3333
c(Forecast_SMA_Jul24 = sma3_last, Forecast_SMA_Agu24 = sma3_last)
## Forecast_SMA_Jul24 Forecast_SMA_Agu24 
##           281.6667           281.6667

Interpretasi: a_last= 287,22 dan b_last = 5,56, ramalan DMA untuk bulan Juli 2024 sekitar 292,78 orang, dan untuk bulan Agustus 2024 adalah sekitar 298,33 orang, jadi ramalannya terus naik mengikuti tren yang ada. Sedangkan ramalan SMA biasa hanya menggunakan nilai SMA(3) terakhir (281,67) dan dianggap tetap sama (konstan) untuk kedua bulan itu, tanpa memperhatikan arah pergerakan data. Selisih ramalan juga semakin jauh, dari sekitar 11 orang di bulan Juli menjadi hampir 17 orang di bulan Agustus. Ini menunjukkan bahwa DMA lebih cocok dipakai ketika datanya punya tren yang jelas, karena dapat menangkap arah kenaikan melalui komponen b_t, sedangkan SMA biasa akan terus meleset (salah) karena tidak ikut berubah sesuai tren tersebut.

KESIMPULAN AKHIR

Berdasarkan analisis jumlah pengunjung Perpustakaan Daerah Kabupaten Serang periode Januari 2023???Juni 2024, dapat disimpulkan bahwa jumlah pengunjung itu kebanyakan mengalami tren kenaikan seiring berjalannya waktu, meskipun ada beberapa bulan di mana pengunjungnya sedikit berkurang.

Kalau pakai cara penghalusan dengan Single Moving Average dengan orde 3, hasilnya itu selalu ketinggalan dari data aktual karena adanya tren naik. Tapi, kalau pakai Double Moving Average dengan orde m = 3, ini bisa memperbaiki masalah ketinggalan tadi. Caranya dengan melihat bagian data pokoknya (komponen level \(a_t\)) dan bagian kenaikan atau penurunannya (komponen tren \(b_t\)). Hasil ramalannya jadi lebih masuk akal. Ramalan DMA untuk bulan Juli dan Agustus 2024 itu masing-masing sekitar 292,78 dan 298,33 orang. Angka ini terus naik, mengikuti arah data aslinya, sedangkan ramalan SMA biasa malah tetap sama di angka 281,67 orang untuk kedua bulan itu.

Jadi, metode Double Moving Average (DMA) itu lebih cocok dipakai untuk meramalkan data yang memiliki tren yang jelas, seperti jumlah pengunjung perpustakaan ini. Dibandingkan dengan metode Single Moving Average (SMA) biasa, yang cenderung meleset karena tidak memperhatikan arah pergerakan data.