thong_ke_dinh_tinh <- function(data, var_name) {
# Check if variable exists in data
if (!var_name %in% names(data)) {
stop("Variable does not exist in data")
}
# Convert to factor if needed
variable <- as.factor(data[[var_name]])
# freq
freq <- table(variable)
percent <- prop.table(freq) * 100
# result
result <- data.frame(
Gia_tri = names(freq),
Tan_so = as.vector(freq),
Tan_suat = round(as.vector(percent), 2)
)
return(result)
}## Gia_tri Tan_so Tan_suat
## 1 F 7170 51
## 2 M 6889 49
ggplot(data = a, aes(x = Gender)) +
geom_bar(fill = "#DFC000FF") +
geom_text(stat = "count", aes(label = ..count..), vjust = -0.5) +
labs(title = "Giới tính khách hàng",
x = "Giới tính", y = "Tần số") +
theme_minimal()Phân bố giới tính ở các đơn mua khá cân bằng, chỉ chênh lệch nhẹ giữa nữ (F) và nam (M).
Điều này cho thấy dữ liệu có tính đại diện giới tương đối tốt, tránh được thiên lệch giới tính.
## Gia_tri Tan_so Tan_suat
## 1 M 6866 48.84
## 2 S 7193 51.16
Gần một nửa đơn mua là độc thân, còn lại là đã kết hôn.
Tỷ lệ này cũng tương đối cân bằng, giúp so sánh hành vi theo tình trạng hôn nhân mà không lo thiên lệch dữ liệu.
ggplot(data = a, aes(x = "", fill = MaritalStatus)) +
geom_bar(width = 1) +
coord_polar("y") +
labs(title = "Tỷ lệ độc thân") +
theme_void()## Gia_tri Tan_so Tan_suat
## 1 N 5615 39.94
## 2 Y 8444 60.06
Phần lớn đơn mua được thực hiện bởi những khách hàng sở hữu nhà (chiếm ~60%).
Điều này có thể ảnh hưởng đến thói quen chi tiêu hoặc ưu tiên mua sắm, là một đặc điểm quan trọng để phân khúc khách hàng.
ggplot(data = a, aes(x = Homeowner)) +
geom_bar(fill = "#ABE0AF") +
geom_text(stat = "count", aes(label = ..count..), vjust = -0.5) +
labs(title = "Sở hữu nhà",
x = "Có hoặc không", y = "Tần số") +
theme_minimal()## Gia_tri Tan_so Tan_suat
## 1 $10K - $30K 3090 21.98
## 2 $110K - $130K 643 4.57
## 3 $130K - $150K 760 5.41
## 4 $150K + 273 1.94
## 5 $30K - $50K 4601 32.73
## 6 $50K - $70K 2370 16.86
## 7 $70K - $90K 1709 12.16
## 8 $90K - $110K 613 4.36
$30K - $50K chiếm hơn 1/3 (32.73%) tổng số quan sát → là nhóm đông nhất. Kết hợp với $10K - $30K, ta có khoảng 55% người thuộc nhóm dưới $50K cho thấy mức thu nhập trung bình hoặc thấp là phổ biến.
Nhóm thu nhập cao (trên $90K) Gồm $90K - $110K, $110K - $130K, $130K - $150K, $150K+. Tổng tần suất chỉ khoảng 16.28% cho thấy nhóm thu nhập cao khá nhỏ.
Kết quả này cho thấy đa số đơn mua được thực hiện bởi các khách hàng có mức thu nhập trung bình hoặc thấp.
ggplot(a, aes(x = AnnualIncome)) +
geom_bar(fill = "lightgreen", color = "black") +
labs(x = "Khoảng thu nhập", y = "Tần suất", title = "Biểu đồ tần suất thu nhập hàng năm") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))## Gia_tri Tan_so Tan_suat
## 1 Acapulco 383 2.72
## 2 Bellingham 143 1.02
## 3 Beverly Hills 811 5.77
## 4 Bremerton 834 5.93
## 5 Camacho 452 3.22
## 6 Guadalajara 75 0.53
## 7 Hidalgo 845 6.01
## 8 Los Angeles 926 6.59
## 9 Merida 654 4.65
## 10 Mexico City 194 1.38
## 11 Orizaba 464 3.30
## 12 Portland 876 6.23
## 13 Salem 1386 9.86
## 14 San Andres 621 4.42
## 15 San Diego 866 6.16
## 16 San Francisco 130 0.92
## 17 Seattle 922 6.56
## 18 Spokane 875 6.22
## 19 Tacoma 1257 8.94
## 20 Vancouver 633 4.50
## 21 Victoria 176 1.25
## 22 Walla Walla 160 1.14
## 23 Yakima 376 2.67
Salem có tần số cao nhất (1386 lần xuất hiện, chiếm 9.86). Tiếp theo là Tacoma (1257 lần, 8.94%).
Guadalajara có tần số thấp nhất (75 lần, chỉ 0.53%).
Nhìn chung, số lượng khách hàng ở các thành phố phân bố khá chênh lệch, điều này có thể dẫn đến những kết quả thiên lệch trong việc phân tích và so sánh giữa các thành phố.
ggplot(a, aes(x = City)) +
geom_bar(fill = "lightgreen", color = "black") +
labs(x = "Thành phố", y = "Tần số", title = "Biểu đồ tần số khách hàng ở các thành phố") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))## Gia_tri Tan_so Tan_suat
## 1 BC 809 5.75
## 2 CA 2733 19.44
## 3 DF 815 5.80
## 4 Guerrero 383 2.72
## 5 Jalisco 75 0.53
## 6 OR 2262 16.09
## 7 Veracruz 464 3.30
## 8 WA 4567 32.48
## 9 Yucatan 654 4.65
## 10 Zacatecas 1297 9.23
WA (Washington) chiếm tỷ lệ áp đảo (32.48%, 4567 lần xuất hiện), CA (California) đứng thứ hai (19.44%, 2733 lần), OR (Oregon) đứng thứ ba (16.09%, 2262 lần). => Ba bang này thuộc Tây Bắc Thái Bình Dương của Hoa Kỳ chiếm tổng cộng 68.01% dữ liệu
Các tỉnh Mexico (DF, Guerrero, Jalisco, Veracruz, Yucatan, Zacatecas) có tần suất thấp hơn nhiều. Tổng cộng các tỉnh Mexico chỉ chiếm khoảng 26.23% dữ liệu
Kết quả này cho thấy sự tập trung địa lý rõ rệt trong tập dữ liệu, với phần lớn dữ liệu đến từ ba bang phía Tây Bắc Hoa Kỳ.
ggplot(a, aes(x = StateorProvince)) +
geom_bar(fill = "#FFCC99", color = "black") +
labs(x = "Bang", y = "Tần số", title = "Biểu đồ tần số khách hàng ở các bang") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))## Gia_tri Tan_so Tan_suat
## 1 Canada 809 5.75
## 2 Mexico 3688 26.23
## 3 USA 9562 68.01
Dữ liệu cho thấy sự phân bố không đồng đều giữa các quốc gia, với Hoa Kỳ (USA) chiếm tỷ lệ áp đảo (68.01%, 9.562 lần xuất hiện), tiếp theo là Mexico (26.23%, 3.688 lần) và Canada (5.75%, 809 lần). Điều này cho thấy tập dữ liệu chủ yếu tập trung vào thị trường Mỹ, có thể do dữ liệu được thu thập từ nguồn ưu tiên các giao dịch hoặc sự kiện tại Hoa Kỳ.
ggplot(a, aes(x = Country)) +
geom_bar(fill = "#00FFCC", color = "black") +
labs(x = "Quốc gia", y = "Tần số", title = "Biểu đồ tần số khách hàng ở các quốc gia") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))## Gia_tri Tan_so Tan_suat
## 1 Drink 1250 8.89
## 2 Food 10153 72.22
## 3 Non-Consumable 2656 18.89
Dữ liệu cho thấy sản phẩm thực phẩm (Food) chiếm tỷ lệ áp đảo (72.22%, 10.153 lần xuất hiện), trong khi nhóm đồ uống (Drink) chỉ chiếm 8.89% và sản phẩm không tiêu dùng (Non-Consumable) chiếm 18.89%. Sự chênh lệch rõ rệt này (Food gấp 8 lần Drink và gần 4 lần Non-Consumable) phản ánh trọng tâm của tập dữ liệu chủ yếu tập trung vào các sản phẩm thực phẩm.
ggplot(a, aes(x = ProductFamily)) +
geom_bar(fill = "#CCFF66", color = "black") +
labs(x = "Sản phẩm", y = "Tần số", title = "Phân khúc sản phẩm khách hàng mua") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))## Gia_tri Tan_so Tan_suat
## 1 Alcoholic Beverages 356 2.53
## 2 Baked Goods 425 3.02
## 3 Baking Goods 1072 7.63
## 4 Beverages 680 4.84
## 5 Breakfast Foods 188 1.34
## 6 Canned Foods 977 6.95
## 7 Canned Products 109 0.78
## 8 Carousel 59 0.42
## 9 Checkout 82 0.58
## 10 Dairy 903 6.42
## 11 Deli 699 4.97
## 12 Eggs 198 1.41
## 13 Frozen Foods 1382 9.83
## 14 Health and Hygiene 893 6.35
## 15 Household 1420 10.10
## 16 Meat 89 0.63
## 17 Periodicals 202 1.44
## 18 Produce 1994 14.18
## 19 Seafood 102 0.73
## 20 Snack Foods 1600 11.38
## 21 Snacks 352 2.50
## 22 Starchy Foods 277 1.97
Tập trung vào thực phẩm tươi và đồ gia dụng: Hai nhóm Produce và Household chiếm tổng cộng gần 25% dữ liệu, cho thấy đây có thể là các mặt hàng chủ lực.
Sự thiếu cân đối rõ rệt: Trong khi một số nhóm như Produce chiếm tới 14.18% thì nhiều nhóm khác như Meat, Seafood lại chiếm chưa tới 1%.
ggplot(a, aes(x = ProductDepartment)) +
geom_bar(fill = "#99CC99", color = "black") +
labs(x = "Sản phẩm", y = "Tần số", title = "Bộ phận sản phẩm khách hàng mua") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))## Gia_tri Tan_so Tan_suat
## 1 Baking Goods 484 3.44
## 2 Bathroom Products 365 2.60
## 3 Beer and Wine 356 2.53
## 4 Bread 425 3.02
## 5 Breakfast Foods 417 2.97
## 6 Candles 45 0.32
## 7 Candy 352 2.50
## 8 Canned Anchovies 44 0.31
## 9 Canned Clams 53 0.38
## 10 Canned Oysters 35 0.25
## 11 Canned Sardines 40 0.28
## 12 Canned Shrimp 38 0.27
## 13 Canned Soup 404 2.87
## 14 Canned Tuna 87 0.62
## 15 Carbonated Beverages 154 1.10
## 16 Cleaning Supplies 189 1.34
## 17 Cold Remedies 93 0.66
## 18 Dairy 903 6.42
## 19 Decongestants 85 0.60
## 20 Drinks 135 0.96
## 21 Eggs 198 1.41
## 22 Electrical 355 2.53
## 23 Frozen Desserts 323 2.30
## 24 Frozen Entrees 118 0.84
## 25 Fruit 765 5.44
## 26 Hardware 129 0.92
## 27 Hot Beverages 226 1.61
## 28 Hygiene 197 1.40
## 29 Jams and Jellies 588 4.18
## 30 Kitchen Products 217 1.54
## 31 Magazines 202 1.44
## 32 Meat 761 5.41
## 33 Miscellaneous 42 0.30
## 34 Packaged Vegetables 48 0.34
## 35 Pain Relievers 192 1.37
## 36 Paper Products 345 2.45
## 37 Pizza 194 1.38
## 38 Plastic Products 141 1.00
## 39 Pure Juice Beverages 165 1.17
## 40 Seafood 102 0.73
## 41 Side Dishes 153 1.09
## 42 Snack Foods 1600 11.38
## 43 Specialty 289 2.06
## 44 Starchy Foods 277 1.97
## 45 Vegetables 1728 12.29
Dữ liệu cho thấy Snack Foods (11.38%) và Vegetables (12.29%) là hai danh mục phổ biến nhất, chiếm tổng cộng gần 1/4 dữ liệu. Các danh mục đáng chú ý khác bao gồm Dairy (6.42%), Fruit (5.44%), và Meat (5.41%), trong khi nhiều danh mục như đồ hải sản đóng hộp (Canned Oysters 0.25%, Canned Shrimp 0.27%) hoặc các sản phẩm ít phổ biến (Candles 0.32%, Miscellaneous 0.30%) có tần suất rất thấp. Sự phân bố này phản ánh tập trung chính vào các mặt hàng tiêu dùng nhanh và thực phẩm tươi sống, trong khi các sản phẩm đặc biệt hoặc ít phổ biến chỉ chiếm tỷ lệ nhỏ.
ggplot(a, aes(x = ProductCategory)) +
geom_bar(fill = "#66CC99", color = "black") +
labs(x = "Sản phẩm", y = "Tần số", title = "Danh mục sản phẩm khách hàng mua") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))