Visualisasi Data Numerik dengan Dataset Global Earthquake-Tsunami Risk Assesment Dataset

Global Earthquake-Tsunami Risk Assesssment Dataset

Global Earthquake-Tsunami Risk Assesment Dataset merupakan data yang berisi karakteristik seismik dan indikator potensi tsunami dari 792 gempa bumi signifikan yang tercatat pada tahun 2001 hingga tahun 2022. Dataset tersebut digunakan untuk prediksi resiko gempa bumi, stunami, dan bahaya seismik.

Dalam dataset tersebut terdapat beberapa variabel, yaitu :

  1. Magnitudo (ukuran kekuatan energi gempa bumi)
  2. CDI (Community Determined Intensity)
  3. MMI (Modified Mercalli Intensity)
  4. SIG (Significance)
  5. NST (Number of Station)
  6. DMIN (Distance Minimum)
  7. GAP (Azimuthal Gap)
  8. Depth (Kedalaman gempa)
  9. Latitude (garis lintang lokasi gempa)
  10. Longitude (garis bujur lokasi gempa)

dataset tersebut diperoleh dari website Kaggle

https://www.kaggle.com/datasets/ahmeduzaki/global-earthquake-tsunami-risk-assessment-dataset

Alasan menggunakan dataset tersebut karena data yang tersaji cukup lengkap berdasarkan tahun 2001 hingga 2022 yang terkait dengan bencana alam gempa bumi, tsunami, dan seismik.

Data Global Earthquake-Tsunami Risk Assesment Dataset berisikan 10 variabel sebgai berikut :

library(readxl)
read <- read_xlsx("D:/earthquake_data_tsunami.xlsx")
DT::datatable(read)

Histogram Plot Community Determined Intensity

library(ggplot2)
ggplot(data = read, mapping = aes(x = cdi)) +
  geom_histogram(bins = 10, color = "blue", fill = "skyblue") +
  labs(x = "cdi", y = "Frequensi")

Diagram histogram tersebut menggambarkan frequensi atau jumlah kumulatif dari variabel Community Determined Intensity (CDI). Pada digaram batang di sekitar 0 sangat tinggi dapat menandakan banyak masyarakat yang tidak memiliki laporan intensitas terkait gempa yang terjadi.

Sebagian batang menyebar di sekitar angka 5 sampai 8 yang merupakan nilai tengah dari diagram, dapat menandakan laporan yang bersumber dari masyarakat gempa yang dirasakan memiliki rentang sedang hingga cukup kuat. data tidak simetris yang bisa dipicu oleh lonjakan disekitar angka 0.

Histogram Plot Modified Mercalli Intensity

ggplot(data = read, mapping = aes(x = mmi)) +
  geom_histogram(bins = 8, color = "black", fill = "grey") +
  labs(x = "mmi", y = "Frequensi")

Histogram tersebut menggambarkan jumlah frequensi atau jumlah kumulatif dari variabel Modified Mercalli Intensity (MMI). Batang histogram berdistribusi dari angka 1 hingga 10, namun terpusat pada angka 5 sampai 7 yang mengindikasikan bahwa sebagian bessar gempa yang terjadi memiliki intensitas sedang dan gempa yang sangat kuat tercatat hanya sedikit.

Bentuk distribusi mendekatinormal dan tidak terdapat lonjakan yang nilai yang ekstrim, sehingga pengukuran ilmiah lebih konsisten.

Density Plot Number of Station

library(ggplot2)
library(scales)
## Warning: package 'scales' was built under R version 4.5.2
ggplot(data = read, mapping = aes(x = nst)) +
  geom_density(fill = "navy", alpha = 0.7) +
  scale_x_continuous(labels = comma) +
  scale_y_continuous(labels = comma) +
  labs(x = "Number of Station")

Desiti plot tersebut menggambarkan data pada vaariabel Number of Station dengan satuan nst,berdasarkan density plot di atas data terlihat berdistribusi dengan lonjakan pada entang 0 dan kurang dari 250 yang dapat mengindikasikan gempa yang tercatat. Plot terlihat hampir berdistribusi normal pada angka 250 sampai 750.

Density Plot Significance

library(ggplot2)
library(ggridges)
## Warning: package 'ggridges' was built under R version 4.5.2
ggplot(data = read, mapping = aes(x = sig)) +
  geom_density(alpha = 0.5, fill = "orange") +
  labs(x = "SIG")

Density plot tersebut menggambarkan variabel Significance (sig), pada plot terlihat lonjakan pada rentang 0 sampai 1000, dapat menandakan bahwa jumlah gempa serata dampak yang dihasilkan signifikan pada nilai tersebut.

Boxplot Latitud

library(ggplot2)
ggplot(data = read, mapping = aes(x = latitude)) +
  geom_boxplot(color = "red", fill = "white")

Boxplot tersebut menggambarkan data dari variabel Latitude. Terdapat banyak outlier dan kotak yang merepresentasikan nilai quantile 1 & 3 serta median berdistribusi di sekitar angka 0e+00 yang menunjukan mayoritas observasi berkumpul di area khatulistiwa.

Boxplot Longitude

library(ggplot2)
ggplot(data = read, mapping = aes(x = longitude)) +
  geom_boxplot(color = "black", fill = "darkgrey")

Boxplot tersebut menggambarkan data pada variabel Longitude. Pada Plot terlihat banyak data outlier di sekitar nilai negatif, sedangkan kotak yang merepresentasikan nilai quantile 1 & 3 serta median berdistribusi sangat sempit di sekitar nilai 0 yang dapat mengindikasikan bahwa mayoritas data berada di sekitar garis Meridian Utama (Greenwich).

Violin Plot Magnitude

Violin plot digunakan untuk menggambarkan distribusi data. Grafik ini merupakan gabungan antara density plot dan boxplot, sehingga bisa menunjukkan bentuk distribusi data sekaligus informasi mengenai sebaran nilainya.

ggplot(data = read, mapping = aes(x = nst, y = "all")) +
  geom_violin(fill = "green", alpha = 0.5) +
  geom_boxplot(fill = "blue", width = 0.1)

Pada grafik violin plot, sumbu horizontal menunjukkan nilai NST (Number of Station) dengan kisaran sekitar 0 hingga 750. Sementara itu, sumbu vertikal menunjukkan kategori all, yang digunakan untuk menampilkan seluruh distribusi data dalam satu kelompok.

Bentuk violin yang melebar pada bagian tertentu menunjukkan bahwa pada rentang nilai tersebut terdapat lebih banyak data. Sebaliknya, bagian yang lebih sempit menunjukkan jumlah data yang lebih sedikit. Kotak berwarna biru di dalam violin merupakan boxplot yang memberikan ringkasan statistik data, seperti median dan sebaran antar kuartil.

Berdasarkan grafik tersebut, terlihat bahwa data cenderung terkonsentrasi pada beberapa rentang nilai tertentu, meskipun masih terdapat beberapa nilai ekstrem yang berada di luar konsentrasi utama data.

Q-Q Plot

QQ Plot (Quantile–Quantile Plot) digunakan untuk membandingkan distribusi data magnitudo gempa dengan distribusi normal. Grafik ini membantu dalam melihat apakah data yang digunakan memiliki pola distribusi yang mendekati distribusi normal atau tidak.

ggplot(data = read, aes(sample = mmi)) +
  stat_qq(col="blue") +
  stat_qq_line(col="red")

Pada grafik QQ Plot, sumbu horizontal menunjukkan theoretical quantiles dari distribusi normal, sedangkan sumbu vertikal menunjukkan sample quantiles dari data magnitudo gempa. Titik-titik biru merupakan data yang diamati, sementara garis merah adalah garis referensi distribusi normal.

Dari grafik terlihat bahwa sebagian besar titik berada cukup dekat dengan garis merah, terutama di bagian tengah. Hal ini menunjukkan bahwa distribusi data magnitudo gempa cenderung mendekati distribusi normal, meskipun terdapat sedikit penyimpangan pada bagian ujung yang menunjukkan adanya beberapa nilai ekstrem dalam data.

Heatmap CDI dan MMI

ggplot(read, aes(x = cdi, y = mmi)) +
  geom_bin2d() +
  labs(x = "CDI", y = "MMI")

Heatmap tersebut menggambarkan data Community Determined Intensity di mana data tersebar dengn jarak yang berjauhan yang disebabkan oleh variabel CDI yang besifat diskrit pada rentang 1 sampai 10. Heatmap plot tersebut membandingkan nilai dari variabel Community Determined Intensity dengan variabel Modified Mercalli Intensity.

Titik terang berada di area cdi dengan nilai rendah sekitar 0 dan nilai mmi sedang sekitar 0,6 hingga 7,5. Data menyebar hampir diseluruh area, menunjukan variasi yang besar dan data cenderung mengelompok secara horizontal.

karena cdi berasal dari laporan masyarakat, distribusi pada angka 0 mempengaruhi nnilai pada variabel mmi.

Heatmap Latitude dan MMI

ggplot(read, mapping = aes(x = latitude, y = mmi)) +
  geom_bin2d() +
  labs(x = "Latitude", y = " MMI")

Heatmap tersebut membandingkan variabel mmi dengan variabel latitude. distribusi tertinggi terdapat di sekitar titik 0 (ekuator) pada rentang mmi 5,0 hingga 7,5. Terdapat pola garis horizontal yang tegas menunjukan bahwa nilai mmi pada data bersfat diskrit.

Scatter Plot Magnitude dan Latitude

Scatter plot ini digunakan untuk melihat hubungan antara magnitudo gempa (Magnitude) dan latitude (garis lintang). Setiap titik pada grafik mewakili satu kejadian gempa bumi yang terdapat dalam dataset.

ggplot(data = read, mapping = aes(x = magnitude, y = latitude)) +
  geom_point(color = "darkred") +
  labs(x = "Magnitude", y = "Latitude")

Berdasarkan grafik tersebut, dapat terlihat bahwa titik-titik data tersebar pada berbagai nilai latitude di sumbu horizontal. Sebaran gempa cukup merata dari latitude -400.000 hingga 400.000, dengan konsentrasi yang sedikit lebih padat di sekitar latitude 0 hingga 200.000.

Pola penyebaran titik pada grafik menunjukkan bahwa tidak ada hubungan yang kuat antara latitude dan magnitudo gempa. Artinya, pada berbagai posisi latitude, magnitudo gempa bervariasi dari kecil hingga besar tanpa pola yang jelas. Dapat disimpulkan bahwa latitude bukanlah faktor penentu kekuatan gempa, karena besar kecilnya magnitudo tidak dipengaruhi oleh posisi lintang tempat gempa terjadi.

Scatter Plot Magnitude dan Significance

Scatter plot ini menggambarkan hubungan antara magnitude gempa (Magnitude) dan tingkat signifikansi gempa (Significance). Variabel signifikansi menunjukkan tingkat kepentingan atau dampak dari suatu kejadian gempa berdasarkan indikator tertentu dalam dataset.

ggplot(data = read, mapping = aes(x = magnitude, y = sig)) +
  geom_point(color = "blue") +
  labs(x = "Magnitude", y = "Significance")

Dari grafik tersebut dapat diamati bahwa ketika nilai magnitudo gempa meningkat, nilai signifikansinya juga cenderung meningkat. Hal ini menunjukkan bahwa gempa dengan kekuatan yang lebih besar umumnya memiliki dampak yang lebih signifikan.

Meskipun demikian, penyebaran titik pada grafik menunjukkan adanya variasi nilai signifikansi pada setiap tingkat magnitudo. Artinya, tidak semua gempa dengan magnitudo yang sama memiliki tingkat signifikansi yang identik.

Line Chart Significance

Line chart ini digunakan untuk memperlihatkan perubahan nilai signifikansi gempa (Significance) berdasarkan urutan kejadian gempa yang terdapat dalam dataset. Sumbu horizontal (x) menunjukkan urutan data gempa, sedangkan sumbu vertikal (y) menunjukkan nilai signifikansi dari setiap kejadian gempa.

ggplot(data = read, aes(x = 1:nrow(read), y = sig)) +
  geom_line(color = "darkgreen") +
  labs(x = "Urutan Kejadian Gempa", y = "Significance")

Berdasarkan grafik tersebut, terlihat bahwa nilai signifikansi gempa mengalami fluktuasi yang cukup besar. Pada beberapa bagian grafik terdapat lonjakan nilai yang cukup tinggi, yang menunjukkan adanya kejadian gempa dengan tingkat signifikansi yang lebih besar dibandingkan kejadian lainnya.

Sebagian besar nilai signifikansi berada pada kisaran yang relatif lebih rendah, namun terdapat beberapa titik yang menunjukkan peningkatan signifikan. Hal ini mengindikasikan bahwa tidak semua gempa memiliki tingkat dampak yang sama, sehingga terdapat variasi dalam tingkat signifikansi dari setiap kejadian gempa yang tercatat dalam dataset.

#=============== # Data Kategorik #=============== ## Investment Survey Dataset

Investment Survey Dataset merupakan dataset yang berisi informasi mengenai perilaku investasi individu berdasarkan karakteristik demografi, kondisi pekerjaan, serta tujuan finansial responden. Data ini dikumpulkan melalui survei untuk mengetahui bagaimana seseorang memilih jenis investasi, sumber informasi yang digunakan, serta motivasi dalam melakukan investasi.

Dataset ini dapat digunakan untuk menganalisis pola investasi masyarakat serta memahami faktor-faktor yang mempengaruhi keputusan seseorang dalam berinvestasi.

Dalam dataset tersebut terdapat beberapa variabel, yaitu:

  1. Gender (jenis kelamin responden)
  2. Age (usia responden)
  3. Working_professional (status pekerjaan responden)
  4. Annual_income (pendapatan tahunan responden)
  5. Mode_of_investment (jenis investasi yang dipilih responden)
  6. Investment_per_month (jumlah investasi yang dilakukan setiap bulan)
  7. Motivation_cause (alasan atau motivasi seseorang melakukan investasi)
  8. Resources_used (sumber informasi yang digunakan dalam mempelajari investasi)
  9. Goal_for_investment (tujuan utama seseorang dalam melakukan investasi)
  10. Duration_to_save (in Years) (jangka waktu investasi atau menabung untuk investasi)

Dataset tersebut diperoleh dari website Kaggle: https://www.kaggle.com/datasets/sudarsan27/investment-survey-dataset

Alasan menggunakan dataset tersebut karena dataset ini memiliki beberapa variabel kategorik, seperti Gender, Mode_of_investment, Motivation_cause, Resources_used, dan Goal_for_investment, sehingga cocok digunakan untuk membuat visualisasi data kategorik.

Dataset Investment Survey Dataset berisikan beberapa variabel yang dapat digunakan untuk menganalisis perilaku investasi responden berdasarkan karakteristik demografi dan preferensi investasi sebagai berikut:

library(ggplot2)
library(dplyr)
library(DT)
library(readxl)

read <- read_xlsx("C:/Users/ACER/Downloads/Investment Survey Dataset.xlsx")
DT::datatable(read)

Bar Chart

ggplot(data = read, mapping = aes(x = Gender)) + 
  geom_bar()

Diagram batang tersebut menunjukkan jumlah responden berdasarkan jenis kelamin. Terlihat bahwa responden laki-laki lebih banyak dibandingkan responden perempuan. Hal ini menunjukkan bahwa partisipasi laki-laki dalam survei investasi ini lebih dominan, yang mungkin mencerminkan kecenderungan laki-laki yang lebih aktif dalam kegiatan investasi.

Bar Chart dengan Tabel Frekuensi

Untuk menggunakan bar chart dengan perintah stat = "identity", harus dibuat tabel frekuensi di setiap kategori.

Membuat Tabel Frekuensi

Tabel frekuensi dapat dibuat dengan menggunakan perintah table(). Tabel frekuensi berdasarkan variabel jenis investasi yang dipilih responden (Mode_of_investment).

freqtab <- as.data.frame(table(read$Mode_of_investment))
colnames(freqtab) <- c("Jenis_Investasi", "Frekuensi")
freqtab
##                             Jenis_Investasi Frekuensi
## 1                          Banking - RD, FD        23
## 2                                 Chit fund         1
## 3                           Crypto currency         4
## 4 Gold / Any other Materialistic investment        11
## 5                                 Marketing         1
## 6                              Mutual Funds        26
## 7                              Not prepared         1
## 8                        Real estate, Bonds         4
## 9              Stocks - Intraday, long term        29

Membuat Bar Chart

ggplot(data = freqtab, mapping = aes(x = Jenis_Investasi, y = Frekuensi)) + 
  geom_bar(stat = "identity")

Grafik tersebut menunjukkan jumlah responden berdasarkan jenis investasi yang dipilih. Terlihat bahwa beberapa responden memilih investasi seperti saham dan reksa dana, sementara sebagian lainnya memilih jenis investasi lain. Hal ini menunjukkan bahwa preferensi investasi responden cukup beragam.

Modifikasi Bar Chart

ggplot(data = freqtab, mapping = aes(x = Jenis_Investasi, y = Frekuensi)) + 
  geom_col(fill = "lightpink", alpha = 0.7) + 
  labs(title = "Frekuensi Jenis Investasi Responden", 
       x = "Jenis Investasi", 
       y = "Frekuensi") + 
  geom_text(aes(label = Frekuensi), vjust = -0.25)

Berdasarkan bar chart yang telah dimodifikasi di atas, dapat diketahui distribusi jenis investasi yang dipilih responden secara lebih jelas. Penambahan label angka pada setiap batang mempermudah pembaca dalam membaca nilai frekuensi secara langsung tanpa harus mengira-ngira dari skala sumbu y. Warna merah muda digunakan untuk memberikan tampilan yang lebih menarik secara visual.

Needle Chart

ggplot(data = freqtab,
       mapping = aes(x = reorder(Jenis_Investasi, Frekuensi), y = Frekuensi)) +
  geom_segment(aes(x = reorder(Jenis_Investasi, Frekuensi),
                   xend = reorder(Jenis_Investasi, Frekuensi),
                   y = 0, yend = Frekuensi), color = "skyblue") +
  geom_point(color = "navyblue", size = 4, alpha = 0.6) +
  geom_text(aes(label = Frekuensi), vjust = -1.00) +
  coord_flip() +
  labs(title = "Jumlah Responden Berdasarkan Jenis Investasi",
       y = "Jumlah Responden",
       x = "Mode of Investment")

Needle chart tersebut menunjukkan jumlah responden berdasarkan jenis investasi yang dipilih. Terlihat bahwa beberapa kategori investasi memiliki jumlah responden yang lebih tinggi dibandingkan kategori lainnya. Kategori dengan jarum terpanjang merupakan jenis investasi yang paling banyak dipilih, sedangkan kategori dengan jarum terpendek paling sedikit diminati. Hal ini menunjukkan bahwa terdapat perbedaan preferensi responden dalam memilih jenis investasi.

Grouped Bar Chart

ggplot(data = read,
       aes(x = Gender, fill = Mode_of_investment)) + 
  geom_bar(position = "dodge") +
  labs(title = "Jenis Investasi Berdasarkan Gender",
       x = "Gender",
       y = "Jumlah Responden",
       fill = "Mode of Investment") +
  theme_light()

Grafik grouped bar chart tersebut menunjukkan distribusi jenis investasi berdasarkan jenis kelamin responden. Dari grafik terlihat bahwa baik responden laki-laki maupun perempuan memiliki preferensi investasi yang beragam. Grafik ini memudahkan perbandingan pola investasi antara laki-laki dan perempuan secara langsung dalam satu tampilan, sehingga perbedaan maupun kesamaan preferensi antar kelompok gender dapat teridentifikasi dengan jelas.

Stacked Bar Chart

Untuk membuat tampilan menumpuk pada kelompok/grup bar chart dapat digunakan perintah position = "stack". Misalnya akan dibuat stacked bar chart distribusi jenis investasi berdasarkan jenis kelamin responden. Hasilnya sebagai berikut.

ggplot(data = read,
       aes(x = Gender, fill = Mode_of_investment)) + 
  geom_bar(position = "stack", stat = "count") +
  labs(title = "Jenis Investasi Berdasarkan Gender (Stacked)",
       x = "Gender",
       y = "Jumlah Responden",
       fill = "Mode of Investment") +
  theme_light()

Stacked bar chart di atas menampilkan komposisi jenis investasi yang dipilih oleh responden laki-laki dan perempuan dalam satu batang yang ditumpuk. Berbeda dengan grouped bar chart, stacked bar chart memudahkan pembaca untuk melihat proporsi keseluruhan setiap kelompok gender sekaligus membandingkan kontribusi masing-masing jenis investasi terhadap total responden per kelompok. Terlihat bahwa total responden laki-laki lebih banyak dibandingkan perempuan, dengan komposisi jenis investasi yang bervariasi di kedua kelompok.

Pie Chart

df <- read %>%
  group_by(Motivation_cause) %>%
  summarise(counts = n())
df
## # A tibble: 10 × 2
##    Motivation_cause          counts
##    <chr>                      <int>
##  1 Agents/Investment brokers     10
##  2 Family member                 24
##  3 Friends                       24
##  4 No one                         1
##  5 Schemes                        1
##  6 Self                           5
##  7 Self Interest                  1
##  8 Self motivation                1
##  9 Social media/ Articles        18
## 10 Through Bank                  15

Selanjutnya menghitung posisi label teks sebagai jumlah kumulatif proporsi.

df <- df %>%
  arrange(desc(Motivation_cause)) %>%
  mutate(prop = round(counts * 100 / sum(counts), 1),
         lab.ypos = cumsum(prop) - 0.5 * prop)
head(df, 4)
## # A tibble: 4 × 4
##   Motivation_cause       counts  prop lab.ypos
##   <chr>                   <int> <dbl>    <dbl>
## 1 Through Bank               15    15      7.5
## 2 Social media/ Articles     18    18     24  
## 3 Self motivation             1     1     33.5
## 4 Self Interest               1     1     34.5

Setelah itu, membuat grafik Pie Chart dengan perintah geom_bar() dan coord_polar(). Hasilnya sebagai berikut.

ggplot(df, aes(x = "", y = prop, fill = Motivation_cause)) +
  geom_bar(width = 1, stat = "identity", color = "white") +
  geom_text(aes(y = lab.ypos, label = prop), color = "white") +
  coord_polar("y", start = 0) +
  ggpubr::fill_palette("jco") +
  labs(title = "Persentase Responden Berdasarkan Motivasi Investasi",
       fill = "Motivasi Investasi") +
  theme_void()

Pie chart di atas menunjukkan proporsi responden berdasarkan motivasi yang mendorong mereka untuk berinvestasi. Setiap irisan mewakili satu kategori motivasi, di mana irisan terbesar menunjukkan motivasi yang paling banyak dipilih oleh responden. Label persentase pada setiap irisan memudahkan pembaca untuk membandingkan kontribusi masing-masing motivasi secara proporsional terhadap keseluruhan responden.