1 Pendahuluan

Perpustakaan Daerah Kabupaten Serang melayani masyarakat sebagai pusat literasi dan sumber informasi. Jumlah pengunjung setiap bulan menjadi indikator penting untuk menilai minat baca serta kebutuhan koleksi.

Laporan ini menganalisis data jumlah pengunjung bulanan (orang/bulan) pada Januari 2023 sampai Juni 2024 (18 pengamatan) dengan metode pemulusan moving average. Tujuan analisis adalah:

  1. Membuat objek time series dan melihat apakah data memiliki tren yang jelas.
  2. Menghitung Single Moving Average orde 3 (SMA(3)) dan membandingkannya dengan data asli pada 6 bulan terakhir.
  3. Menghitung Double Moving Average (DMA) orde 3 beserta komponen \(M'_t\), \(M''_t\), \(a_t\), dan \(b_t\).
  4. Meramalkan jumlah pengunjung 1 dan 2 bulan setelah data terakhir (Juli dan Agustus 2024) dengan DMA, lalu membandingkannya dengan ramalan SMA biasa.

2 Package

library(zoo)
## Warning: package 'zoo' was built under R version 4.4.3
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric

3 Persiapan Data

pengunjung <- c(
  210, 195, 220, 205, 230, 215, 240, 225, 250, 235, 245, 260,  # 2023
  255, 265, 270, 280, 275, 290    # 2024
)

bulan <- c("Jan", "Feb", "Mar", "Apr", "Mei", "Jun",
           "Jul", "Agu", "Sep", "Okt", "Nov", "Des")

df <- data.frame(
  Tahun = c(rep(2023, 12), rep(2024, 6)),
  Bulan = c(bulan, bulan[1:6]),
  Jumlah_pengunjung = pengunjung
)
print(df)
##    Tahun Bulan Jumlah_pengunjung
## 1   2023   Jan               210
## 2   2023   Feb               195
## 3   2023   Mar               220
## 4   2023   Apr               205
## 5   2023   Mei               230
## 6   2023   Jun               215
## 7   2023   Jul               240
## 8   2023   Agu               225
## 9   2023   Sep               250
## 10  2023   Okt               235
## 11  2023   Nov               245
## 12  2023   Des               260
## 13  2024   Jan               255
## 14  2024   Feb               265
## 15  2024   Mar               270
## 16  2024   Apr               280
## 17  2024   Mei               275
## 18  2024   Jun               290

4 Soal 1: Objek ts dan Plot Data

pgj_ts <- ts(pengunjung, start = c(2023, 1), frequency = 12)
print(pgj_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(pgj_ts,
     main = "Jumlah Pengunjung Perpustakaan Daerah\nKabupaten Serang (Jan 2023 - Jun 2024)",
     xlab = "Waktu",
     ylab = "Pengunjung (orang/bulan)",
     col = "purple", lwd = 2, type = "o", pch = 16)
abline(lm(pgj_ts ~ time(pgj_ts)), col = "red", lty = 2)  
grid()

Interpretasi

Jumlah pengunjung meningkat dari sekitar 210 orang pada bulan Januari 2023 menjadi 290 orang pada bulan Juni 2024. Terdapat fluktasi kecil dari bulan ke bulan, tetapi tren kenaikannya konsisten, sehingga data menunjukkan tren naik.

5 Soal 2: Single Moving Average Orde 3

sma3 <- rollmean(pgj_ts, k = 3, align = "right", fill = NA)
ts.plot(pgj_ts, sma3, col = c("black","steelblue"), lwd = 2,
        main = "Data Asli vs SMA(3)")
legend("topleft", legend = c("Data asli","SMA(3)"),
       col = c("black","steelblue"), lwd = 2, bty = "n")

## Perbandingan 6 bulan terakhir (Jan-Jun 2024)
n <- length(pgj_ts)
perb6 <- data.frame(
  Bulan = c("Jan","Feb","Mar","Apr","Mei","Jun"),
  Asli = as.numeric(pgj_ts)[(n-5):n],
  SMA3 = round(as.numeric(sma3)[(n-5):n], 3)
)
perb6$Selisih <- round(perb6$Asli - perb6$SMA3, 3)
print(perb6)
##   Bulan Asli    SMA3 Selisih
## 1   Jan  255 253.333   1.667
## 2   Feb  265 260.000   5.000
## 3   Mar  270 263.333   6.667
## 4   Apr  280 271.667   8.333
## 5   Mei  275 275.000   0.000
## 6   Jun  290 281.667   8.333

Interpretasi

Nilai SMA(3) berada di bawah data asli pada seluruh 6 bulan terakhir. Pada data trennya naik, rata-rata 3 bulan terkahir selalu memuat nilai-nilai yang lebih lama dan lebih kecil, sehingga SMA tertinggal (lag) dari data asli.

6 Soal 3: Double Moving Average Orde 3

m <- 3
Mp <- rollmean(pgj_ts, k = m, align = "right", fill = NA)   # M't
Mpp <- rollmean(Mp, k = m, align = "right", fill = NA)   # M''t
a_t <- 2*Mp - Mpp
b_t <- (2/(m-1)) * (Mp - Mpp)

tabel_dma <- data.frame(Data = as.numeric(pgj_ts),
                        Mp = round(as.numeric(Mp), 3),
                        Mpp = round(as.numeric(Mpp), 3),
                        a_t = round(as.numeric(a_t), 3),
                        b_t = round(as.numeric(b_t), 3))
print(tabel_dma)
##    Data      Mp     Mpp     a_t   b_t
## 1   210      NA      NA      NA    NA
## 2   195      NA      NA      NA    NA
## 3   220 208.333      NA      NA    NA
## 4   205 206.667      NA      NA    NA
## 5   230 218.333 211.111 225.556 7.222
## 6   215 216.667 213.889 219.444 2.778
## 7   240 228.333 221.111 235.556 7.222
## 8   225 226.667 223.889 229.444 2.778
## 9   250 238.333 231.111 245.556 7.222
## 10  235 236.667 233.889 239.444 2.778
## 11  245 243.333 239.444 247.222 3.889
## 12  260 246.667 242.222 251.111 4.444
## 13  255 253.333 247.778 258.889 5.556
## 14  265 260.000 253.333 266.667 6.667
## 15  270 263.333 258.889 267.778 4.444
## 16  280 271.667 265.000 278.333 6.667
## 17  275 275.000 270.000 280.000 5.000
## 18  290 281.667 276.111 287.222 5.556

Interpretasi

\(M'_t\) baru tersedia mulai periode ke-3 dan \(M''_t\) mulai periode ke-5, sehingga \(a_t\) dan \(b_t\) baru dapat dihitung dari periode ke-5 (Mei 2023). Nilai \(b_t\) yang positif menunjukkan adanya kecenderungan naik.

7 Soal 4: Ramalan 1 dan 2 bulan ke depan

a_last <- tail(na.omit(a_t), 1)
b_last <- tail(na.omit(b_t), 1)
dma_1 <- a_last + b_last * 1
dma_2 <- a_last + b_last * 2

sma_last <- tail(na.omit(sma3), 1)    
sma_1 <- sma_last
sma_2 <- sma_last

hasil <- data.frame(Bulan = c("Jul 2024","Agu 2024"),
                    SMA   = round(c(sma_1, sma_2), 3),
                    DMA   = round(c(dma_1, dma_2), 3))
print(hasil)
##      Bulan     SMA     DMA
## 1 Jul 2024 281.667 292.778
## 2 Agu 2024 281.667 298.333
# plot ramalan
plot(pgj_ts, xlim = c(2023, 2025), ylim = c(190, 310),
     type = "o", pch = 16, col = "purple", lwd = 2,
     main = "Ramalan Jumlah Pengunjung: SMA(3) vs DMA(3)",
     xlab = "Waktu", ylab = "Pengunjung (orang/bulan)")
lines(ts(c(pengunjung[n], as.numeric(c(dma_1, dma_2))), start = c(2024, 6), frequency = 12),
      col = "blue", lwd = 2, type = "o", pch = 17)
lines(ts(c(pengunjung[n], as.numeric(c(sma_1, sma_2))), start = c(2024, 6), frequency = 12),
      col = "red", lwd = 2, type = "o", pch = 15, lty = 2)
legend("topleft", legend = c("Data asli", "Ramalan DMA", "Ramalan SMA"),
       col = c("purple", "blue", "red"), lwd = 2, pch = c(16, 17, 15), bty = "n")
grid()

Interpretasi

Pada akhir data diperoleh \(a_t\) = 287,22 dan \(b_t\) = 5,56. Ramalan DMA adalah 292,78 orang untuk Juli 2024 dan 298,33 orang untuk Agustus 2024. Ramalan SMA biasa sama untuk kedua bulan, yaitu 281,67 orang.

Hasilnya berbeda karena:

Karena data pengunjung memiliki tren naik yang jelas, DMA lebih sesuai daripada SMA biasa.

8 Kesimpulan

  1. Data pengunjung Perpustakaan Daerah Kabupaten Serang memiliki tren naik yang jelas dari Januari 2023 sampai Juni 2024.
  2. SMA(3) tertinggal dari data asli akibat adanya tren.
  3. DMA(3) menghasilkan \(a_t\) dan \(b_t\) yang dapat dipakai untuk meramal data bertren.
  4. Ramalan DMA untuk Juli dan Agustus 2024 (292,8 dan 298,3 orang) lebih tinggi dan lebih realistis dibandingkan ramalan SMA (281,7 orang).