Eksplorasi Data Lingkungan

Curah Hujan Bulanan Wilayah Tangerang Selatan & Serang (Stasiun BMKG) Tahun 2023–2024

1. Pendahuluan

1.1 Studi Kasus

Curah hujan merupakan salah satu unsur iklim yang penting dalam kajian lingkungan karena berpengaruh terhadap ketersediaan air, potensi banjir, serta kondisi ekosistem. Data curah hujan dapat digunakan untuk mengetahui pola perubahan kondisi lingkungan berdasarkan waktu dan lokasi pengamatan.

Analisis ini menggunakan data curah hujan bulanan dari beberapa stasiun BMKG wilayah Tangerang dan Serang pada periode Januari 2023 hingga Desember 2024. Data dianalisis menggunakan pendekatan statistik deskriptif, visualisasi, analisis pola waktu, serta identifikasi nilai ekstrem.


2. Persiapan Data

2.1 Memuat Package

library(readxl)
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
library(tidyr)
library(ggplot2)
library(knitr)
library(forecast)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo

2.2 Import Data

data <- read_excel("~/Documents/intan/SL/TUGAS_SL_2.xlsx")

head(data)
## # A tibble: 6 × 6
##   Tahun Bulan    `Stasiun Klimatologi Tangerang Selatan` Stasiun Meteorologi S…¹
##   <dbl> <chr>    <chr>                                   <chr>                  
## 1  2024 Januari  430.5                                   368                    
## 2  2024 Februari 212.4                                   197.3                  
## 3  2024 Maret    447                                     310.5                  
## 4  2024 April    377.4                                   163.7                  
## 5  2024 Mei      57                                      305.2                  
## 6  2024 Juni     133.6                                   129.5                  
## # ℹ abbreviated name: ¹​`Stasiun Meteorologi Serang`
## # ℹ 2 more variables: `Stasiun Meteorologi Curug` <chr>,
## #   `Stasiun Geofisika Tangerang` <chr>
str(data)
## tibble [24 × 6] (S3: tbl_df/tbl/data.frame)
##  $ Tahun                                : num [1:24] 2024 2024 2024 2024 2024 ...
##  $ Bulan                                : chr [1:24] "Januari" "Februari" "Maret" "April" ...
##  $ Stasiun Klimatologi Tangerang Selatan: chr [1:24] "430.5" "212.4" "447" "377.4" ...
##  $ Stasiun Meteorologi Serang           : chr [1:24] "368" "197.3" "310.5" "163.7" ...
##  $ Stasiun Meteorologi Curug            : chr [1:24] "322.6" "191" "149.5" "483.6" ...
##  $ Stasiun Geofisika Tangerang          : chr [1:24] "309.7" "160.6" "320.8" "337.3" ...

3. Struktur Data

summary(data)
##      Tahun         Bulan           Stasiun Klimatologi Tangerang Selatan
##  Min.   :2023   Length:24          Length:24                            
##  1st Qu.:2023   Class :character   Class :character                     
##  Median :2024   Mode  :character   Mode  :character                     
##  Mean   :2024                                                           
##  3rd Qu.:2024                                                           
##  Max.   :2024                                                           
##  Stasiun Meteorologi Serang Stasiun Meteorologi Curug
##  Length:24                  Length:24                
##  Class :character           Class :character         
##  Mode  :character           Mode  :character         
##                                                      
##                                                      
##                                                      
##  Stasiun Geofisika Tangerang
##  Length:24                  
##  Class :character           
##  Mode  :character           
##                             
##                             
## 

4. Transformasi Data

Mengubah data menjadi format panjang agar mudah dilakukan analisis dan visualisasi.

data_long <- data %>%
  select(-Tahun) %>%
  pivot_longer(
    cols = -Bulan,
    names_to = "Stasiun",
    values_to = "Curah_Hujan"
  ) %>%
  mutate(
    Curah_Hujan = as.numeric(Curah_Hujan)
  ) %>%
  filter(!is.na(Curah_Hujan))
## Warning: There was 1 warning in `mutate()`.
## ℹ In argument: `Curah_Hujan = as.numeric(Curah_Hujan)`.
## Caused by warning:
## ! NAs introduced by coercion
head(data_long)
## # A tibble: 6 × 3
##   Bulan    Stasiun                               Curah_Hujan
##   <chr>    <chr>                                       <dbl>
## 1 Januari  Stasiun Klimatologi Tangerang Selatan        430.
## 2 Januari  Stasiun Meteorologi Serang                   368 
## 3 Januari  Stasiun Meteorologi Curug                    323.
## 4 Januari  Stasiun Geofisika Tangerang                  310.
## 5 Februari Stasiun Klimatologi Tangerang Selatan        212.
## 6 Februari Stasiun Meteorologi Serang                   197.
str(data_long)
## tibble [93 × 3] (S3: tbl_df/tbl/data.frame)
##  $ Bulan      : chr [1:93] "Januari" "Januari" "Januari" "Januari" ...
##  $ Stasiun    : chr [1:93] "Stasiun Klimatologi Tangerang Selatan" "Stasiun Meteorologi Serang" "Stasiun Meteorologi Curug" "Stasiun Geofisika Tangerang" ...
##  $ Curah_Hujan: num [1:93] 430 368 323 310 212 ...

5. Statistik Deskriptif

5.1 Nilai Rata-rata Curah Hujan

statistik <- data_long %>%
  group_by(Stasiun) %>%
  summarise(
    Rata_rata = mean(Curah_Hujan, na.rm = TRUE),
    Minimum = min(Curah_Hujan, na.rm = TRUE),
    Maksimum = max(Curah_Hujan, na.rm = TRUE),
    Standar_deviasi = sd(Curah_Hujan, na.rm = TRUE)
  )

kable(statistik)
Stasiun Rata_rata Minimum Maksimum Standar_deviasi
Stasiun Geofisika Tangerang 148.6500 2.0 396.4 115.2897
Stasiun Klimatologi Tangerang Selatan 182.1542 3.6 464.3 149.9027
Stasiun Meteorologi Curug 192.6652 12.9 613.0 138.9975
Stasiun Meteorologi Serang 163.4318 0.5 368.0 108.9175

6. Visualisasi Data

6.1 Histogram Curah Hujan

ggplot(data_long, aes(x = Curah_Hujan)) +
  geom_histogram(
    bins = 12,
    fill = "skyblue",
    color = "black"
  ) +
  labs(
    title = "Distribusi Curah Hujan Bulanan",
    x = "Curah Hujan (mm)",
    y = "Frekuensi"
  ) +
  theme_minimal()


6.2 Boxplot Curah Hujan Setiap Stasiun

ggplot(data_long,
       aes(
         x = Stasiun,
         y = Curah_Hujan
       )) +
  geom_boxplot(fill="lightgreen") +
  theme_minimal() +
  theme(
    axis.text.x = element_text(
      angle = 45,
      hjust = 1
    )
  ) +
  labs(
    title="Boxplot Curah Hujan Berdasarkan Stasiun",
    x="Stasiun",
    y="Curah Hujan (mm)"
  )


7. Analisis Deret Waktu

data_time <- data %>%
  select(-Tahun) %>%
  pivot_longer(
    cols = -Bulan,
    names_to = "Stasiun",
    values_to = "Curah_Hujan"
  ) %>%
  mutate(
    Curah_Hujan = as.numeric(Curah_Hujan)
  ) %>%
  filter(!is.na(Curah_Hujan))
## Warning: There was 1 warning in `mutate()`.
## ℹ In argument: `Curah_Hujan = as.numeric(Curah_Hujan)`.
## Caused by warning:
## ! NAs introduced by coercion
head(data_time)
## # A tibble: 6 × 3
##   Bulan    Stasiun                               Curah_Hujan
##   <chr>    <chr>                                       <dbl>
## 1 Januari  Stasiun Klimatologi Tangerang Selatan        430.
## 2 Januari  Stasiun Meteorologi Serang                   368 
## 3 Januari  Stasiun Meteorologi Curug                    323.
## 4 Januari  Stasiun Geofisika Tangerang                  310.
## 5 Februari Stasiun Klimatologi Tangerang Selatan        212.
## 6 Februari Stasiun Meteorologi Serang                   197.

8. Deteksi Outlier

Menggunakan metode Interquartile Range (IQR).

outlier <- data_long %>%
  group_by(Stasiun) %>%
  mutate(
    Q1 = quantile(Curah_Hujan,0.25,na.rm=TRUE),
    Q3 = quantile(Curah_Hujan,0.75,na.rm=TRUE),
    IQR = Q3-Q1
  ) %>%
  filter(
    Curah_Hujan < Q1-1.5*IQR |
    Curah_Hujan > Q3+1.5*IQR
  )

kable(outlier)
Bulan Stasiun Curah_Hujan Q1 Q3 IQR
April Stasiun Meteorologi Curug 483.6 95.65 234.750 139.100
November Stasiun Meteorologi Curug 613.0 95.65 234.750 139.100
Februari Stasiun Geofisika Tangerang 396.4 75.85 198.075 122.225

9. Autokorelasi Temporal

Analisis dilakukan untuk melihat pola hubungan curah hujan berdasarkan waktu.

contoh_ts <- ts(
  data_long$Curah_Hujan,
  frequency = 12
)

acf(
  contoh_ts,
  main="Autokorelasi Curah Hujan Bulanan"
)


10. Kesimpulan

Berdasarkan hasil eksplorasi data curah hujan wilayah Tangerang Selatan dan Serang tahun 2023–2024 dapat diketahui bahwa curah hujan memiliki variasi antar bulan maupun antar stasiun pengamatan.

Analisis statistik menunjukkan adanya perbedaan nilai rata-rata, nilai minimum, maksimum, dan tingkat penyebaran curah hujan pada masing-masing stasiun. Visualisasi histogram dan boxplot menunjukkan distribusi serta kemungkinan adanya nilai ekstrem.

Analisis deret waktu memperlihatkan perubahan curah hujan sepanjang periode pengamatan, sedangkan analisis autokorelasi digunakan untuk melihat adanya pola hubungan berdasarkan waktu.