Kondisi kualitas udara di suatu kawasan memiliki dampak yang signifikan terhadap kualitas kehidupan manusia serta makhluk hidup lainnya, baik secara langsung maupun tidak langsung. Udara yang bersih berperan penting dalam menjaga kesehatan, sedangkan penurunan kualitas udara dapat menimbulkan berbagai dampak negatif bagi lingkungan dan kesehatan masyarakat. Pencemaran udara dapat berasal dari faktor alam maupun aktivitas manusia. Faktor alam yang berkontribusi terhadap pencemaran udara antara lain debu yang terbawa oleh angin, asap akibat kebakaran hutan, serta aktivitas vulkanik. Sementara itu, faktor manusia yang paling dominan meliputi peningkatan aktivitas transportasi dan industri yang sejalan dengan pertumbuhan populasi dan pembangunan (Ayu et al., 2023).
Berdasarkan Peraturan Pemerintah Republik Indonesia Nomor 41 Tahun 1999 tentang Pengendalian Pencemaran Udara, pencemaran udara didefinisikan sebagai menurunnya kualitas udara ambien sehingga udara tersebut tidak dapat memenuhi fungsinya sesuai dengan peruntukannya. Kondisi ini menegaskan pentingnya pemantauan dan analisis kualitas udara secara berkelanjutan guna mendukung upaya pengendalian pencemaran udara serta perlindungan kesehatan masyarakat.
Salah satu pendekatan yang umum digunakan dalam menganalisis dan meramalkan kualitas udara adalah metode deret waktu (time series), khususnya model Autoregressive Integrated Moving Average (ARIMA) yang juga dikenal sebagai metode Box–Jenkins. Model ARIMA memiliki kemampuan yang baik dalam melakukan peramalan jangka pendek dengan tingkat akurasi yang relatif tinggi. Namun, pada peramalan jangka panjang, akurasi model cenderung menurun dan hasil peramalan biasanya bersifat stabil atau mendatar (Nabila et al., 2020).
Model ARIMA merupakan model univariat yang tidak melibatkan variabel independen dalam proses peramalannya. Model ini bekerja dengan mengidentifikasi hubungan statistik antara nilai yang akan diramalkan dengan nilai historis dari variabel yang sama. Oleh karena itu, ARIMA sesuai digunakan pada data deret waktu yang secara statistik saling bergantung (dependent). Dengan karakteristik tersebut, model ARIMA banyak diterapkan dalam analisis kualitas udara, termasuk peramalan konsentrasi polutan seperti PM2.5, guna memberikan gambaran pola dan kecenderungan kualitas udara di masa mendatang.
Data yang digunakan dalam penelitian ini merupakan data kualitas udara harian di wilayah DKI Jakarta pada periode tahun 2023 – 2024 yang diperoleh dari platform Kaggle. Data tersebut memuat informasi konsentrasi partikel halus PM2.5, yaitu partikel udara berdiameter kurang dari atau sama dengan 2,5 mikrometer yang berpotensi menimbulkan dampak negatif terhadap kesehatan manusia karena dapat masuk ke dalam saluran pernapasan hingga paru-paru. Data PM2.5 disusun dalam bentuk deret waktu harian, di mana setiap observasi merepresentasikan nilai konsentrasi PM2.5 pada tanggal tertentu.
# =========================================
# LIBRARY
# =========================================
library(readxl)
library(forecast)
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library(zoo)
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(ggplot2)
library(lubridate)
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
# =========================================
# INPUT DATA
# =========================================
Data_Kualitas_Udara_2023_2024 <- read_excel("~/Data Kualitas Udara 2023 - 2024.xlsx")
## New names:
## • `tanggal` -> `tanggal...1`
## • `stasiun` -> `stasiun...2`
## • `pm25` -> `pm25...3`
## • `` -> `...4`
## • `tanggal` -> `tanggal...5`
## • `stasiun` -> `stasiun...6`
## • `pm25` -> `pm25...7`
Data_Kualitas_Udara_2023_2024 <- as.data.frame(Data_Kualitas_Udara_2023_2024)
str(Data_Kualitas_Udara_2023_2024)
## 'data.frame': 731 obs. of 7 variables:
## $ tanggal...1: POSIXct, format: "2023-01-01" "2023-01-02" ...
## $ stasiun...2: chr "DKI1 (Bunderan HI)" "DKI1 (Bunderan HI)" "DKI1 (Bunderan HI)" "DKI1 (Bunderan HI)" ...
## $ pm25...3 : chr "55.0" "43.0" "35.0" "47.0" ...
## $ ...4 : logi NA NA NA NA NA NA ...
## $ tanggal...5: chr "44927" "44928" "44929" "44930" ...
## $ stasiun...6: chr "DKI1 (Bunderan HI)" "DKI1 (Bunderan HI)" "DKI1 (Bunderan HI)" "DKI1 (Bunderan HI)" ...
## $ pm25...7 : chr "55.0" "43.0" "35.0" "47.0" ...
head(Data_Kualitas_Udara_2023_2024[,1], 10)
## [1] "2023-01-01 UTC" "2023-01-02 UTC" "2023-01-03 UTC" "2023-01-04 UTC"
## [5] "2023-01-05 UTC" "2023-01-06 UTC" "2023-01-07 UTC" "2023-01-08 UTC"
## [9] "2023-01-09 UTC" "2023-01-10 UTC"
class(Data_Kualitas_Udara_2023_2024[,1])
## [1] "POSIXct" "POSIXt"
tanggal_raw <- Data_Kualitas_Udara_2023_2024[,1]
tanggal <- as.Date(tanggal_raw, format = "%d/%m/%Y")
summary(tanggal)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## "2023-01-01" "2023-07-02" "2024-01-01" "2024-01-01" "2024-07-01" "2024-12-31"
class(tanggal)
## [1] "Date"
pm25 <- as.numeric(Data_Kualitas_Udara_2023_2024[,3])
class(Data_Kualitas_Udara_2023_2024[,3])
## [1] "character"
head(Data_Kualitas_Udara_2023_2024[,3], 10)
## [1] "55.0" "43.0" "35.0" "47.0" "50.0" "48.0" "42.0" "49.0" "39.0" "44.0"
pm25_raw <- Data_Kualitas_Udara_2023_2024[,3]
pm25 <- as.numeric(
gsub('"', '', pm25_raw))
Kode ini digunakan untuk melakukan pemeriksaan dan pengolahan awal data kualitas udara PM2.5. Proses diawali dengan pengecekan struktur dan tipe data untuk memastikan format setiap variabel. Selanjutnya, variabel tanggal diekstraksi dan dikonversi ke format Date agar dapat digunakan sebagai data deret waktu. Data PM2.5 kemudian dibersihkan dari karakter non-numerik dan diubah ke tipe numerik sehingga siap digunakan dalam analisis statistik dan analisis kualitas udara.
Analisis Data Eksplorasi (Exploratory Data Analysis/EDA) merupakan tahapan awal yang penting dalam proses analisis kualitas udara. Tahap ini bertujuan untuk memahami karakteristik data kualitas udara sebelum dilakukan pemodelan peramalan secara formal. Melalui analisis data eksplorasi, peneliti dapat mengamati pola, tren, dan fluktuasi konsentrasi polutan udara, khususnya PM2.5, serta mengidentifikasi adanya nilai ekstrem atau data yang tidak lengkap. Dengan melakukan EDA, peneliti dapat memastikan bahwa data kualitas udara yang digunakan telah sesuai dan memenuhi asumsi dasar untuk analisis deret waktu, sehingga hasil pemodelan dan peramalan yang diperoleh menjadi lebih akurat dan dapat diinterpretasikan dengan baik.
# =========================================
# TIME SERIES HARIAN
# =========================================
names(data)
## NULL
pm25_ts <- zoo(pm25, order.by = tanggal)
plot(pm25_ts,
main = "Time Series PM2.5 Harian (2023–2024)",
xlab = "Tanggal",
ylab = "PM2.5")
Berdasarkan grafik deret waktu PM2.5 harian periode 2023–2024, terlihat adanya pola perubahan yang tidak konstan dan dipengaruhi oleh faktor musiman maupun kondisi lingkungan tertentu. Fluktuasi yang tajam pada beberapa periode juga mengindikasikan adanya variasi harian yang cukup besar, sehingga data ini sesuai untuk dianalisis menggunakan pendekatan deret waktu, khususnya model peramalan seperti ARIMA.
# Statistika Deskriptif Dasar
summary(pm25)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 10.00 58.50 75.00 72.38 87.00 122.00
sum(is.na(pm25))
## [1] 0
Berdasarkan hasil statistik deskriptif, konsentrasi PM2.5 memiliki nilai minimum sebesar 10,00 dan nilai maksimum sebesar 122,00, yang menunjukkan rentang variasi PM2.5 yang cukup lebar selama periode pengamatan. Nilai kuartil pertama (Q1) sebesar 58,50 mengindikasikan bahwa 25% data memiliki konsentrasi PM2.5 di bawah nilai tersebut, sedangkan kuartil ketiga (Q3) sebesar 87,00 menunjukkan bahwa 75% data berada di bawah nilai tersebut. Nilai median sebesar 75,00 menandakan bahwa setengah dari data memiliki konsentrasi PM2.5 di bawah dan di atas nilai tersebut. Sementara itu, nilai rata-rata (mean) sebesar 72,38 yang sedikit lebih rendah dibandingkan median mengindikasikan adanya kecenderungan sebaran data yang sedikit condong ke arah nilai yang lebih rendah.
Metode analisis yang digunakan dalam penelitian ini adalah pendekatan peramalan deret waktu (time series forecasting) dengan metode Autoregressive Integrated Moving Average (ARIMA) untuk memodelkan konsentrasi PM2.5. Tahapan analisis dilakukan secara sistematis sebagai berikut.
# =========================================
# SPLIT TRAIN & TEST (80:20)
# =========================================
n <- length(pm25_ts)
train_size <- floor(0.8 * n)
train_ts <- pm25_ts[1:train_size]
test_ts <- pm25_ts[(train_size + 1):n]
Pada tahap awal, data deret waktu PM2.5 dibagi menjadi dua bagian, yaitu data training dan data testing. Pembagian data dilakukan dengan proporsi 80% sebagai data training dan 20% sebagai data testing. Data training digunakan untuk membangun model ARIMA agar mampu menangkap pola historis konsentrasi PM2.5, sedangkan data testing digunakan untuk mengevaluasi kemampuan model dalam memprediksi nilai PM2.5 pada periode yang belum diamati.
# =========================================
# MODEL ARIMA
# =========================================
model_arima <- auto.arima(train_ts)
summary(model_arima)
## Series: train_ts
## ARIMA(1,1,1)
##
## Coefficients:
## ar1 ma1
## 0.4295 -0.9019
## s.e. 0.0507 0.0259
##
## sigma^2 = 150.8: log likelihood = -2288.88
## AIC=4583.76 AICc=4583.8 BIC=4596.86
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set 0.3344065 12.24927 9.475477 -3.460683 15.5502 0.8901391
## ACF1
## Training set -0.01793141
Tahap selanjutnya adalah pemodelan data menggunakan metode Autoregressive Integrated Moving Average (ARIMA). Penentuan parameter model dilakukan secara otomatis dengan memilih kombinasi parameter terbaik berdasarkan kriteria statistik. Model ARIMA dibangun berdasarkan pola historis data PM2.5 pada data training untuk menghasilkan model peramalan yang optimal.
# =========================================
# FORECAST DATA TESTING
# =========================================
fc_test <- forecast(model_arima, h = length(test_ts))
Model ARIMA yang telah terbentuk selanjutnya digunakan untuk melakukan peramalan nilai PM2.5 pada periode data testing. Hasil peramalan ini menghasilkan nilai prediksi PM2.5 yang kemudian dapat dibandingkan dengan data aktual untuk menilai kinerja model.
# =========================================
# MAPE
# =========================================
mape_train <- mean(abs((as.numeric(train_ts) - fitted(model_arima)) /
as.numeric(train_ts))) * 100
mape_test <- mean(abs((as.numeric(test_ts) - fc_test$mean) /
as.numeric(test_ts))) * 100
Evaluasi kinerja model dilakukan menggunakan Mean Absolute Percentage Error (MAPE). MAPE dihitung pada data training dan data testing untuk mengukur tingkat kesalahan prediksi model ARIMA. Nilai MAPE yang lebih kecil menunjukkan bahwa model memiliki tingkat akurasi peramalan yang lebih baik.
Berdasarkan hasil pemodelan deret waktu menggunakan metode Autoregressive Integrated Moving Average (ARIMA), diperoleh model terbaik yaitu ARIMA(1,1,1). Model ini menunjukkan bahwa data konsentrasi PM2.5 memerlukan satu kali differencing untuk mencapai kondisi stasioner serta dipengaruhi oleh satu komponen autoregressive (AR) dan satu komponen moving average (MA).
Koefisien AR(1) bernilai positif sebesar 0,4295, yang menandakan adanya pengaruh nilai PM2.5 pada periode sebelumnya, sedangkan koefisien MA(1) bernilai negatif sebesar −0,9019, yang menunjukkan pengaruh kesalahan prediksi periode sebelumnya terhadap nilai saat ini. Pemilihan model didukung oleh nilai AIC, AICc, dan BIC yang relatif kecil, sehingga model dinilai optimal.
cat("MAPE Training:", round(mape_train, 2), "%\n")
## MAPE Training: 15.55 %
cat("MAPE Testing :", round(mape_test, 2), "%\n")
## MAPE Testing : 39.21 %
Evaluasi kinerja model menggunakan Mean Absolute Percentage Error (MAPE) menunjukkan nilai 15,55% pada data training dan 39,21% pada data testing. Hasil ini mengindikasikan bahwa model cukup baik dalam mempelajari pola historis PM2.5, namun performanya menurun saat digunakan untuk memprediksi data yang belum diamati.
# =========================================
# PLOT AKTUAL vs PREDIKSI
# =========================================
df_plot <- data.frame(
Index = 1:length(test_ts),
Aktual = as.numeric(test_ts),
Prediksi = as.numeric(fc_test$mean)
)
ggplot(df_plot, aes(Index)) +
geom_line(aes(y = Aktual, color = "Aktual"), linewidth = 1.2) +
geom_line(aes(y = Prediksi, color = "Prediksi"),
linewidth = 1.2, linetype = "dashed") +
labs(
title = "Perbandingan Aktual vs Prediksi PM2.5",
subtitle = "Model ARIMA (Data Testing)",
x = "Index Waktu",
y = "PM2.5",
color = "Keterangan"
) +
theme_minimal()
Perbandingan antara nilai aktual dan prediksi pada data testing memperlihatkan bahwa model ARIMA mampu menangkap pola umum konsentrasi PM2.5, tetapi belum mampu mengikuti fluktuasi ekstrem. Hal ini menunjukkan bahwa model ARIMA lebih sesuai digunakan untuk peramalan jangka pendek dengan pola data yang relatif stabil.
Penelitian ini bertujuan untuk menganalisis dan memodelkan konsentrasi PM2.5 sebagai indikator kualitas udara di DKI Jakarta periode 2023–2024 menggunakan pendekatan peramalan deret waktu (time series forecasting) dengan metode Autoregressive Integrated Moving Average (ARIMA). Data yang digunakan merupakan data harian PM2.5 yang telah melalui tahap pembersihan data, termasuk konversi format tanggal dan nilai numerik. Setelah itu, data disusun dalam bentuk deret waktu dan dibagi menjadi data training (80%) dan data testing (20%) untuk memastikan model dapat dibangun dan dievaluasi secara objektif.
Hasil pemodelan menunjukkan bahwa model terbaik yang diperoleh adalah ARIMA(1,1,1), yang mengindikasikan bahwa data PM2.5 memerlukan satu kali proses differencing untuk mencapai kondisi stasioner. Model ini terdiri dari satu komponen autoregressive dan satu komponen moving average, yang mencerminkan adanya pengaruh nilai PM2.5 pada periode sebelumnya serta kesalahan prediksi masa lalu terhadap nilai saat ini. Pemilihan model dilakukan secara otomatis menggunakan fungsi auto.arima berdasarkan kriteria informasi statistik, yaitu AIC, AICc, dan BIC, di mana nilai yang lebih kecil menunjukkan model yang lebih optimal.
Evaluasi kinerja model dilakukan menggunakan Mean Absolute Percentage Error (MAPE). Nilai MAPE pada data training sebesar 15,55% menunjukkan bahwa model ARIMA cukup baik dalam mempelajari dan merepresentasikan pola historis konsentrasi PM2.5. Namun, nilai MAPE pada data testing sebesar 39,21% menunjukkan bahwa kemampuan model dalam memprediksi data baru masih terbatas. Hasil visualisasi perbandingan antara nilai aktual dan prediksi juga memperlihatkan bahwa model ARIMA mampu menangkap pola umum atau tren rata-rata PM2.5, tetapi kurang mampu mengikuti fluktuasi ekstrem yang terjadi pada beberapa periode.
Secara keseluruhan, penelitian ini menunjukkan bahwa metode ARIMA efektif digunakan untuk peramalan jangka pendek kualitas udara dengan pola data yang relatif stabil. Namun, keterbatasan model dalam menangkap perubahan mendadak mengindikasikan bahwa faktor eksternal seperti kondisi cuaca, aktivitas transportasi, dan kegiatan industri tidak sepenuhnya dapat dijelaskan oleh model deret waktu univariat ini. Oleh karena itu, penelitian selanjutnya disarankan untuk mengombinasikan ARIMA dengan variabel eksternal atau metode lain agar hasil peramalan kualitas udara menjadi lebih akurat.
Lewis. (2024). Analisis data eksplorasi (EDA): Arti, manfaat, dan contohnya. Fanruan. https://www.fanruan.com/id/blog/analisis-data-eksplorasi
Syafaati, A. D., Utami, S. N. N., & Arifin, S. (2023). Analisis kualitas udara parameter PM2.5 di wilayah Kota Sorong berbasis ISPU. Analysis of air quality PM2.5 parameter in Sorong City area based on ISPU. Megasains, 14(2), 6–13. https://doi.org/10.46824/megasains.v14i2.131
Syafitria, N., Putria, A. I., Utamia, D. C., Derya, D., Perkasa, S. B., & Mahky, D. A. (2020). Pemodelan pergerakan harga saham Bakrie menggunakan metode ARIMA (Autoregressive Integrated Moving Average). Indonesian Journal of Applied Mathematics, 1(1). https://journal.itera.ac.id/index.php/indojam/