1 Một số thông tin cơ bản về dataset Diamonds


Dataset Diamonds là một phần của package ggplot2 chứa thông tin về các viên kim cương. Ta sẽ tiến hành xem một số thông tin cơ bản của dataset này

library(ggplot2)
khl <- diamonds

str(khl)
## 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 ...

Từ kết quả trên, ta đọc được 1 số thông tin như sau:

  • Dataset gồm có 53940 hàng tương đương 53940 viên kim cương được nghiên cứu

  • Gồm có 10 biến, đó là:

    • price: Giá của viên kim cương (USD)
    • carat: Trọng lượng của viên kim cương (carat)
    • cut: Chất lượng của vết cắt (Fair, Good, Very Good, Excellent, Ideal)
    • color: Màu sắc của viên kim cương
    • clarity: Độ trong của viên kim cương
    • x: Chiều dài của viên kim cương (mm)
    • y: Chiều rộng của viên kim cương (mm)
    • z: Độ sâu của viên kim cương (mm)
    • table: Chiều rộng của đỉnh kim cương so với điểm rộng nhất
    • depth: Tỷ lệ phần trăm độ sâu

2 Phân tích bằng trực quan hóa dữ liệu


2.1 Biểu đồ thể hiện giá trung bình theo từng loại màu của viên kim cương

Ta sẽ tiến hành đánh giá chất lượng của viên kim cương theo từng loại màu dựa trên mức giá trung bình của nó:

khl1 <- khl %>% group_by(color) %>% summarise(avg_price1 = mean(price))

khl1 %>% ggplot(aes(x = color, y = avg_price1)) + 
          geom_col(fill = 'black') + 
          geom_text(aes(label = round(avg_price1)),vjust = 2, color = 'pink') +
          labs(x = 'Color', y = 'Average Price') + labs(title = 'Hình 2.1: Giá trung bình theo từng loại màu của viên kim cương')

Từ biểu đồ trên, ta dễ dàng nhận ra mức giá trung bình có xu hướng cao dần từ màu loại D đến màu loại J và có chênh lệch nhẹ so với màu loại E. Vậy ta có thể kết luận rằng, các thứ tự màu từ D -> J sẽ thể hiện được mức độ tốt của viên kim cương, màu J ứng với mức giá cao nhất sẽ là viên kim cương tốt nhất, tương tự những viên còn lại.

2.2 Biểu đồ thể hiện giá trung bình theo độ trong(clarity) của viên kim cương

Với mong muốn đánh giá chất lượng giữa các độ trong dựa trên mức giá trung bình, tôi tiến hành vẽ biểu đồ thể hiện mức giá theo từng loại độ trong:

khl2 <- khl %>% group_by(clarity) %>% summarise(avg_price2 = mean(price))

khl2 %>% ggplot(aes(x = clarity, y = avg_price2)) + 
          geom_col(fill = 'green') + 
          geom_text(aes(label = round(avg_price2)),vjust = 2, color = 'red') +
          labs(x = 'Clarity', y = 'Average Price') + labs(title = 'Hình 2.2: Giá trung bình theo độ trong của viên kim cương')

Từ biểu đồ trên ta có thể đưa ra các nhận xét sau:

  • Độ trong SI2 có mức giá trung bình cao nhất, điều này có nghĩa những viên kim cương có độ trong này dường như là những viên kim cương tốt nhất với giá thành cao

  • Độ trong VVS1 có mức giá trung bình thấp nhất phản ánh chất lượng của những viên kim cương có độ trong này sẽ kém hơn những viên loại khác

  • Những viên kim cương có các độ trong còn lại hầu như không chênh lệch quá nhiều về mức giá trung bình

2.3 Biểu đồ thể hiện giá trung bình theo chất lượng vết cắt(cut) của viên kim cương

Tương tự ở trên, ta cũng sẽ đánh giá chất lượng vết cắt dựa trên giá trung bình của từng loại.

khl3 <- khl %>% group_by(cut) %>% summarise(avg_price3 = mean(price))

khl3 %>% ggplot(aes(x = cut, y = avg_price3)) + 
          geom_col(fill = 'blue') + 
          geom_text(aes(label = round(avg_price3)),vjust = 2, color = 'green') +
          labs(x = 'Chất lượng vết cắt', y = 'Average Price') + labs(title = 'Hình 2.3: Giá trung bình theo chất lượng vết cắt của viên kim cương')

Ở biểu đồ trên ta thấy có vẻ như mức giá trung bình không chênh lệch nhiều giữa các loạt vết cắt khác nhau của viên kim cương, từ đó ta có thể nói rằng chất lượng cắt không ảnh hưởng quá nhiều đến chất lượng của 1 viên kim cương hay mức giá của nó.

2.4 Biểu đồ thể hiện trọng lượng của các viên kim cương

Ta sẽ tiến hành mã hóa biến carat của dataset này dựa trên các tứ phân vị để mã hóa thành 4 giá trị: Nhỏ - Vừa - Khá Lớn - Lớn. Sau đó ta vẽ biểu đồ dựa trên số lượng các giá trị vừa mã hóa.

a <- quantile(khl$carat, probs = .25)
b <- quantile(khl$carat, probs = .50)
c <- quantile(khl$carat, probs = .75)

khl$trongluong <- case_when(khl$carat <= a ~ 'Nhỏ', 
                            khl$carat > a & khl$carat <= b ~ 'Vừa', 
                            khl$carat > b & khl$carat <= c ~ 'Khá Lớn', 
                            khl$carat > c ~ 'Lớn')

khl %>% ggplot(aes(x = trongluong)) +
          geom_bar(fill = 'purple') +
          labs(x = 'Trọng lượng', y = 'Số viên kim cương') + labs(title = 'Hình 2.4: Số lượng kim cương theo từng trọng lượng')

Ta có thể thấy, số lượng kim cương ở mỗi trọng lượng gần như bằng nhau, chỉ số viên ở phần có trọng lượng Nhỏ là nhỉnh hơn 3 loại còn lại.

2.5 Biểu đồ thể hiện giá trung bình theo từng loại trọng lượng đã được mã hóa

Từ dữ liệu về biến carat đã được mã hóa ở trên, ta sẽ tiếp tục đánh giá chất lượng của các viên kim cương dựa trên trọng lượng của nó thông qua mức giá trung bình.

khl5 <- khl %>% group_by(trongluong) %>% summarise(avg_price4 = mean(price))

khl5 %>% ggplot(aes(x = trongluong, y = avg_price4)) + 
          geom_col(fill = 'black') + 
          geom_text(aes(label = round(avg_price4)),vjust = 2, color = 'white') +
          labs(x = 'Trọng lượng', y = 'Average Price') + labs(title = 'Hình 2.5: Giá trung bình theo trọng lượng')

Ở biểu đồ này ta có thể thấy rất rõ sự chênh lệch giá trung bình giữa các viên kim cương có trọng lượng khác nhau:

  • Các viên có trọng lượng Lớn có mức giá cao hơn rất nhiều so với 3 loại còn lại, điều đó thể hiện trọng lượng càng nặng thì giá càng cao.

  • Các viên kim cương Nhỏ có mức giá rất thấp.

  • Ta có thể kết luận mức giá của kim cương tỷ lệ thuận với trọng lượng của nó, kim cương càng nặng giá càng cao cũng như càng nhẹ thì giá càng thấp.

2.6 Biểu đồ thể hiện độ sâu của các viên kim cương

Tương tự như ở trọng lượng, ta sẽ tiến hành mã hóa biến depth dựa trên tứ phân vị của nó để chia thành 4 giá trị: Thấp - Trung Bình Thấp - Trung Bình - Sâu và sau đó sẽ tiến hành vẽ biểu đồ dựa trên số lượng kim cương các loại.

a1 <- quantile(khl$depth, probs = .25)
a2 <- quantile(khl$depth, probs = .50)
a3 <- quantile(khl$depth, probs = .75)

khl$dosau <- case_when(khl$depth <= a1 ~ 'Thấp', 
                            khl$depth > a1 & khl$depth <= a2 ~ 'Trung bình thấp', 
                            khl$depth > a2 & khl$depth <= a3 ~ 'Trung bình', 
                            khl$depth > a3 ~ 'Sâu')

khl %>% ggplot(aes(x = dosau)) +
          geom_bar(fill = 'orange') +
          labs(x = 'Độ sâu', y = 'Số viên kim cương') + labs(title = 'Hình 2.6: Số lượng kim cương theo từng độ sâu')

Ta có thể thấy số lượng kim cương phân tán đều cho các độ sâu, điều này là hợp lý bởi vì chúng ta mã hóa dữ liệu dựa trên tứ phân vị của biến depth.

2.7 Biểu đồ thể hiện giá trung bình theo độ sâu đã được mã hóa

Từ dữ liệu biến depth đã được mã hóa ở trên, ta tiến hành đánh giá chất lượng của kim cương dựa trên độ sâu của nó thông qua mức giá trung bình:

khl6 <- khl %>% group_by(dosau) %>% summarise(avg_price5 = mean(price))

khl6 %>% ggplot(aes(x = dosau, y = avg_price5)) + 
          geom_col(fill = 'red') + 
          geom_text(aes(label = round(avg_price5)),vjust = 2, color = 'white') +
          labs(x = 'Độ Sâu', y = 'Average Price') + labs(title = 'Hình 2.7: Giá trung bình theo độ sâu')

Ở biểu đồ này, ta thấy giá trung bình ở độ sâu SâuThấp cao hơn hẳn 2 độ sâu còn lại.

2.8 Biểu đồ thể hiện số lượng kim cương của từng loại màu theo chiều dài

Trước tiên, ta sẽ mã hóa chiều dài (biến x) của viên kim cương dựa trên tứ phân vị của nó như sau:Ngắn - Trung bình - Trung bình khá - Dài. Tiếp đến ta sẽ vẽ biểu đồ thể hiện số lượng kim cương của từng loại màu theo các chiều dài khác nhau.

a4 <- quantile(khl$x, probs = .25)
a5 <- quantile(khl$x, probs = .50)
a6 <- quantile(khl$x, probs = .75)

khl$chieudai <- case_when(khl$x <= a4 ~ 'Ngắn', 
                            khl$x > a4 & khl$x <= a5 ~ 'Trung bình', 
                            khl$x > a5 & khl$x <= a6 ~ 'Trung bình khá', 
                            khl$x > a6 ~ 'Dài')

khl8 <- khl %>% group_by(color, chieudai) %>% summarise(n = n())

khl8 %>% ggplot(aes(x = color,y = n)) +
          geom_col(fill = 'blue') +
          facet_wrap(~chieudai) +
          labs(x = 'Màu', y = 'Số lượng') + labs(title = 'Hình 2.8: Số lượng kim cương của từng màu theo chiều dài')

Ở đây, ta có thể thấy số lượng các loại kim cương chênh lệch khá nhiều, cụ thể như sau:

  • Ở chiều dài Dài, ta có số kim cương màu H chiếm nhiều nhất và màu D chiếm ít nhất

  • Ở chiều dài Ngắn, kim cương màu E chiếm nhiều nhất và màu J chiếm rất ít

  • Ở chiều dài Trung bình, kim cương màu E chiếm nhiều nhất và màu J chiếm rất ít

  • Ở chiều dài Trung bình thấp, kim cương màu F chiếm nhiều nhất và màu J chiếm rất ít

2.9 Biểu đồ giá trung bình theo chiều dài và loại màu

Dựa vào dữ liệu chiều dài đã được mã hóa ở trên, ta sẽ tiến hành đánh giá chất lượng kim cương theo chiều dài và loại màu thông qua giá trung bình.

khl9 <- khl %>% group_by(chieudai,color) %>% summarise(avg_price6 = mean(price))

khl9 %>% ggplot(aes(x = color, y = avg_price6)) +
          geom_col(fill = 'yellow') +
          facet_wrap(~chieudai) +
          geom_text(aes(label = round(avg_price6)), vjust = 0.5, color = 'blue') +
          labs(x = 'Màu', y = 'Average Price') + labs(title = 'Hình 2.9: Giá trung bình của từng màu theo chiều dài')

Từ biểu đồ, ta có thể thấy được ở mức chiều dài Dài kim cương có giá trung bình cao hơn rất nhiều so với các chiều dài còn lại Và ở đây ta có thể thấy rõ màu của các loại kim cương không ảnh hưởng nhiều đến giá của nó, mức giá trung bình giữa các màu chênh lệch nhau không lớn.

2.10 Biểu đồ thể hiện số lượng theo trọng lượng của kim cương và chất lượng vết cắt

Từ dữ liệu của biến carat đã được mã hóa ở trên, ta kết hợp cùng với biến cut để tạo nên biểu đồ thể hiện số lượng của từng loại trọng lượng và chất lượng vết cắt.

khl10 <- khl %>% group_by(trongluong, cut) %>% summarise(n1 = n())

khl10 %>% ggplot(aes(x = cut,y = n1)) +
          geom_col(data = khl10 %>% filter(trongluong == 'Nhỏ'), fill = 'red') +
          geom_col(data = khl10 %>% filter(trongluong == 'Vừa'), fill = 'blue') +
          geom_col(data = khl10 %>% filter(trongluong == 'Khá Lớn'), fill = 'yellow') +
           geom_col(data = khl10 %>% filter(trongluong == 'Lớn'), fill = 'pink') +
          labs(x = 'Chất lượng vết cắt', y = 'Số lượng') + labs(title = 'Hình 2.10: Số lượng kim cương theo trọng lượng của từng chất lượng vết cắt')

Theo biểu đồ trên, ta thấy kim cương có trọng lượng lớn hầu như chiếm nhiều nhất ở tất cả các loại cut.

2.11 Biểu đồ thể hiện số lượng kim cương theo mức giá

Từ biến price ta sẽ chia nó thành 5 giá trị tương ứng với giá của nó như sau: Rất Rẻ - Rẻ - Trung bình - Đắt - Rất Đắt, từ đó ta sẽ tiến hành vẽ biểu đồ thể hiện số lượng kim cương theo từng giá trị đã được mã hóa.

khl <- khl %>% mutate(price.coded = case_when(
                        price < 500 ~ 'Rất rẻ',
                        price >= 500 & price < 1000 ~ 'Rẻ', 
                        price >=1000 & price <2000 ~ 'Trung bình',
                        price >=2000 & price <3000 ~ 'Đắt',
                        price >= 3000 ~ 'Rất Đắt'))

khl11 <- khl %>% group_by(price.coded) %>% summarise(n_price = n())

khl11 %>% ggplot(aes(x = price.coded, y = n_price)) +
          geom_col(fill = 'blue') +
          geom_text(aes(label = n_price), vjust = 2, color = 'white')+
          labs(title = 'Hình 2.11: Số lượng kim cương theo giá', x = 'Price', y = 'Số lượng')

Ta dễ dàng nhận xét được rằng đa số viên kim cương được thống kê trong dataset này có mức giá đắt là trên 3000 USD với 23606 viên kim cương, và lớn hơn rất nhiều so với 1729 viên kim cương có giá nhỏ hơn 500 USD.

2.12 Biểu đồ thể hiện mức giá theo chiều dài của viên kim cương

Từ các dữ liệu giá và chiều dài của viên kim cương đã được mã hóa, ta tiến hành đếm số lượng các viên kim cương theo từng chiều dài và mức giá để có thể thấy được mối quan hệ của chiều dài kim cương với giá của nó.

khl12 <- khl %>% group_by(chieudai, price.coded) %>% summarise(n12 = n())

khl12 %>% ggplot(aes(x = price.coded, y = n12)) +
          geom_col(fill = 'pink') +
          facet_wrap(~chieudai) +
          geom_text(aes(label = n12), vjust = 0.5, color = 'black')+
          labs(title = 'Hình 2.12: Số lượng kim cương theo chiều dài và mức giá', x = 'Mức giá', y = 'Số lượng')

Từ 4 biểu đồ trên, ta có thể kết luận rằng chiều dài của kim cương tỷ lệ thuận với giá của nó, kim cương càng dài giá càng đắt,và những viên kim cương dài hầu như không có sự xuất hiện của mức giá nhỏ hơn 2000.

2.13 Giá theo từng trọng lượng

Từ dữ liệu biến carat và biến price đã được mã hóa ở trên, ta tiến hành đánh giá mức giá của viên kim cương theo từng trọng lượng khác nhau bằng cách đếm số viên kim cương theo trọng lượng và mức giá.

khl13 <- khl %>% group_by(trongluong, price.coded) %>% summarise(n13 = n())

khl13 %>% ggplot(aes(x = price.coded, y = n13)) +
          geom_col(fill = 'black') +
          facet_wrap(~trongluong) +
          geom_text(aes(label = n13), vjust = 0.5, color = 'pink')+
          labs(title = 'Hình 2.13: Số lượng kim cương theo trọng lượng và mức giá', x = 'Mức giá', y = 'Số lượng')

Từ biểu đồ trên, ta thấy được những viên kim cương có mức giá rất đắt(lớn hơn 3000) thường sẽ là những viên kim cương có trọng lượng lớn, ngược lại những viên kim cương có mức giá rẻ,rất rẻ và trung bình thì sẽ thường là những viên có kích cỡ nhỏ và vừa.

2.14 Đếm số viên kim cương theo chiều rộng (biến y)

Như các cách ở trên, ta dễ dàng tạo được 1 biểu đồ số lượng viên kim cương theo chiều rộng bằng cách mã hóa dữ liệu của biến này theo các giá trị như sau:Nhỏ - Vừa - Rộng. Sau đó sẽ đếm số kim cương theo từng chiều rộng khác nhau.

khl$chieurong <- case_when(khl$y < 5.5 ~ 'Nhỏ', khl$y >=5.5 & khl$y < 6.5 ~ 'Vừa', khl$y >= 6.5 ~ 'Rộng')

khl14 <- khl %>% group_by(chieurong) %>% summarise(n14 = n())

khl14 %>% ggplot(aes(x = chieurong, y = n14)) +
          geom_col(fill = 'orange') +
          geom_text(aes(label = n14), vjust = 2, color = 'red')+
          labs(title = 'Hình 2.14: Số lượng kim cương theo chiều rộng', x = 'Chiều rộng', y = 'Số lượng')

Vậy ta có thể thấy, đa số viên kim cương là nhỏ (chiều rộng nhỏ hơn 5.5mm).

2.15 Đếm số kim cương theo biến table(Chiều rộng của đỉnh kim cương so với điểm rộng nhất hay còn gọi là mặt bàn)

Ta sẽ tiến hành mã hóa dữ liệu biến table thành các giá trị character như sau: Mặt bàn hẹp - Mặt bàn trung bình - Mặt bàn rộng. Và sau đó sẽ đếm số kim cương theo độ rộng của mặt bàn.

khl$matban <- case_when(khl$table <= 55 ~ 'Mặt bàn hẹp', khl$table >55 & khl$table <= 60 ~ 'Mặt bàn trung bình', khl$table > 60 ~ 'Mặt bàn rộng')

khl15 <- khl %>% group_by(matban) %>% summarise(n15 = n())

khl15 %>% ggplot(aes(x = matban, y = n15)) +
          geom_col(fill = 'green') +
          geom_text(aes(label = n15), vjust = 2, color = 'blue')+
          labs(title = 'Hình 2.15: Số lượng kim cương theo độ rộng của mặt bàn', x = 'Mặt bàn', y = 'Số lượng')

Các viên kim cương trong dataset này đa số có mặt bàn trung bình (table lớn hơn 55 và nhỏ hơn 60).

2.16 Đánh giá chất lượng kim cương theo chiều rộng thông qua mức giá trung bình.

Ta tiến hành tính giá trị trung bình của biến price theo dữ liệu biến y(chiều rộng) đã được mã hóa ở trên và vẽ biểu đồ thể hiện mức giá trung bình theo từng chiều rộng để có thể đánh giá chất lượng kim cương của từng độ rộng khác nhau.

khl16 <- khl %>% group_by(chieurong) %>% summarise(avg_price15= mean(price))

khl16 %>% ggplot(aes(x = chieurong, y = avg_price15))+
          geom_col(fill = 'green') +
          geom_text(aes(label = round(avg_price15)), vjust = 2, color ='white') +
          labs(title = 'Hình 2.16: Giá trung bình của kim cương theo chiều rộng', x = 'Chiều rộng', y = 'Average Price')

Từ biểu đồ 2.16, ta dễ dàng nhận ra chiều rộng cũng sẽ tỷ lệ thuận với giá của viên kim cương. Những viên kim cương có chiều rộng lớn hơn 6.5mm có giá cao hơn rất nhiều so với những viên kim cương khác.

2.17 Đánh giá chất lượng kim cương theo độ rộng mặt bàn thông qua mức giá trung bình.

Ta tiến hành tính giá trị trung bình của biến price theo dữ liệu biến table(độ rộng mặt bàn) đã được mã hóa ở trên và vẽ biểu đồ thể hiện mức giá trung bình theo từng loại mặt bàn để có thể đánh giá chất lượng kim cương của từng loại khác nhau.

khl16 <- khl %>% group_by(matban) %>% summarise(avg_price16= mean(price))

khl16 %>% ggplot(aes(x = matban, y = avg_price16))+
          geom_col(fill = 'purple') +
          geom_text(aes(label = round(avg_price16)), vjust = 2, color ='white') +
          labs(title = 'Hình 2.16: Giá trung bình của kim cương theo độ rộng mặt bàn', x = 'Độ rộng mặt bàn', y = 'Average Price')

Từ biểu đồ 2.16, ta có thể thấy mức giá trung bình không chênh lệch nhiều giữa các độ rộng mặt bàn khác nhau nên có thể đưa ra 1 kết luận chủ quan rằng độ rộng mặt bàn không ảnh hưởng nhiều đến giá trị của viên kim cương.

2.18 Đánh giá chất lượng của kim cương màu loại D thông qua trọng lượng.

Đầu tiên, ta sẽ tiến hành rút trích dữ liệu các viên kim cương có màu loại D, sao đó từ các biến trongluong được mã hóa từ carat và biến price.coded được mã hóa từ biến price ta sẽ thực hiện vẽ biểu đồ đếm số lượng các viên kim cương để có thể đánh giá chất lượng của viên kim cương màu D dựa trên trọng lượng của chúng

khl17 <- khl %>% filter(color == 'D') %>%
                group_by(trongluong,price.coded) %>%
                summarise(n17 = n())

khl17 %>% ggplot(aes(x = price.coded, y = n17)) + 
          geom_col(fill = 'black') +
          facet_wrap(~trongluong) +
          geom_text(aes(label = n17),vjust = 0.5, color = 'red')+
          labs(title = 'Hình 2.17: Mức giá của kim cương màu loại D theo trọng lượng', x = 'Mức giá', y = 'Số lượng')

Ở các viên kim cương màu loại D, giá trị gần như sẽ phụ thuộc vào trọng lượng của viên kim cương đó, trọng lượng càng lớn giá càng đắt, trọng lượng càng nhỏ giá càng rẻ. Điều này là hợp lý vì ở biểu đồ 2.13 đã chứng minh giá trị của viên kim cương tỷ lệ thuận với trọng lượng của nó.

2.19 Phân tích ảnh hưởng của chất lượng vết cắt(cut) đến giá trị của kim cương màu loại E dựa trên mức giá trung bình.

Ta rút trích dữ liệu các viên kim cương có màu loại E, sau đó sẽ tính mức giá trung bình của các viên kim cương này theo biến cut để có thể đánh giá được ảnh hưởng của chất lượng vết cắt đến giá trị của kim cương màu loại E.

khl18 <- khl %>% filter(color == 'E') %>%
                group_by(cut) %>%
                summarise(avg_price18 = mean(price))

khl18 %>% ggplot(aes(x = cut, y = avg_price18)) + 
          geom_col(fill = 'grey') +         
       geom_text(aes(label = round(avg_price18)),vjust = 2, color = 'brown')+
          labs(title = 'Hình 2.18: Mức giá trung bình của kim cương màu loại E theo chất lượng vết cắt', x = 'Chất lượng vết cắt', y = 'Average Price')

Nhìn chung, mức giá trung bình của kim cương loại E theo chất lượng vết cắt phân bố không khác nhiều so với mức giá trung bình trên toàn bộ kim cương theo chất lượng vết cắt (biểu đồ 2.3). Có 1 điểm khác nhỏ là ở kim cương loại E, chất lượng Fair có giá trị cao nhất, điều này khác so với trên toàn bộ kim cương thì chất lượng Premium có giá trị cao nhất.

2.20 Phân tích ảnh hưởng của độ trong(clarity) đến giá trị của kim cương màu loại F dựa trên mức giá.

Ta rút trích dữ liệu các viên kim cương có màu loại F, sau đó sẽ tính số lượng của các viên kim cương này theo biến clarity có mức giá như thế nào để có thể đánh giá được ảnh hưởng của độ trong đến giá trị của kim cương màu loại F.

khl19 <- khl %>% filter(color == 'F') %>%
                group_by(clarity,price.coded) %>%
                summarise(n19 = n())

khl19 %>% ggplot(aes(x = price.coded, y = n19)) + 
          geom_col(fill = 'brown') +       
          facet_wrap(~clarity) +
          labs(title = 'Hình 2.19: Mức giá của kim cương màu F theo độ trong', x = 'Mức giá', y = 'Số lượng')

Ở biểu đồ 2.19, ta có thể thấy những viên kim cương màu loại E có mức giá đắt và rất đắt tập trung chủ yếu ở độ trong SI1 và SI2, điều này là hợp lí bởi vì ở biểu đồ 2.2 khi phân tích mức giá trung bình của từng độ trong thì SI1 và SI2 là 2 nhóm độ trong dẫn đầu ở giá. Vậy ta có thể kết luận rằng mức giá sẽ giảm dần từ SI2 - SI1 - VS2 - VS1 - VVS2 - VVS1 - IF I1

2.21 Phân tích tác động của chiều rộng kim cương đến giá của nó ở các viên kim cương loại G

Ta rút trích dữ liệu các viên kim cương có màu loại G, sau đó sẽ tính số lượng của các viên kim cương này theo biến y(chiều rộng) đã được mã hóa có mức giá như thế nào để có thể đánh giá được ảnh hưởng của chiều rộng đến giá trị của kim cương màu loại G.

khl20 <- khl %>% filter(color == 'G') %>%
                group_by(chieurong,price.coded) %>%
                summarise(n20 = n())

khl20 %>% ggplot(aes(x = price.coded, y = n20)) + 
          geom_col(fill = 'pink') +       
          facet_wrap(~chieurong) +
          geom_text(aes(label = n20),vjust = 0.5, color = 'blue')+ 
          labs(title = 'Hình 2.20: Mức giá của kim cương màu G theo chiều rộng', x = 'Mức giá', y = 'Số lượng')

Từ hình 2.20, ta có thể thấy mức giá đắt và rất đắt tập trung chủ yếu ở các kim cương có độ rộng là rộng và vừa, còn các viên kim cương nhỏ sẽ có giá từ rất rẻ đến trung bình như vậy mức phân phối giá của kim cương loại G dường như không khác so với tổng thể.

2.22 Đếm số viên kim cương có trọng lượng Vừa theo từng chiều dài khác nhau

Ta rút trích dữ liệu các viên kim cương có trọng lượng Vừa được mã hóa từ biến carat ở trên, sau đó sẽ tiến hành vẽ biểu đồ để có thể thấy được số lượng kim cương có trọng lượng ở khoảng này theo từng chiều dài khác nhau.

khl21 <- khl %>% filter(trongluong == 'Vừa') %>%
                group_by(chieudai) %>%
                summarise(n21 = n())
khl21 %>% ggplot(aes(x=chieudai, y = n21))+
          geom_col(fill = 'green') +       
          geom_text(aes(label = n21),vjust = 0.5, color = 'blue')+ 
          labs(title = 'Hình 2.21: Số lượng kim cương có trọng lượng vừa theo từng chiều dài', x = 'Chiều dài', y = 'Số lượng')

Ta có thể thấy rõ ở những viên kim cương có trọng lượng vừa thì chiều dài trung bình chiếm đa số, các chiều dài còn lại rất ít.

2.23 Đếm số viên kim cương có trọng lượng Khá Lớn theo từng chiều dài khác nhau

Ta rút trích dữ liệu các viên kim cương có trọng lượng Khá Lớn được mã hóa từ biến carat ở trên, sau đó sẽ tiến hành vẽ biểu đồ để có thể thấy được số lượng kim cương có trọng lượng ở khoảng này theo từng chiều dài khác nhau.

khl22 <- khl %>% filter(trongluong == 'Khá Lớn') %>%
                group_by(chieudai) %>%
                summarise(n22 = n())
khl22 %>% ggplot(aes(x=chieudai, y = n22))+
          geom_col(fill = 'red') +       
          geom_text(aes(label = n22),vjust = 0.5, color = 'blue')+ 
          labs(title = 'Hình 2.22: Số lượng kim cương có trọng lượng Khá lớn theo từng chiều dài', x = 'Chiều dài', y = 'Số lượng')

Ở các viên kim cương có trọng lượng khá lớn ta dễ dàng thấy được nó tập trung chủ yếu là các viên kim cương có chiều dài trung bình khá, các chiều dài còn lại chỉ chiếm 1 số ít.

2.24 Đếm số viên kim cương có trọng lượng Lớn theo từng chiều dài khác nhau

Ta rút trích dữ liệu các viên kim cương có trọng lượng Lớn được mã hóa từ biến carat ở trên, sau đó sẽ tiến hành vẽ biểu đồ để có thể thấy được số lượng kim cương có trọng lượng ở khoảng này theo từng chiều dài khác nhau.

khl23 <- khl %>% filter(trongluong == 'Lớn') %>%
                group_by(chieudai) %>%
                summarise(n23 = n())
khl23 %>% ggplot(aes(x=chieudai, y = n23))+
          geom_col(fill = 'yellow') +       
          geom_text(aes(label = n23),vjust = 0.5, color = 'blue')+ 
          labs(title = 'Hình 2.23: Số lượng kim cương có trọng lượng lớn theo từng chiều dài', x = 'Chiều dài', y = 'Số lượng')

Ở các viên kim cương có trọng lượng lớn ta dễ dàng thấy được nó tập trung chủ yếu là các viên kim cương có chiều dài dài, các chiều dài còn lại chỉ chiếm 1 số ít và đặc biệt là ở các viên kim cương này không có chiều dài trung bình

2.25 Phân tích sự ảnh hưởng của mặt bàn đến giá trị các viên kim cương có giá rất đắt

Từ biến matban được mã hóa từ table và biến price.coded được mã hóa từ price, ta tiến hành rút trích các dữ liệu của kim cương có giá rất đắt và đếm số kim cương có giá này theo từng độ rộng của mặt bàn khác nhau, từ đó có thể đánh giá sự tác động của độ rộng mặt bàn đến giá trị kim cương.

khl24 <- khl %>% filter(price.coded == 'Rất Đắt') %>%
                group_by(matban) %>%
                summarise(n24 = n())
khl24 %>% ggplot(aes(x=matban, y = n24))+
          geom_col(fill = 'black') +       
          geom_text(aes(label = n24),vjust = 0.5, color = 'pink')+ 
          labs(title = 'Hình 2.24: Số lượng kim cương có giá rất đắt theo từng độ rộng mặt bàn', x = 'Độ rộng mặt bàn', y = 'Số lượng')

Biểu đồ 2.24 có sự chênh lệch khá rõ rệt, điều này cho thấy các viên kim cương có mặt bàn trung bình thì thường sẽ có giá rất đắt, 1 số ít viên kim cương có mặt bàn hẹp và rộng thì cũng có giá này.

2.26 Phân tích sự ảnh hưởng của mặt bàn đến giá trị các viên kim cương có giá trung bình

Từ biến matban được mã hóa từ table và biến price.coded được mã hóa từ price, ta tiến hành rút trích các dữ liệu của kim cương có giá trung bình và đếm số kim cương có giá này theo từng độ rộng của mặt bàn khác nhau, từ đó có thể đánh giá sự tác động của độ rộng mặt bàn đến giá trị kim cương.

khl25 <- khl %>% filter(price.coded == 'Trung bình') %>%
                group_by(matban) %>%
                summarise(n25 = n())
khl25 %>% ggplot(aes(x=matban, y = n25))+
          geom_col(fill = 'purple') +       
          geom_text(aes(label = n25),vjust = 0.5, color = 'pink')+ 
          labs(title = 'Hình 2.25: Số lượng kim cương có giá trung bình theo từng độ rộng mặt bàn', x = 'Độ rộng mặt bàn', y = 'Số lượng')

Biểu đồ 2.24 có sự chênh lệch khá rõ rệt, điều này cho thấy các viên kim cương có mặt bàn trung bình thì thường sẽ có giá trung bình, 1 số ít viên kim cương có mặt bàn hẹp và rộng thì cũng có giá này.

2.27 Phân tích sự ảnh hưởng của mặt bàn đến giá trị các viên kim cương có giá rẻ

Từ biến matban được mã hóa từ table và biến price.coded được mã hóa từ price, ta tiến hành rút trích các dữ liệu của kim cương có giá rẻ và đếm số kim cương có giá này theo từng độ rộng của mặt bàn khác nhau, từ đó có thể đánh giá sự tác động của độ rộng mặt bàn đến giá trị kim cương.

khl26 <- khl %>% filter(price.coded == 'Rẻ') %>%
                group_by(matban) %>%
                summarise(n26 = n())
khl26 %>% ggplot(aes(x=matban, y = n26))+
          geom_col(fill = 'green') +       
          geom_text(aes(label = n26),vjust = 0.5, color = 'pink')+ 
          labs(title = 'Hình 2.26: Số lượng kim cương có giá rẻ theo từng độ rộng mặt bàn', x = 'Độ rộng mặt bàn', y = 'Số lượng')

Ta có thể thấy ở các viên kim cương có giá rẻ thì mặt bàn trung bình chiếm đa số tiếp đến là mặt bàn hẹp và mặt bàn rộng.

2.28 Phân tích sự tác động của chất lượng vết cắt Fair đến giá của kim cương

Từ dữ liệu biến cut ta sẽ rút trích các viên kim cương có chất lượng vết cắt Fair, sau đó sẽ đếm số lượng kim cương theo biến price.coded

khl27 <- khl %>% filter(cut == 'Fair') %>%
                group_by(price.coded) %>%
                summarise(n27 = n())
khl27 %>% ggplot(aes(x=price.coded, y = n27))+
          geom_col(fill = 'blue') +       
          geom_text(aes(label = n27),vjust = 0.5, color = 'pink')+ 
          labs(title = 'Hình 2.27: Số lượng kim cương có chất lượng vết cắt **Fair** theo các mức giá', x = 'Mức giá', y = 'Số lượng')

Ta dễ dàng thấy đối với các viên kim cương có chất lượng vết cắt Fair thì đa số nó đều có giá rất đắt, 1 số ít viên kim cương có các mức giá còn lại.

2.29 Phân tích sự tác động của chất lượng vết cắt Ideal đến giá của kim cương

Từ dữ liệu biến cut ta sẽ rút trích các viên kim cương có chất lượng vết cắt Ideal, sau đó sẽ đếm số lượng kim cương theo biến price.coded

khl28 <- khl %>% filter(cut == 'Ideal') %>%
                group_by(price.coded) %>%
                summarise(n28 = n())
khl28 %>% ggplot(aes(x=price.coded, y = n28))+
          geom_col(fill = 'brown') +       
          geom_text(aes(label = n28),vjust = 0.5, color = 'pink')+ 
          labs(title = 'Hình 2.28: Số lượng kim cương có chất lượng vết cắt **Ideal** theo các mức giá', x = 'Mức giá', y = 'Số lượng')

Ở các viên kim cương có chất lượng vết cắt Ideal, giá trị của nó phân bố đa dạng hơn, nhưng chủ yếu vẫn là các viên kim cương có giá rất đắt và chỉ có 1 số ít có giá rất rẻ.

2.30 Phân tích sự tác động của chất lượng vết cắt Good đến giá của kim cương

Từ dữ liệu biến cut ta sẽ rút trích các viên kim cương có chất lượng vết cắt Good, sau đó sẽ đếm số lượng kim cương theo biến price.coded

khl29 <- khl %>% filter(cut == 'Good') %>%
                group_by(price.coded) %>%
                summarise(n29 = n())
khl29 %>% ggplot(aes(x=price.coded, y = n29))+
          geom_col(fill = 'green') +       
          geom_text(aes(label = n29),vjust = 0.5, color = 'pink')+ 
          labs(title = 'Hình 2.29: Số lượng kim cương có chất lượng vết cắt **Good** theo các mức giá', x = 'Mức giá', y = 'Số lượng')

Ở các viên kim cương có chất lượng vết cắt Good thì có giá chủ yếu vẫn là mức rất đắt.

2.31 Phân tích sự tác động của chất lượng vết cắt Premium đến giá của kim cương

Từ dữ liệu biến cut ta sẽ rút trích các viên kim cương có chất lượng vết cắt Premium, sau đó sẽ đếm số lượng kim cương theo biến price.coded

khl30 <- khl %>% filter(cut == 'Premium') %>%
                group_by(price.coded) %>%
                summarise(n30 = n())
khl30 %>% ggplot(aes(x=price.coded, y = n30))+
          geom_col(fill = 'red') +       
          geom_text(aes(label = n30),vjust = 0.5, color = 'white')+ 
          labs(title = 'Hình 2.30: Số lượng kim cương có chất lượng vết cắt **Premium** theo các mức giá', x = 'Mức giá', y = 'Số lượng')

Tương tự như những viên kim cương có chất lượng vết cắt trên, chất lượng premium vẫn có những viên kim cương chủ yếu là có mức giá rất đắt. Vậy ta có thể kết luận rằng, chất lượng vết cắt không ảnh hưởng quá nhiều đến giá trị của viên kim cương.