Pendahuluan

Laporan ini bertujuan untuk menganalisis hubungan antara kualitas udara (AQI) dan jumlah kasus penyakit pernapasan di berbagai kota di Indonesia.

Load Package dan Data

# Load package
library(lattice)
library(readr)
library(ggplot2)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
# Load data
data <- read_csv("C:/Users/Andrea/Downloads/data_kualitas_udara.csv")
## Rows: 20 Columns: 5
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (2): Kota, Provinsi
## dbl (3): AQI, Kasus, Penduduk
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# Cek struktur data
str(data)
## spc_tbl_ [20 × 5] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ Kota    : chr [1:20] "Surabaya" "Malang" "Sidoarjo" "Jakarta Selatan" ...
##  $ Provinsi: chr [1:20] "Jawa Timur" "Jawa Timur" "Jawa Timur" "DKI Jakarta" ...
##  $ AQI     : num [1:20] 95 80 110 140 135 145 120 130 100 105 ...
##  $ Kasus   : num [1:20] 120 90 150 210 200 220 180 190 160 170 ...
##  $ Penduduk: num [1:20] 2900000 900000 2200000 2300000 2500000 2800000 2500000 2700000 1100000 1800000 ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   Kota = col_character(),
##   ..   Provinsi = col_character(),
##   ..   AQI = col_double(),
##   ..   Kasus = col_double(),
##   ..   Penduduk = col_double()
##   .. )
##  - attr(*, "problems")=<externalptr>
head(data)
## # A tibble: 6 × 5
##   Kota            Provinsi      AQI Kasus Penduduk
##   <chr>           <chr>       <dbl> <dbl>    <dbl>
## 1 Surabaya        Jawa Timur     95   120  2900000
## 2 Malang          Jawa Timur     80    90   900000
## 3 Sidoarjo        Jawa Timur    110   150  2200000
## 4 Jakarta Selatan DKI Jakarta   140   210  2300000
## 5 Jakarta Barat   DKI Jakarta   135   200  2500000
## 6 Jakarta Timur   DKI Jakarta   145   220  2800000

Scatterplot Hubungan AQI dan Kasus

xyplot(Kasus ~ AQI, data = data,
       main = "Hubungan AQI dan Kasus Penyakit Pernapasan",
       xlab = "Air Quality Index (AQI)",
       ylab = "Jumlah Kasus per 1000 Penduduk",
       col = "steelblue",
       pch = 16)

Insight

Visualisasi menunjukkan hubungan antara Air Quality Index (AQI) dan jumlah kasus penyakit pernapasan.

  • Terdapat kecenderungan hubungan positif antara AQI dan jumlah kasus.
  • Kota dengan AQI tinggi cenderung memiliki jumlah kasus lebih banyak.
  • Hal ini menunjukkan bahwa kualitas udara yang buruk berpotensi meningkatkan risiko penyakit pernapasan.

Scatterplot Berdasarkan Kota

xyplot(Kasus ~ AQI | Kota, data = data,
       layout = c(4,5),
       main = "Kasus vs AQI per Kota",
       xlab = "AQI",
       ylab = "Kasus",
       col = "darkgreen",
       pch = 16)

Insight

Visualisasi dengan panel per kota memperlihatkan distribusi data untuk masing-masing kota secara terpisah.

  • Setiap kota hanya memiliki satu titik data.
  • Perbandingan antar kota tetap dapat dilakukan.
  • Kota dengan AQI tinggi menunjukkan jumlah kasus yang lebih tinggi.

Scatterplot dengan Garis Regresi

xyplot(Kasus ~ AQI | Kota, data = data,
       layout = c(4,5),
       panel = function(x, y, ...) {
         panel.xyplot(x, y, ...)
         panel.lmline(x, y, col = "red", lwd = 2)
       },
       main = "Regresi Kasus vs AQI per Kota",
       xlab = "AQI",
       ylab = "Kasus")

Interpretasi

  • Garis naik → hubungan positif antara AQI dan kasus.
  • Garis turun → kemungkinan terdapat faktor lain.
  • Garis datar → hubungan lemah atau tidak signifikan.

Scatterplot dengan Batas Aman AQI

xyplot(Kasus ~ AQI | Kota, data = data,
       layout = c(4,5),
       panel = function(x, y, ...) {
         panel.xyplot(x, y, ...)
         panel.lmline(x, y, col = "red", lwd = 2)
         panel.abline(v = 100,
                       col = "blue",
                       lty = 2,
                       lwd = 2)
       },
       main = "Batas Aman AQI (100)",
       xlab = "AQI",
       ylab = "Kasus")

Insight

  • AQI > 100 menunjukkan kualitas udara tidak sehat.
  • Banyak kota berada di atas batas aman.
  • Risiko kesehatan berpotensi meningkat.

Visualisasi ggplot2

Scatterplot AQI vs Kasus Berdasarkan Provinsi

ggplot(data,
       aes(x = AQI,
           y = Kasus,
           color = Provinsi)) +
  geom_point(size = 3) +
  labs(
    title = "Hubungan AQI dan Kasus Penyakit Pernapasan",
    x = "Air Quality Index (AQI)",
    y = "Jumlah Kasus"
  ) +
  theme_minimal()

Insight

Terlihat kecenderungan bahwa kota dengan AQI lebih tinggi memiliki jumlah kasus yang lebih tinggi.

Bar Chart Jumlah Penduduk per Kota

ggplot(data,
       aes(x = Kota,
           y = Penduduk,
           fill = Provinsi)) +
  geom_bar(stat = "identity") +
  labs(
    title = "Jumlah Penduduk per Kota",
    x = "Kota",
    y = "Jumlah Penduduk"
  ) +
  theme_minimal() +
  theme(axis.text.x =
          element_text(angle = 45,
                       hjust = 1))

Insight

Kota besar seperti Jakarta memiliki jumlah penduduk yang jauh lebih tinggi dibanding kota lain.

Boxplot AQI Berdasarkan Provinsi

ggplot(data,
       aes(x = Provinsi,
           y = AQI,
           fill = Provinsi)) +
  geom_boxplot() +
  labs(
    title = "Distribusi AQI per Provinsi",
    x = "Provinsi",
    y = "AQI"
  ) +
  theme_minimal() +
  theme(axis.text.x =
          element_text(angle = 45,
                       hjust = 1))

Insight

Terdapat variasi AQI antar provinsi dan beberapa provinsi memiliki kualitas udara lebih buruk dibanding yang lain.

Kesimpulan

Berdasarkan visualisasi, terdapat kecenderungan hubungan positif antara kualitas udara buruk (AQI tinggi) dan jumlah kasus penyakit pernapasan.