Analisis Deret Waktu: Dekomposisi Additive Volume Produksi Air Minum PDAM Kabupaten Serang Tahun 2022–2024

Pendahuluan

Data yang dianalisis adalah volume produksi air minum PDAM Kabupaten Serang pada periode Januari 2022 sampai Desember 2024 (satuan: ribu m³/bulan), sehingga terdapat 36 observasi bulanan. Tujuan analisis adalah memisahkan data runtun waktu menjadi tiga komponen penyusunnya, yaitu tren (\(T_t\)), musiman (\(S_t\)), dan residu/acak (\(e_t\)) menggunakan model dekomposisi additive:

\[Z_t = T_t + S_t + e_t\]

Model additive tepat digunakan apabila besar ayunan (amplitudo) pola musiman relatif konstan dari waktu ke waktu dan tidak bergantung pada tinggi-rendahnya level/tren data. Estimasi tren dilakukan dengan Centered Moving Average 2×12-MA, sedangkan indeks musiman diperoleh dari rata-rata data yang telah di-detrend (\(D_t = Z_t - \hat{T}_t\)) untuk tiap bulan, kemudian dinormalisasi agar berjumlah nol.

1. Membuat Objek ts dan Dekomposisi Additive

Input data dan pembuatan objek ts

# Data volume produksi air minum PDAM Kabupaten Serang (ribu m3/bulan)
pdam <- c(410,415,405,420,430,445,455,440,425,420,418,435,
          440,445,438,452,462,478,488,472,458,452,450,468,
          470,476,468,483,494,510,521,504,489,483,480,499)

pdam_ts <- ts(pdam, start = c(2022, 1), frequency = 12)
pdam_ts
##      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2022 410 415 405 420 430 445 455 440 425 420 418 435
## 2023 440 445 438 452 462 478 488 472 458 452 450 468
## 2024 470 476 468 483 494 510 521 504 489 483 480 499

Plot data asli

plot(pdam_ts, type = "o", pch = 16, cex = 0.6, col = "#0b2a5b", lwd = 2,
     main = "Volume Produksi Air Minum PDAM Kabupaten Serang, 2022-2024",
     xlab = "Waktu", ylab = "Volume (ribu m3/bulan)")
grid()

Interpretasi.

Data berbentuk objek ts bulanan dengan frequency = 12 dan dimulai pada Januari 2022. Secara visual, volume produksi bergerak naik dari tahun ke tahun, dan pada setiap tahun terlihat pola naik-turun yang berulang (puncak di sekitar pertengahan tahun, lembah di akhir tahun). Besar ayunan musiman tampak relatif sama dari tahun ke tahun walaupun levelnya meningkat, sehingga model additive layak digunakan.

Dekomposisi additive dengan decompose()

dekomp_add <- decompose(pdam_ts, type = "additive")
plot(dekomp_add)

Interpretasi.

Fungsi decompose() memisahkan data menjadi empat panel: data asli (observed), tren, musiman (seasonal), dan acak (random). Panel tren dan acak bernilai NA pada 6 bulan pertama (Jan–Jun 2022) dan 6 bulan terakhir (Jul–Des 2024) karena Centered Moving Average 2×12 membutuhkan data tetangga di kedua sisi. Tren tampak naik mulus, pola musiman berulang identik setiap tahun, dan residu berfluktuasi kecil di sekitar nol.

2. Komponen Tren

Menampilkan komponen tren (CMA 2×12)

dekomp_add$trend
##           Jan      Feb      Mar      Apr      May      Jun      Jul      Aug
## 2022       NA       NA       NA       NA       NA       NA 427.7500 430.2500
## 2023 443.7083 446.4167 449.1250 451.8333 454.5000 457.2083 459.8333 462.3750
## 2024 475.4583 478.1667 480.7917 483.3750 485.9167 488.4583       NA       NA
##           Sep      Oct      Nov      Dec
## 2022 432.8750 435.5833 438.2500 440.9583
## 2023 464.9167 467.4583 470.0833 472.7500
## 2024       NA       NA       NA       NA
# Verifikasi manual satu nilai tren: T_hat(Jul 2022) = 1/2 (M_{t-6} + M_{t-5})
# yaitu rata-rata bergerak terpusat dengan bobot (0.5, 1, ..., 1, 0.5)/12
bobot <- c(0.5, rep(1, 11), 0.5) / 12
sum(bobot * pdam[1:13])   # sama dengan nilai tren Juli 2022
## [1] 427.75

Visualisasi komponen tren

plot(pdam_ts, col = "grey60", lwd = 1.5,
     main = "Data Asli dan Komponen Tren (CMA 2x12)",
     xlab = "Waktu", ylab = "Volume (ribu m3/bulan)")
lines(dekomp_add$trend, col = "#e6a800", lwd = 3)
legend("topleft", legend = c("Data asli", "Tren (CMA 2x12)"),
       col = c("grey60", "#e6a800"), lwd = c(1.5, 3), bty = "n")
grid()

Pemeriksaan arah tren

tren_valid <- na.omit(dekomp_add$trend)
waktu      <- seq_along(tren_valid)
model_tren <- lm(as.numeric(tren_valid) ~ waktu)
round(coef(model_tren), 3)
## (Intercept)       waktu 
##     425.137       2.649
# Perubahan tren dari awal ke akhir periode yang dapat dihitung
round(c(awal = tren_valid[1], akhir = tren_valid[length(tren_valid)],
        selisih = tren_valid[length(tren_valid)] - tren_valid[1]), 2)
##    awal   akhir selisih 
##  427.75  488.46   60.71

Interpretasi.

Komponen tren hanya tersedia untuk 24 bulan (Juli 2022–Juni 2024). Tren naik secara konsisten dari sekitar 427,75 ribu m³ (Juli 2022) menjadi sekitar 488,46 ribu m³ (Juni 2024), atau bertambah sekitar 60,7 ribu m³. Garis regresi pada komponen tren memberikan kemiringan sekitar +2,65 ribu m³ per bulan, bernilai positif dan tanpa penurunan sepanjang periode. Dengan demikian, produksi air minum PDAM Kabupaten Serang menunjukkan tren naik, yang sejalan dengan bertambahnya kebutuhan air bersih seiring pertumbuhan penduduk dan jumlah pelanggan.

3. Indeks Musiman

Menampilkan 12 indeks musiman

nama_bulan <- c("Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agu","Sep","Okt","Nov","Des")
indeks_musiman <- round(dekomp_add$seasonal[1:12], 2)
names(indeks_musiman) <- nama_bulan
indeks_musiman
##    Jan    Feb    Mar    Apr    Mei    Jun    Jul    Agu    Sep    Okt    Nov 
##  -4.54  -1.75 -11.91  -0.06   7.84  21.21  27.75   9.73  -7.35 -15.48 -20.12 
##    Des 
##  -5.31
# Syarat model additive: jumlah 12 indeks musiman = 0
round(sum(dekomp_add$seasonal[1:12]), 6)
## [1] 0

Visualisasi indeks musiman

warna <- ifelse(indeks_musiman >= 0, "#0b2a5b", "#7b2d34")
bp <- barplot(indeks_musiman, names.arg = nama_bulan, col = warna, border = NA,
              main = "Indeks Musiman Additive: Produksi Air Minum PDAM Kab. Serang",
              ylab = "Indeks musiman (ribu m3)", ylim = c(-25, 32))
abline(h = 0, lwd = 1.5)
text(bp, indeks_musiman + ifelse(indeks_musiman >= 0, 2, -2),
     labels = indeks_musiman, cex = 0.8)

Bulan tertinggi dan terendah

cat("Bulan tertinggi:", names(which.max(indeks_musiman)), "=", max(indeks_musiman), "\n")
## Bulan tertinggi: Jul = 27.75
cat("Bulan terendah :", names(which.min(indeks_musiman)), "=", min(indeks_musiman), "\n")
## Bulan terendah : Nov = -20.12

Interpretasi.

Jumlah 12 indeks musiman sama dengan nol, sesuai syarat model additive. Produksi cenderung di atas rata-rata pada Mei–Agu, dengan puncak pada Juli (+27,75 ribu m³) lalu Juni (+21,21) dan Agustus (+9,73). Produksi cenderung di bawah rata-rata pada Sep–Des dan Jan–Mar, dengan titik terendah pada November (−20,12 ribu m³), disusul Oktober (−15,48) dan Maret (−11,92). Artinya, pada bulan Juli volume produksi rata-rata sekitar 27,75 ribu m³ lebih tinggi daripada nilai tren, sedangkan pada November sekitar 20,12 ribu m³ lebih rendah.

Dugaan penjelasan:

puncak pada Juni–Agustus diduga terkait musim kemarau dan cuaca panas yang meningkatkan konsumsi air (mandi, mencuci, kebutuhan rumah tangga), ditambah libur sekolah pertengahan tahun yang menaikkan aktivitas di rumah. Sebaliknya, rendahnya produksi pada Oktober–November diduga terkait datangnya musim hujan, saat masyarakat memperoleh air dari sumber alternatif seperti air hujan sehingga permintaan air PDAM berkurang. Dugaan ini bersifat kontekstual dan perlu dikonfirmasi dengan data cuaca atau data pelanggan.

4. Komponen Residu

Ringkasan statistik dan simpangan baku

dekomp_add$random
##              Jan         Feb         Mar         Apr         May         Jun
## 2022          NA          NA          NA          NA          NA          NA
## 2023  0.83159722  0.33159722  0.78993056  0.22743056 -0.33506944 -0.41840278
## 2024 -0.91840278 -0.41840278 -0.87673611 -0.31423611  0.24826389  0.33159722
##              Jul         Aug         Sep         Oct         Nov         Dec
## 2022 -0.50173611  0.01909722 -0.52256944 -0.10590278 -0.12673611 -0.64756944
## 2023  0.41493056 -0.10590278  0.43576389  0.01909722  0.03993056  0.56076389
## 2024          NA          NA          NA          NA          NA          NA
summary(dekomp_add$random)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
## -0.9184 -0.4184 -0.0434 -0.0434  0.3316  0.8316      12
sd(dekomp_add$random, na.rm = TRUE)
## [1] 0.4862621
mean(dekomp_add$random, na.rm = TRUE)
## [1] -0.04340278

Visualisasi residu

par(mfrow = c(1, 2))
plot(dekomp_add$random, type = "p", pch = 16, col = "#0b2a5b",
     main = "Komponen Residu", xlab = "Waktu", ylab = "Residu")
abline(h = 0, lty = 2, col = "red", lwd = 1.5)

hist(na.omit(dekomp_add$random), breaks = 8, col = "#9db4d8", border = "white",
     main = "Histogram Residu", xlab = "Residu")

par(mfrow = c(1, 1))
acf(na.omit(dekomp_add$random), main = "ACF Residu")

Interpretasi.

Residu tersedia untuk 24 pengamatan dengan rata-rata ≈ −0,04 (sangat mendekati nol), median ≈ −0,04, serta rentang −0,92 sampai +0,83 ribu m³. Simpangan baku residu hanya ≈ 0,49 ribu m³, sangat kecil dibandingkan level data (410–521 ribu m³) maupun amplitudo musiman (puncak ke lembah sekitar 48 ribu m³). Pada plot, titik-titik residu tersebar di sekitar garis nol tanpa pola tren atau pola musiman yang tersisa, dan ACF residu tidak menunjukkan autokorelasi yang menonjol. Dengan demikian, residu tampak berfluktuasi acak di sekitar nol dan model additive sudah menangkap hampir seluruh pola pada data.

Kesimpulan

  1. Data produksi air minum PDAM Kabupaten Serang (Jan 2022–Des 2024) berhasil dibentuk menjadi objek ts bulanan dan didekomposisi dengan model additive menggunakan decompose(). Ayunan musiman yang relatif konstan membuat model additive sesuai untuk data ini.
  2. Tren: naik secara konsisten, dari ≈ 427,75 ribu m³ (Juli 2022) menjadi ≈ 488,46 ribu m³ (Juni 2024), dengan kenaikan rata-rata ≈ +2,65 ribu m³ per bulan. Produksi air minum jelas menunjukkan tren naik.
  3. Musiman: produksi tertinggi terjadi pada Juli (+27,75) dan terendah pada November (−20,12). Puncak pertengahan tahun diduga terkait musim kemarau dan libur sekolah, sedangkan lembah akhir tahun diduga terkait musim hujan. Jumlah 12 indeks musiman sama dengan nol.
  4. Residu: rata-rata ≈ −0,04 dengan simpangan baku ≈ 0,49 ribu m³ dan tanpa pola sistematis, sehingga berfluktuasi acak di sekitar nol. Hal ini menunjukkan model dekomposisi additive sangat memadai untuk data ini.
  5. Hasil dekomposisi dapat menjadi dasar peramalan sederhana, yaitu memproyeksikan tren ke depan, menambahkan indeks musiman bulan yang bersesuaian, dan mengabaikan residu yang bersifat acak.