Pendahuluan

Laporan ini menganalisis data bulanan jumlah pengunjung Perpustakaan Daerah Kabupaten Serang pada periode Januari 2023 sampai Juni 2024 (18 observasi bulanan). Nilai pengamatan disajikan dalam satuan orang per bulan (pemustaka/bulan). Analisis ini disusun untuk menyelesaikan penugasan Latihan Pendalaman Materi (Tugas Mandiri) Pertemuan 4 mata kuliah Analisis Deret Waktu (STA623303). Tujuan analisis ini meliputi: (1) membentuk objek runtun waktu bulanan (ts) dan memvisualisasikan data runtun waktu guna mengidentifikasi apakah pola data menunjukkan kecenderungan tren yang cukup jelas; (2) menerapkan metode pemulusan Single Moving Average (SMA) dengan orde jendela \(m = 3\) menggunakan fungsi rollmean() dari paket zoo (align = "right", fill = NA), membandingkannya dengan data asli pada 6 bulan terakhir (Januari–Juni 2024), serta mengevaluasi apakah pergerakan SMA memperlihatkan efek keterlambatan (lag effect); (3) menghitung tahapan metode Double Moving Average (DMA) berorde \(m = 3\) yang mencakup rata-rata bergerak tingkat pertama (\(M'_t\)), rata-rata bergerak tingkat kedua (\(M''_t\)), estimasi komponen level saat ini (\(a_t\)), dan estimasi komponen tren bulanan (\(b_t\)); serta (4) menggunakan formulasi DMA untuk meramalkan jumlah pengunjung 1 dan 2 bulan ke depan (Juli dan Agustus 2024), memperbandingkannya dengan hasil ramalan konstan metode SMA biasa, dan menguraikan justifikasi teoretis mengenai penyebab perbedaan hasil di antara kedua metode peramalan tersebut.

1 Objek Time Series dan Plot Runtun Waktu

Langkah awal analisis adalah memasukkan 18 data observasi jumlah pengunjung Perpustakaan Daerah Kabupaten Serang secara kronologis dari Januari 2023 hingga Juni 2024 ke R dan membentuk objek runtun waktu bulanan (ts) dengan titik awal Januari 2023 (start = c(2023, 1)) serta frekuensi 12.

# Data bulanan jumlah pengunjung Perpustakaan Daerah Kabupaten Serang (Januari 2023 - Juni 2024)
pengunjung <- c(
  210, 195, 220, 205, 230, 215, 240, 225, 250, 235, 245, 260,
  255, 265, 270, 280, 275, 290
)

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

# Label referensi nama bulan dan periode kalender
nama_bulan <- c(
  "Januari", "Februari", "Maret", "April", "Mei", "Juni",
  "Juli", "Agustus", "September", "Oktober", "November", "Desember"
)
label_periode <- c(
  paste(nama_bulan, 2023),
  paste(nama_bulan[1:6], 2024)
)

# Pemisahan perbandingan semester pertama (Januari - Juni) antartahun 2023 dan 2024
pengunjung_s1_2023 <- pengunjung[1:6]
pengunjung_s1_2024 <- pengunjung[13:18]
diff_s1_yoy <- pengunjung_s1_2024 - pengunjung_s1_2023

# Menampilkan objek ts
print(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 dibuat untuk melihat pola pergerakan dan arah kecenderungan jumlah pengunjung perpustakaan selama 18 bulan masa pengamatan.

plot(
  pengunjung_ts,
  type = "o",
  pch = 16,
  xlab = "Waktu",
  ylab = "Jumlah Pengunjung (orang)",
  main = "Jumlah Pengunjung Perpustakaan Daerah Kabupaten Serang, 2023-2024"
)

Grafik di atas memuat 18 titik observasi bulanan. Rentang nilai bergerak dari titik terendah 195 orang (Februari 2023) hingga titik tertinggi 290 orang (Juni 2024). Berdasarkan visualisasi runtun waktu tersebut, dapat diidentifikasi beberapa karakteristik utama:

  1. Keberadaan Tren Naik yang Cukup Jelas (Distinct Upward Trend): Pola data secara tegas memperlihatkan adanya tren kenaikan linier jangka panjang (upward trend) yang cukup jelas. Jumlah pengunjung mengalami peningkatan yang ajeg dan konsisten dari awal tahun 2023 hingga pertengahan tahun 2024. Rata-rata pengunjung pada semester pertama tahun 2024 tercatat sebesar 272,50 orang, jauh melampaui rata-rata semester pertama tahun 2023 sebesar 212,50 orang, dengan rata-rata kenaikan tahunan (year-on-year) mencapai 60,00 orang per bulan pada bulan-bulan yang bersesuaian.
  2. Pola Fluktuasi Jangka Pendek (Short-Term Oscillation): Di samping tren kenaikan jangka panjang, tampak adanya osilasi jangka pendek berulang yang membentuk pola gigi gergaji halus (sawtooth pattern), khususnya di sepanjang tahun 2023 saat terjadi selang-seling antara penurunan dan kenaikan lokal di sekitar kurva tren. Meskipun demikian, setiap lembah lokal baru selalu terbentuk pada level yang lebih tinggi dari lembah lokal sebelumnya, menegaskan dominasi komponen pertumbuhan tren.
  3. Ketidakstasioneran dalam Rata-Rata (Non-Stationarity in Mean): Keberadaan kemiringan tren positif (positive drift) menyebabkan nilai rata-rata deret waktu berubah secara progresif seiring berjalannya waktu (\(E[Z_t] = f(t)\)). Kondisi ini mengindikasikan bahwa data bersifat tidak stasioner dalam rata-rata, sehingga penerapan metode pemulusan yang mengasumsikan level konstan seperti Single Moving Average (SMA) akan menghadapi keterbatasan mendasar akibat bias keterlambatan (lag).

2 Single Moving Average (SMA)

Metode Single Moving Average (SMA) merupakan teknik pemulusan paling dasar yang merata-ratakan sejumlah \(m\) observasi terakhir guna meredam fluktuasi acak jangka pendek. Rata-rata bergerak tunggal orde \(m\) pada waktu \(t\) didefinisikan secara matematis sebagai:

\[ M'_t = \frac{1}{m} \sum_{i=0}^{m-1} Z_{t-i} = \frac{Z_t + Z_{t-1} + \dots + Z_{t-m+1}}{m} \]

Untuk orde pemulusan \(m = 3\), formulasi rata-rata bergerak tunggal pada periode ke-\(t\) adalah:

\[ M'_t = \frac{Z_t + Z_{t-1} + Z_{t-2}}{3} \]

Perhitungan SMA(3) diimplementasikan menggunakan fungsi rollmean() dari paket zoo dengan argumen align = "right" (menempatkan hasil rata-rata pada posisi waktu observasi terakhir) dan fill = NA (mengisi \(m - 1\) posisi awal yang belum mencukupi jendela data dengan NA).

library(zoo)

# Parameter jendela pemulusan
m <- 3

# Perhitungan Single Moving Average orde m = 3
sma3 <- rollmean(pengunjung_ts, k = m, align = "right", fill = NA)

# Ekstraksi dan perbandingan pada 6 bulan terakhir (Januari - Juni 2024, indeks 13 sampai 18)
idx_6bln <- 13:18
aktual_6bln <- pengunjung[idx_6bln]
sma3_6bln <- as.numeric(sma3[idx_6bln])
selisih_sma <- aktual_6bln - sma3_6bln
pct_lag_sma <- (selisih_sma / aktual_6bln) * 100

# Tabel perbandingan data asli vs SMA(3) pada 6 bulan terakhir
tabel_sma <- data.frame(
  Bulan = label_periode[idx_6bln],
  Aktual = fmt(aktual_6bln, 0),
  SMA3 = fmt(sma3_6bln, 2),
  Selisih = fmt(selisih_sma, 2),
  Persen_Lag = paste0(fmt(pct_lag_sma, 2), "%")
)

knitr::kable(
  tabel_sma,
  align = "c",
  col.names = c("Bulan Pengamatan (2024)", "Data Asli (Zt)", "SMA(3) (M't)", "Selisih (Zt - M't)", "Keterlambatan Relatif (%)")
)
Bulan Pengamatan (2024) Data Asli (Zt) SMA(3) (M’t) Selisih (Zt - M’t) Keterlambatan Relatif (%)
Januari 2024 255 253,33 1,67 0,65%
Februari 2024 265 260,00 5,00 1,89%
Maret 2024 270 263,33 6,67 2,47%
April 2024 280 271,67 8,33 2,98%
Mei 2024 275 275,00 0,00 0,00%
Juni 2024 290 281,67 8,33 2,87%

Plot perbandingan antara data runtun waktu asli dan kurva hasil pemulusan SMA(3) disajikan pada grafik berikut.

plot(
  pengunjung_ts,
  type = "o",
  pch = 16,
  col = "black",
  xlab = "Waktu",
  ylab = "Jumlah Pengunjung (orang)",
  main = "Pemulusan Single Moving Average (SMA m = 3) Jumlah Pengunjung",
  ylim = c(min(pengunjung) - 10, max(pengunjung) + 15)
)
lines(
  sma3,
  type = "o",
  pch = 17,
  lty = 2,
  col = "steelblue",
  lwd = 2
)
legend(
  "topleft",
  legend = c("Data Asli (Zt)", "SMA(3) (M't)"),
  col = c("black", "steelblue"),
  pch = c(16, 17),
  lty = c(1, 2),
  lwd = c(1, 2),
  bty = "n"
)

Grafik dan tabel di atas memuat evaluasi komparatif antara data aktual dan nilai pemulusan SMA(3) pada 6 bulan terakhir masa pengamatan (Januari hingga Juni 2024). Berdasarkan telaah hasil tersebut, dapat disimpulkan beberapa temuan penting:

  1. Konfirmasi Nyata Efek Keterlambatan (Systematic Lag Effect): Berdasarkan perbandingan pada 6 bulan terakhir, kurva SMA(3) terlihat jelas tertinggal (lagging) di belakang pergerakan data asli. Pada 5 dari 6 bulan pengamatan (Januari, Februari, Maret, April, dan Juni 2024), seluruh nilai selisih \((Z_t - M'_t)\) bernilai positif (data aktual selalu melampaui nilai pemulusan SMA), dengan hanya satu bulan bernilai nol (Mei 2024 saat data aktual terkoreksi sementara dari 280 ke 275 orang). Rata-rata nilai aktual 6 bulan terakhir sebesar 272,50 orang, sedangkan rata-rata SMA(3) hanya sebesar 267,50 orang, yang menunjukkan terjadinya underestimation sistematis sebesar rata-rata 5,00 orang per bulan.
  2. Mekanisme Terjadinya Keterlambatan: Keterlambatan ini merupakan konsekuensi matematis alami dari metode rata-rata bergerak tunggal. Karena \(M'_t\) menghitung rerata aritmatika dari \(Z_t\), \(Z_{t-1}\), dan \(Z_{t-2}\), nilai rata-rata yang dihasilkan secara efektif merepresentasikan pusat gravitasi data pada periode lampau (\(t - \frac{m-1}{2} = t - 1\)). Pada deret waktu yang sedang mengalami tren naik konsisten, data dari satu dan dua bulan sebelumnya bernilai lebih rendah, sehingga secara otomatis ā€œmenyeretā€ nilai pemulusan \(M'_t\) ke bawah level aktual periode berjalan.
  3. Besaran Deviasi pada Titik Terakhir (Juni 2024): Pada observasi ke-18 (Juni 2024), jumlah pengunjung mencapai rekor tertinggi 290 orang. Namun, nilai SMA(3) baru berada pada level 281,67 orang, sehingga menghasilkan defisit keterlambatan sebesar 8,33 orang atau 2,87%.
  4. Implikasi Terhadap Peramalan Jangka Pendek: Apabila SMA(3) langsung dijadikan basis proyeksi ramalan masa depan, hasil ramalan akan mendatar (flat) di angka 281,67 orang. Angka proyeksi ini bahkan berada di bawah realisasi data bulan terakhir (290 orang), yang mengindikasikan ketidakmampuan metode SMA dalam merespons arah pertumbuhan tren yang sesungguhnya.

3 Double Moving Average (DMA)

Metode Double Moving Average (DMA) dirancang secara spesifik untuk mengatasi kelemahan efek keterlambatan (lag) pada data yang mengandung tren linier. DMA menerapkan operasi rata-rata bergerak dua tahap secara berurutan dengan panjang jendela pemulusan \(m\) yang sama:

  1. Tahap 1 — Rata-Rata Bergerak Pertama (\(M'_t\)): \[ M'_t = \frac{1}{m} \sum_{i=0}^{m-1} Z_{t-i} = \frac{Z_t + Z_{t-1} + \dots + Z_{t-m+1}}{m} \]

  2. Tahap 2 — Rata-Rata Bergerak Kedua (\(M''_t\)): \[ M''_t = \frac{1}{m} \sum_{i=0}^{m-1} M'_{t-i} = \frac{M'_t + M'_{t-1} + \dots + M'_{t-m+1}}{m} \]

Ketika data memiliki tren linier dengan gradien \(b_t\), deret pemulusan pertama \(M'_t\) akan tertinggal di belakang data asli sebesar \(\frac{m-1}{2} b_t\). Rata-rata bergerak kedua \(M''_t\) (yang merupakan rata-rata dari \(M'_t\)) akan mengalami keterlambatan ganda dengan magnitudo yang sama, yaitu tertinggal sebesar \(\frac{m-1}{2} b_t\) di belakang \(M'_t\). Dengan demikian, selisih \((M'_t - M''_t)\) secara tepat mencerminkan besaran efek keterlambatan tersebut. Dari kedua nilai pemulusan ini, parameter level saat ini (\(a_t\)) dan komponen tren bulanan (\(b_t\)) diduga melalui rumus:

\[ a_t = 2M'_t - M''_t = M'_t + (M'_t - M''_t) \]

\[ b_t = \frac{2}{m - 1} (M'_t - M''_t) \]

Khusus untuk nilai \(m = 3\), faktor pengali tren bernilai \(\frac{2}{3 - 1} = 1\), sehingga formula estimasi laju tren tereduksi secara sederhana menjadi:

\[ b_t = M'_t - M''_t \]

Perhitungan seluruh tahapan DMA untuk ke-18 observasi bulanan pengunjung perpustakaan disajikan pada kode R berikut.

# Parameter orde pemulusan
m <- 3

# Tahap 1: Single Moving Average (M't)
Mp <- rollmean(pengunjung_ts, k = m, align = "right", fill = NA)

# Tahap 2: Double Moving Average (M''t) - rata-rata bergerak dari M't
Mpp <- rollmean(Mp, k = m, align = "right", fill = NA)

# Perhitungan komponen level tersesuaikan (at) dan kemiringan tren (bt)
a_t <- 2 * Mp - Mpp
b_t <- (2 / (m - 1)) * (Mp - Mpp)

# Pembentukan tabel lengkap DMA dari t = 1 sampai t = 18
tabel_dma <- data.frame(
  t = 1:length(pengunjung),
  Periode = label_periode,
  Zt = fmt(pengunjung, 0),
  Mp = ifelse(is.na(Mp), "-", fmt(Mp, 2)),
  Mpp = ifelse(is.na(Mpp), "-", fmt(Mpp, 2)),
  at = ifelse(is.na(a_t), "-", fmt(a_t, 2)),
  bt = ifelse(is.na(b_t), "-", fmt(b_t, 2))
)

knitr::kable(
  tabel_dma,
  align = "c",
  col.names = c("t", "Periode Pengamatan", "Data Asli (Zt)", "M't", "M''t", "Level (at)", "Tren (bt)")
)
t Periode Pengamatan Data Asli (Zt) M’t M’’t Level (at) Tren (bt)
1 Januari 2023 210 - - - -
2 Februari 2023 195 - - - -
3 Maret 2023 220 208,33 - - -
4 April 2023 205 206,67 - - -
5 Mei 2023 230 218,33 211,11 225,56 7,22
6 Juni 2023 215 216,67 213,89 219,44 2,78
7 Juli 2023 240 228,33 221,11 235,56 7,22
8 Agustus 2023 225 226,67 223,89 229,44 2,78
9 September 2023 250 238,33 231,11 245,56 7,22
10 Oktober 2023 235 236,67 233,89 239,44 2,78
11 November 2023 245 243,33 239,44 247,22 3,89
12 Desember 2023 260 246,67 242,22 251,11 4,44
13 Januari 2024 255 253,33 247,78 258,89 5,56
14 Februari 2024 265 260,00 253,33 266,67 6,67
15 Maret 2024 270 263,33 258,89 267,78 4,44
16 April 2024 280 271,67 265,00 278,33 6,67
17 Mei 2024 275 275,00 270,00 280,00 5,00
18 Juni 2024 290 281,67 276,11 287,22 5,56

Plot komparatif komponen pemulusan Double Moving Average yang memuat kurva data aktual (\(Z_t\)), rata-rata bergerak pertama (\(M'_t\)), rata-rata bergerak kedua (\(M''_t\)), serta lintasan level tersesuaikan (\(a_t\)) ditampilkan pada grafik berikut.

plot(
  pengunjung_ts,
  type = "o",
  pch = 16,
  col = "black",
  xlab = "Waktu",
  ylab = "Jumlah Pengunjung (orang)",
  main = "Komponen Pemulusan Double Moving Average (DMA m = 3)",
  ylim = c(min(pengunjung) - 10, max(pengunjung) + 15)
)
lines(Mp, type = "o", pch = 17, lty = 2, col = "steelblue", lwd = 1.5)
lines(Mpp, type = "o", pch = 15, lty = 3, col = "tomato", lwd = 1.5)
lines(a_t, type = "o", pch = 18, lty = 1, col = "darkgreen", lwd = 2)

legend(
  "topleft",
  legend = c("Data Asli (Zt)", "M't (SMA)", "M''t (Double MA)", "Level Tersesuaikan (at)"),
  col = c("black", "steelblue", "tomato", "darkgreen"),
  pch = c(16, 17, 15, 18),
  lty = c(1, 2, 3, 1),
  lwd = c(1, 1.5, 1.5, 2),
  bty = "n"
)

Berdasarkan tabel perhitungan numerik dan visualisasi komponen DMA di atas, dapat diidentifikasi karakteristik penting dari metode ini:

  1. Kehilangan Observasi Awal (Loss of Initial Degrees of Freedom): Karena penerapan rata-rata bergerak bertingkat dua tahap berorde \(m = 3\), nilai \(M'_t\) baru dapat dihitung pada periode \(t = 3\) (membutuhkan 3 titik awal). Selanjutnya, pemulusan kedua \(M''_t\) membutuhkan 3 observasi berurutan dari deret \(M'_t\) (\(M'_3, M'_4, M'_5\)), sehingga nilai \(M''_t\), \(a_t\), dan \(b_t\) baru dapat terdefinisi mulai observasi ke-\(2m - 1 = 5\) (Mei 2023). Terdapat 4 periode awal yang bernilai kosong (NA).
  2. Konfirmasi Hierarki Keterlambatan Ganda (\(Z_t > M'_t > M''_t\)): Pada deret yang memiliki tren naik konsisten, posisi kurva secara teratur menunjukkan bahwa \(M'_t\) tertinggal di bawah \(Z_t\), dan \(M''_t\) tertinggal lebih jauh lagi di bawah \(M'_t\). Pada observasi terakhir (\(t = 18\), Juni 2024), tercatat nilai aktual \(Z_{18} = 290\) orang, pemulusan pertama \(M'_{18} = 281,67\) orang, dan pemulusan kedua \(M''_{18} = 276,11\) orang.
  3. Efektivitas Penyesuaian Komponen Level (\(a_t\)): Formulasi \(a_t = 2M'_t - M''_t\) terbukti sangat efektif mengoreksi defisit keterlambatan pemulusan. Penambahan selisih \((M'_{18} - M''_{18})\) sebesar 5,56 orang ke nilai \(M'_{18}\) mengangkat komponen level ke posisi \(a_{18} = 287,22\) orang. Angka ini berhasil ā€œmengejarā€ posisi data aktual (290 orang) dengan tingkat kedekatan yang jauh lebih baik dibandingkan nilai \(M'_{18}\) biasa.
  4. Estimasi Laju Pertumbuhan Tren Bulanan (\(b_t\)): Nilai kemiringan tren pada akhir periode observasi bernilai positif, yaitu \(b_{18} = 5,56\) orang per bulan. Angka ini memberikan estimasi kuantitatif yang solid bahwa jumlah pengunjung perpustakaan bertambah secara ajeg sekitar 5,56 pengunjung di setiap bulannya.

4 Peramalan dan Perbandingan SMA vs DMA

Peramalan untuk beberapa periode ke depan (\(p\) periode setelah data terakhir pada waktu \(t = 18\)) dilakukan dengan membandingkan dua pendekatan pemodelan:

  1. Metode Double Moving Average (DMA): Ramalan \(p\) periode ke depan dihitung dengan memproyeksikan level terkoreksi (\(a_t\)) ditambah akumulasi kemiringan tren (\(b_t \cdot p\)): \[ \hat{Z}_{t+p} = a_t + b_t \cdot p \]

Berdasarkan nilai estimasi pada observasi terakhir (\(t = 18\), Juni 2024), yaitu \(a_{18} = 287,22\) dan \(b_{18} = 5,56\): - Ramalan 1 bulan ke depan (\(p = 1\), Juli 2024): \[ \hat{Z}_{18+1} = a_{18} + b_{18}(1) = 287,22 + 5,56(1) = 292,78 \approx 293 \text{ orang} \] - Ramalan 2 bulan ke depan (\(p = 2\), Agustus 2024): \[ \hat{Z}_{18+2} = a_{18} + b_{18}(2) = 287,22 + 5,56(2) = 298,33 \approx 298 \text{ orang} \]

  1. Metode Single Moving Average (SMA) Biasa: Metode SMA biasa memproyeksikan nilai ramalan yang konstan datar (horizontal/flat forecast) untuk seluruh horizon peramalan, yang disamakan dengan nilai rata-rata bergerak tunggal terakhir: \[ \hat{Z}_{t+p} = M'_t \quad \text{untuk seluruh } p \ge 1 \]

Dengan nilai \(M'_{18} = 281,67\): - Ramalan 1 bulan ke depan (\(p = 1\), Juli 2024): \[ \hat{Z}_{18+1} = M'_{18} = 281,67 \approx 282 \text{ orang} \] - Ramalan 2 bulan ke depan (\(p = 2\), Agustus 2024): \[ \hat{Z}_{18+2} = M'_{18} = 281,67 \approx 282 \text{ orang} \]

Perbandingan hasil perhitungan peramalan antara metode SMA dan DMA dirangkum pada kode dan tabel R berikut.

# Ekstraksi parameter akhir pada t = 18 (Juni 2024)
a_last   <- as.numeric(tail(na.omit(a_t), 1))
b_last   <- as.numeric(tail(na.omit(b_t), 1))
sma_last <- as.numeric(tail(na.omit(Mp), 1))

# Horizon peramalan 1 dan 2 bulan ke depan
p_vec <- c(1, 2)
nama_target <- c("Juli 2024 (t + 1)", "Agustus 2024 (t + 2)")

# Perhitungan nilai ramalan
ramalan_dma <- a_last + b_last * p_vec
ramalan_sma <- rep(sma_last, length(p_vec))
selisih_ramalan <- ramalan_dma - ramalan_sma

# Tabel ringkasan perbandingan hasil peramalan
tabel_peramalan <- data.frame(
  Horizon = paste0("p = ", p_vec),
  Periode_Target = nama_target,
  Ramalan_SMA = fmt(ramalan_sma, 2),
  Ramalan_DMA = fmt(ramalan_dma, 2),
  Selisih = fmt(selisih_ramalan, 2),
  Bulat_SMA = fmt(round(ramalan_sma), 0),
  Bulat_DMA = fmt(round(ramalan_dma), 0)
)

knitr::kable(
  tabel_peramalan,
  align = "c",
  col.names = c("Horizon", "Periode Target", "Ramalan SMA (orang)", "Ramalan DMA (orang)", "Selisih (DMA - SMA)", "Bulat SMA (orang)", "Bulat DMA (orang)")
)
Horizon Periode Target Ramalan SMA (orang) Ramalan DMA (orang) Selisih (DMA - SMA) Bulat SMA (orang) Bulat DMA (orang)
p = 1 Juli 2024 (t + 1) 281,67 292,78 11,11 282 293
p = 2 Agustus 2024 (t + 2) 281,67 298,33 16,67 282 298

Visualisasi perbandingan proyeksi lintasan masa depan antara metode SMA dan DMA bersama data historis aktual disajikan pada grafik berikut.

# Vektor indeks waktu historis
t_waktu <- as.numeric(time(pengunjung_ts))
delta_t <- 1 / 12

# Titik koordinat waktu masa depan untuk proyeksi
t_future <- c(max(t_waktu) + delta_t, max(t_waktu) + 2 * delta_t)

# Rentang plot sumbu X dan Y
xlim_range <- c(min(t_waktu), max(t_future) + 0.05)
ylim_range <- c(min(pengunjung) - 10, max(ramalan_dma) + 15)

# Plot data historis
plot(
  pengunjung_ts,
  type = "o",
  pch = 16,
  col = "black",
  xlim = xlim_range,
  ylim = ylim_range,
  xlab = "Waktu",
  ylab = "Jumlah Pengunjung (orang)",
  main = "Perbandingan Proyeksi Peramalan: SMA(3) vs DMA(3)"
)

# Lintasan proyeksi DMA
lines(
  c(tail(t_waktu, 1), t_future),
  c(tail(pengunjung, 1), ramalan_dma),
  type = "o",
  pch = 17,
  lty = 2,
  col = "darkgreen",
  lwd = 2
)

# Lintasan proyeksi SMA
lines(
  c(tail(t_waktu, 1), t_future),
  c(tail(pengunjung, 1), ramalan_sma),
  type = "o",
  pch = 15,
  lty = 3,
  col = "tomato",
  lwd = 2
)

# Garis vertikal pemisah data historis dan masa ramalan
abline(v = max(t_waktu) + (delta_t / 2), lty = 4, col = "gray40")

# Legenda grafik
legend(
  "topleft",
  legend = c("Data Historis Aktual", "Proyeksi Ramalan DMA", "Proyeksi Ramalan SMA", "Batas Periode"),
  col = c("black", "darkgreen", "tomato", "gray40"),
  pch = c(16, 17, 15, NA),
  lty = c(1, 2, 3, 4),
  lwd = c(1, 2, 2, 1),
  bty = "n"
)

Grafik dan tabel di atas memperlihatkan disparitas lintasan proyeksi yang sangat kontras antara metode SMA dan DMA. Berdasarkan telaah teoritis dan komputasional, berikut adalah penjelasan mendalam mengenai mengapa hasil ramalan kedua metode tersebut berbeda secara fundamental:

  1. Perbedaan Asumsi Struktur Runtun Waktu (Stationary vs Trend Assumption): Single Moving Average (SMA) didasarkan pada asumsi bahwa runtun waktu bersifat stasioner di sekitar rata-rata konstan tanpa adanya tren jangka panjang. Oleh sebab itu, fungsi peramalan SMA tidak memiliki komponen perubahan waktu sehingga menghasilkan lintasan proyeksi yang mendatar (flat horizontal line) di angka 281,67 orang (282 orang) untuk setiap periode ke depan. Sebaliknya, Double Moving Average (DMA) dikembangkan khusus untuk deret waktu yang mengandung tren linier, dengan menyertakan komponen laju perubahan \(b_t = 5,56\) orang/bulan secara eksplisit ke dalam persamaan peramalan.
  2. Koreksi Terhadap Efek Keterlambatan Titik Pijak (Lag-Corrected Base Level): Metode SMA bertolak dari nilai rata-rata historis tiga observasi terakhir \(M'_{18} = 281,67\) orang. Karena data sedang mengalami tren naik, nilai \(M'_{18}\) tertinggal di bawah realisasi data bulan terakhir (\(Z_{18} = 290\) orang). Akibatnya, proyeksi SMA langsung menghasilkan penurunan semu dari level kapasitas pengunjung Juni 2024. Sebaliknya, DMA mengoreksi keterlambatan tersebut melalui estimasi level \(a_{18} = 2M'_{18} - M''_{18} = 287,22\) orang, sehingga titik pijak proyeksi ramalan berdiri kokoh pada level yang realistis dan mendekati kondisi terkini.
  3. Sensitivitas Terhadap Horizon Waktu (\(p = 1\) vs \(p = 2\)): Lintasan proyeksi DMA bereaksi secara dinamis mengikuti pertambahan horizon waktu (\(p\)): diproyeksikan sebesar 292,78 orang pada horizon 1 bulan (Juli 2024) dan meningkat menjadi 298,33 orang pada horizon 2 bulan (Agustus 2024). Disparitas antara ramalan DMA dan SMA semakin melebar dari 11,11 orang pada \(p = 1\) menjadi 16,67 orang pada \(p = 2\), yang secara matematis mencerminkan akumulasi pertambahan tren linier sebesar \(b_{18} \cdot p\).
  4. Relevansi Terhadap Perencanaan Manajemen Perpustakaan: Dalam konteks manajerial pengadaan layanan publik, pemaksaan penggunaan SMA akan mengakibatkan bias underforecasting yang fatal. Pihak perpustakaan berpotensi kekurangan kapasitas tempat duduk, fasilitas pendingin ruangan, komputer katalog, serta staf pustakawan karena memperkirakan pengunjung hanya sekitar 282 orang, padahal realitas kunjungan nyata sedang berekspansi. Proyeksi DMA sebesar 293 orang (Juli) dan 298 orang (Agustus) jauh lebih masuk akal dan memberikan panduan perencanaan kapasitas yang kredibel menjelang tahun ajaran baru.

Kesimpulan

Berdasarkan keseluruhan tahapan eksplorasi data, pemulusan Single Moving Average (SMA), formulasi Double Moving Average (DMA), serta evaluasi perbandingan peramalan deret waktu jumlah pengunjung Perpustakaan Daerah Kabupaten Serang periode Januari 2023 hingga Juni 2024, diperoleh kesimpulan sebagai berikut:

  1. Karakteristik Tren Data Pengunjung: Deret waktu jumlah pengunjung Perpustakaan Daerah Kabupaten Serang menunjukkan kecenderungan tren kenaikan linier (upward trend) jangka panjang yang sangat jelas, bergerak dari titik terendah 195 orang pada Februari 2023 hingga mencapai rekor tertinggi 290 orang pada Juni 2024. Rata-rata pengunjung semester pertama 2024 (272,50 orang) meningkat signifikan sebesar 60,00 orang dibandingkan semester pertama 2023 (212,50 orang). Keberadaan tren ini menyebabkan data tidak stasioner dalam rata-rata.
  2. Keterbatasan dan Efek Keterlambatan SMA: Penerapan metode Single Moving Average berorde \(m = 3\) memperlihatkan efek keterlambatan (systematic lag effect) yang konsisten pada 6 bulan terakhir masa pengamatan (Januari–Juni 2024). Karena formula SMA merata-ratakan data masa lalu, kurva SMA(3) selalu berada di bawah (underestimate) kurva aktual dengan rata-rata keterlambatan sebesar 5,00 orang per bulan, dan mencapai selisih terbesar pada Juni 2024 sebesar 8,33 orang (2,87%).
  3. Efektivitas Formulasi Double Moving Average (DMA): Metode DMA dengan jendela \(m = 3\) sukses mengeliminasi keterlambatan pemulusan melalui perataan bergerak tingkat kedua (\(M''_t\)). Selisih \((M'_t - M''_t)\) secara akurat menangkap besaran lag tren, sehingga estimasi komponen level \(a_{18} = 287,22\) orang berhasil mengembalikan estimasi ke posisi yang mendekati nilai aktual Juni 2024 (290 orang) serta menetapkan estimasi laju pertumbuhan tren bulanan positif sebesar \(b_{18} = 5,56\) orang per bulan.
  4. Hasil dan Superioritas Komparatif Peramalan: Proyeksi peramalan untuk dua periode ke depan membuktikan superioritas metode DMA dibandingkan SMA biasa. DMA menghasilkan proyeksi kenaikan yang rasional yaitu sebesar 292,78 orang (dibulatkan menjadi 293 orang) untuk Juli 2024 (\(p = 1\)) dan 298,33 orang (dibulatkan menjadi 298 orang) untuk Agustus 2024 (\(p = 2\)). Sebaliknya, metode SMA menghasilkan ramalan mendatar (flat) di level 281,67 orang (dibulatkan menjadi 282 orang) yang mengalami bias ramalan terlalu rendah (underforecasting). Dengan demikian, metode DMA terbukti secara teoritis dan empiris sebagai metode peramalan yang paling tepat, akurat, dan dapat diandalkan untuk data runtun waktu pengunjung Perpustakaan Daerah Kabupaten Serang.