library(ggplot2)
library(forecast)
library(stats)
library(tseries)
library(knitr)
library(kableExtra)
library(plotly)
library(rmdformats)
library(zoo)
#input data
 data_adw <- c(210, 195, 220, 205, 230, 215,
               240, 225, 250, 235, 245, 260,
               255, 265, 270, 280, 275, 290)

Data tersebut merupakan data yang diambil dari bulan January tahun 2023 sampai bulan Juni tahun 2024.

Data ts

#data ts
adw_ts <- ts(data_adw, start = c(2023,1), frequency = 12)

Mengubah data pengunjung perpustakaan Kabupaten Serang menjadi data time series

Simple Mooving Average

#membuat SMA(3)
sma3 <- rollmean(adw_ts, k = 3, align = "right", fill = NA)

Tren kenaikan ini berlanjut pada tahun 2024, meningkat dari 253,33 (Januari) hingga mencapai 281,67 pada bulan Juni 2024.

Membandingkan 6 Bulan Data Aktual dengan SMA

#pembanding dengan data asli 6 bulan terakhir
data_banding <- ts.plot(data_adw, sma3, col = c("black","steelblue","tomato"))

Garis Hitam atau data aktual menunjukkan nilai asli dari variabel adw_ts. Garis ini berbentuk naik-turun (zig-zag) karena adanya fluktuasi/variasi jangka pendek setiap bulannya.

Garis Biru atau garis SMA menunjukkan hasil Simple Moving Average 3 Bulanan. Garis ini baru dimulai sekitar bulan Maret 2023 (sekitar titik 2023.2) karena dua bulan pertama tidak memiliki cukup data historis.

SMA dengan k = 3 itu berada dibawah garis hitam (data aktual), namun masih bisa untuk merepresentasikan data aktual.

Double Mooving Average

#DMA dengan m = 3
m = 3
Mp  <- rollmean(data_adw, k = m, align = "right", fill = NA)

Output tersebut menunjukkan bahwa nilai pada masing-masing bulan meningkat, sehingga dapat disimpulkan bahwa DMA memprediksi data aktual dengan lebih baik dari SMA.

#M't
Mpp <- rollmean(Mp, k = m, align = "right", fill = NA)

NIlai NA (not available) pada output tersebut merupakan pergeseran nilai. Pada output tersebut juga terlihatadanya peningkatan nilai secara konsisten, efek dari pemulusan tersebut berhasil meredam fluktuasi kecil dan tren terlihat lebih halus.

#at
a_t <- 2*Mp - Mpp

Rataan bergerak tunggal (Mp) selalu mengalami lag (ketinggalan tren) terhadap data asli jika data memiliki pola trend. Pengalihan \(2M_t' - M_t''\) bertujuan untuk mengoreksi lag tersebut agar estimasi level berada tepat di posisi periode \(t\).

Nilai \(a_t = 225.5556\) (pada \(t = 5\)): Ini adalah estimasi rata-rata level dasar dari deret waktu pada periode ke-5 setelah mengeliminasi efek lag dan fluktuasi acak.

Nilai \(a_t\) secara keseluruhan bergerak meningkat dari 225.5556 ke 287.2222. Ini menegaskan bahwa data historis memiliki komponen tren positif

Terlihat ada pergerakan naik-turun yang teratur pada nilai \(a_t\) (misal: \(225.56, 219.44, 235.56, 229.44\)). Hal ini mengindikasikan adanya pola musiman (seasonality) atau siklis jangka pendek pada data asli yang belum sepenuhnya dihaluskan oleh estimasi level dasar.

#bt
b_t <- (2/(m-1)) * (Mp - Mpp)
a_last <- tail(na.omit(a_t), 1); b_last <- tail(na.omit(b_t), 1)

Seluruh nilai \(b_t\) bernilai positif (berkisar antara 2.78 hingga 7.22). Ini mengindikasikan bahwa data secara konsisten mengalami pertumbuhan/peningkatan dari waktu ke waktu.

Perhatikan pola berulang \(7.22, 2.78, 7.22, 2.78\) pada indeks 5–10. Pola selang-seling ini menunjukkan bahwa selain tren naik, data memiliki variasi musiman/siklis tertentu yang membuat laju perubahannya melambat dan memcepat secara berkala.

Ramalan Pada Bulan Ke-1 dengan Ke-2

#Bulan pertama
forecast_1 <- a_last + b_last * 1

Ramalan pada bulan ke-1 sebesar 292.7778 yang apabila diplotkan akan menunjukkan adanya teren yang meningkat, sehingga kebutuhan meningkat paada bulan pertama sebesar 292.7778.

#Bulan kedua
forecast_3 <- a_last + b_last * 2

Ramalan pada bulan kedua menunjukkan peningkatan dari ramalan bulan pertama, hal tersebut mengindikasikan bahwa kwbutuhan pada bulan kedua sebesar 298.3333.