Pengelolaan sampah perkotaan merupakan salah satu tantangan utama dalam pembangunan berkelanjutan, khususnya di negara berkembang dengan tingkat pertumbuhan penduduk dan urbanisasi yang relatif tinggi (Nurmayanti et al., 2023). Pertumbuhan jumlah penduduk, aktivitas ekonomi, serta pola konsumsi masyarakat berimplikasi langsung pada peningkatan timbulan sampah yang harus dikelola secara berkelanjutan. Apabila tidak ditangani dengan baik, permasalahan sampah dapat menimbulkan berbagai dampak negatif, seperti pencemaran lingkungan, gangguan kesehatan masyarakat, serta penurunan kualitas hidup.
Kota Bogor sebagai salah satu kota penyangga Ibu Kota Jakarta juga menghadapi permasalahan volume sampah yang dihasilkan masyarakat sekitar. Sampah yang dihasilkan oleh aktivitas rumah tangga, perdagangan, dan jasa setiap harinya harus diangkut dan dikelola di Tempat Pemrosesan Akhir (TPA) Galuga. Data historis jumlah sampah yang terangkut ke TPA dapat dimanfaatkan untuk memprediksi jumlah sampah di masa mendatang sehingga pemerintah daerah dapat menyiapkan kapasitas pengangkutan, sarana prasarana, serta strategi pengelolaan yang lebih efektif.
Salah satu pendekatan yang banyak digunakan untuk melakukan peramalan data runtun waktu adalah metode Autoregressive Integrated Moving Average (ARIMA). Metode ini memanfaatkan pola historis data untuk menghasilkan prediksi jangka pendek maupun menengah (Mifthasha, 2024). Beberapa penelitian terdahulu menunjukkan bahwa model ARIMA mampu memberikan hasil peramalan yang cukup baik pada data timbulan sampah karena karakteristik data yang cenderung bersifat nonstasioner dan memiliki pola tren. Dengan demikian, penerapan model ARIMA pada data sampah terangkut ke TPA Galuga diharapkan dapat memberikan gambaran yang lebih akurat mengenai jumlah sampah pada periode mendatang.
Penelitian ini bertujuan untuk menganalisis pola data sampah terangkut ke TPA Galuga menggunakan pendekatan runtun waktu serta membangun model ARIMA yang sesuai untuk melakukan peramalan. Hasil peramalan ini diharapkan dapat menjadi bahan pertimbangan bagi pihak terkait dalam mendukung perencanaan pengelolaan sampah yang lebih optimal di Kota Bogor.
Data yang digunakan dalam penelitian ini merupakan data sekunder resmi berupa jumlah sampah yang terangkut ke Tempat Pemrosesan Akhir (TPA) Galuga. Data bersifat runtun waktu dengan frekuensi bulanan dan satuan pengukuran berupa tonase sampah dalam kilogram.
Sumber data diperoleh dari portal ragam data resmi Dinas Lingkungan Hidup (DLH) Kota Bogor melalui laman https://cms-dlh.kotabogor.go.id. Periode data yang digunakan dalam penelitian ini adalah September 2021 hingga Agustus 2025.
# Library
library(readxl)
## Warning: package 'readxl' was built under R version 4.4.3
library(forecast)
## Warning: package 'forecast' was built under R version 4.4.3
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library(tseries)
## Warning: package 'tseries' was built under R version 4.4.3
library(lmtest)
## Warning: package 'lmtest' was built under R version 4.4.3
## Loading required package: 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
# Input Data
data <- read_excel("Sampah Terangkut ke TPA Galuga.xlsx")
Sampah = data$`Tonase (kg)`
View(data)
summary(data)
## Tanggal Tonase (kg)
## Length:48 Min. :12620
## Class :character 1st Qu.:14940
## Mode :character Median :15594
## Mean :15821
## 3rd Qu.:16379
## Max. :18837
Data timbulan sampah yang terangkut ke TPA Galuga terdiri dari 48 observasi bulanan dengan tonase berkisar antara 12.620 kg hingga 18.837 kg per bulan. Rata-rata timbulan sampah adalah sekitar 15.821 kg per bulan.
str(data)
## tibble [48 × 2] (S3: tbl_df/tbl/data.frame)
## $ Tanggal : chr [1:48] "2021-09" "2021-10" "2021-11" "2021-12" ...
## $ Tonase (kg): num [1:48] 17324 18125 17574 18456 17470 ...
Struktur dataset terdiri dari 48 observasi dan 2 variabel, yaitu Tanggal yang bertipe karakter dan Tonase (kg) yang bertipe numerik.
# Membuat data menjadi time series
sampah_ts <- ts(
Sampah,
start = c(2021,9),
frequency = 12
)
sampah_ts
## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2021 17324 18125 17574 18456
## 2022 17470 15699 18201 18715 18837 15856 15708 15009 14877 15363 14891 15160
## 2023 15817 14355 16232 16014 15705 15213 15054 14957 14718 14704 15576 15585
## 2024 16821 15918 16843 17311 16940 14078 14675 15051 14553 15148 15521 15742
## 2025 15733 14425 16164 14801 15580 14664 15603 12620
# Plot Time Series
plot.ts(sampah_ts,
main= "Plot Time Series Sampah Terangkut ke TPA Galuga",
xlab= "Tahun",
ylab= "Tonase")
Grafik time series sampah terangkut ke TPA Galuga menunjukkan bahwa volume sampah berfluktuasi dari bulan ke bulan dengan kecenderungan tren menurun secara umum, di mana nilai awal periode relatif lebih tinggi dibandingkan periode akhir. Selain itu terlihat pola naik–turun yang berulang dalam satu tahun, yang menunjukkan adanya pola musiman dalam data.
# Plot Boxplot
boxplot(sampah_ts ~ cycle(sampah_ts),
xlab="Bulan",
ylab="Tonase")
Boxplot tonase sampah per bulan memperlihatkan pola sebaran yang berbeda antar bulan. Median dan rentang data menunjukkan bahwa volume sampah tidak konstan sepanjang tahun, melainkan memiliki perbedaan musiman. Bulan-bulan tertentu, seperti April dan Mei, cenderung memiliki volume sampah yang lebih tinggi, sementara bulan seperti Agustus memiliki median yang lebih rendah.
Metode analisis yang digunakan dalam penelitian ini adalah Autoregressive Integrated Moving Average (ARIMA). Model ARIMA merupakan model deret waktu yang mengombinasikan komponen autoregressive (AR), differencing (I), dan moving average (MA). Model ARIMA dinyatakan dalam notasi ARIMA(p, d, q), dengan p menyatakan orde komponen autoregressive, d menyatakan orde differencing, dan q menyatakan orde komponen moving average.
Tahapan analisis yang dilakukan dalam penelitian ini meliputi:
# Data Training
train_data <- window(
sampah_ts,
start = c(2021, 9),
end = c(2024, 8)
)
train_data
## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2021 17324 18125 17574 18456
## 2022 17470 15699 18201 18715 18837 15856 15708 15009 14877 15363 14891 15160
## 2023 15817 14355 16232 16014 15705 15213 15054 14957 14718 14704 15576 15585
## 2024 16821 15918 16843 17311 16940 14078 14675 15051
# Data Testing
test_data <- window(
sampah_ts,
start = c(2024, 9),
end = c(2025, 8)
)
test_data
## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2024 14553 15148 15521 15742
## 2025 15733 14425 16164 14801 15580 14664 15603 12620
Data dibagi menjadi data training (September 2021 – Agustus 2024) dan data testing (September 2024 – Agustus 2025). Data training digunakan untuk pembentukan dan pemilihan model, sedangkan data testing digunakan untuk evaluasi performa model.
adf.test(train_data)
##
## Augmented Dickey-Fuller Test
##
## data: train_data
## Dickey-Fuller = -2.1368, Lag order = 3, p-value = 0.5199
## alternative hypothesis: stationary
Pada uji Augmented Dickey-Fuller (ADF), hipotesis yang digunakan adalah: - H0 : data time series tidak stasioner - H1 : data time series stasioner Dasar pengambilan keputusan yang digunakan adalah: - H0 ditolak jika nilai p-value > 0,05 - H0 gagal ditolak jika nilai p-value < 0,05 Hasil uji menunjukkan nilai p-value = 0,5199. Karena p-value > 0,05, maka H0 gagal ditolak, sehingga dapat disimpulkan bahwa data training belum stasioner dan masih mengandung tren atau pola musiman. Oleh karena itu, data perlu dilakukan differencing sebelum dimodelkan menggunakan ARIMA.
diff1 = diff(train_data)
adf.test(diff1)
##
## Augmented Dickey-Fuller Test
##
## data: diff1
## Dickey-Fuller = -3.4982, Lag order = 3, p-value = 0.05952
## alternative hypothesis: stationary
Setelah dilakukan differencing pertama didapatkan nilai p-value sebesar 0,05952 (> 0,05), sehingga data belum sepenuhnya stasioner setelah satu kali differencing, maka dilakukan differencing kedua.
diff2 = diff(diff1)
adf.test(diff2)
## Warning in adf.test(diff2): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: diff2
## Dickey-Fuller = -5.6827, Lag order = 3, p-value = 0.01
## alternative hypothesis: stationary
Setelah dilakukan differencing kedua didapatkan nilai p-value sebesar 0,01 < 0,05. Hal ini menunjukkan bahwa data telah stasioner setelah dua tahap differencing ( d = 2) dan layak untuk dilakukan pemodelan dengan ARIMA.
acf(diff2, main = "ACF Differencing 2")
Berdasarkan plot ACF dari data yang telah melalui differencing kedua, terlihat bahwa spike ACF mengalami cut-off pada lag 1, sehingga orde q = 0 atau 1.
pacf(diff2, main = "PACF Differencing 2")
Berdasarkan plot PACF setelah differencing kedua, terlihat bahwa hanya lag 1 yang memiliki nilai partial autocorrelation yang signifikan, sedangkan lag selanjutnya berada dalam batas signifikansi sehingga didapatkan orde p = 1.
m1 <- arima(train_data, order = c(1,2,0))
m2 <- arima(train_data, order = c(1,2,1))
aic <- data.frame(
Model = c("ARIMA(1,2,0)",
"ARIMA(1,2,1)"),
AIC = c(m1$aic,
m2$aic)
)
aic
## Model AIC
## 1 ARIMA(1,2,0) 595.3387
## 2 ARIMA(1,2,1) 581.4249
best_model <- m2
Untuk memilih model terbaik, dilakukan perbandingan beberapa model ARIMA berdasarkan nilai AIC. Tabel AIC menunjukkan bahwa ARIMA(1,2,1) memiliki nilai AIC terendah (581.4249), sehingga dipilih sebagai model terbaik untuk data timbulan sampah.
coeftest(best_model)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 -0.196883 0.168343 -1.1695 0.2422
## ma1 -0.999999 0.081593 -12.2559 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Uji signifikansi parameter model ARIMA(1,2,1) dilakukan menggunakan uji z. Diperoleh koefisien MA(1) memiliki p-value < 2 × 10⁻¹⁶ , yang signifikan pada tingkat signifikansi 5%.
ts.plot(residuals(best_model), main = "Residual ARIMA")
Residual tersebar secara acak di sekitar nol dan tidak menampilkan pola sistematik, yang menunjukkan bahwa residual bersifat acak.
acf(residuals(best_model), main = "ACF Residual ARIMA")
pacf(residuals(best_model), main = "PACF Residual ARIMA")
Plot ACF dan PACF residual model ARIMA menunjukkan bahwa mayoritas nilai autokorelasi dan partial autocorrelation berada dalam batas signifikansi, tanpa pola yang konsisten pada lag-lag tertentu. Dengan demikian, residual model dapat dianggap sebagai white noise.
Box.test(
residuals(best_model),
lag = 12,
type = "Ljung-Box"
)
##
## Box-Ljung test
##
## data: residuals(best_model)
## X-squared = 9.2583, df = 12, p-value = 0.6807
Hipotesis: H₀ : Residual model tidak memiliki autokorelasi sampai lag tertentu atau residual bersifat white noise. H₁ : Residual model memiliki autokorelasi sampai lag tertentu atau residual tidak bersifat white noise. Karena p-value 0,6807 > 0.05, gagal menolak hipotesis nol bahwa residual model tidak memiliki autokorelasi sampai lag ke-12. Artinya, residual model tidak menunjukkan pola autokorelasi yang signifikan, sehingga dapat dianggap bersifat white noise.
# MAPE training
fitted_train <- fitted(best_model)
mape_train <- mean(abs((train_data - fitted_train) / train_data)) * 100
mape_train
## [1] 4.544848
# MAPE testing
forecast_test <- forecast(best_model, h = length(test_data))
mape_test <- mean(abs((test_data - forecast_test$mean) / test_data)) * 100
mape_test
## [1] 5.713268
Nilai MAPE sebesar 4,54% pada data training dan 5,71% pada data testing ini menunjukkan bahwa peramalan yang dihasilkan oleh model ARIMA(1,2,1) memiliki kesalahan relatif yang kecil, sehingga model dapat memberikan prediksi akurat yang sangat baik.
final_model <- arima(sampah_ts, order = c(1,2,1))
forecast_arima <- forecast(final_model, h = 12)
forecast_arima
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## Sep 2025 13567.71 12182.898 14952.53 11449.821 15685.60
## Oct 2025 13107.63 11446.424 14768.84 10567.035 15648.23
## Nov 2025 13151.75 11151.971 15151.54 10093.350 16210.16
## Dec 2025 13015.29 10746.822 15283.77 9545.965 16484.62
## Jan 2026 12943.51 10416.544 15470.48 9078.848 16808.17
## Feb 2026 12848.56 10082.527 15614.60 8618.276 17078.85
## Mar 2026 12761.91 9767.466 15756.36 8182.302 17341.53
## Apr 2026 12672.29 9459.213 15885.37 7758.312 17586.27
## May 2026 12583.73 9159.452 16008.02 7346.747 17820.72
## Jun 2026 12494.79 8865.605 16123.98 6944.428 18045.16
## Jul 2026 12405.99 8577.122 16234.86 6550.240 18261.74
## Aug 2026 12317.14 8293.059 16341.22 6162.838 18471.44
plot(forecast_arima,
main = "Peramalan Timbulan Sampah dengan ARIMA(1,2,1)",
xlab = "Waktu",
ylab = "Jumlah Sampah")
Peramalan satu tahun ke depan menggunakan model ARIMA(1,2,1), timbulan sampah diprediksi mengalami kecenderungan menurun secara bertahap selama periode peramalan. Garis ramalan menunjukkan nilai prediksi yang relatif stabil menurun, sementara interval kepercayaan semakin melebar seiring bertambahnya waktu.
Penerapan model ARIMA pada data timbulan sampah yang terangkut ke TPA Galuga menunjukkan bahwa setelah dua kali differencing, data menjadi stasioner dan layak dimodelkan. Identifikasi ACF dan PACF serta perbandingan nilai AIC menghasilkan ARIMA(1,2,1) sebagai model terbaik. Uji diagnostik menunjukkan residual bersifat white noise dan parameter MA(1) signifikan, sedangkan evaluasi akurasi dengan MAPE menunjukkan kesalahan prediksi yang rendah baik pada data training maupun testing.
Peramalan satu tahun ke depan menunjukkan tren penurunan volume sampah secara bertahap dengan tingkat ketidakpastian yang semakin meningkat pada horizon peramalan yang lebih jauh. Secara keseluruhan, model ARIMA(1,2,1) dinilai layak dan efektif digunakan untuk peramalan timbulan sampah di TPA Galuga serta dapat mendukung perencanaan pengelolaan sampah berbasis data. Untuk penelitian selanjutnya, disarankan mempertimbangkan pengujian model lain seperti SARIMA untuk menangkap pola musiman yang mungkin belum terakomodasi oleh model ARIMA.
Dinas Lingkungan Hidup Kota Bogor. (2025). Data sampah terangkut ke TPA Galuga (dataset). Portal Ragam Data Lingkungan Hidup Kota Bogor. https://cms-dlh.kotabogor.go.id/ragam_data/manajemen/ragam-data/data-sampah-terangkut-ke-tpa
Mifthasha, S. (2024). Peramalan Jumlah Sampah Terangkut Di Kota Pekanbaru Menggunakan Metode ARIMA. Indonesian Council of Premier Statistical Science, 3(2), 71. https://doi.org/10.24014/icopss.v3i2.32272
Nurfatimah, D. K. (2023). Peramalan dan Akurasi dengan Model ARIMA. RPubs. Diakses dari https://www.rpubs.com/dindakhamila/mpdw6
Nurmayanti, W. P., Kertanah, K., Hasanah, S. H., Rahim, A., & Hendrayani, H. (2023). Peramalan Jumlah Sampah di Kabupaten Lombok Timur dengan Metode ARIMA dan Dekomposisi. Jambura Journal of Probability and Statistics, 4(2), 72–84. https://doi.org/10.37905/jjps.v4i2.19954
Ratnasari, A. P. (2022). Penerapan Model ARIMA pada Data Harga Emas Eropa. RPubs. Diakses dari https://rpubs.com/andikaputri/ARIMA