Dataset “Diamonds” merupakan dataset yang berisi informasi mengenai yang mencakup karakteristik fisik serta harga berlian.

Dalam analisis ini, dilakukan visualisasi data bivariat untuk melihat hubungan antara dua variabel, baik numerik–numerik maupun kategorik–numerik.

1. Import Data

Import data yang dilakukan dapat dilakukan dengan syntax berikut.

library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
data(diamonds)
head(diamonds)
## # A tibble: 6 × 10
##   carat cut       color clarity depth table price     x     y     z
##   <dbl> <ord>     <ord> <ord>   <dbl> <dbl> <int> <dbl> <dbl> <dbl>
## 1  0.23 Ideal     E     SI2      61.5    55   326  3.95  3.98  2.43
## 2  0.21 Premium   E     SI1      59.8    61   326  3.89  3.84  2.31
## 3  0.23 Good      E     VS1      56.9    65   327  4.05  4.07  2.31
## 4  0.29 Premium   I     VS2      62.4    58   334  4.2   4.23  2.63
## 5  0.31 Good      J     SI2      63.3    58   335  4.34  4.35  2.75
## 6  0.24 Very Good J     VVS2     62.8    57   336  3.94  3.96  2.48

2. Ubah Nama Variabel

Agar lebih mudah dipahami, nama variabel diubah ke dalam Bahasa Indonesia.

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
diamonds_id <- diamonds %>%
  rename(
    berat_karat = carat,
    kualitas_potongan = cut,
    warna = color,
    kejernihan = clarity,
    kedalaman = depth,
    lebar_puncak = table,
    harga = price,
    panjang = x,
    lebar = y,
    tinggi = z
  )

3. Struktur Data

Adapun struktur data dapat dilihat dengan syntax berikut.

str(diamonds_id)
## tibble [53,940 × 10] (S3: tbl_df/tbl/data.frame)
##  $ berat_karat      : num [1:53940] 0.23 0.21 0.23 0.29 0.31 0.24 0.24 0.26 0.22 0.23 ...
##  $ kualitas_potongan: Ord.factor w/ 5 levels "Fair"<"Good"<..: 5 4 2 4 2 3 3 3 1 3 ...
##  $ warna            : Ord.factor w/ 7 levels "D"<"E"<"F"<"G"<..: 2 2 2 6 7 7 6 5 2 5 ...
##  $ kejernihan       : Ord.factor w/ 8 levels "I1"<"SI2"<"SI1"<..: 2 3 5 4 2 6 7 3 4 5 ...
##  $ kedalaman        : num [1:53940] 61.5 59.8 56.9 62.4 63.3 62.8 62.3 61.9 65.1 59.4 ...
##  $ lebar_puncak     : num [1:53940] 55 61 65 58 58 57 57 55 61 61 ...
##  $ harga            : int [1:53940] 326 326 327 334 335 336 336 337 337 338 ...
##  $ panjang          : num [1:53940] 3.95 3.89 4.05 4.2 4.34 3.94 3.95 4.07 3.87 4 ...
##  $ lebar            : num [1:53940] 3.98 3.84 4.07 4.23 4.35 3.96 3.98 4.11 3.78 4.05 ...
##  $ tinggi           : num [1:53940] 2.43 2.31 2.31 2.63 2.75 2.48 2.47 2.53 2.49 2.39 ...

Berdasarkan output tersebut, diketahui bahwa terdapat 10 variabel sebagai berikut.

  1. Variabel numerik kontinu:
    • berat_karat

    • kedalaman

    • lebar_puncak

    • panjang

    • lebar

    • tinggi

  2. Variabel numerik diskrit
    • harga
  3. Variabel kategorik ordinal
    • kualitas_potongan

    • warna

    • kejernihan

4. Visualisasi Data Bivariat

a. Scatter Plot : Berat Karat dengan Kedalaman

Syntax yang digunakan adalah sebagai berikut.

ggplot(diamonds_id, aes(x = berat_karat, y = kedalaman)) +
  geom_point(color="darkred", alpha = 0.3) +
  theme_minimal() +
  labs(title = "Scatter Plot: Berat Karat vs Kedalaman",
       x = "Berat Karat",
       y = "Kedalaman")

Dari visualisasi tersebut, terlihat bahwa tidak terdapat hubungan linear yang kuat antara berat karat dan kedalaman, titik-titik data menyebar cukup acak dan membentuk pola horizontaldengan konsentrasi pada kedalaman sekitar 60%. Tidak terlihat tren naik atau turun yang jelas antara berat karat (carat) dan kedalaman (depth). Nilai kedalaman cenderung berada pada rentang tertentu meskipun berat karat meningkat. Hal ini menunjukkan bahwa ukuran berlian tidak secara langsung menentukan proporsi kedalamannya. Mayoritas data terdapat pada berat antara 0.3 hingga 2.5, dan kedalaman anatara 58 hingga 63. Kedalamanan relatif stabil walaupun berat karat bertambah. Ada beberapa outlier dengan kedalaman yang rendah atau sangat tinggi.

b. Boxplot : Harga Berdasarkan Kualitas Potongan

Syntax yang digunakan adalah sebagai berikut.

ggplot(diamonds_id, aes(x = kualitas_potongan, y = harga)) +
  geom_boxplot(fill = "darkred") +
  theme_minimal() +
  labs(title = "Boxplot: Harga berdasarkan Kualitas Potongan",
       x = "Kualitas Potongan",
       y = "Harga")

Dari output dapat terlihat banyak titik di atas whisker (hingga lebih dari 15.000). Ini menunjukkan adanya berlian dengan harga sangat tinggi di semua kategori kualitas. Semua kategori memiki arah distribusi yang sama yaitu mereng ke kanan (right skewed). Ada banyak nilai outlier dan pada kualitas potongan yang lebih baik cenderung memiliki median harga yang lebih tinggi.

c. Violin Plot : Harga berdasarkan kejernihan

Syntax yang digunakan adalah sebagai berikut.

ggplot(diamonds_id, aes(x = kejernihan, y = harga)) +
  geom_violin(fill = "darkred") +
  theme_minimal() +
  labs(title = "Violin Plot: Harga berdasarkan Kejernihan",
       x = "Kejernihan",
       y = "Harga")

Pada outpur terlihat grafik yang agak condong ke kanan. Distribusi harga menunjukkan bahwa semakin tinggi tingkat kejernihan, kecenderungan harga juga meningkat. Sebaran yang lebih lebar pada kategori tertentu menunjukkan variasi harga yang tinggi. Kategori seperti I1 dan SI2 memiliki distribusi yang lebih menyebar. Hampir pada seluruh kategri, kepadatan terbesar berada pada harga rendah hingga mengah dan harga sangat tinggi, di atas 10000.


d. Jitter Plot : harga Berdasarkan Warna

Syntax yang digunakan adalah sebagai berikut.

ggplot(diamonds_id, aes(x = warna, y = harga)) +
  geom_jitter(alpha = 0.3, width = 0.2, color="darkred") +
  theme_minimal() +
  labs(title = "Jitter Plot: Harga berdasarkan Warna",
       x = "Warna",
       y = "Harga")

Terlihat bahwa warna dengan kualitas lebih baik cenderung memiliki harga yang lebih tinggi, meskipun terdapat tumpang tindih antar kategori.


e. 2D Density Plot

Syntax yang digunakan adalah sebagai berikut.

ggplot(diamonds_id, aes(x = berat_karat, y = harga)) +
  geom_density_2d() +
  theme_minimal() +
  labs(title = "2D Density Plot: Berat Karat vs Harga",
       x = "Berat Karat",
       y = "Harga")

Kepadatan tertinggi berada pada berat karat kecil hingga sedang dengan harga menengah. Pola ini menunjukkan adanya hubungan positif antara berat karat dan harga.

f. Hexbin Plot : Berat Karat dan Harga

Syntax yang digunakan adalah sebagai berikut.

library(hexbin)
## Warning: package 'hexbin' was built under R version 4.4.3
ggplot(diamonds_id, aes(x = berat_karat, y = harga)) +
  geom_hex() +
  scale_fill_gradient(low = "darkred", high = "black") +
  theme_minimal() +
  labs(title = "Hexbin Plot: Berat Karat vs Harga",
       x = "Berat Karat",
       y = "Harga",
       fill = "Jumlah Data")

Dari output, hexbin plot menunjukkan kepadatan tertinggi pada berlian dengan berat kecil dan harga relatif lebih rendah. Semakin besar berat karat, maka semakin tinggi harga. Kepadatan data terkonstrasi pada berat karat antara 0.5 hingga 2.5 dan harga sekitar 2000 hingga 12000Pola kepadatan yang semakin naik mengindikasikan hubungan positif antara berat karat dan harga.


g. Bubble Plot

Syntax yang digunakan adalah sebagai berikut.

ggplot(diamonds_id, aes(x = berat_karat, y = kedalaman, size = harga)) +
  geom_point(alpha = 0.4, color="darkred") +
  theme_minimal() +
  labs(title = "Bubble Plot: Berat Karat vs Kedalaman",
       x = "Berat Karat",
       y = "Kedalaman",
       size = "Harga")

Dari output, bubble plot menunjukkan bahwa harga (ditunjukkan oleh ukuran bubble) cenderung meningkat pada berat karat yang lebih besar. Kedalaman tidak menunjukkan perubahan signifikan terhadap harga, sehingga berat karat menjadi faktor dominan dalam menentukan harga.

Kesimpulan

Berdasarkan seluruh visualisasi data bivariat tersebut, dapat disimpulkan beberapa hal sebagai berikut.

  1. Berat karat memiliki hubungan positif yang kuat terhadap harga.
  2. Kedalaman tidak menunjukkan hubungan linear yang kuat terhadap berat karat maupun harga.
  3. Kualitas potongan, warna, dan kejernihan berpengaruh terhadap variasi harga.
  4. Kepadatan data terbesar berada pada berlian dengan berat kecil dan harga menengah.
  5. Faktor ukuran (berat karat) merupakan variabel paling dominan dalam menentukan harga berlian dibandingkan proporsi fisiknya.

Dengan demikian, dalam analisis bivariat ini, variabel berat karat menjadi faktor utama yang memengaruhi harga berlian, sementara variabel kualitas berperan sebagai faktor pendukung dalam pembentukan nilai jual.