library(zoo)
## Warning: package 'zoo' was built under R version 4.5.2
##
## 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)
ts.plot(pengunjung_ts, col = "black", type = "o",
main = "Jumlah Pengunjung Perpustakaan Kab.Serang (Jan2023 - Jun2024)",
ylab = "Jumlah pengunjung (orang/bulan)", xlab = "Waktu")
grid()
Tren terlihat naik. Dari Januari 2023 yang cuma 210 orang, terus naik sampai Juni 2024 jadi 290 orang. Ada naik turun sedikit tiap bulan, tapi kalau dilihat garis besarnya jumlah pengunjungnya makin lama makin banyak.
sma3 <- rollmean(pengunjung_ts, k = 3, align = "right", fill = NA)
ts.plot(pengunjung_ts, sma3, col = c("black","steelblue"), type = "o",
main = "Data Asli vs SMA(3)",
ylab = "Jumlah pengunjung", xlab = "Waktu")
legend("topleft", legend = c("Aktual","SMA(3)"), col = c("black","steelblue"), lty = 1)
# Perbandingan 6 bulan terakhir
n <- length(pengunjung_ts)
data.frame(
Bulan = c("Jan24","Feb24","Mar24","Apr24","Mei24","Jun24"),
Aktual = as.numeric(pengunjung_ts)[(n-5):n],
SMA3 = round(as.numeric(sma3)[(n-5):n], 2)
)
SMA(3) terlihat tertinggal selalu dari data aslinya. pada 6 bulan terakhir, nilai SMA selalu di bawah angka aslinya, seperti bulan Juni 2024 aslinya 290, tapi SMA cuma 281,67. cukup wajar, karena SMA rata ratanya 3 bulan ke belakang, jadi pas datanya lagi naik terus, SMA nya jadi “telat” ngejar naiknya. Makin cepet naiknya, makin jauh juga bedanya.
m <- 3
Mp <- rollmean(pengunjung_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)
round(Mp, 3)
## Jan Feb Mar Apr May Jun Jul Aug Sep
## 2023 NA NA 208.333 206.667 218.333 216.667 228.333 226.667 238.333
## 2024 253.333 260.000 263.333 271.667 275.000 281.667
## Oct Nov Dec
## 2023 236.667 243.333 246.667
## 2024
round(Mpp, 3)
## Jan Feb Mar Apr May Jun Jul Aug Sep
## 2023 NA NA NA NA 211.111 213.889 221.111 223.889 231.111
## 2024 247.778 253.333 258.889 265.000 270.000 276.111
## Oct Nov Dec
## 2023 233.889 239.444 242.222
## 2024
round(a_t, 3)
## Jan Feb Mar Apr May Jun Jul Aug Sep
## 2023 NA NA NA NA 225.556 219.444 235.556 229.444 245.556
## 2024 258.889 266.667 267.778 278.333 280.000 287.222
## Oct Nov Dec
## 2023 239.444 247.222 251.111
## 2024
round(b_t, 3)
## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2023 NA NA NA NA 7.222 2.778 7.222 2.778 7.222 2.778 3.889 4.444
## 2024 5.556 6.667 4.444 6.667 5.000 5.556
Dari hasil M’t, M’’t, aₜ, sama bₜ per bulan, keliatan kalau bₜ selalu positif, sekitar 2,7–7,2. artinya tren pengunjungnya memang terus naik tiap bulan. Di data terakhir (Juni 2024), aₜ-nya 287,22 dan bₜ-nya 5,56. jadi sekarang levelnya ada di kurang lebih 287 orang, dan tiap bulan naik sekitar 5-6 orang.
a_last <- tail(na.omit(a_t), 1)
b_last <- tail(na.omit(b_t), 1)
forecast_1 <- a_last + b_last * 1 # ramalan Juli 2024
forecast_2 <- a_last + b_last * 2 # ramalan Agustus 2024
forecast_sma <- tail(na.omit(sma3), 1) # ramalan SMA biasa (flat/naive)
cat("Ramalan DMA - Juli 2024 (t+1):", round(forecast_1, 2), "orang\n")
## Ramalan DMA - Juli 2024 (t+1): 292.78 orang
cat("Ramalan DMA - Agustus 2024 (t+2):", round(forecast_2, 2), "orang\n")
## Ramalan DMA - Agustus 2024 (t+2): 298.33 orang
cat("Ramalan SMA biasa (flat, t+1 & t+2):", round(forecast_sma, 2), "orang\n")
## Ramalan SMA biasa (flat, t+1 & t+2): 281.67 orang
Ramalan pake DMA: Juli 2024 sekitar 293 orang, Agustus sekitar 298 orang (naik terus)
Ramalan pake SMA biasa: sekitar 282 orang buat Juli maupun Agustus (sama aja, gak naik)
ini berbeda karena SMA biasa cuma nebak masa depan bakal sama kayak rata rata terakhir, jadi dia gak “ngerti” kalau datanya lagi tren naik, makanya hasilnya kekecilan (underestimate). Sedangkan DMA emang dari awal udah ngitung seberapa cepet kenaikannya (itu bₜ tadi), terus dipake buat nebak ke depan, jadi hasilnya ikut naik dan lebih masuk akal buat data yang emang lagi ngetren kayak gini.