##Overview Projek Proyek ini bertujuan untuk mengembangkan sistem yang dapat mengklasifikasikan bahaya gempa dan potensi tsunami berdasarkan magnitudo dan kedalaman gempa. Dengan memanfaatkan data historis gempa yang terdiri dari berbagai parameter, proyek ini ingin memberikan pemahaman yang lebih baik tentang seberapa besar risiko yang ditimbulkan oleh kejadian gempa tertentu dan apakah ada potensi tsunami yang perlu diwaspadai.

Dataset yang digunakan dalam proyek ini berisi informasi mengenai kejadian gempa bumi yang tercatat selama tahun 2024, dengan data yang mencakup beberapa atribut utama yang berkaitan dengan karakteristik gempa. Dataset ini terdiri dari beberapa file CSV yang masing-masing mewakili data gempa yang tercatat di setiap bulan (Januari hingga Oktober 2024). Setelah data digabungkan, dataset tersebut memiliki beberapa kolom yang relevan untuk analisis.

# Memuat library yang dibutuhkan
library(ggplot2)
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.4.2
## 
## 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(leaflet)
## Warning: package 'leaflet' was built under R version 4.4.2
# Membaca dan menggabungkan data gempa
gempa_data <- rbind(
  read.csv("DataGempaJan.csv"),
  read.csv("DataGempaFeb.csv"),
  read.csv("DataGempaMar.csv"),
  read.csv("DataGempaApr.csv"),
  read.csv("DataGempaMei.csv"),
  read.csv("DataGempaJun.csv"),
  read.csv("DataGempaJul.csv"),
  read.csv("DataGempaAgu.csv"),
  read.csv("DataGempaSep.csv"),
  read.csv("DataGempaOkt.csv")
)

# Memastikan data numerik
gempa_data$Longitude <- as.numeric(gempa_data$Longitude)
gempa_data$Latitude <- as.numeric(gempa_data$Latitude)
gempa_data$Magnitude <- as.numeric(gempa_data$Magnitude)
gempa_data$Depth..km. <- as.numeric(gempa_data$Depth..km.)

# Menghapus data yang tidak lengkap
gempa_data <- gempa_data %>%
  filter(!is.na(Longitude) & !is.na(Latitude) & !is.na(Magnitude) & !is.na(Depth..km.))

# Menambahkan kolom kategori Gempa Bahaya
gempa_data$Gempa_Bahaya <- case_when(
  gempa_data$Magnitude < 4 ~ "Minor",
  gempa_data$Magnitude >= 4 & gempa_data$Magnitude < 5 ~ "Ringan",
  gempa_data$Magnitude >= 5 & gempa_data$Magnitude < 6 ~ "Sedang",
  gempa_data$Magnitude >= 6 & gempa_data$Magnitude < 7 ~ "Besar",
  gempa_data$Magnitude >= 7 ~ "Sangat Besar"
)

# Mengubah kolom kategori menjadi faktor
gempa_data$Gempa_Bahaya <- factor(gempa_data$Gempa_Bahaya, 
                                   levels = c("Minor", "Ringan", "Sedang", "Besar", "Sangat Besar"))

head(gempa_data,10)
##    No    Event.ID                   Date.time   Latitude Longitude Magnitude
## 1   1 bmg2024ccub 2024-01-30T23:28:15.668126Z -10.030619 119.73556  2.494844
## 2   2 bmg2024ccth 2024-01-30T23:04:58.036117Z  -8.555342 118.38868  2.900801
## 3   3 bmg2024ccsx  2024-01-30T22:53:59.25255Z  -8.807531 110.50064  2.839103
## 4   4 bmg2024ccss 2024-01-30T22:47:35.839954Z  -3.933587 133.70645  3.688130
## 5   5 bmg2024ccsf 2024-01-30T22:32:20.809409Z   1.491829  99.62809  2.887957
## 6   6 bmg2024ccrq 2024-01-30T22:14:56.086548Z  -4.575443 129.72284  4.520025
## 7   7 bmg2024ccoi 2024-01-30T20:34:33.923011Z  -3.258631 122.35004  3.110292
## 8   8 bmg2024ccog 2024-01-30T20:32:13.062021Z  -1.354332 120.39992  2.179322
## 9   9 bmg2024ccod 2024-01-30T20:28:38.575715Z  -8.255270 121.18614  2.730692
## 10 10 bmg2024ccnu 2024-01-30T20:19:09.896068Z -10.043780 118.94487  3.804732
##    Mag.Type Depth..km. Phase.Count Azimuth.Gap                     Location
## 1       MLv         10          32   194.12714      Sumba Region, Indonesia
## 2       MLv        114          59   106.12870    Sumbawa Region, Indonesia
## 3       MLv         17          41   251.33007              Java, Indonesia
## 4       MLv         10          14   132.20873 West Papua Region, Indonesia
## 5       MLv        165          35   118.10917  Northern Sumatra, Indonesia
## 6        mb        184          41    77.65479                    Banda Sea
## 7       MLv          5          30   120.61501          Sulawesi, Indonesia
## 8       MLv          5          30    60.25988          Sulawesi, Indonesia
## 9       MLv         10          33   191.58357     Flores Region, Indonesia
## 10        M         11          54   190.56495  South of Sumbawa, Indonesia
##    Agency Gempa_Bahaya
## 1    BMKG        Minor
## 2    BMKG        Minor
## 3    BMKG        Minor
## 4    BMKG        Minor
## 5    BMKG        Minor
## 6    BMKG       Ringan
## 7    BMKG        Minor
## 8    BMKG        Minor
## 9    BMKG        Minor
## 10   BMKG        Minor

#Penjelasan Kolom-Kolom Dalam Dataset: No: Nomor urut kejadian gempa dalanm dataser. (Tipe: Numerik) Event ID: Identifikasi unik untuk tiap gempa. (Tipe: String) Date time: Tanggal dan waktu terjadinya gempa dalam format UTC. (Tipe: Date-Time) Latitude: Koordinat lintang tempat gempa terjadi. (Tipe: Numerik) Longitude: Koordinat bujur tempat gempa terjadi. (Tipe: Numerik) Location: Nama atau deskripsi lokasi gempa. (Tipe: Kategorikal) Magnitude: Kekuatan gempa berdasarkan skala Richter. (Tipe: Numerik) Mag Type: Jenis magnitudo yang digunakan untuk mengukur gempa. (Tipe: Kategorikal) Depth..km.: Kedalaman gempa di bawah permukaan bumi dalam kilometer. (Tipe: Numerik) Phase.Count: Jumlah fase pengukuran gempa yang tercatat. (Tipe: Numerik) Azimuth Gap: Rentang sudut azimuthal terbesar untuk menentukan lokasi gempa. (Tipe: Numerik) Gempa_Bahaya: Kategori bahaya gempa berdasarkan magnitudo. (Tipe: Kategorikal)

# Visualisasi Distribusi Magnitude Gempa
ggplot(gempa_data, aes(x = Magnitude)) +
  geom_histogram(binwidth = 0.2, fill = "skyblue", color = "black") +
  theme_minimal() +
  labs(title = "Distribusi Magnitudo Gempa", x = "Magnitude", y = "Frekuensi") +
  theme(axis.text = element_text(size = 12), axis.title = element_text(size = 14)) 

#Distribusi Magnitudo Gempa Dari visualisasi distribusi frekuensi magnitudo gempa yang ditampilkan, kita dapat melihat bahwa sebagian besar gempa yang tercatat pada rentang magnitudo 2 sampai 5. Gempa dengan magnitudo ini, yang dikategorikan sebagai gempa minor atau ringan, terjadi lebih sering dibandingkan dengan gempa yang lebih besar.

Jumlah frekuensi menurun secara signifikan pada gempa dengan magnitudo lebih tinggi (di atas 6), yang menunjukkan bahwa gempa besar dan sangat besar (kategori “Besar” dan “Sangat Besar”) lebih jarang terjadi. Dengan kata lain, meskipun gempa kecil atau moderat terjadi dengan frekuensi yang lebih tinggi, gempa dengan magnitudo besar atau sangat besar masih tetap merupakan peristiwa yang jarang, namun memiliki dampak yang lebih besar dan berisiko lebih tinggi.

Ini memberikan insight bahwa meskipun kita sering mengalami gempa minor, kita tetap harus mempersiapkan mitigasi untuk gempa besar atau sangat besar, karena meskipun jarang, dampaknya dapat sangat merusak. Perencanaan mitigasi bencana harus memperhitungkan kedua jenis gempa ini.

# Visualisasi Distribusi Kedalaman Gempa
ggplot(gempa_data, aes(x = Depth..km.)) +
  geom_histogram(binwidth = 5, fill = "orange", color = "black") +
  theme_minimal() +
  labs(title = "Distribusi Kedalaman Gempa", x = "Depth (km)", y = "Frekuensi") +
  theme(axis.text = element_text(size = 12), axis.title = element_text(size = 14))

#Distribusi Frekuensi Kedalaman Gempa Grafik histogram ini menunjukkan distribusi kedalaman gempa di Indonesia sepanjang tahun 2024, dengan sumbu x mewakili kedalaman gempa dalam kilometer (km) dan sumbu y menunjukkan frekuensi atau jumlah kejadian gempa pada kedalaman tertentu. Dari visualisasi ini, kita dapat melihat bahwa sebagian besar gempa yang tercatat terjadi pada kedalaman kurang dari 200 km, dengan frekuensi puncaknya berada pada kedalaman antara 0 hingga 100 km. Ini menunjukkan bahwa gempa-gempa di Indonesia cenderung terjadi pada kedalaman yang lebih dangkal.

Gempa yang terjadi pada kedalaman dangkal, terutama yang kurang dari 100 km, umumnya memiliki potensi dampak yang lebih besar di permukaan, karena getaran gempa lebih kuat terasa di permukaan meskipun magnitudo gempa tidak terlalu besar. Gempa-gempa ini dapat lebih merusak infrastruktur dan berisiko tinggi terhadap keselamatan masyarakat. Oleh karena itu, untuk wilayah yang rawan gempa dangkal, perhatian lebih pada perencanaan pembangunan yang tahan gempa dan sistem peringatan dini menjadi sangat penting.

Di sisi lain, gempa yang terjadi pada kedalaman lebih dari 200 km cenderung lebih jarang terjadi, dan meskipun memiliki magnitudo yang tinggi, dampaknya terhadap permukaan seringkali lebih kecil. Hal ini karena gelombang seismik yang dihasilkan dari gempa dalam lebih dalam cenderung lebih menyebar dan kehilangan energi sebelum mencapai permukaan. Namun, meskipun frekuensinya lebih rendah, gempa-gempa dalam ini tidak boleh diabaikan begitu saja, karena gempa dengan magnitudo besar tetap dapat terjadi dan memiliki potensi menyebabkan tsunami atau pergeseran tektonik besar.

# Visualisasi Relasi antara Magnitude dan Kedalaman Gempa
ggplot(gempa_data, aes(x = Depth..km., y = Magnitude)) +
  geom_point(alpha = 0.6, color = "blue") +
  theme_minimal() +
  labs(title = "Relasi antara Magnitudo dan Kedalaman Gempa", x = "Depth (km)", y = "Magnitude") +
  theme(axis.text = element_text(size = 12), axis.title = element_text(size = 14))

# **Analisis Relasi Magnitude dan Kedalaman**:
# Grafik ini menunjukkan bahwa tidak ada pola jelas antara kedalaman gempa dan magnitudo. 
# Gempa dengan kedalaman rendah dan tinggi muncul dengan berbagai magnitudo, menunjukkan bahwa kedalaman tidak selalu berhubungan langsung dengan kekuatan gempa.

#Relasi Antara Magnitudo Dan Kedalaman Gempa Berdasarkan visualisasi hubungan antara magnitudo dan kedalaman gempa, dapat dilihat bahwa kedalaman gempa tidak menunjukkan pola yang jelas terkait dengan kekuatan gempa (magnitudo). Dari grafik tersebut, terlihat bahwa gempa dengan kedalaman rendah (kurang dari 100 km) dan kedalaman tinggi (lebih dari 300 km) dapat memiliki magnitudo yang bervariasi, baik yang kecil (misalnya, di bawah 5) hingga yang lebih besar (di atas 7).

Ini menunjukkan bahwa kedalaman gempa tidak selalu berhubungan langsung dengan kekuatan gempa. Sebagai contoh, meskipun gempa dangkal sering kali dianggap lebih berbahaya, beberapa gempa dengan kedalaman besar (lebih dari 600 km) juga dapat memiliki magnitudo yang besar, yang menunjukkan bahwa kedalaman bukanlah satu-satunya faktor penentu dalam kekuatan gempa. Oleh karena itu, analisis lebih lanjut perlu dilakukan untuk memahami faktor-faktor lain yang mempengaruhi kekuatan gempa, seperti lokasi geografis, struktur tektonik, dan faktor geologis lainnya.

# Menghitung jumlah tiap kategori Gempa Bahaya
gempa_bahaya_count <- gempa_data %>%
  group_by(Gempa_Bahaya) %>%
  summarise(count = n()) %>%
  mutate(percentage = count / sum(count) * 100)

# Membuat Pie Chart dengan Persentase di dalam Pie dan di Legenda
ggplot(gempa_bahaya_count, aes(x = "", y = count, fill = Gempa_Bahaya)) +
  geom_bar(stat = "identity", width = 1, color = "white") +  # Memberikan border putih
  coord_polar(theta = "y") +
  theme_void() +  # Menghapus background dan gridlines
  labs(title = "Distribusi Kategori Bahaya Gempa yang Terjadi",
       fill = "Presentase Kategori Gempa") +  # Mengubah judul legenda
  theme(
    legend.title = element_text(size = 12), 
    legend.text = element_text(size = 10),
    plot.title = element_text(hjust = 0.5, size = 16, face = "bold")
  ) +
  scale_fill_manual(
    values = c("#FF6347", "#FFD700", "#32CD32", "#1E90FF", "#8A2BE2"),
    labels = paste0(gempa_bahaya_count$Gempa_Bahaya, ": ", gempa_bahaya_count$count, " Gempa (", round(gempa_bahaya_count$percentage, 1), "%)")
  )  +  # Menampilkan jumlah dan persentase pada legenda
  geom_text(aes(label = paste0(round(percentage, 1), "%")), 
            position = position_stack(vjust = 0.5), size = 5, color = "white")  # Persentase di dalam pie chart

#Pie Chart Distribusi Kategori Gempa Berdasarkan Klasifikasi Magnitude pie chart ini memberikan informasi tentang proporsi setiap kategori gempa dalam dataset, dengan label yang menunjukkan persentase gempa dalam setiap kategori Minor : Gempa dengan magnitudo keci, paling sering terjadi (Magnitudo < 4) Ringan : Gempa dengan magnitudo sedikit lebih besar, masih sering terjadi walaupun lebih sedikit dibanding gempa minor.(Magnitudo antara 4 hingga 5) Sedang : Gempa dengan magnitude menengah, jarang terjadi(Magnitudo antara 5 hingga 6) Besar : Gempa dengan magnitude besar, sangat jarang terjadi(Magnitudo antara 6 hingga 7) Sangat Besar : Gempa dengan magnitude sangat besar yang sangat jarang terjadi dimana tahun ini hanya tercatat 1 kali saja (Magnitudo >= 7)

Penanggulangan Berdasarkan Kategori Gempa

Karena gempa dengan kategori Minor paling sering terjadi (4969 kejadian), walaupun gempanya tidak begitu terasa, tetap harus ada langkah mitigasi yang perlu diambil seperti meningkatkan kesadaran masyarakat tentang bahaya gempa dan memperkuat pemantauan gempa secara rutin. Gempa dengan kategori Ringan (1294 kejadian) masih sering terjadi walaupun lebih sedikit dari gempa minot tetapi dampaknya lebih besar, sehingga penguatan konstruksi bangunan dan peningkatan protokol evakuasi untuk masyarakat sangat penting. Untuk gempa Sedang (118 kejadian), yang jarang terjadi namun berpotensi lebih merusak, penting untuk memperkuat infrastruktur publik dan perumahan serta melakukan simulasi evakuasi secara berkala, agar masyarakat lebih siap jika gempa dengan kekuatan lebih besar terjadi.

Walaupun gempa besar hanya terjadi 8 kali dan gempa dengan magnitudo sangat besar tercatat hanya 1 kali, kita tetap harus siap dengan langkah mitigasi yang lebih intensif untuk kedua kategori tersebut. Penerapan sistem peringatan dini yang efisien, penguatan infrastruktur tahan gempa, serta rencana tanggap darurat skala besar sangat diperlukan untuk mengurangi dampak yang ditimbulkan jika gempa besar atau sangat besar terjadi. Meskipun jarang, gempa dengan magnitudo besar dan sangat besar dapat menimbulkan kerusakan yang luas dan berisiko tinggi terhadap keselamatan masyarakat, sehingga perencanaan mitigasi harus tetap ada untuk menghadapi kemungkinan tersebut.

# Memastikan data lokasi memiliki format yang sesuai
# Persebaran tiap latitude dan longitude, menampilkan magnitude dan depth asli

data_points <- gempa_data %>%
  filter(!is.na(Latitude) & !is.na(Longitude) & !is.na(Magnitude) & !is.na(Depth..km.)) %>%
  select(Latitude, Longitude, Magnitude, Depth = Depth..km.)

# Membuat peta interaktif menggunakan leaflet
leaflet_map <- leaflet(data_points) %>%
  addTiles() %>%
  addCircleMarkers(
    lng = ~Longitude,
    lat = ~Latitude,
    radius = ~Magnitude * 2,  # Ukuran marker berdasarkan magnitudo
    color = ~ifelse(Magnitude < 4, "#B0E57C", ifelse(Magnitude < 5, "#FFD700", ifelse(Magnitude < 6, "#FF6347", ifelse(Magnitude < 7, "#FF4500", "#8B0000")))),
    popup = ~paste(
      "Latitude:", Latitude, "<br>",
      "Longitude:", Longitude, "<br>",
      "Magnitude:", Magnitude, "<br>",
      "Depth:", Depth, "km"
    ),
    stroke = FALSE, fillOpacity = 0.7
  ) %>%
  addLegend(
    position = "topright",
    colors = c("#B0E57C", "#FFD700", "#FF6347", "#FF4500", "#8B0000"),
    labels = c("< 4", "4-5", "5-6", "6-7", ">= 7"),
    title = "Magnitude"
  )

# Menampilkan peta
leaflet_map

#Peta Persebaran Gempa Di Indonesia Peta persebaran gempa di Indonesia yang dihasilkan menggunakan leaflet memberikan wawasan yang berguna dalam analisis eksplorasi data. Peta ini menunjukkan distribusi lokasi gempa berdasarkan magnitudo, dengan marker yang diberi warna berbeda untuk setiap kategori magnitudo gempa. Gempa dengan magnitudo kecil (kurang dari 4) ditandai dengan warna hijau muda, sementara gempa dengan magnitudo sangat besar (>= 7) diberi warna merah tua. Ini memudahkan identifikasi wilayah dengan aktivitas seismik tinggi maupun rendah.

Dari peta ini, terlihat bahwa beberapa daerah di Indonesia, terutama yang berada di sepanjang Cincin Api Pasifik, seperti Sumatera, Jawa, Bali, Sulawesi dan daerah Papua, sering mengalami gempa. Daerah-daerah ini menunjukkan konsentrasi gempa yang lebih tinggi, menandakan bahwa wilayah tersebut memiliki risiko gempa yang lebih besar dan perlu perhatian lebih dalam hal mitigasi bencana. Selain itu, peta ini juga memberikan informasi penting terkait kedalaman gempa ketika ditekan yang dapat mengindikasikan potensi tsunami, terutama pada gempa dengan kedalaman dangkal yang terjadi di daerah dekat pantai, seperti di sekitar Sumatera, Jawa Barat, dan Sulawesi.

Di sisi lain, wilayah Borneo (Kalimantan) menunjukkan frekuensi gempa yang sangat rendah. Hal ini mengindikasikan bahwa Borneo relatif lebih aman dari aktivitas seismik dibandingkan dengan pulau-pulau lain di Indonesia. Meskipun demikian, meskipun jarang terjadi gempa di Borneo, bukan berarti wilayah ini bebas dari risiko. Perhatian terhadap potensi gempa yang lebih besar tetap diperlukan, meskipun frekuensinya jauh lebih rendah dibandingkan dengan wilayah lain seperti Sumatera dan Jawa.

gempadata_count <- gempa_data %>% count(Location) %>% arrange(desc(n))
# Membuat bar plot horizontal dan mengurutkan dari yang terbanyak
ggplot(gempadata_count, aes(x = n, y = reorder(Location, n))) +
  geom_bar(stat = "identity", fill = "skyblue") +
  labs(title = "Jumlah Gempa (Region)", x = "Jumlah", y = "Lokasi") + 
  theme_minimal()

#Region (Daerah) Berdasarkan Jumlah Gempa Barchart yang ditampilkan menunjukkan distribusi jumlah gempa di berbagai wilayah Indonesia, memberikan gambaran mengenai sebaran aktivitas seismik di tanah air. Dari grafik ini, dapat terlihat bahwa Sulawesi dan Jawa merupakan daerah dengan jumlah gempa terbanyak, menandakan bahwa kedua pulau ini memiliki aktivitas seismik yang tinggi dan rentan terhadap gempa. Hal ini penting untuk diperhatikan, terutama di Jawa, yang memiliki populasi padat dan banyak infrastruktur, sehingga upaya mitigasi gempa seperti pembangunan gedung tahan gempa dan sistem peringatan dini harus lebih diperkuat. Sulawesi juga menunjukkan jumlah gempa yang signifikan, menandakan perlunya kesiapsiagaan bencana yang lebih baik di daerah ini.

Di sisi lain, wilayah Sumatera dan Bali memiliki frekuensi gempa yang moderat, meskipun tidak sebanyak di Jawa dan Sulawesi, namun kedekatannya dengan zona subduksi menjadikannya masih rawan terhadap gempa besar. Oleh karena itu, meskipun frekuensinya lebih rendah, perhatian terhadap penguatan infrastruktur dan protokol evakuasi tetap perlu diterapkan. Sedangkan, wilayah Kalimantan atau Borneo menunjukkan jumlah gempa yang sangat rendah, menandakan bahwa aktivitas seismik di daerah ini relatif aman. Meski gempa di Borneo jarang terjadi, tetap diperlukan kesiapsiagaan dan perencanaan mitigasi bencana mengingat gempa besar dapat terjadi di luar prediksi. Secara keseluruhan, wilayah dengan aktivitas seismik tinggi seperti Jawa dan Sulawesi memerlukan perhatian lebih dalam hal mitigasi gempa, sedangkan wilayah dengan aktivitas seismik rendah seperti Kalimantan tetap harus siap menghadapi kemungkinan gempa besar yang jarang terjadi.