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:
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.
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.
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.
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.
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.
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.