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:
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
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
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.
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.
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.
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.