Nama : Adi Suwarno Dosen : 1. Dr. Bagus Sartono, [Link], M.
Si
NIM : G2401211019 2. Rahma Anisa, [Link], [Link]
Hari / Tanggal : Rabu / 8 Februari 2023 Asisten : Gita Cahyo Nomi (G14190011)
VISUALISASI DATA SEBARAN
Pendahuluan dan Pengenalan Dataset
Pada praktikum kali ini, akan digunakan dataset yang bersumber dari situs Kaggle. Dataset
yang digunakan ini ialah dataset “Air Pollution in Seoul” yang dikeluarkan oleh Pemerintah
Metropolitan Seoul. Dataset ini berisi informasi pengukuran polusi udara di Seoul, Korea
Selatan yang meliputi tanggal pengukuran, kode stasiun, alamat, latitude, longitude, gas
pencemar seperti SO2, NO2, CO, O3, serta partikel pencemar seperti PM10 dan PM2.5.
Dataset ini diperoleh melalui pengukuran setiap jam antara tahun 2017 hingga 2019 dan diukur
di 25 distrik di Seoul.
Alasan pemilihan dataset ini karena dataset ini memiliki ukuran yang besar dan merupakan
data 3 tahun dengan amatan tiap 1 jam yang diukur pada 25 distrik di Seoul, Korea Selatan.
Umumnya, semakin banyak data, sebaran data akan mendekati sebaran normal. Saya tertarik
untuk memvisualisasikannya dan melihat sebaran data dari dataset ini.
Visualisasi Data
Gambar 1 Boxplot kadar CO pada 25 distrik di Seoul
Dari boxplot di atas, dapat dilihat bahwa kadar CO pada 25 distrik di Seoul, Korea Selatan,
memiliki sebaran yang bermacam-macam dan seluruh distrik memiliki riwayat kadar CO
melebihi kondisi normal (terlalu tinggi) yang dapat dilihat dari adanya outliers di sisi kanan.
Kemudian, beberapa distrik ada yang jarang sekali kadar CO di udaranya rendah, dan ini dapat
dilihat dari keberadaan outliers di sisi kiri boxplot dan ada sekitar 8 distrik.
Gambar 2 Histogram kadar CO pada 25 distrik di Seoul
Dari histogram di atas, dapat diketahui bahwa sebaran kadar CO di Seoul berbentuk skewed
right (menjulur ke kanan) dengan frekuensi kadar CO tertinggi berada pada kisaran 0,35 – 0,45
ppm.
Gambar 3 Histogram kadar SO2, O3, NO2, CO, PM2.5, dan PM10 di Seoul
Histogram berikutnya menampilkan sebaran data secara keseluruhan untuk setiap variabel
yang diamati, meliputi SO2, O3, NO2, CO, PM2.5, dan PM10. Dari histogram tersebut, dapat
dilihat bahwa CO dan SO2 memiliki sebaran menjulur ke kanan, O3 memiliki dua puncak,
serta NO2, PM2.5, dan PM10 memiliki sebaran yang mendekati normal.
Gambar 4 Boxplot kadar SO2 pada 25 distrik di Seoul
Dari grafik di atas, dapat diketahui bahwa beberapa distrik memiliki sebaran data yang persis
sama, tetapi beda outliers. Satu-satunya distrik yang tidak memiliki outlier bernilai rendah
adalah distrik Gangbuk. Kemudian, beberapa distrik menunjukkan nilai yang sama atau hampir
sama antara nilai kuartil satu dengan median (distrik Seongbuk, Dongjak, Yongsan, Jung, dan
Seongdong) atau antara median dengan kuartil tiga (distrik Gangseo).
Gambar 5 Boxplot kadar NO2 pada 25 distrik di Seoul
Sementara itu, kadar NO2 di seluruh distrik Seoul relatif persis antara satu sama lain, kecuali
di Distrik Guro yang memiliki 4 catatan outlier atau kadar NO2 tinggi.
Gambar 6 Boxplot jumlah PM10 dan PM2.5 pada 25 distrik di Seoul
PM10 merupakan partikel-partikel udara dalam wujud padat yang berdiamter kurang dari 10
mikrometer, sedangkan PM2.5 berarti partikel-partikel udara yang berdiameter kurang dari 2,5
mikrometer (Inaku dan Novianus 2020). Dari grafik di atas, dapat dilihat bahwa sebaran
partikel pencemar baik untuk PM10 maupun PM2.5 relatif tidak jauh berbeda di setiap
distriknya.
DAFTAR PUSTAKA
Inaku AHR, Novianus C. 2020. Pengaruh pencemaran udara PM2,5 dan PM10 terhadap
keluhan pernapasan anak di ruang terbuka anak di DKI Jakarta. ARKESMAS. 5(2):9-16.
[Kaggle] Kaggle. 2019. Air pollution in Seoul. [Diakses 2023 Feb 11].
[Link]
LAMPIRAN
Lampiran 1 Script code pembacaan file
seoul_airq <- [Link]('clipboard')
Ket. digunakan [Link]() karena file berukuran besar dan terjadi kesalahan pembacaan
file .csv sehingga kode tidak berjalan.
Lampiran 2 Script code boxplot pada Gambar 1
ggplot(seoul_airq,
aes(x = CO, fill = [Link](Address))) +
geom_boxplot() + scale_x_continuous(trans = 'log')+
xlab("") +
ylab("") +
ggtitle("Boxplot Kadar CO pada 25 Distrik",
subtitle="di Seoul, Korea Selatan") +
theme([Link] = element_rect(fill = "white",
colour = "grey50"))+
theme([Link].x=element_blank(),
[Link].y=element_blank(),
[Link].y=element_blank())
Lampiran 3 Script code histogram pada Gambar 2
ggplot(seoul_airq, aes(x = CO)) +
geom_histogram(binwidth = 0.1,bins = 15) +
xlim(0,2.25)+ xlab("Kadar CO") +
ylab("Frekuensi") +
ggtitle("Histogram Kadar CO pada 25 Distrik",
subtitle="di Seoul, Korea Selatan") +
theme([Link] = element_rect(fill = "white",
colour = "grey50"))
Lampiran 4 Script code histogram pada Gambar 3
# manipulasi data
kor1 <- seoul_airq[-c(1:5)] %>%
gather(key="text", value="value") %>%
mutate(text = gsub("\\.", " ",text)) %>%
mutate(value = [Link](value))
kor1 <- drop_na(kor1)
# plot
kor1 %>% mutate(text = fct_reorder(text, value)) %>%
ggplot( aes(x=log(value), color=text, fill=text)) +
geom_histogram(alpha=0.6, binwidth = 0.1, bins = 5) +
scale_fill_viridis(discrete=TRUE) +
scale_color_viridis(discrete=TRUE) +
theme_ipsum() +
theme(
[Link]="none",
[Link] = unit(0.1, "lines"),
[Link].x = element_text(size = 8)
) +
xlab("") +
ylab("Frekuensi") +
facet_wrap(~text)
Lampiran 5 Script code boxplot pada Gambar 4
ggplot(seoul_airq,
aes(x = SO2, fill = [Link](Address))) +
geom_boxplot() + scale_x_continuous(trans = 'log')+
xlab("") + ylab("") +
ggtitle("Boxplot Kadar SO2 pada 25 Distrik",
subtitle="di Seoul, Korea Selatan") +
theme([Link] = element_rect(fill = "white",
colour = "grey50"))+
theme([Link].x=element_blank(),
[Link].y=element_blank(),
[Link].y=element_blank())
Lampiran 6 Script code boxplot pada Gambar 5
ggplot(seoul_airq,
aes(x = NO2, fill = [Link](Address))) +
geom_boxplot() + scale_x_continuous(trans = 'log')+
xlab("") + ylab("") +
ggtitle("Boxplot Kadar NO2 pada 25 Distrik",
subtitle="di Seoul, Korea Selatan") +
theme([Link] = element_rect(fill = "white",
colour = "grey50"))+
theme([Link].x=element_blank(),
[Link].y=element_blank(),
[Link].y=element_blank())
Lampiran 7 Script code boxplot pada Gambar 6
# Boxplot PM10
pm1 <- ggplot(seoul_airq,
aes(x = PM10, fill = [Link](Address))) +
geom_boxplot([Link] = FALSE) + scale_x_continuous(trans
= 'log')+
xlab("") +
ylab("") +
ggtitle("Boxplot Kadar PM10 pada 25 Distrik",
subtitle="di Seoul, Korea Selatan") +
theme([Link] = element_rect(fill = "white",
colour = "grey50"))+
theme([Link].x=element_blank(),
[Link].y=element_blank(),
[Link].y=element_blank())
# Boxplot PM2.5
pm2 <- ggplot(seoul_airq,
aes(x = PM2.5, fill = [Link](Address))) +
geom_boxplot() + scale_x_continuous(trans = 'log')+
xlab("") +
ylab("") +
ggtitle("Boxplot Kadar PM2.5 pada 25 Distrik",
subtitle="di Seoul, Korea Selatan") +
theme([Link] = element_rect(fill = "white",
colour = "grey50"))+
theme([Link].x=element_blank(),
[Link].y=element_blank(),
[Link].y=element_blank())
#Buat Grid
library(gridExtra)
[Link](pm1, pm2, widths = c(1,3))