d <- read.csv("D:/PTDLDT CT2/Supermarket Transactions.csv")
Bộ dữ liệu sử dụng trong nghiên cứu gồm 14.059 quan sát với 16 biến.
bdt <- c("Gender", "MaritalStatus", "Homeowner", "AnnualIncome", "City", "StateorProvince", "Country", "ProductFamily", "ProductDepartment", "ProductCategory")
bdt
## [1] "Gender" "MaritalStatus" "Homeowner"
## [4] "AnnualIncome" "City" "StateorProvince"
## [7] "Country" "ProductFamily" "ProductDepartment"
## [10] "ProductCategory"
Bộ dữ liệu gồm 10 biến định tính:
Gender: Giới tính (F - Nữ, M - Nam).
MaritalStatus: Tình trạng hôn nhân (S - Độc thân, M - Đã kết hôn).
Homeowner: Có sở hữu nhà hay không (Y - Có, N - Không).
AnnualIncome: Thu nhập hàng năm.
City, StateorProvince, Country: Thông tin địa lý.
ProductFamily, ProductDepartment, ProductCategory: Phân loại sản phẩm.
dt <- d[, bdt]
str(dt)
## 'data.frame': 14059 obs. of 10 variables:
## $ Gender : chr "F" "M" "F" "M" ...
## $ MaritalStatus : chr "S" "M" "M" "M" ...
## $ Homeowner : chr "Y" "Y" "N" "Y" ...
## $ AnnualIncome : chr "$30K - $50K" "$70K - $90K" "$50K - $70K" "$30K - $50K" ...
## $ City : chr "Los Angeles" "Los Angeles" "Bremerton" "Portland" ...
## $ StateorProvince : chr "CA" "CA" "WA" "OR" ...
## $ Country : chr "USA" "USA" "USA" "USA" ...
## $ ProductFamily : chr "Food" "Food" "Food" "Food" ...
## $ ProductDepartment: chr "Snack Foods" "Produce" "Snack Foods" "Snacks" ...
## $ ProductCategory : chr "Snack Foods" "Vegetables" "Snack Foods" "Candy" ...
head(dt)
## Gender MaritalStatus Homeowner AnnualIncome City StateorProvince
## 1 F S Y $30K - $50K Los Angeles CA
## 2 M M Y $70K - $90K Los Angeles CA
## 3 F M N $50K - $70K Bremerton WA
## 4 M M Y $30K - $50K Portland OR
## 5 F S Y $130K - $150K Beverly Hills CA
## 6 F M Y $10K - $30K Beverly Hills CA
## Country ProductFamily ProductDepartment ProductCategory
## 1 USA Food Snack Foods Snack Foods
## 2 USA Food Produce Vegetables
## 3 USA Food Snack Foods Snack Foods
## 4 USA Food Snacks Candy
## 5 USA Drink Beverages Carbonated Beverages
## 6 USA Food Deli Side Dishes
tail(dt)
## Gender MaritalStatus Homeowner AnnualIncome City StateorProvince
## 14054 F M N $10K - $30K Yakima WA
## 14055 F M Y $10K - $30K Bremerton WA
## 14056 F M Y $10K - $30K Walla Walla WA
## 14057 M S Y $30K - $50K Portland OR
## 14058 F S N $50K - $70K Spokane WA
## 14059 M S N $50K - $70K Portland OR
## Country ProductFamily ProductDepartment ProductCategory
## 14054 USA Non-Consumable Household Paper Products
## 14055 USA Food Baking Goods Baking Goods
## 14056 USA Food Frozen Foods Vegetables
## 14057 USA Drink Beverages Pure Juice Beverages
## 14058 USA Drink Dairy Dairy
## 14059 USA Non-Consumable Household Electrical
sum(is.na(dt))
## [1] 0
Bộ dữ liệu không có giá trị thiếu.
sapply(dt, class)
## Gender MaritalStatus Homeowner AnnualIncome
## "character" "character" "character" "character"
## City StateorProvince Country ProductFamily
## "character" "character" "character" "character"
## ProductDepartment ProductCategory
## "character" "character"
Tất cả các cột trong dữ liệu đều có kiểu character (chuỗi ký tự).
dt <- as.data.frame(lapply(dt, as.factor))
tmp1 <- table(dt$Gender)/sum(nrow(dt))
tmp1
##
## F M
## 0.5099936 0.4900064
Vậy trong bộ dữ liệu này có 50.9993598 % là nữ và 49.0006402 % là nam.
table(dt$Gender)
##
## F M
## 7170 6889
Vậy trong bộ dữ liệu này có 7170 là nữ và 6889 là nam.
Số lượng nữ nhiều hơn số lượng nam. Có nhiều hơn 281 người nữ so với nam.
pie(tmp1,
labels = paste0(names(tmp1), " (", round(tmp1 * 100, 2), "%)"),
main = "Tỷ lệ giới tính khách hàng (%)",
col = c("pink", "lightblue"))
Nhận xét:
Có 50.9993598 % là nữ và 49.0006402 % là nam.
Giới tính nữ chiếm tỷ lệ cao hơn. Chênh lệch khoảng 2%.
tmp2 <- table(dt$MaritalStatus)/sum(nrow(dt))
tmp2
##
## M S
## 0.4883704 0.5116296
Bộ dữ liệu có 48.8370439 % là đã kết hôn và 51.1629561 % là độc thân.
table(dt$MaritalStatus)
##
## M S
## 6866 7193
Bộ dữ liệu có 6866 người đã kết hôn và 7193 người độc thân.
Nhóm người độc thân nhiều hơn nhóm người đã kết hôn khoảng 327 người.
pie(tmp2,
labels = paste0(names(tmp2), " (", round(tmp2 * 100, 2), "%)"),
main = "Tình trạng hôn nhân",
col = c("pink", "lightblue"))
Nhận xét:
Tỷ lệ người độc thân chiếm tỷ trọng nhiều hơn.
Người đã kết hôn chiếm 48.8370439 %.
Người độc thân chiếm 51.1629561 %.
tmp3 <- table(dt$Homeowner)/sum(nrow(dt))
tmp3
##
## N Y
## 0.3993883 0.6006117
Bộ dữ liệu có 39.9388292 % người không có nhà và 60.0611708 % người có nhà.
table(dt$Homeowner)
##
## N Y
## 5615 8444
Bộ dữ liệu có 5615 người không có nhà và 8444 người có nhà.
Số lượng người có nhà vượt trội hơn người không có nhà với mức chênh lệch lớn. Khoảng 2829 người.
pie(tmp3,
labels = paste0(names(tmp3), " (", round(tmp3 * 100, 2), "%)"),
main = "Tỷ lệ khách hàng theo tình trạng sở hữu nhà",
col = c("pink", "lightblue"))
Nhận xét:
Tỷ lệ người có nhà nhiều hơn.
Người có nhà chiếm 60.0611708 %.
Người không có nhà chiếm 39.9388292 %.
tmp4 <- prop.table(table(dt$AnnualIncome))
data.frame(
AnnualIncome = names(tmp4),
Ty_le = round(as.numeric(tmp4),2)
)
## AnnualIncome Ty_le
## 1 $10K - $30K 0.22
## 2 $110K - $130K 0.05
## 3 $130K - $150K 0.05
## 4 $150K + 0.02
## 5 $30K - $50K 0.33
## 6 $50K - $70K 0.17
## 7 $70K - $90K 0.12
## 8 $90K - $110K 0.04
annual <- as.data.frame(table(dt$AnnualIncome))
colnames(annual) <- c("AnnualIncome", "Số lượng")
annual
## AnnualIncome Số lượng
## 1 $10K - $30K 3090
## 2 $110K - $130K 643
## 3 $130K - $150K 760
## 4 $150K + 273
## 5 $30K - $50K 4601
## 6 $50K - $70K 2370
## 7 $70K - $90K 1709
## 8 $90K - $110K 613
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
ggplot(annual, aes(x = AnnualIncome, y = `Số lượng`)) +
geom_col(fill = "steelblue") +
labs(title = "Tần số theo thu nhập hàng năm", x = "Thu nhập", y = "Số lượng") +
theme_minimal()
Nhận xét:
Nhóm thu nhập 30K - 50K có số lượng khách hàng đông nhất với 4601 người, chiếm tỷ trọng lớn nhất trong tổng số.
Nhóm thu nhập 10K - 30K đứng thứ hai về số lượng với 3090 khách hàng, cũng chiếm tỷ lệ khá cao.
Các nhóm thu nhập trung bình như 50K - 70K (2370 người) và 70K - 90K (1709 người) có số lượng khách hàng giảm dần nhưng vẫn tương đối đáng kể.
Nhóm thu nhập từ 90K đến 110K và 110K đến 130K có số lượng khách hàng khá thấp, lần lượt là 613 và 643 người.
Nhóm thu nhập 130K - 150K có 760 người, vẫn ít hơn so với các nhóm thu nhập trung bình thấp.
Nhóm thu nhập cao nhất, từ 150K trở lên, chỉ có 273 khách hàng, chiếm tỷ lệ rất nhỏ trong tổng số.
Tóm lại, khách hàng chủ yếu tập trung ở các nhóm thu nhập thấp và trung bình (10K - 70K), còn nhóm thu nhập cao rất ít, thể hiện sự phân hóa rõ rệt về thu nhập trong tập khách hàng.
tmp5 <- prop.table(table(dt$City))
data.frame(
City = names(tmp5),
Ty_le = round(as.numeric(tmp5),2)
)
## City Ty_le
## 1 Acapulco 0.03
## 2 Bellingham 0.01
## 3 Beverly Hills 0.06
## 4 Bremerton 0.06
## 5 Camacho 0.03
## 6 Guadalajara 0.01
## 7 Hidalgo 0.06
## 8 Los Angeles 0.07
## 9 Merida 0.05
## 10 Mexico City 0.01
## 11 Orizaba 0.03
## 12 Portland 0.06
## 13 Salem 0.10
## 14 San Andres 0.04
## 15 San Diego 0.06
## 16 San Francisco 0.01
## 17 Seattle 0.07
## 18 Spokane 0.06
## 19 Tacoma 0.09
## 20 Vancouver 0.05
## 21 Victoria 0.01
## 22 Walla Walla 0.01
## 23 Yakima 0.03
city <- as.data.frame(table(dt$City))
colnames(city) <- c("City", "Số lượng")
city
## City Số lượng
## 1 Acapulco 383
## 2 Bellingham 143
## 3 Beverly Hills 811
## 4 Bremerton 834
## 5 Camacho 452
## 6 Guadalajara 75
## 7 Hidalgo 845
## 8 Los Angeles 926
## 9 Merida 654
## 10 Mexico City 194
## 11 Orizaba 464
## 12 Portland 876
## 13 Salem 1386
## 14 San Andres 621
## 15 San Diego 866
## 16 San Francisco 130
## 17 Seattle 922
## 18 Spokane 875
## 19 Tacoma 1257
## 20 Vancouver 633
## 21 Victoria 176
## 22 Walla Walla 160
## 23 Yakima 376
ggplot(city, aes(x = City, y = `Số lượng`)) +
geom_col(fill = "steelblue") +
labs(title = "Tần số giao dịch theo thành phố", x = "Thành phố", y = "Số lượng") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Nhận xét:
Thành phố có số lượng khách hàng đông nhất là Salem với 1386 người, cho thấy đây là khu vực có tập trung khách hàng lớn.
Tacoma đứng thứ hai với 1257 khách hàng, tiếp theo là Portland (876), Spokane (875) và San Diego (866), cho thấy các thành phố ở mức cao có sự tập trung dân cư hoặc mức độ tiêu dùng cao hơn.
Lượng khách hàng phân bố không đồng đều giữa các thành phố, cho thấy sự khác biệt về quy mô dân số, mức sống, hoặc chiến lược kinh doanh theo khu vực.
tmp6 <- prop.table(table(dt$StateorProvince))
data.frame(
StateorProvince = names(tmp6),
Ty_le = round(as.numeric(tmp6),2)
)
## StateorProvince Ty_le
## 1 BC 0.06
## 2 CA 0.19
## 3 DF 0.06
## 4 Guerrero 0.03
## 5 Jalisco 0.01
## 6 OR 0.16
## 7 Veracruz 0.03
## 8 WA 0.32
## 9 Yucatan 0.05
## 10 Zacatecas 0.09
state <- as.data.frame(table(dt$StateorProvince))
colnames(state) <- c("StateorProvince", "Số lượng")
state
## StateorProvince Số lượng
## 1 BC 809
## 2 CA 2733
## 3 DF 815
## 4 Guerrero 383
## 5 Jalisco 75
## 6 OR 2262
## 7 Veracruz 464
## 8 WA 4567
## 9 Yucatan 654
## 10 Zacatecas 1297
ggplot(state, aes(x = StateorProvince, y = `Số lượng`)) +
geom_col(fill = "steelblue") +
labs(title = "Tần số giao dịch theo StateorProvince", x = "StateorProvince", y = "Số lượng") +
theme_minimal()
Nhận xét:
WA (Washington) là bang có số lượng khách hàng cao nhất với 4567 người, chiếm tỷ trọng lớn trong tổng thể, cho thấy đây là thị trường trọng điểm.
Theo sau là CA (California) với 2733 khách hàng và OR (Oregon) với 2262 khách hàng, đều là những bang có dân số lớn và mức độ đô thị hóa cao, phù hợp với hoạt động kinh doanh và tiếp cận khách hàng.
Khách hàng tập trung chủ yếu ở các bang thuộc Mỹ (WA, CA, OR), trong khi các tỉnh của Mexico có số lượng khách hàng thấp hơn, gợi ý doanh nghiệp nên ưu tiên phân bổ nguồn lực và chiến lược tiếp thị phù hợp theo từng khu vực địa lý.
tmp7 <- prop.table(table(dt$Country))
tmp7
##
## Canada Mexico USA
## 0.05754321 0.26232307 0.68013372
table(dt$Country)
##
## Canada Mexico USA
## 809 3688 9562
pie(tmp7,
labels = paste0(names(tmp7),"(", round(tmp7 * 100,2),"%)"),
main = "Tỷ lệ giao dịch theo Country",
col = c("red", "green", "blue"))
Nhận xét:
Hoa Kỳ (USA) chiếm tỷ lệ cao nhất với 68.0133722 % tổng số khách hàng. Điều này cho thấy Mỹ là thị trường chính, nơi doanh nghiệp có sự hiện diện mạnh và tập trung khách hàng đông đảo nhất.
Mexico chiếm khoảng 26.2323067 %, là thị trường lớn thứ hai. Tỷ lệ này phản ánh mức độ tiếp cận đáng kể, tuy nhiên vẫn còn khoảng cách khá xa so với thị trường Mỹ.
Canada chỉ chiếm 5.7543211 %, là thị trường nhỏ nhất trong ba nước. Điều này có thể do dân số thấp hơn, mức độ thâm nhập thị trường hạn chế, hoặc chưa được doanh nghiệp chú trọng khai thác nhiều.
tmp8 <- prop.table(table(dt$ProductFamily))
tmp8
##
## Drink Food Non-Consumable
## 0.08891102 0.72217085 0.18891813
table(dt$ProductFamily)
##
## Drink Food Non-Consumable
## 1250 10153 2656
pie(tmp8,
labels = paste0(names(tmp8),"(", round(tmp8 * 100,2),"%)"),
main = "Tỷ lệ giao dịch theo ProductFamily",
col = c("yellow", "orange", "white"))
Nhận xét:
Thực phẩm (Food) chiếm tỷ lệ cao nhất với 72.2170851 %, cho thấy doanh nghiệp chủ yếu kinh doanh các mặt hàng thực phẩm. Đây là nhóm sản phẩm cốt lõi, đóng vai trò chính trong doanh thu và nhu cầu tiêu dùng.
Hàng không tiêu dùng (Non-Consumable) chiếm 18.8918131 %, là nhóm sản phẩm phụ, nhưng vẫn chiếm tỷ lệ đáng kể, phản ánh sự đa dạng trong danh mục sản phẩm.
Đồ uống (Drink) chiếm tỷ lệ thấp nhất với 8.8911018 %, cho thấy đây không phải là nhóm sản phẩm trọng tâm. Tuy nhiên, vẫn có cơ hội mở rộng nếu được đầu tư và tiếp thị phù hợp.
tmp9 <- prop.table(table(dt$ProductDepartment))
data.frame(
ProductDepartment = names (tmp9),
Ty_le = round(as.numeric(tmp9),2)
)
## ProductDepartment Ty_le
## 1 Alcoholic Beverages 0.03
## 2 Baked Goods 0.03
## 3 Baking Goods 0.08
## 4 Beverages 0.05
## 5 Breakfast Foods 0.01
## 6 Canned Foods 0.07
## 7 Canned Products 0.01
## 8 Carousel 0.00
## 9 Checkout 0.01
## 10 Dairy 0.06
## 11 Deli 0.05
## 12 Eggs 0.01
## 13 Frozen Foods 0.10
## 14 Health and Hygiene 0.06
## 15 Household 0.10
## 16 Meat 0.01
## 17 Periodicals 0.01
## 18 Produce 0.14
## 19 Seafood 0.01
## 20 Snack Foods 0.11
## 21 Snacks 0.03
## 22 Starchy Foods 0.02
department <- as.data.frame(table(dt$ProductDepartment))
colnames(department) <- c("ProductDepartment", "Số lượng")
department
## ProductDepartment Số lượng
## 1 Alcoholic Beverages 356
## 2 Baked Goods 425
## 3 Baking Goods 1072
## 4 Beverages 680
## 5 Breakfast Foods 188
## 6 Canned Foods 977
## 7 Canned Products 109
## 8 Carousel 59
## 9 Checkout 82
## 10 Dairy 903
## 11 Deli 699
## 12 Eggs 198
## 13 Frozen Foods 1382
## 14 Health and Hygiene 893
## 15 Household 1420
## 16 Meat 89
## 17 Periodicals 202
## 18 Produce 1994
## 19 Seafood 102
## 20 Snack Foods 1600
## 21 Snacks 352
## 22 Starchy Foods 277
ggplot(department, aes(x = ProductDepartment, y = `Số lượng`)) +
geom_col(fill = "steelblue") +
labs (title = "Tần số giao dịch theo ProductDepartment", x = "ProductDepartment", y = "Số lượng") +
theme_minimal() +
theme(axis.text.x=element_text(angle = 45, hjust =1))
Nhận xét:
Produce (Rau củ quả) là nhóm sản phẩm chiếm tỷ lệ cao nhất với 1994 sản phẩm, cho thấy nhu cầu cao đối với thực phẩm tươi sống, đây có thể là nhóm hàng chủ lực của doanh nghiệp.
Ngoài ra, xuất hiện sự trùng lặp tên giữa “Snack Foods” (1600) và “Snacks” (352), cũng như “Canned Foods” và “Canned Products”, cho thấy có thể tồn tại vấn đề phân loại chưa nhất quán trong cơ sở dữ liệu.
tmp10 <- prop.table(table(dt$ProductCategory))
data.frame(
ProductCategory = names(tmp10),
Ty_le = round(as.numeric(tmp10),2)
)
## ProductCategory Ty_le
## 1 Baking Goods 0.03
## 2 Bathroom Products 0.03
## 3 Beer and Wine 0.03
## 4 Bread 0.03
## 5 Breakfast Foods 0.03
## 6 Candles 0.00
## 7 Candy 0.03
## 8 Canned Anchovies 0.00
## 9 Canned Clams 0.00
## 10 Canned Oysters 0.00
## 11 Canned Sardines 0.00
## 12 Canned Shrimp 0.00
## 13 Canned Soup 0.03
## 14 Canned Tuna 0.01
## 15 Carbonated Beverages 0.01
## 16 Cleaning Supplies 0.01
## 17 Cold Remedies 0.01
## 18 Dairy 0.06
## 19 Decongestants 0.01
## 20 Drinks 0.01
## 21 Eggs 0.01
## 22 Electrical 0.03
## 23 Frozen Desserts 0.02
## 24 Frozen Entrees 0.01
## 25 Fruit 0.05
## 26 Hardware 0.01
## 27 Hot Beverages 0.02
## 28 Hygiene 0.01
## 29 Jams and Jellies 0.04
## 30 Kitchen Products 0.02
## 31 Magazines 0.01
## 32 Meat 0.05
## 33 Miscellaneous 0.00
## 34 Packaged Vegetables 0.00
## 35 Pain Relievers 0.01
## 36 Paper Products 0.02
## 37 Pizza 0.01
## 38 Plastic Products 0.01
## 39 Pure Juice Beverages 0.01
## 40 Seafood 0.01
## 41 Side Dishes 0.01
## 42 Snack Foods 0.11
## 43 Specialty 0.02
## 44 Starchy Foods 0.02
## 45 Vegetables 0.12
category <- as.data.frame(table(dt$ProductCategory))
colnames(category) <- c("ProductCategory", "Số lượng")
category
## ProductCategory Số lượng
## 1 Baking Goods 484
## 2 Bathroom Products 365
## 3 Beer and Wine 356
## 4 Bread 425
## 5 Breakfast Foods 417
## 6 Candles 45
## 7 Candy 352
## 8 Canned Anchovies 44
## 9 Canned Clams 53
## 10 Canned Oysters 35
## 11 Canned Sardines 40
## 12 Canned Shrimp 38
## 13 Canned Soup 404
## 14 Canned Tuna 87
## 15 Carbonated Beverages 154
## 16 Cleaning Supplies 189
## 17 Cold Remedies 93
## 18 Dairy 903
## 19 Decongestants 85
## 20 Drinks 135
## 21 Eggs 198
## 22 Electrical 355
## 23 Frozen Desserts 323
## 24 Frozen Entrees 118
## 25 Fruit 765
## 26 Hardware 129
## 27 Hot Beverages 226
## 28 Hygiene 197
## 29 Jams and Jellies 588
## 30 Kitchen Products 217
## 31 Magazines 202
## 32 Meat 761
## 33 Miscellaneous 42
## 34 Packaged Vegetables 48
## 35 Pain Relievers 192
## 36 Paper Products 345
## 37 Pizza 194
## 38 Plastic Products 141
## 39 Pure Juice Beverages 165
## 40 Seafood 102
## 41 Side Dishes 153
## 42 Snack Foods 1600
## 43 Specialty 289
## 44 Starchy Foods 277
## 45 Vegetables 1728
ggplot(category, aes(x = ProductCategory, y = `Số lượng`)) +
geom_col(fill = "steelblue") +
labs(title = "Tần số giao dịch theo ProductCategory", x = "ProductCategory", y = "Số lượng") +
theme_minimal()+
theme(axis.text.x = element_text(angle = 45, hjust = 1, size = 8))
Nhận xét:
Vegetables (Rau củ): 1728 sản phẩm – nhóm có số lượng lớn nhất, cho thấy doanh nghiệp tập trung mạnh vào mặt hàng tươi sống và thiết yếu.
Snack Foods (Đồ ăn vặt): 1600 sản phẩm – thể hiện nhu cầu cao và sự phổ biến trong tiêu dùng hằng ngày.
Dairy (Sữa và các sản phẩm từ sữa): 903 sản phẩm – là nhóm hàng thiết yếu, tiêu dùng thường xuyên.
Jams and Jellies (Mứt và thạch): 588 sản phẩm – cho thấy mức độ tiêu thụ cao, thường đi kèm với bánh mì và bữa sáng.
n_female <- sum(dt$Gender == "F")
n_total <- nrow(dt)
prop.test(n_female, n_total, conf.level = 0.95)$conf.int
## [1] 0.5016931 0.5182886
## attr(,"conf.level")
## [1] 0.95
Với độ tin cậy 95%, ta ước lượng rằng tỷ lệ nữ trong tổng thể nằm trong khoảng từ 0.5016931 đến 0.5182886.
Kiểm định giả thuyết:
\(H_0\): Tỷ lệ nữ = 0.5
\(H_1\): Tỷ lệ nữ \(\neq\) 0.5
prop.test(n_female, n_total, p = 0.5)
##
## 1-sample proportions test with continuity correction
##
## data: n_female out of n_total, null probability 0.5
## X-squared = 5.5765, df = 1, p-value = 0.0182
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.5016931 0.5182886
## sample estimates:
## p
## 0.5099936
Ta thấy P-value = 0.0182 nhỏ hơn 0.05. Bác bỏ \(H_0\). Ta kết luận rằng tỷ lệ nữ thực sự khác 0.5, tức là không cân bằng giới tính tuyệt đối trong dân số khảo sát.
n_single <- sum(dt$MaritalStatus == "S")
prop.test(n_single, n_total, conf.level = 0.95)$conf.int
## [1] 0.5033292 0.5199235
## attr(,"conf.level")
## [1] 0.95
Với độ tin cậy 95%, ta ước lượng rằng tỷ lệ độc thân trong tổng thể nằm trong khoảng từ 0.5033292 đến 0.5199235.
Kiểm định giả thuyết:
\(H_0\): Tỷ lệ người độc thân = 0.5
\(H_1\): Tỷ lệ người độc thân \(\neq\) 0.5
prop.test(n_single, n_total, p = 0.5)
##
## 1-sample proportions test with continuity correction
##
## data: n_single out of n_total, null probability 0.5
## X-squared = 7.5593, df = 1, p-value = 0.00597
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.5033292 0.5199235
## sample estimates:
## p
## 0.5116296
Ta thấy P-value = 0.00597 nhỏ hơn 0.05. Bác bỏ \(H_0\). Ta kết luận rằng tỷ lệ người độc thân khác 0.5.
n_food <- sum(dt$ProductFamily == "Food")
prop.test(n_food, n_total, conf.level = 0.95)$conf.int
## [1] 0.7146709 0.7295489
## attr(,"conf.level")
## [1] 0.95
Với độ tin cậy 95%, ta ước lượng rằng tỷ lệ sản phẩm Food trong tổng thể nằm trong khoảng từ 0.7146709 đến 0.7295489.
tylefood <- n_food/n_total
tylefood
## [1] 0.7221709
Kiểm định giả thuyết:
\(H_0\): Tỷ lệ sản phẩm Food \(\geq\) 0.7
\(H_1\): Tỷ lệ sản phẩm Food < 0.7
prop.test(n_food, n_total, p = 0.7)
##
## 1-sample proportions test with continuity correction
##
## data: n_food out of n_total, null probability 0.7
## X-squared = 32.802, df = 1, p-value = 1.02e-08
## alternative hypothesis: true p is not equal to 0.7
## 95 percent confidence interval:
## 0.7146709 0.7295489
## sample estimates:
## p
## 0.7221709
Ta thấy P-value = 1.02e-08 nhỏ hơn 0.05. Bác bỏ \(H_0\). Ta kết luận rằng tỷ lệ người độc thân khác 0.5.
gender_family <- table(dt$Gender, dt$ProductFamily)
gender_family
##
## Drink Food Non-Consumable
## F 669 5149 1352
## M 581 5004 1304
prop.table(gender_family)
##
## Drink Food Non-Consumable
## F 0.04758518 0.36624226 0.09616616
## M 0.04132584 0.35592859 0.09275197
barplot(gender_family,
beside = TRUE, # TRUE để cột nhóm
col = c("lightblue", "pink"),
legend = rownames(gender_family),
xlab = "Product Family",
ylab = "Số lượng",
main = "So sánh số lượng sản phẩm theo giới tính")
Nhận xét:
Phân bố mua hàng của nam và nữ khá tương đồng: Cả hai nhóm giới tính đều có xu hướng mua nhiều sản phẩm thuộc nhóm Food, tiếp theo là Non-Consumable, và ít mua nhất là nhóm Drink.
Nữ mua hàng nhiều hơn nam ở tất cả các nhóm sản phẩm: Số lượng sản phẩm mua của nữ vượt trội hơn so với nam ở cả ba nhóm, mặc dù sự chênh lệch không quá lớn. Điều này có thể phản ánh rằng nữ có xu hướng mua sắm đa dạng hoặc tần suất mua hàng cao hơn.
Không có sự khác biệt lớn về xu hướng lựa chọn nhóm sản phẩm giữa nam và nữ: Tỷ lệ giữa các nhóm sản phẩm trong từng giới tính tương đối giống nhau, nghĩa là giới tính không ảnh hưởng nhiều đến loại sản phẩm được chọn, mà chủ yếu là số lượng mua.
Tóm lại: Mối quan hệ giữa Gender và ProductFamily là tồn tại về mặt số lượng, với nữ mua nhiều sản phẩm hơn, nhưng xu hướng chọn nhóm sản phẩm thì khá đồng đều giữa hai giới.
Kiểm định giả thuyết:
\(H_0\): Gender và ProductFamily độc lập nhau.
\(H_1\): Gender và ProductFamily có liên quan đến nhau.
chi1 <- chisq.test(gender_family)
chi1
##
## Pearson's Chi-squared test
##
## data: gender_family
## X-squared = 3.5185, df = 2, p-value = 0.1722
X-squared = 3.5185
df = 2
p-value = 0.1722
Vì p-value = 0.1722 > 0.05. Chưa đủ cơ sở bác bỏ \(H_0\). Vậy Gender và ProductFamily độc lập nhau.
income_category <- table(dt$AnnualIncome, dt$ProductCategory)
income_category
##
## Baking Goods Bathroom Products Beer and Wine Bread
## $10K - $30K 119 85 80 108
## $110K - $130K 18 16 14 23
## $130K - $150K 22 19 15 24
## $150K + 11 8 3 10
## $30K - $50K 151 116 121 134
## $50K - $70K 86 50 61 63
## $70K - $90K 59 51 39 50
## $90K - $110K 18 20 23 13
##
## Breakfast Foods Candles Candy Canned Anchovies Canned Clams
## $10K - $30K 111 6 76 10 12
## $110K - $130K 7 1 16 2 1
## $130K - $150K 28 2 19 1 3
## $150K + 7 1 8 1 1
## $30K - $50K 143 21 127 14 20
## $50K - $70K 62 7 60 8 6
## $70K - $90K 42 7 29 6 7
## $90K - $110K 17 0 17 2 3
##
## Canned Oysters Canned Sardines Canned Shrimp Canned Soup
## $10K - $30K 5 8 9 98
## $110K - $130K 4 2 0 19
## $130K - $150K 3 1 2 17
## $150K + 1 1 0 8
## $30K - $50K 10 18 16 137
## $50K - $70K 5 5 7 67
## $70K - $90K 5 3 2 50
## $90K - $110K 2 2 2 8
##
## Canned Tuna Carbonated Beverages Cleaning Supplies
## $10K - $30K 13 36 47
## $110K - $130K 3 6 8
## $130K - $150K 5 3 7
## $150K + 3 6 4
## $30K - $50K 28 51 51
## $50K - $70K 19 20 35
## $70K - $90K 10 23 25
## $90K - $110K 6 9 12
##
## Cold Remedies Dairy Decongestants Drinks Eggs Electrical
## $10K - $30K 23 174 22 30 37 74
## $110K - $130K 2 38 4 9 9 20
## $130K - $150K 6 49 5 8 15 21
## $150K + 3 17 0 4 4 8
## $30K - $50K 32 299 31 46 67 114
## $50K - $70K 12 160 8 19 36 57
## $70K - $90K 10 126 10 16 20 47
## $90K - $110K 5 40 5 3 10 14
##
## Frozen Desserts Frozen Entrees Fruit Hardware Hot Beverages
## $10K - $30K 75 20 150 31 48
## $110K - $130K 17 10 29 3 11
## $130K - $150K 17 5 48 10 9
## $150K + 8 2 10 1 5
## $30K - $50K 112 35 252 41 79
## $50K - $70K 44 21 136 25 33
## $70K - $90K 36 18 104 13 26
## $90K - $110K 14 7 36 5 15
##
## Hygiene Jams and Jellies Kitchen Products Magazines Meat
## $10K - $30K 36 137 47 49 156
## $110K - $130K 6 31 5 17 41
## $130K - $150K 14 32 14 9 52
## $150K + 4 8 3 1 14
## $30K - $50K 62 185 74 65 253
## $50K - $70K 37 103 51 36 115
## $70K - $90K 29 71 20 18 100
## $90K - $110K 9 21 3 7 30
##
## Miscellaneous Packaged Vegetables Pain Relievers Paper Products
## $10K - $30K 10 9 42 70
## $110K - $130K 1 1 7 19
## $130K - $150K 6 1 8 17
## $150K + 0 2 5 8
## $30K - $50K 8 20 61 101
## $50K - $70K 14 8 34 67
## $70K - $90K 2 7 30 46
## $90K - $110K 1 0 5 17
##
## Pizza Plastic Products Pure Juice Beverages Seafood Side Dishes
## $10K - $30K 50 41 34 17 36
## $110K - $130K 13 6 9 3 2
## $130K - $150K 12 7 5 8 8
## $150K + 1 2 5 5 3
## $30K - $50K 59 33 52 44 53
## $50K - $70K 31 31 25 11 23
## $70K - $90K 15 17 26 12 23
## $90K - $110K 13 4 9 2 5
##
## Snack Foods Specialty Starchy Foods Vegetables
## $10K - $30K 329 65 70 385
## $110K - $130K 85 13 18 74
## $130K - $150K 83 18 15 87
## $150K + 35 5 5 32
## $30K - $50K 533 96 85 551
## $50K - $70K 274 50 48 300
## $70K - $90K 184 32 28 215
## $90K - $110K 77 10 8 84
prop.table(income_category)
##
## Baking Goods Bathroom Products Beer and Wine Bread
## $10K - $30K 8.464329e-03 6.045949e-03 5.690305e-03 7.681912e-03
## $110K - $130K 1.280319e-03 1.138061e-03 9.958034e-04 1.635963e-03
## $130K - $150K 1.564834e-03 1.351447e-03 1.066932e-03 1.707092e-03
## $150K + 7.824170e-04 5.690305e-04 2.133864e-04 7.112881e-04
## $30K - $50K 1.074045e-02 8.250942e-03 8.606587e-03 9.531261e-03
## $50K - $70K 6.117078e-03 3.556441e-03 4.338858e-03 4.481115e-03
## $70K - $90K 4.196600e-03 3.627570e-03 2.774024e-03 3.556441e-03
## $90K - $110K 1.280319e-03 1.422576e-03 1.635963e-03 9.246746e-04
##
## Breakfast Foods Candles Candy Canned Anchovies
## $10K - $30K 7.895298e-03 4.267729e-04 5.405790e-03 7.112881e-04
## $110K - $130K 4.979017e-04 7.112881e-05 1.138061e-03 1.422576e-04
## $130K - $150K 1.991607e-03 1.422576e-04 1.351447e-03 7.112881e-05
## $150K + 4.979017e-04 7.112881e-05 5.690305e-04 7.112881e-05
## $30K - $50K 1.017142e-02 1.493705e-03 9.033359e-03 9.958034e-04
## $50K - $70K 4.409986e-03 4.979017e-04 4.267729e-03 5.690305e-04
## $70K - $90K 2.987410e-03 4.979017e-04 2.062736e-03 4.267729e-04
## $90K - $110K 1.209190e-03 0.000000e+00 1.209190e-03 1.422576e-04
##
## Canned Clams Canned Oysters Canned Sardines Canned Shrimp
## $10K - $30K 8.535458e-04 3.556441e-04 5.690305e-04 6.401593e-04
## $110K - $130K 7.112881e-05 2.845153e-04 1.422576e-04 0.000000e+00
## $130K - $150K 2.133864e-04 2.133864e-04 7.112881e-05 1.422576e-04
## $150K + 7.112881e-05 7.112881e-05 7.112881e-05 0.000000e+00
## $30K - $50K 1.422576e-03 7.112881e-04 1.280319e-03 1.138061e-03
## $50K - $70K 4.267729e-04 3.556441e-04 3.556441e-04 4.979017e-04
## $70K - $90K 4.979017e-04 3.556441e-04 2.133864e-04 1.422576e-04
## $90K - $110K 2.133864e-04 1.422576e-04 1.422576e-04 1.422576e-04
##
## Canned Soup Canned Tuna Carbonated Beverages
## $10K - $30K 6.970624e-03 9.246746e-04 2.560637e-03
## $110K - $130K 1.351447e-03 2.133864e-04 4.267729e-04
## $130K - $150K 1.209190e-03 3.556441e-04 2.133864e-04
## $150K + 5.690305e-04 2.133864e-04 4.267729e-04
## $30K - $50K 9.744648e-03 1.991607e-03 3.627570e-03
## $50K - $70K 4.765631e-03 1.351447e-03 1.422576e-03
## $70K - $90K 3.556441e-03 7.112881e-04 1.635963e-03
## $90K - $110K 5.690305e-04 4.267729e-04 6.401593e-04
##
## Cleaning Supplies Cold Remedies Dairy Decongestants
## $10K - $30K 3.343054e-03 1.635963e-03 1.237641e-02 1.564834e-03
## $110K - $130K 5.690305e-04 1.422576e-04 2.702895e-03 2.845153e-04
## $130K - $150K 4.979017e-04 4.267729e-04 3.485312e-03 3.556441e-04
## $150K + 2.845153e-04 2.133864e-04 1.209190e-03 0.000000e+00
## $30K - $50K 3.627570e-03 2.276122e-03 2.126752e-02 2.204993e-03
## $50K - $70K 2.489508e-03 8.535458e-04 1.138061e-02 5.690305e-04
## $70K - $90K 1.778220e-03 7.112881e-04 8.962231e-03 7.112881e-04
## $90K - $110K 8.535458e-04 3.556441e-04 2.845153e-03 3.556441e-04
##
## Drinks Eggs Electrical Frozen Desserts
## $10K - $30K 2.133864e-03 2.631766e-03 5.263532e-03 5.334661e-03
## $110K - $130K 6.401593e-04 6.401593e-04 1.422576e-03 1.209190e-03
## $130K - $150K 5.690305e-04 1.066932e-03 1.493705e-03 1.209190e-03
## $150K + 2.845153e-04 2.845153e-04 5.690305e-04 5.690305e-04
## $30K - $50K 3.271925e-03 4.765631e-03 8.108685e-03 7.966427e-03
## $50K - $70K 1.351447e-03 2.560637e-03 4.054342e-03 3.129668e-03
## $70K - $90K 1.138061e-03 1.422576e-03 3.343054e-03 2.560637e-03
## $90K - $110K 2.133864e-04 7.112881e-04 9.958034e-04 9.958034e-04
##
## Frozen Entrees Fruit Hardware Hot Beverages
## $10K - $30K 1.422576e-03 1.066932e-02 2.204993e-03 3.414183e-03
## $110K - $130K 7.112881e-04 2.062736e-03 2.133864e-04 7.824170e-04
## $130K - $150K 3.556441e-04 3.414183e-03 7.112881e-04 6.401593e-04
## $150K + 1.422576e-04 7.112881e-04 7.112881e-05 3.556441e-04
## $30K - $50K 2.489508e-03 1.792446e-02 2.916281e-03 5.619176e-03
## $50K - $70K 1.493705e-03 9.673519e-03 1.778220e-03 2.347251e-03
## $70K - $90K 1.280319e-03 7.397397e-03 9.246746e-04 1.849349e-03
## $90K - $110K 4.979017e-04 2.560637e-03 3.556441e-04 1.066932e-03
##
## Hygiene Jams and Jellies Kitchen Products Magazines
## $10K - $30K 2.560637e-03 9.744648e-03 3.343054e-03 3.485312e-03
## $110K - $130K 4.267729e-04 2.204993e-03 3.556441e-04 1.209190e-03
## $130K - $150K 9.958034e-04 2.276122e-03 9.958034e-04 6.401593e-04
## $150K + 2.845153e-04 5.690305e-04 2.133864e-04 7.112881e-05
## $30K - $50K 4.409986e-03 1.315883e-02 5.263532e-03 4.623373e-03
## $50K - $70K 2.631766e-03 7.326268e-03 3.627570e-03 2.560637e-03
## $70K - $90K 2.062736e-03 5.050146e-03 1.422576e-03 1.280319e-03
## $90K - $110K 6.401593e-04 1.493705e-03 2.133864e-04 4.979017e-04
##
## Meat Miscellaneous Packaged Vegetables Pain Relievers
## $10K - $30K 1.109610e-02 7.112881e-04 6.401593e-04 2.987410e-03
## $110K - $130K 2.916281e-03 7.112881e-05 7.112881e-05 4.979017e-04
## $130K - $150K 3.698698e-03 4.267729e-04 7.112881e-05 5.690305e-04
## $150K + 9.958034e-04 0.000000e+00 1.422576e-04 3.556441e-04
## $30K - $50K 1.799559e-02 5.690305e-04 1.422576e-03 4.338858e-03
## $50K - $70K 8.179814e-03 9.958034e-04 5.690305e-04 2.418380e-03
## $70K - $90K 7.112881e-03 1.422576e-04 4.979017e-04 2.133864e-03
## $90K - $110K 2.133864e-03 7.112881e-05 0.000000e+00 3.556441e-04
##
## Paper Products Pizza Plastic Products
## $10K - $30K 4.979017e-03 3.556441e-03 2.916281e-03
## $110K - $130K 1.351447e-03 9.246746e-04 4.267729e-04
## $130K - $150K 1.209190e-03 8.535458e-04 4.979017e-04
## $150K + 5.690305e-04 7.112881e-05 1.422576e-04
## $30K - $50K 7.184010e-03 4.196600e-03 2.347251e-03
## $50K - $70K 4.765631e-03 2.204993e-03 2.204993e-03
## $70K - $90K 3.271925e-03 1.066932e-03 1.209190e-03
## $90K - $110K 1.209190e-03 9.246746e-04 2.845153e-04
##
## Pure Juice Beverages Seafood Side Dishes Snack Foods
## $10K - $30K 2.418380e-03 1.209190e-03 2.560637e-03 2.340138e-02
## $110K - $130K 6.401593e-04 2.133864e-04 1.422576e-04 6.045949e-03
## $130K - $150K 3.556441e-04 5.690305e-04 5.690305e-04 5.903692e-03
## $150K + 3.556441e-04 3.556441e-04 2.133864e-04 2.489508e-03
## $30K - $50K 3.698698e-03 3.129668e-03 3.769827e-03 3.791166e-02
## $50K - $70K 1.778220e-03 7.824170e-04 1.635963e-03 1.948930e-02
## $70K - $90K 1.849349e-03 8.535458e-04 1.635963e-03 1.308770e-02
## $90K - $110K 6.401593e-04 1.422576e-04 3.556441e-04 5.476919e-03
##
## Specialty Starchy Foods Vegetables
## $10K - $30K 4.623373e-03 4.979017e-03 2.738459e-02
## $110K - $130K 9.246746e-04 1.280319e-03 5.263532e-03
## $130K - $150K 1.280319e-03 1.066932e-03 6.188207e-03
## $150K + 3.556441e-04 3.556441e-04 2.276122e-03
## $30K - $50K 6.828366e-03 6.045949e-03 3.919198e-02
## $50K - $70K 3.556441e-03 3.414183e-03 2.133864e-02
## $70K - $90K 2.276122e-03 1.991607e-03 1.529270e-02
## $90K - $110K 7.112881e-04 5.690305e-04 5.974820e-03
barplot(income_category,
beside = FALSE,
col = c("yellow", "pink", "green", "blue", "red", "black", "orange", "brown"),
legend = rownames (income_category),
xlab = "Nhóm sản phẩm",
ylab = "Thu nhập",
main = "Phân bố loại sản phẩm theo nhóm thu nhập")
Nhận xét:
Nhóm $10K - $30K và $30K - $50K là hai nhóm có số lượt mua cao nhất trên hầu hết các loại sản phẩm.
Các mặt hàng như: Snack Foods, Vegetables, Meat, Dairy, Fruit, Bread, Candy, và Canned Soup là được mua nhiều nhất xuyên suốt tất cả nhóm thu nhập.
Các sản phẩm này thuộc nhóm thiết yếu (thực phẩm tươi sống hoặc chế biến đơn giản) ⇒ không phụ thuộc quá nhiều vào mức thu nhập.
Nhóm $110K - $130K, $130K - $150K, và $150K+ có số lượng mua khá thấp ở tất cả các loại sản phẩm.
Kiểm định giả thuyết:
\(H_0\): AnnualIncome và ProductCategory độc lập nhau.
\(H_1\): AnnualIncome và ProductCategory có liên quan đến nhau.
chi2 <- chisq.test(income_category)
## Warning in chisq.test(income_category): Chi-squared approximation may be
## incorrect
chi2
##
## Pearson's Chi-squared test
##
## data: income_category
## X-squared = 295.23, df = 308, p-value = 0.6897
X-squared = 295.23
df = 308
p-value = 0.6897
Vì p-value = 0.6897 > 0.05. Chưa đủ cơ sở bác bỏ \(H_0\). Vậy AnnualIncome và ProductCategory độc lập nhau.
country_family <- table(dt$Country, dt$ProductFamily)
country_family
##
## Drink Food Non-Consumable
## Canada 69 580 160
## Mexico 325 2683 680
## USA 856 6890 1816
prop.table(country_family)
##
## Drink Food Non-Consumable
## Canada 0.004907888 0.041254712 0.011380610
## Mexico 0.023116865 0.190838609 0.048367594
## USA 0.060886265 0.490077530 0.129169927
barplot(country_family,
beside = TRUE,
col = c("green", "red", "purple"),
legend = rownames(country_family),
xlab = "ProductFamily",
ylab = "Country",
main = "Phân bố loại sản phẩm theo các nước")
Nhận xét:
Thực phẩm (Food) là danh mục được tiêu thụ nhiều nhất ở cả ba quốc gia.
Tiếp theo là Non-Consumable, và cuối cùng là Drink.
Hoa Kỳ có xu hướng tiêu dùng vượt trội hơn hẳn so với hai nước còn lại.
Kiểm định giả thuyết:
\(H_0\): Country và ProductFamily độc lập nhau.
\(H_1\): Country và ProductFamily có liên quan đến nhau.
chi3 <- chisq.test(country_family)
chi3
##
## Pearson's Chi-squared test
##
## data: country_family
## X-squared = 1.1831, df = 4, p-value = 0.8809
X-squared = 1.1831
df = 4
p-value = 0.8809
Vì p-value = 0.8809 > 0.05. Chưa đủ cơ sở bác bỏ \(H_0\). Vậy Country và ProductFamily độc lập nhau.