Dataset Diamond

library(ggplot2)
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

Dalam dataset diamond terdapat 10 variabel (kolom), yaitu:

  1. Carat (kontinu/numerik) -> Berat belian dalam satuan karat.
  2. Cut (kategori ordinal) -> kualitas potongan berlian yang memiliki urutan tertentu.
  3. Color (kategori ordinal) -> warna berlian yang memiliki urutan tertentu.
  4. Clarity (kategori ordinal) -> tingkat kejernihan berlian yang memiliki urutan tertentu.
  5. Depth (kontinu) -> persentase kedalaman berlian.
  6. Table (kontinu)-> lebar bagian atas berlian (dalam persen).
  7. Price (kontinu / Diskrit karena integer) -> Harga berlian dalam dolar AS.
  8. X -> panjang berlian (mm)
  9. Y -> lebar berlian (mm)
  10. Z -> tinggi berlian (mm)

Melihat struktur data

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

Berdasarkan struktur data tersebut, terdapat 53.940 berlian yang diamati (baris) dengan 10 karakteristik (kolom). Terdapat tipe data:

1.num -> bertipe numerik 2.ord.factor-> faktor berurutan (ordinal) dan bertipe kategorik. 3.integer -> numerik (bilangan bulat) namun secara statistik tetap kuantitatif kontinu.

Statistik deskriptif

summary(diamonds)
##      carat               cut        color        clarity          depth      
##  Min.   :0.2000   Fair     : 1610   D: 6775   SI1    :13065   Min.   :43.00  
##  1st Qu.:0.4000   Good     : 4906   E: 9797   VS2    :12258   1st Qu.:61.00  
##  Median :0.7000   Very Good:12082   F: 9542   SI2    : 9194   Median :61.80  
##  Mean   :0.7979   Premium  :13791   G:11292   VS1    : 8171   Mean   :61.75  
##  3rd Qu.:1.0400   Ideal    :21551   H: 8304   VVS2   : 5066   3rd Qu.:62.50  
##  Max.   :5.0100                     I: 5422   VVS1   : 3655   Max.   :79.00  
##                                     J: 2808   (Other): 2531                  
##      table           price             x                y         
##  Min.   :43.00   Min.   :  326   Min.   : 0.000   Min.   : 0.000  
##  1st Qu.:56.00   1st Qu.:  950   1st Qu.: 4.710   1st Qu.: 4.720  
##  Median :57.00   Median : 2401   Median : 5.700   Median : 5.710  
##  Mean   :57.46   Mean   : 3933   Mean   : 5.731   Mean   : 5.735  
##  3rd Qu.:59.00   3rd Qu.: 5324   3rd Qu.: 6.540   3rd Qu.: 6.540  
##  Max.   :95.00   Max.   :18823   Max.   :10.740   Max.   :58.900  
##                                                                   
##        z         
##  Min.   : 0.000  
##  1st Qu.: 2.910  
##  Median : 3.530  
##  Mean   : 3.539  
##  3rd Qu.: 4.040  
##  Max.   :31.800  
## 

Secara keseluruhan, dataset diamond menunjukkan bahwa sebagian besar berlian memiliki ukuran kecil hingga sedang, harga relatif rendah hingga menengah, serta kualitas potongan dan kejernihan yang cukup baik.Hal ini terlihat dari nilai median carat (0,70) dan median price (2.401) yang nilainya lebih kecil dibandingkan dengan nilai rata-ratanya.Perbedaan antara mean dan median pada variabel carat dan price menunjukkan bahwa distribusi keduanya miring ke kanan (positively skewed), artinya hanya sedikit jumlah berlian yang berukuran besar dan berharga sangat tinggi namun dapat mempengaruhi nilai rata-rata data.

Variabel dimensi fisik (x, y, z), depth, dan table secara umum memiliki distribusi yang relatif simetris, karena nilai mean dan median hampir sama. Namun, terdapat indikasi adanya outlier, khususnya pada dimensi y dan z yang memiliki nilai maksimum sangat jauh dari kuartil atasnya (Q3).Kuartil atas (Q3) digunakan untuk menunjukkan batas 75% data terendah dalam suatu kumpulan data.Dimana, Q3 itu penanda nilai “atas normal” sebelum masuk kategori sangat tinggi.

Standar deviasi

num_data <- diamonds[sapply(diamonds, is.numeric)]
sapply(num_data, sd)
##        carat        depth        table        price            x            y 
##    0.4740112    1.4326213    2.2344906 3989.4397381    1.1217607    1.1421347 
##            z 
##    0.7056988

Standar deviasi (SD) digunakan untuk mengukur seberapa jauh data menyebar dari nilai rata-rata (mean).Dimana:

Variabel dengan variasi terbesar adalah price, menunjukkan perbedaan harga yang sangat besar antar berlian.Standar deviasi carat sebesar 0,474 menunjukkan bahwa berat berlian dalam dataset memiliki variasi sedang. Mayoritas berlian berukuran kecil hingga sedang, dan hanya sedikit yang berukuran sangat besar. Sementara itu, variabel dimensi fisik (x, y, z), depth, dan table memiliki variasi yang relatif kecil, artinya ukuran dan proporsi berlian dalam dataset ini cenderung tidak terlalu berbeda jauh satu sama lain karena sebagian besar nilainya berada pada rentang yang tidak terlalu jauh dan tidak menunjukkan adanya penyebaran yang ekstrem.

Histogram untuk variabel kontinu

ggplot(diamonds, aes(x = price)) +
  geom_histogram(bins = 30, fill = "yellow", color = "black") +
  labs(title = "Histogram Harga pada Dataset Diamonds (Berlian)",
       x = "Harga",
       y = "Frekuensi") +
  theme_minimal()

Grafik histogram tersebut menunjukkan bahwa distribusi harga berlian tidak simetris dan cenderung miring ke kanan (skewed to the right / positively skewed).Artinya sebagian besar berlian memiliki harga yang relatif rendah hingga menengah. Sedangkan Hanya sedikit berlian yang memiliki harga yang sangat tinggi. Dalam distribusi ini juga menunjukkan adanya variasi harga yang cukup besar dalam dataset.

Grafik tersebut juga menunjukka setelah harga berlian 5000, ketinggian batang mulai menurun yang menunjukkan bahwa semakin mahal harga berlian maka semakin sedikit jumlah berlian yang tersedia. Terdapat pula ukuran batang yang sangat kecil yang hampir mendekati 20000, menunjukkan adanya harga berlian yang sangat tinggi namun jumlahnya sangat sedikit. Hal ini menyebabkan distribusi menjadi tidak simetris.

Boxplot untuk variabel kontinu

ggplot(diamonds, aes(y = price)) +
  geom_boxplot(fill = "brown") +
  scale_y_continuous(
    limits = c(0, 20000),
    breaks = seq(0, 20000, by = 2000)
  ) + labs(title = "Boxplot Harga pada Dataset Diamonds (Berlian)",
       y = "Harga") +
  theme(
    axis.text = element_text(size = 12),
    axis.title = element_text(size = 12))

Berdasarkan visualisasi data boxplot tersebut, terdapat garis tebal di dalam kotak yang menunjukkan adanya median harga. terlihat median berada disekitar ± 2400–2500. Artinya sebanyak ± 50% harga berlian dibawah nilai tersebut dan sebanyak ± 50% harga berlian diatas nilai tersebut.

Dalam visualisasi data tersebut juga menunjukkan bahwa data memiliki variasi yang cukup besar. kotak bosplot tersebut menunjukkan rentang antara Q1 (kuartil bawah) sebesar ± 1000 dan Q3 (kuartil atas) sebesar ± 5200. Artinya beberapa harga berlian berada dalam rentang sekitar 1000 sampai 5200.Lebar dari kotak boxplot menunjukkan variasi harga yang cukup besar.

Berdasarkan boxplot tersebut juga terlihat jumlah outlier yang cukup banyak yaitu titik-titik (garis tebal) disekitar 12000-19000.Artinya adanya berlian dengan harga jauh lebih mahal dibandingkan dengan mayoritas data.

Berdasarkan boxplot tersebut, harga berlian dalam dataset menunjukkan distribusi yang tidak simetris dan cenderung miring ke kanan (skewed to the right/positively skewed). Artinya Banyak berlian dengan harga rendah dan menengah, namun Sedikit berlian dengan harga yang sangat mahal.

Density plot untuk variabel price

d <- density(diamonds$price)

plot(d, main="Density plot (kepadatan) Harga pada Dataset Diamonds (Berlian)", xlab="Harga")
polygon(d, col="pink")
lines(d, col="red", lwd=2)

Berdasarkan hasil visualisasi data density plot tersebut,distribusi ini tidak simetris dan tidak berdistribusi normal.Pola distribusi data ini cenderung miring ke kanan (positively skewed / skewed to the right), di mana sebagian besar berlian memiliki harga rendah hingga menengah, dengan puncak distribusi berada pada kisaran sekitar 1000–1500. Semakin tinggi harga, semakin sedikit jumlah berlian yang tersedia, yang ditunjukkan oleh ekor panjang ke arah kanan hingga sekitar 20.000.