Đánh giá 53940 viên kim cương trên dữ liệu Diamonds, dựa trên tiêu chuẩn 4C được viết tắt từ 4 tiêu chí của GIA gồm:
CLARITY (Cấp độ tinh khiết của kim cương)
COLOR (Cấp độ màu của kim cương)
CARAT (Trọng lượng của kim cương)
CUT (Vết cắt của kim cương (bao gồm: depth và table))
Đánh giá kim cương thông qua tiêu chuẩn 4C dựa trên biểu đồ dạng Bar-chart
Trước hết, ta cần phải gọi dữ liệu diamonds lên
## Installing package into 'C:/Users/DELL/AppData/Local/R/win-library/4.3'
## (as 'lib' is unspecified)
## package 'ggplot2' successfully unpacked and MD5 sums checked
##
## The downloaded binary packages are in
## C:\Users\DELL\AppData\Local\Temp\RtmpMVU583\downloaded_packages
##
## 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
Đổi tên biến cut trong dữ liệu diamonds, thay bằng tên loại để tránh bị nhầm lẫn khi đánh giá giữa loại của kim cương và vết cắt của kim cương
dp <- rename(dp, loai = cut)
datatable(dp)
Trong tiêu chuẩn 4C, độ tinh khiết của kim cương là số lượng và khả năng hiển thị của các đặc điểm bên trong và bên ngoài của một viên kim cương.
Cấp độ trong cao nhất là Hoàn mỹ, được ký hiệu là IF (Internal Flawless): Những viên kim cương này không có tạp chất tỳ vết nào được nhìn thấy dưới độ phóng đại 10 lần.
Hai lớp tiếp theo được nhóm lại với nhau là VVS1 và VVS2: Những viên kim cương này được định nghĩa là rất rất ít tỳ vết bên trong, gồm cấp độ thứ nhất (VVS1) hoặc thứ hai (VVS2).
Tiếp theo là các cấp độ tinh khiết VS1 và VS2: Các đầu kim (needle) và vết lông vũ nhỏ (small feather) có thể được tìm thấy trong các lớp VS1 và VS2 này nhưng chúng vẫn rất nhỏ so với kích thước của viên kim cương.
Cấp độ mà tỳ vết hoặc tạp chất có thể nhìn thấy rõ ràng là SI1 và SI2: Tạp chất dễ nhìn thấy dưới độ phóng đại ký loupe cầm tay nhưng thường không thể nhìn thấy bằng mắt thường.
Phạm vi cấp độ rõ ràng cuối cùng là I1: Các tạp chất có thể lớn hơn trong tự nhiên, có thể sẫm màu và có thể nhìn thấy bằng mắt trong số các thuộc tính có thể có khác.
dp %>% group_by(clarity) %>% summarise(n = n()) %>%
ggplot(aes(clarity,n)) +
geom_col(fill='red') +
geom_text(aes(label = n),vjust = 0, color = 'palevioletred') +
xlab('Độ tinh khiết') +
ylab('Số lượng (viên)') +
labs(title = 'Hình 1: Cấp độ tinh khiết của kim cương')
dp %>% group_by(clarity) %>% summarise(n = n()) %>%
ggplot(aes(clarity,n)) +
geom_col(fill='red') +
geom_text(aes(label = percent(n/length(dp$clarity))),vjust = 0, color = 'palevioletred') +
xlab('Độ tinh khiết') +
ylab('Số lượng (viên)') +
labs(title = 'Hình 2: Cấp độ tinh khiết của kim cương (%)')
Qua hình trên ta thấy được:
Độ tinh khiết của kim cương có số lượng tăng dần từ cấp độ I1 đến SI1, nhưng lại giảm dần từ cấp độ VS2 đến cấp độ IF.
Kim cương chiếm số lượng nhiều nhất là ở độ tinh khiết SI1, điều này cho thấy ở cấp độ này người ta dễ dàng khai thác hơn các cấp độ còn lại.
Kim cương ở độ tinh khiết cao nhất IF chiếm số lượng không nhiều, điều này cho thấy muốn khai thác kim cương ở độ tinh khiết này không dễ dàng.
# Cài đặt gói dplyr
install.packages("dplyr")
# Tải gói dplyr vào môi trường làm việc
library(dplyr)
dp %>%
group_by(clarity) %>%
summarise(m = mean(price, na.rm = TRUE)) %>%
ggplot(aes(x = clarity, y = m)) +
geom_col(fill = 'lightblue', position = 'dodge') +
geom_text(aes(label = round(m, 1)), vjust = 2, color = 'green') +
labs(x = 'Độ trong suốt', y = 'Giá trung bình', title = 'Giá trung bình của kim cương theo độ trong suốt') +
theme_minimal()
Kết quả trả về là một biểu đồ cột thể hiện giá trung bình của kim cương theo độ trong suốt, với các nhóm clarity được hiển thị trên trục x và giá trị trung bình tương ứng được hiển thị trên trục y.
# Cài đặt gói dplyr
install.packages("dplyr")
# Tải gói dplyr vào môi trường làm việc
library(dplyr)
dp %>% group_by(clarity) %>% summarise(m= mean(carat)) %>%
ggplot(aes(x = clarity,y = m)) +
geom_col(position = 'dodge') +
geom_text(aes(label = round(m,5)), vjust = 2, color = 'green') +
labs(x = 'độ trong suốt', y = 'trọng lượng trung bình', title = 'độ trong suốt theo trọng lượng trung bình')
Kết quả trả về là một biểu đồ cột thể hiện trọng lượng trung bình của kim cương theo độ trong suốt. Mỗi cột biểu diễn một cấp độ độ trong suốt, và chiều cao của cột tương ứng với trọng lượng trung bình của các kim cương trong nhóm. Các nhãn trên cột hiển thị trọng lượng trung bình của mỗi nhóm.
Cấp độ màu của kim cương không đề cập đến màu sắc mà là “độ trong” của màu sắc:
D, E và F đều được coi là các lớp kim cương không màu.
Chúng là nhóm màu trắng cao nhất trong thang GIA và chỉ có sự khác biệt nhỏ (chủ yếu là độ trong suốt) có thể xuất hiện với khó khăn trong việc phân tách các lớp dưới chế độ xem thông thường. G, H, I và J đều được coi là gần như không màu.
# Cài đặt gói dplyr
install.packages("dplyr")
# Tải gói dplyr vào môi trường làm việc
library(dplyr)
dp %>%
group_by(color) %>% # Nhóm dữ liệu theo màu sắc
summarise(g = var(y)) %>% # Tính phương sai (variance) của biến y trong mỗi nhóm màu sắc
ggplot(aes(x = color, y = g)) + # Tạo biểu đồ
geom_col(position = 'dodge', fill = 'navy') + # Vẽ cột
geom_text(aes(label = round(g, 2)), # Thêm nhãn trên cột, làm tròn phương sai đến 2 chữ số sau dấu thập phân
vjust = 2, color = 'black') + # Điều chỉnh vị trí nhãn và màu sắc
labs(x = 'Màu sắc', y = 'Phương sai', # Đặt tên cho trục x và trục y
title = 'Phương sai của y theo biến color') # Đặt tiêu đề cho biểu đồ
Đoạn code này sử dụng gói dplyr để tổng hợp dữ liệu theo nhóm màu sắc và tính toán phương sai của biến y trong mỗi nhóm. Sau đó, sử dụng ggplot2 để tạo biểu đồ cột thể hiện phương sai của biến y theo màu sắc. Cột của biểu đồ được tô màu xanh đậm (navy), và trên mỗi cột được thêm nhãn với giá trị phương sai được làm tròn đến 2 chữ số sau dấu thập phân. Ngoài ra, tiêu đề và nhãn cho trục x và trục y cũng được đặt tên thích hợp để làm rõ nội dung của biểu đồ.
# Tải gói dplyr vào môi trường làm việc
library(dplyr)
# Tính toán số lượng kim cương theo cấp độ màu và vẽ biểu đồ
dp %>%
mutate(colorC = ifelse(color %in% c("D", "E", "F"), "Không màu", "Gần như không màu")) %>%
count(colorC) %>%
ggplot(aes(x = colorC, y = n, fill = colorC)) +
geom_col() +
geom_text(aes(label = n), vjust = -0.5, color = 'black') +
labs(x = 'Cấp độ màu', y = 'Số lượng (viên)', title = 'Số lượng kim cương theo cấp độ màu') +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Kết quả trả về là một biểu đồ cột thể hiện số lượng kim cương theo cấp độ màu, với mỗi cấp độ màu được phân loại là “Không màu” hoặc “Gần như không màu”, và số lượng được hiển thị trên từng cột. Biểu đồ có giao diện minimal và nhãn trên trục x được xoay dọc để dễ đọc hơn.
Với đoạn mã này, bạn sẽ có một biểu đồ cột hiển thị số lượng các loại cut trong dữ liệu diamonds, với mỗi cột được tô màu tương ứng với loại cut của nó.
# Cài đặt gói dplyr
install.packages("dplyr")
# Tải gói dplyr vào môi trường làm việc
library(dplyr)
dp %>%
filter(color %in% c("D", "E", "F")) %>%
group_by(color, loai) %>%
summarise(n = n()) %>%
ggplot(aes(x = loai, y = n, fill = color)) + # Thêm màu sắc tùy thuộc vào color
geom_col(position = 'dodge') +
facet_wrap(~ color) +
labs(x = 'Loại', y = 'Số lượng', title= 'Số lượng của các loại theo từng màu' ) +
coord_flip()
## `summarise()` has grouped output by 'color'. You can override using the
## `.groups` argument.
Kết quả trả về sẽ là một biểu đồ dạng cột, trong đó các cột tượng trưng cho số lượng các loại kim cương (cut) được phân loại theo màu sắc (color). Biểu đồ sẽ được phân chia thành các phần nhỏ tương ứng với từng màu sắc. Trục x biểu đồ sẽ biểu diễn các loại kim cương (cut), trục y sẽ biểu diễn số lượng các loại kim cương, và màu sắc của cột sẽ tương ứng với màu sắc của kim cương (color).
# Cài đặt gói dplyr
install.packages("dplyr")
# Tải gói dplyr vào môi trường làm việc
library(dplyr)
dp %>% filter(color %in% c("D", "E", "F")) %>%
group_by(loai, color) %>%
summarise(n = n()) %>%
ggplot(aes(x = loai, y = n, fill = color)) +
geom_col(position = 'dodge') +
labs(x = 'Loại', y = 'Số lượng', fill = 'Màu') +
scale_fill_manual(values = c("D" = "blue", "E" = "green", "F" = "red"))
## `summarise()` has grouped output by 'loai'. You can override using the
## `.groups` argument.
Kết quả trả về là một biểu đồ cột, trong đó các cột biểu diễn số lượng các loại kim cương (cut) được phân loại theo màu sắc (color). Mỗi loại cut được biểu diễn trên trục x, số lượng được biểu diễn trên trục y, và màu sắc của cột tượng trưng cho màu sắc của kim cương. Điều này giúp quan sát sự phân bố của các loại kim cương theo từng màu sắc khác nhau và mối quan hệ giữa chúng. Ở đây là ba màu riêng biệt
# Cài đặt gói dplyr
install.packages("dplyr")
# Tải gói dplyr vào môi trường làm việc
library(dplyr)
dp %>% filter(color %in% c("D", "E", "F")) %>%
group_by(loai, color) %>%
summarise(n = n()) %>%
ggplot(aes(x = loai, y = n, fill = color)) +
geom_col(position = 'dodge') +
labs(x = 'Loại', y = 'Số lượng', fill = 'Màu') +
geom_text(aes(label = n), vjust = -0.5, color = 'white', size = 3) +
scale_fill_manual(values = c("D" = "blue", "E" = "green", "F" = "red"))
## `summarise()` has grouped output by 'loai'. You can override using the
## `.groups` argument.
Kết quả trả về là một biểu đồ cột, thể hiện số lượng các loại kim cương (cut) được phân loại theo màu sắc (color) “D”, “E”, “F”. Mỗi loại cut được biểu diễn trên trục x, số lượng được biểu diễn trên trục y, và màu sắc của cột tượng trưng cho màu sắc của kim cương. Chú thích số lượng được hiển thị trên từng cột với màu trắng.
# Cài đặt gói dplyr
install.packages("dplyr")
# Tải gói dplyr vào môi trường làm việc
library(dplyr)
dp <- dp %>% mutate(color_code = case_when(
color == "D" | color == "E" | color == "F" ~ 1,
color == "G" | color == "H" | color == "I" | color == "J" ~ 2))
dp <- mutate(dp, colorC = cut(color_code, 2, label = c('không màu', 'gần như không màu')))
dp %>% group_by(colorC) %>% summarise(n=n()) %>%
ggplot(aes(colorC, n)) +
geom_col(fill = 'red') +
geom_text(aes(label = n), vjust = 0, color = 'black') +
xlab('Màu sắc') +
ylab('Số lượng (viên)') +
labs(title = 'Cấp độ màu của kim cương')
Kết quả trả về là một biểu đồ cột thể hiện số lượng kim cương theo cấp độ màu, trong đó các nhóm màu được phân loại là ‘không màu’ hoặc ‘gần như không màu’. Số lượng kim cương được hiển thị trên từng cột và các nhãn trục được đặt tương ứng.
# Tải gói dplyr vào môi trường làm việc
library(dplyr)
# Tính toán số lượng kim cương theo cấp độ màu và vẽ biểu đồ
dp %>%
mutate(colorC = ifelse(color %in% c("D", "E", "F"), "Không màu", "Gần như không màu")) %>%
count(colorC) %>%
ggplot(aes(x = colorC, y = n, fill = colorC)) +
geom_col() +
geom_text(aes(label = n), vjust = -0.5, color = 'black') +
labs(x = 'Cấp độ màu', y = 'Số lượng (viên)', title = 'Số lượng kim cương theo cấp độ màu') +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Kết quả trả về là một biểu đồ cột thể hiện số lượng kim cương theo cấp độ màu, với nhãn cho từng cấp độ màu và số lượng tương ứng.
Trọng lượng carat của viên kim cương được xác định bằng cách cân viên kim cương trên một chiếc cân điện tử chính xác. Một carat bằng 1/5 gam, vì vậy một gam sẽ bằng năm carat.
Số carat thường được giữ hai số thập phân cuối cùng, ví dụ như 1.53 , 1.00 , 2.93 carat. Vì vậy, một viên kim cương một nửa carat sẽ được biểu thị bằng 0,50 carat, một viên kim cương một carat sẽ được biểu thị bằng 1,00.
Trọng lượng chính xác là rất quan trọng vì việc định giá dựa trên trọng lượng này và có sự khác biệt đáng kể về giá cả đôi khi chỉ hơn một phần trăm carat. Một viên kim cương nặng 0,99 carat có giá thấp hơn một viên kim cương nặng 1,00 carat. Tuy nhiên nếu nhìn bằng mắt thường bạn sẽ không phân biệt được sự khác biệt này.
# Cài đặt gói dplyr
install.packages("dplyr")
# Tải gói dplyr vào môi trường làm việc
library(dplyr)
dp %>% group_by(loai,color) %>% summarise(n=n()) %>%
ggplot(aes(x = loai,y = n)) +
geom_col(position = 'dodge') +
facet_wrap(~color) +
geom_text(aes(label = n),vjust = -0.5, color = 'green') +
labs(x = 'Loại', y = 'Số lượng')
## `summarise()` has grouped output by 'loai'. You can override using the
## `.groups` argument.
Kết quả trả về là một biểu đồ cột, trong đó mỗi facet tương ứng với một màu của kim cương. Các cột thể hiện số lượng kim cương tương ứng với từng loại cắt, và số lượng được chú thích bên trên mỗi cột.
# Cài đặt gói dplyr
install.packages("dplyr")
# Tải gói dplyr vào môi trường làm việc
library(dplyr)
dp %>% group_by(carat) %>% filter(carat >= 0.4 & carat <= 0.45) %>% summarise(m = round(mean(price),0)) %>%
ggplot(aes(carat, m)) +
geom_col(fill='lightblue') +
geom_text(aes(label = m), vjust = 0, color = 'navy') +
xlab('Trọng lượng') +
ylab('Giá bán trung bình') +
labs(title = 'Trọng lượng từ 0.4 đến 0.45 của kim cương dựa trên giá bán trung bình')
Kết quả trả về là một biểu đồ cột thể hiện giá bán trung bình của kim cương trong phạm vi từ 0.4 đến 0.45 carat, với trọng lượng trên trục x và giá bán trung bình trên trục y. Nhãn trên mỗi cột cho biết giá bán trung bình tương ứng của kim cương.
# Cài đặt gói dplyr
install.packages("dplyr")
# Tải gói dplyr vào môi trường làm việc
library(dplyr)
dp %>%
group_by(color) %>%
filter(carat >= 0.4 & carat <= 0.45) %>%
summarise(m = round(mean(price), 0)) %>%
ggplot(aes(x = color, y = m, fill = color)) +
geom_col() +
geom_text(aes(label = m), vjust = -0.5, color = 'black') +
xlab('Màu sắc') +
ylab('Giá bán trung bình') +
labs(title = 'Giá bán trung bình của kim cương từ 0.4 đến 0.45 carat theo màu sắc')
Kết quả trả về là một biểu đồ cột thể hiện giá bán trung bình của các kim cương có trọng lượng từ 0.4 đến 0.45 carat theo màu sắc. Mỗi cột biểu diễn một màu sắc, và chiều cao của cột tương ứng với giá bán trung bình của các kim cương trong nhóm. Các nhãn trên cột hiển thị giá bán trung bình của mỗi nhóm.
# Cài đặt gói dplyr
install.packages("dplyr")
# Tải gói dplyr vào môi trường làm việc
library(dplyr)
dp %>% group_by(loai) %>% summarise(n = n()) %>%
ggplot(aes(loai,n)) +
geom_col(fill='green') +
geom_text(aes(label = percent(n/length(dp$carat))),vjust = 2, color = 'red') +
labs(x = 'Loại', y = 'Số lượng', title = 'số lượng chiếm lĩnh của các loại' )
Kết quả trả về thể hiện phần trăm của mỗi loại carat chiếm lĩnh trong các loại và số lượng của mỗi loại hiện hữu