Đọc và làm quen với dữ liệu
# Đọc file
library("csv")
## Warning: package 'csv' was built under R version 4.3.3
data <- read.csv("D:/Downloads/Supermarket Transactions.csv", header = T)
# Hiển thị cấu trúc dữ liệu
str(data)
## 'data.frame': 14059 obs. of 16 variables:
## $ X : int 1 2 3 4 5 6 7 8 9 10 ...
## $ PurchaseDate : chr "2007-12-18" "2007-12-20" "2007-12-21" "2007-12-21" ...
## $ CustomerID : int 7223 7841 8374 9619 1900 6696 9673 354 1293 7938 ...
## $ Gender : chr "F" "M" "F" "M" ...
## $ MaritalStatus : chr "S" "M" "M" "M" ...
## $ Homeowner : chr "Y" "Y" "N" "Y" ...
## $ Children : int 2 5 2 3 3 3 2 2 3 1 ...
## $ 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" ...
## $ UnitsSold : int 5 5 3 4 4 3 4 6 1 2 ...
## $ Revenue : num 27.38 14.9 5.52 4.44 14 ...
# Hiển thị vài dòng đầu và cuối
head(data)
## X PurchaseDate CustomerID Gender MaritalStatus Homeowner Children
## 1 1 2007-12-18 7223 F S Y 2
## 2 2 2007-12-20 7841 M M Y 5
## 3 3 2007-12-21 8374 F M N 2
## 4 4 2007-12-21 9619 M M Y 3
## 5 5 2007-12-22 1900 F S Y 3
## 6 6 2007-12-22 6696 F M Y 3
## AnnualIncome City StateorProvince Country ProductFamily
## 1 $30K - $50K Los Angeles CA USA Food
## 2 $70K - $90K Los Angeles CA USA Food
## 3 $50K - $70K Bremerton WA USA Food
## 4 $30K - $50K Portland OR USA Food
## 5 $130K - $150K Beverly Hills CA USA Drink
## 6 $10K - $30K Beverly Hills CA USA Food
## ProductDepartment ProductCategory UnitsSold Revenue
## 1 Snack Foods Snack Foods 5 27.38
## 2 Produce Vegetables 5 14.90
## 3 Snack Foods Snack Foods 3 5.52
## 4 Snacks Candy 4 4.44
## 5 Beverages Carbonated Beverages 4 14.00
## 6 Deli Side Dishes 3 4.37
tail(data)
## X PurchaseDate CustomerID Gender MaritalStatus Homeowner Children
## 14054 14054 2009-12-29 2032 F M N 3
## 14055 14055 2009-12-29 9102 F M Y 2
## 14056 14056 2009-12-29 4822 F M Y 3
## 14057 14057 2009-12-31 250 M S Y 1
## 14058 14058 2009-12-31 6153 F S N 4
## 14059 14059 2009-12-31 3656 M S N 3
## AnnualIncome City StateorProvince Country ProductFamily
## 14054 $10K - $30K Yakima WA USA Non-Consumable
## 14055 $10K - $30K Bremerton WA USA Food
## 14056 $10K - $30K Walla Walla WA USA Food
## 14057 $30K - $50K Portland OR USA Drink
## 14058 $50K - $70K Spokane WA USA Drink
## 14059 $50K - $70K Portland OR USA Non-Consumable
## ProductDepartment ProductCategory UnitsSold Revenue
## 14054 Household Paper Products 5 14.50
## 14055 Baking Goods Baking Goods 3 9.64
## 14056 Frozen Foods Vegetables 3 7.45
## 14057 Beverages Pure Juice Beverages 4 3.24
## 14058 Dairy Dairy 2 4.00
## 14059 Household Electrical 5 25.53
# Chuyển các biến định tính phù hợp sang factor
factor <- c("Gender", "MaritalStatus", "Homeowner", "AnnualIncome",
"City", "StateorProvince", "Country",
"ProductFamily", "ProductDepartment", "ProductCategory")
# Kiểm tra biến nào tồn tại trong data
factor <- intersect(factor, names(data))
# Chuyển sang factor
data[factor] <- lapply(data[factor], as.factor)
# Kiểm tra lại cấu trúc
str(data)
## 'data.frame': 14059 obs. of 16 variables:
## $ X : int 1 2 3 4 5 6 7 8 9 10 ...
## $ PurchaseDate : chr "2007-12-18" "2007-12-20" "2007-12-21" "2007-12-21" ...
## $ CustomerID : int 7223 7841 8374 9619 1900 6696 9673 354 1293 7938 ...
## $ Gender : Factor w/ 2 levels "F","M": 1 2 1 2 1 1 2 1 2 2 ...
## $ MaritalStatus : Factor w/ 2 levels "M","S": 2 1 1 1 2 1 2 1 1 2 ...
## $ Homeowner : Factor w/ 2 levels "N","Y": 2 2 1 2 2 2 2 2 2 1 ...
## $ Children : int 2 5 2 3 3 3 2 2 3 1 ...
## $ AnnualIncome : Factor w/ 8 levels "$10K - $30K",..: 5 7 6 5 3 1 5 4 1 6 ...
## $ City : Factor w/ 23 levels "Acapulco","Bellingham",..: 8 8 4 12 3 3 13 23 2 15 ...
## $ StateorProvince : Factor w/ 10 levels "BC","CA","DF",..: 2 2 8 6 2 2 6 8 8 2 ...
## $ Country : Factor w/ 3 levels "Canada","Mexico",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ ProductFamily : Factor w/ 3 levels "Drink","Food",..: 2 2 2 2 1 2 2 2 3 3 ...
## $ ProductDepartment: Factor w/ 22 levels "Alcoholic Beverages",..: 20 18 20 21 4 11 13 6 15 14 ...
## $ ProductCategory : Factor w/ 45 levels "Baking Goods",..: 42 45 42 7 15 41 5 13 16 35 ...
## $ UnitsSold : int 5 5 3 4 4 3 4 6 1 2 ...
## $ Revenue : num 27.38 14.9 5.52 4.44 14 ...
Giải thích các biến
Bộ dữ liệu Supermarket Transactions bao gồm thông tin giao dịch của khách hàng tại siêu thị, với 14,059 quan sát và 16 biến.
Dữ liệu chứa các thông tin đa dạng như:
Thông tin khách hàng: giới tính, tình trạng hôn nhân, thu nhập, con cái, quyền sở hữu nhà
Thông tin địa lý: thành phố, bang, quốc gia
Thông tin sản phẩm: nhóm sản phẩm, loại, doanh thu, số lượng bán
Dưới đây là mô tả chi tiết các biến có trong bộ dữ liệu:
| Tên Biến | Ý Nghĩa |
|---|---|
| PurchaseDate | Ngày giao dịch mua hàng diễn ra (định dạng ngày/tháng/năm). |
| CustomerID | Mã định danh duy nhất cho mỗi khách hàng. |
| Gender | Giới tính của khách hàng: M (Nam), F (Nữ). |
| MaritalStatus | Tình trạng hôn nhân: S (Độc thân), M (Đã kết hôn). |
| Homeowner | Tình trạng sở hữu nhà: Y (Có), N (Không). |
| Children | Số lượng con cái của khách hàng. |
| AnnualIncome | Mức thu nhập hàng năm theo khoảng (Ví dụ: $30K - $50K). |
| City | Thành phố nơi khách hàng thực hiện giao dịch. |
| StateorProvince | Bang hoặc tỉnh (ví dụ: CA cho California, OR cho Oregon). |
| Country | Quốc gia. |
| ProductFamily | Nhóm sản phẩm chính: Food (Thực phẩm), Drink (Đồ uống), Non-Consumable (Không tiêu dùng). |
| ProductDepartment | Bộ phận sản phẩm như Snack Foods, Frozen Foods, v.v. |
| ProductCategory | Danh mục sản phẩm cụ thể hơn, ví dụ: Candy, Beer and Wine. |
| UnitsSold | Số lượng đơn vị sản phẩm đã bán trong giao dịch đó. |
| Revenue | Doanh thu từ giao dịch (tính theo USD). |
Trước khi tiến hành thống kê mô tả các biến trong bộ dữ liệu, ta tiến hành phân loại dữ liệu thành 2 nhóm bao gồm: dữ liệu định tính và dữ liệu định lượng như sau:
Phân loại biến theo kiểu dữ liệu:
Dữ liệu Định tính:
| Tên Biến | Ý Nghĩa |
|---|---|
| Gender | Giới tính của khách hàng: M (Nam), F (Nữ). |
| MaritalStatus | Tình trạng hôn nhân: S (Độc thân), M (Đã kết hôn). |
| Homeowner | Tình trạng sở hữu nhà: Y (Có), N (Không). |
| AnnualIncome | Mức thu nhập hàng năm theo khoảng (Ví dụ: $30K - $50K). |
| City | Thành phố nơi khách hàng thực hiện giao dịch. |
| StateorProvince | Bang hoặc tỉnh (ví dụ: CA cho California, OR cho Oregon). |
| Country | Quốc gia. |
| ProductFamily | Nhóm sản phẩm chính: Food (Thực phẩm), Drink (Đồ uống), Non-Consumable (Không tiêu dùng). |
| ProductDepartment | Bộ phận sản phẩm như Snack Foods, Frozen Foods, v.v. |
| ProductCategory | Danh mục sản phẩm cụ thể hơn, ví dụ: Candy, Beer and Wine. |
Dữ liệu Định lượng:
| Tên Biến | Ý Nghĩa |
|---|---|
| Children | Số lượng con cái của khách hàng. |
| UnitsSold | Số lượng đơn vị sản phẩm đã bán trong giao dịch đó. |
| Revenue | Doanh thu từ giao dịch (tính theo USD). |
Kiểm tra giá trị NA
Trước khi tiến hành phân tích dữ liệu, chúng ta cần kiểm tra và xử lý các giá trị bị thiếu nhằm đảm bảo độ chính xác và tính toàn vẹn của kết quả phân tích.
sum(is.na(data))
## [1] 0
which(is.na(data))
## integer(0)
Cả hai lệnh đều trả về kết quả cho thấy không tồn tại giá trị thiếu:
sum(is.na(data)) trả về 0, nghĩa là không có giá trị NA nào.
which(is.na(data)) trả về integer(0), nghĩa là không có vị trí nào chứa NA.
Điều này cho phép chúng ta tiếp tục các bước xử lý dữ liệu và phân tích mà không cần thực hiện bước xử lý giá trị thiếu.
Tạo bộ dữ liệu chỉ có biến định tính
dataDT <- c("Gender", "MaritalStatus", "Homeowner", "AnnualIncome",
"City", "StateorProvince", "Country",
"ProductFamily", "ProductDepartment", "ProductCategory")
dataDT <- data[,dataDT]
str(dataDT)
## 'data.frame': 14059 obs. of 10 variables:
## $ Gender : Factor w/ 2 levels "F","M": 1 2 1 2 1 1 2 1 2 2 ...
## $ MaritalStatus : Factor w/ 2 levels "M","S": 2 1 1 1 2 1 2 1 1 2 ...
## $ Homeowner : Factor w/ 2 levels "N","Y": 2 2 1 2 2 2 2 2 2 1 ...
## $ AnnualIncome : Factor w/ 8 levels "$10K - $30K",..: 5 7 6 5 3 1 5 4 1 6 ...
## $ City : Factor w/ 23 levels "Acapulco","Bellingham",..: 8 8 4 12 3 3 13 23 2 15 ...
## $ StateorProvince : Factor w/ 10 levels "BC","CA","DF",..: 2 2 8 6 2 2 6 8 8 2 ...
## $ Country : Factor w/ 3 levels "Canada","Mexico",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ ProductFamily : Factor w/ 3 levels "Drink","Food",..: 2 2 2 2 1 2 2 2 3 3 ...
## $ ProductDepartment: Factor w/ 22 levels "Alcoholic Beverages",..: 20 18 20 21 4 11 13 6 15 14 ...
## $ ProductCategory : Factor w/ 45 levels "Baking Goods",..: 42 45 42 7 15 41 5 13 16 35 ...
Lập bảng tần số và tần suất
#Bảng tần số
table(dataDT$Gender)
##
## F M
## 7170 6889
#Bảng tần suất
table(dataDT$Gender)/sum(table(dataDT$Gender))
##
## F M
## 0.5099936 0.4900064
Vẽ biểu đồ cột
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.3
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.3.3
##
## 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
# Tạo bảng tần số
freq1 <- table(dataDT$Gender)
# Chuyển thành data frame
Gender <- as.data.frame(freq1)
colnames(Gender) <- c("Gender", "Count")
# Vẽ biểu đồ cột
ggplot(Gender, aes(x = Gender, y = Count, fill = Gender)) +
geom_col(color = "black") +
geom_text(aes(label = Count), vjust = -0.5, color = "black") +
scale_fill_manual(values = c("M" = "#ADD8E6", "F" = "#CD5C5C")) +
labs(
title = "Gender")+
theme_minimal()+
theme(plot.title = element_text(hjust = 0.5))
Vẽ biểu đồ tròn
# Vẽ biểu đồ tròn
pie(freq1,
labels = paste0(names(freq1), " (", round(100 * freq1 / sum(freq1), 1), "%)"),
col = c("#CD5C5C", "#ADD8E6"),
main = "Gender")
Nhận xét:
Dựa vào bảng tần số và tần suất, có thể thấy rằng trong bộ dữ
liệu hiện tại có 7170 khách hàng là nữ và 6889 khách hàng là nam.
Tỷ lệ tương ứng là khoảng 51% nữ và 49% nam.
Kết quả này cho thấy giới tính nữ chiếm tỷ trọng nhỉnh hơn trong tập khách hàng được khảo sát (dựa trên biểu đồ tròn).Đồng thời, biểu đồ cột minh họa trực quan cho thấy sự chênh lệch không quá lớn giữa hai giới, nhưng nữ vẫn chiếm ưu thế nhẹ về mặt số lượng.
Lập bảng tần số và tần suất
#Bảng tần số
table(dataDT$MaritalStatus)
##
## M S
## 6866 7193
#Bảng tần suất
table(dataDT$MaritalStatus)/sum(table(dataDT$MaritalStatus))
##
## M S
## 0.4883704 0.5116296
Vẽ biểu đồ cột
# Tạo bảng tần số
freq2 <- table(dataDT$MaritalStatus)
# Chuyển thành data frame
MaritalStatus <- as.data.frame(freq2)
colnames(MaritalStatus) <- c("MaritalStatus", "Count")
# Vẽ biểu đồ cột
ggplot(MaritalStatus, aes(x = MaritalStatus, y = Count, fill = MaritalStatus)) +
geom_col(color = "black") +
geom_text(aes(label = Count), vjust = -0.5, color = "black") +
scale_fill_manual(values = c("S" = "#FFD700", "M" = "#DCDCDC")) +
labs(
title = "MaritalStatus"
) +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5))
Vẽ biểu đồ tròn
# Vẽ biểu đồ tròn
pie(freq2,
labels = paste0(names(freq2), " (", round(100 * freq2 / sum(freq2), 1), "%)"),
col = c("#FFD700", "#DCDCDC"),
main = "MaritalStatus")
Nhận xét:
Dựa vào bảng tần số và tần suất, ta thấy trong tập dữ liệu có
7193 khách hàng thuộc nhóm độc thân (Single) và 6866 khách hàng thuộc
nhóm đã kết hôn (Married).
Tỷ lệ tương ứng là 51.16% độc thân và 48.84% đã kết hôn.
Biểu đồ cột minh họa rõ ràng rằng số lượng khách hàng độc thân
nhỉnh hơn một chút so với nhóm đã kết hôn. Biểu đồ tròn cũng cho thấy sự
phân bố khá cân bằng giữa hai nhóm tình trạng hôn nhân.
Điều này cho thấy dữ liệu có tính đại diện tốt cho cả hai nhóm, tránh
được tình trạng thiên lệch mẫu trong nghiên cứu.
Lập bảng tần số và tần suất
#Bảng tần số
table(dataDT$Homeowner)
##
## N Y
## 5615 8444
#Bảng tần suất
table(dataDT$Homeowner)/sum(table(dataDT$Homeowner))
##
## N Y
## 0.3993883 0.6006117
Vẽ biểu đồ cột
# Tạo bảng tần số
freq3 <- table(dataDT$Homeowner)
# Chuyển thành data frame
homeowner <- as.data.frame(freq3)
colnames(homeowner) <- c("Homeowner", "Count")
# Vẽ biểu đồ cột
ggplot(homeowner, aes(x = Homeowner, y = Count, fill = Homeowner)) +
geom_col(color = "black") +
geom_text(aes(label = Count), vjust = -0.5, color = "black") +
scale_fill_manual(values = c("N" = "#FDB462", "Y" = "#E6E6FA")) +
labs(
title = "Homeowner") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5))
Vẽ biểu đồ tròn
# Vẽ biểu đồ tròn
pie(freq3,
labels = paste0(names(freq3), " (", round(100 * freq3 / sum(freq3), 1), "%)"),
col = c("#FDB462", "#E6E6FA"), # màu tùy chọn
main = "Homeowner")
Nhận xét:
Dựa trên bảng tần số, có 5615 khách hàng chưa có nhà và 8444 khách hàng đã có nhà. Xét về tỷ lệ, nhóm chưa có nhà chiếm khoảng 39.94%, trong khi nhóm đã có nhà chiếm 60.06%.
Biểu đồ cột thể hiện rõ rằng phần lớn khách hàng trong dữ liệu thuộc nhóm đã có nhà, cho thấy khả năng tài chính tương đối ổn định hoặc thuộc nhóm khách hàng trung niên trở lên. Biểu đồ tròn bổ sung góc nhìn trực quan, cho thấy sự chênh lệch rõ rệt giữa hai nhóm, tuy chưa đến mức áp đảo tuyệt đối.
Lập bảng tần số và tần suất
#Bảng tần số
table(dataDT$AnnualIncome)
##
## $10K - $30K $110K - $130K $130K - $150K $150K + $30K - $50K
## 3090 643 760 273 4601
## $50K - $70K $70K - $90K $90K - $110K
## 2370 1709 613
#Bảng tần suất
table(dataDT$AnnualIncome)/sum(table(dataDT$AnnualIncome))
##
## $10K - $30K $110K - $130K $130K - $150K $150K + $30K - $50K
## 0.21978804 0.04573583 0.05405790 0.01941817 0.32726367
## $50K - $70K $70K - $90K $90K - $110K
## 0.16857529 0.12155914 0.04360196
Vẽ đồ thị
# Tạo bảng tần số
freq4 <- table(dataDT$AnnualIncome)
# Chuyển thành data frame
AnnualIncome <- as.data.frame(freq4)
colnames(AnnualIncome) <- c("AnnualIncome", "Count")
# Vẽ biểu đồ cột
ggplot(AnnualIncome, aes(x = AnnualIncome, y = Count)) +
geom_col(fill = "#FF8C00", color = "black") +
geom_text(aes(label = Count), vjust = -0.5, color = "black")
Nhận xét
Dựa vào bảng tần số, nhóm thu nhập phổ biến nhất là từ 30K – 50K USD/năm, với 4601 người, chiếm khoảng 32.73% theo bảng tần suất. Theo sau là nhóm 10K – 30K USD/năm với 3090 người (~21.98%).
Ngược lại, các nhóm thu nhập cao như $150K+ hoặc $110K – $130K chiếm tỷ trọng rất nhỏ trong bộ dữ liệu (chỉ khoảng NA% và 4.57%), cho thấy nhóm khách hàng chính nằm trong phân khúc thu nhập trung bình.
Biểu đồ cột giúp hình dung rõ sự phân bố thu nhập, cho thấy phân khúc dưới 90K chiếm phần lớn, đặc biệt là 2 nhóm 30K – 50K và 10K – 30K.
Lập bảng tần số và tần suất
#Bảng tần số
table(dataDT$City)
##
## Acapulco Bellingham Beverly Hills Bremerton Camacho
## 383 143 811 834 452
## Guadalajara Hidalgo Los Angeles Merida Mexico City
## 75 845 926 654 194
## Orizaba Portland Salem San Andres San Diego
## 464 876 1386 621 866
## San Francisco Seattle Spokane Tacoma Vancouver
## 130 922 875 1257 633
## Victoria Walla Walla Yakima
## 176 160 376
#Bảng tần suất
table(dataDT$City)/sum(table(data$City))
##
## Acapulco Bellingham Beverly Hills Bremerton Camacho
## 0.027242336 0.010171420 0.057685468 0.059321431 0.032150224
## Guadalajara Hidalgo Los Angeles Merida Mexico City
## 0.005334661 0.060103848 0.065865282 0.046518245 0.013798990
## Orizaba Portland Salem San Andres San Diego
## 0.033003770 0.062308841 0.098584537 0.044170994 0.061597553
## San Francisco Seattle Spokane Tacoma Vancouver
## 0.009246746 0.065580767 0.062237712 0.089408920 0.045024539
## Victoria Walla Walla Yakima
## 0.012518671 0.011380610 0.026744434
Vẽ biểu đồ cột
library(patchwork)
## Warning: package 'patchwork' was built under R version 4.3.3
# Bảng tần suất -> data frame
freq5 <- as.data.frame(table(dataDT$City))
colnames(freq5) <- c("City", "Count")
# Sắp xếp giảm dần
freq5 <- freq5[order(-freq5$Count), ]
# Chia đôi danh sách thành phố
n <- nrow(freq5)
mid <- ceiling(n / 2)
# Dữ liệu cho biểu đồ thứ nhất (nửa trên theo tần suất)
top <- head(freq5, mid)
plot1 <- ggplot(top, aes(x = City, y = Count)) +
geom_col(fill = "#FAFAD2", color = "black") +
geom_text(aes(label = Count), vjust = -0.5, color = "black", size = 2.5) +
theme_bw() +
theme(axis.text.x = element_text(angle = 45, hjust = 1, size = 8))
# Dữ liệu cho biểu đồ thứ hai (nửa dưới theo tần suất)
bottom <- tail(freq5, n - mid)
plot2 <- ggplot(bottom, aes(x = City, y = Count)) +
geom_col(fill = "#FAFAD2", color = "black") +
geom_text(aes(label = Count), vjust = -0.5, color = "black", size = 2.5) +
theme_bw() +
theme(axis.text.x = element_text(angle = 45, hjust = 1, size = 8))
# Ghép hai biểu đồ
plot1 + plot2
Nhận xét
Dựa vào bảng tần số, thành phố xuất hiện phổ biến nhất là Salem
với 1386 người, chiếm khoảng 9.86% theo bảng tần suất.
Theo sau là Tacoma và Portland với lần lượt 1257 người (~8.94%) và 876
người (~6.23%).
Ngược lại, các thành phố như Guadalajara hoặc Victoria có số lượng rất ít, chỉ lần lượt 75 và 176 người, chiếm chưa đến 0.53% và 1.25% trong toàn bộ dữ liệu.
Biểu đồ cột giúp trực quan hóa sự phân bố thành phố, cho thấy một số thành phố như Salem, Tacoma và Portland chiếm tỷ lệ vượt trội, trong khi phần lớn các thành phố còn lại có tần suất thấp. Điều này cho thấy dữ liệu tập trung vào một số khu vực địa lý nhất định thay vì phân bố đồng đều.
Lập bảng tần số và tần suất
#Bảng tần số
table(dataDT$StateorProvince)
##
## BC CA DF Guerrero Jalisco OR Veracruz WA
## 809 2733 815 383 75 2262 464 4567
## Yucatan Zacatecas
## 654 1297
#Bảng tần suất
table(dataDT$StateorProvince)/sum(table(dataDT$StateorProvince))
##
## BC CA DF Guerrero Jalisco OR
## 0.057543211 0.194395049 0.057969984 0.027242336 0.005334661 0.160893378
## Veracruz WA Yucatan Zacatecas
## 0.033003770 0.324845295 0.046518245 0.092254072
Vẽ biểu đồ cột
# Tạo bảng tần số
freq6 <- table(dataDT$StateorProvince)
# Chuyển thành data frame
StateorProvince <- as.data.frame(freq6)
colnames(StateorProvince) <- c("StateorProvince", "Count")
# Vẽ biểu đồ cột
ggplot(StateorProvince, aes(x = StateorProvince, y = Count)) +
geom_col(fill = "#98FB98", color = "black") +
geom_text(aes(label = Count), vjust = -0.5, color = "black")
Nhận xét
Dựa trên bảng tần số, tiểu bang có số lượng khách hàng lớn nhất là WA (Washington) với 4567 người, chiếm khoảng 32.48% toàn bộ dữ liệu.
Theo sau là CA (California) với 2733 khách hàng (~19.44%) và BC (British Columbia) với 809 người (~5.75%).Ngược lại, một số tiểu bang như Jalisco, Veracruz và Guerrero có số lượng khách hàng rất thấp, dưới 5% mỗi nhóm.
Biểu đồ cột cho thấy sự phân bố không đều giữa các tiểu bang, trong đó WA và CA chiếm phần lớn dữ liệu. Điều này cho thấy hai tiểu bang này có thể là thị trường chính hoặc có mạng lưới phân phối mạnh hơn trong tập dữ liệu này.
Lập bảng tần số và tần suất
#Bảng tần số
table(dataDT$Country)
##
## Canada Mexico USA
## 809 3688 9562
#Bảng tần suất
table(dataDT$Country)/sum(table(dataDT$Country))
##
## Canada Mexico USA
## 0.05754321 0.26232307 0.68013372
Vẽ biểu đồ cột
# Tạo bảng tần số
freq7 <- table(dataDT$Country)
# Chuyển thành data frame
Country <- as.data.frame(freq7)
colnames(Country) <- c("Country", "Count")
# Vẽ biểu đồ cột
ggplot(Country, aes(x = Country, y = Count)) +
geom_col(fill = "#FFC0CB", color = "black") +
geom_text(aes(label = Count), vjust = -0.5, color = "black")
Vẽ biểu đồ tròn
# Vẽ biểu đồ tròn
pie(freq7,
labels = paste0(names(freq7), " (", round(100 * freq7 / sum(freq7), 1), "%)"),
col = c("#FFC0CB", "#ADD8E6", "#BA55D3"),
main = "Country")
Nhận xét
Dựa vào bảng tần số, phần lớn khách hàng trong dữ liệu đến từ USA với 9562 người, chiếm khoảng 68.01% tổng số quan sát. Theo sau là Mexico với 3688 người (~26.23%), và Canada chỉ có 809 người (~5.75%).
Biểu đồ cột thể hiện rõ rằng USA là quốc gia chiếm ưu thế trong tập dữ liệu, với số lượng khách hàng vượt trội so với Mexico và Canada. Biểu đồ tròn bổ sung góc nhìn trực quan, cho thấy phần hình tròn đại diện cho USA lớn gấp nhiều lần hai nhóm còn lại. Điều này cho thấy rằng tập dữ liệu chủ yếu tập trung vào thị trường Mỹ, trong khi Mexico và Canada đóng vai trò nhỏ hơn trong phân phối khách hàng.
Lập bảng tần số và tần suất
#Bảng tần số
table(dataDT$ProductFamily)
##
## Drink Food Non-Consumable
## 1250 10153 2656
#Bảng tần suất
table(dataDT$ProductFamily)/sum(table(dataDT$ProductFamily))
##
## Drink Food Non-Consumable
## 0.08891102 0.72217085 0.18891813
Vẽ biểu đồ cột
# Tạo bảng tần số
freq8 <- table(dataDT$ProductFamily)
# Chuyển thành data frame
ProductFamily <- as.data.frame(freq8)
colnames(ProductFamily) <- c("ProductFamily", "Count")
# Vẽ biểu đồ cột
ggplot(ProductFamily, aes(x = ProductFamily, y = Count)) +
geom_col(fill = "#ADD8E6", color = "black") +
geom_text(aes(label = Count), vjust = -0.5, color = "black")
Vẽ biểu đồ tròn
# Vẽ biểu đồ tròn
pie(freq8,
labels = paste0(names(freq8), " (", round(100 * freq8 / sum(freq8), 1), "%)"),
col = c("#FFC0CB", "#ADD8E6", "#BA55D3"),
main = "ProductFamily")
Nhận xét
Dựa vào bảng tần số, phần lớn sản phẩm trong dữ liệu thuộc nhóm
Food với 10153 sản phẩm, chiếm khoảng 72.22% tổng số quan sát.
Theo sau là nhóm Non-Consumable với 2656 sản phẩm (~18.89%), và Drink
chỉ có 1250 sản phẩm (~8.89%).
Biểu đồ cột thể hiện rõ rằng Food là nhóm sản phẩm chiếm ưu thế trong tập dữ liệu, với số lượng vượt trội so với hai nhóm còn lại.Biểu đồ tròn bổ sung góc nhìn trực quan, cho thấy phần hình tròn đại diện cho Food lớn hơn nhiều so với Non-Consumable và Drink. Điều này cho thấy rằng tập dữ liệu tập trung nhiều nhất vào sản phẩm thực phẩm, trong khi các nhóm sản phẩm không tiêu dùng và đồ uống chiếm tỷ trọng nhỏ hơn trong phân phối sản phẩm.
Lập bảng tần số và tần suất
#Bảng tần số
table(dataDT$ProductDepartment)
##
## Alcoholic Beverages Baked Goods Baking Goods Beverages
## 356 425 1072 680
## Breakfast Foods Canned Foods Canned Products Carousel
## 188 977 109 59
## Checkout Dairy Deli Eggs
## 82 903 699 198
## Frozen Foods Health and Hygiene Household Meat
## 1382 893 1420 89
## Periodicals Produce Seafood Snack Foods
## 202 1994 102 1600
## Snacks Starchy Foods
## 352 277
#Bảng tần suất
table(dataDT$ProductDepartment)/sum(table(dataDT$ProductDepartment))
##
## Alcoholic Beverages Baked Goods Baking Goods Beverages
## 0.025321858 0.030229746 0.076250089 0.048367594
## Breakfast Foods Canned Foods Canned Products Carousel
## 0.013372217 0.069492852 0.007753041 0.004196600
## Checkout Dairy Deli Eggs
## 0.005832563 0.064229319 0.049719041 0.014083505
## Frozen Foods Health and Hygiene Household Meat
## 0.098300021 0.063518031 0.101002916 0.006330464
## Periodicals Produce Seafood Snack Foods
## 0.014368020 0.141830856 0.007255139 0.113806103
## Snacks Starchy Foods
## 0.025037343 0.019702682
Vẽ biều đồ cột
# Bảng tần suất -> data frame
freq9 <- as.data.frame(table(dataDT$ProductDepartment))
colnames(freq9) <- c("ProductDepartment", "Count")
# Sắp xếp giảm dần
freq9 <- freq9[order(-freq9$Count), ]
# Chia đôi danh sách thành phố
n1 <- nrow(freq9)
mid1 <- ceiling(n1 / 2)
# Dữ liệu cho biểu đồ thứ nhất (nửa trên theo tần suất)
top1 <- head(freq9, mid1)
plot11 <- ggplot(top1, aes(x = ProductDepartment, y = Count)) +
geom_col(fill = "#708090", color = "black") +
geom_text(aes(label = Count), vjust = -0.5, color = "black", size = 2.5) +
theme_bw() +
theme(axis.text.x = element_text(angle = 45, hjust = 1, size = 8))
# Dữ liệu cho biểu đồ thứ hai (nửa dưới theo tần suất)
bottom1 <- tail(freq9, n1 - mid1)
plot22 <- ggplot(bottom1, aes(x = ProductDepartment, y = Count)) +
geom_col(fill = "#708090", color = "black") +
geom_text(aes(label = Count), vjust = -0.5, color = "black", size = 2.5) +
theme_bw() +
theme(axis.text.x = element_text(angle = 45, hjust = 1, size = 8))
# Ghép hai biểu đồ
plot11 + plot22
Nhận xét
Dựa vào bảng tần số, nhóm sản phẩm phổ biến nhất là Produce với 1994 sản phẩm, chiếm khoảng 14.18% tổng số quan sát. Theo sau là các nhóm Snack Foods (1600, ~11.38%), Household (1420), và Frozen Foods (1382).
Ngược lại, các nhóm ít xuất hiện nhất trong dữ liệu gồm Carousel (59 sản phẩm), Checkout (82), và Eggs (198).
Biểu đồ cột bên trái thể hiện rõ sự áp đảo của nhóm Produce, vượt trội hẳn về số lượng so với các nhóm còn lại. Biểu đồ cột bên phải bổ sung thêm các nhóm có tần số thấp hơn, cho thấy mức độ phân tán rộng giữa các nhóm sản phẩm.
Tổng thể, dữ liệu nghiêng mạnh về các mặt hàng thực phẩm tươi sống và ăn nhẹ, trong khi các nhóm như sản phẩm đặc biệt (Carousel, Checkout) chiếm tỷ trọng rất nhỏ. Điều này phản ánh cơ cấu hàng hóa tập trung vào các mặt hàng tiêu dùng phổ biến.
##Biến Product Category
Lập bảng tần số và tần suất
#Bảng tần số
table(dataDT$ProductCategory)
##
## Baking Goods Bathroom Products Beer and Wine
## 484 365 356
## Bread Breakfast Foods Candles
## 425 417 45
## Candy Canned Anchovies Canned Clams
## 352 44 53
## Canned Oysters Canned Sardines Canned Shrimp
## 35 40 38
## Canned Soup Canned Tuna Carbonated Beverages
## 404 87 154
## Cleaning Supplies Cold Remedies Dairy
## 189 93 903
## Decongestants Drinks Eggs
## 85 135 198
## Electrical Frozen Desserts Frozen Entrees
## 355 323 118
## Fruit Hardware Hot Beverages
## 765 129 226
## Hygiene Jams and Jellies Kitchen Products
## 197 588 217
## Magazines Meat Miscellaneous
## 202 761 42
## Packaged Vegetables Pain Relievers Paper Products
## 48 192 345
## Pizza Plastic Products Pure Juice Beverages
## 194 141 165
## Seafood Side Dishes Snack Foods
## 102 153 1600
## Specialty Starchy Foods Vegetables
## 289 277 1728
#Bảng tần suất
table(dataDT$ProductCategory)/sum(table(dataDT$ProductCategory))
##
## Baking Goods Bathroom Products Beer and Wine
## 0.034426346 0.025962017 0.025321858
## Bread Breakfast Foods Candles
## 0.030229746 0.029660716 0.003200797
## Candy Canned Anchovies Canned Clams
## 0.025037343 0.003129668 0.003769827
## Canned Oysters Canned Sardines Canned Shrimp
## 0.002489508 0.002845153 0.002702895
## Canned Soup Canned Tuna Carbonated Beverages
## 0.028736041 0.006188207 0.010953837
## Cleaning Supplies Cold Remedies Dairy
## 0.013443346 0.006614980 0.064229319
## Decongestants Drinks Eggs
## 0.006045949 0.009602390 0.014083505
## Electrical Frozen Desserts Frozen Entrees
## 0.025250729 0.022974607 0.008393200
## Fruit Hardware Hot Beverages
## 0.054413543 0.009175617 0.016075112
## Hygiene Jams and Jellies Kitchen Products
## 0.014012376 0.041823743 0.015434953
## Magazines Meat Miscellaneous
## 0.014368020 0.054129028 0.002987410
## Packaged Vegetables Pain Relievers Paper Products
## 0.003414183 0.013656732 0.024539441
## Pizza Plastic Products Pure Juice Beverages
## 0.013798990 0.010029163 0.011736254
## Seafood Side Dishes Snack Foods
## 0.007255139 0.010882709 0.113806103
## Specialty Starchy Foods Vegetables
## 0.020556227 0.019702682 0.122910591
Vẽ biều đồ cột
# Bảng tần suất -> data frame
freq10 <- as.data.frame(table(dataDT$ProductCategory))
colnames(freq10) <- c("ProductCategory", "Count")
# Sắp xếp giảm dần
freq10 <- freq10[order(-freq10$Count), ]
# Chia đôi danh sách thành phố
n2 <- nrow(freq10)
mid2 <- ceiling(n2 / 2)
# Dữ liệu cho biểu đồ thứ nhất (nửa trên theo tần suất)
top2 <- head(freq10, mid2)
plot12 <- ggplot(top2, aes(x = ProductCategory, y = Count)) +
geom_col(fill = "#F4A460", color = "black") +
geom_text(aes(label = Count), vjust = -0.5, color = "black", size = 2.5) +
theme_bw() +
theme(axis.text.x = element_text(angle = 45, hjust = 1, size = 6))
# Dữ liệu cho biểu đồ thứ hai (nửa dưới theo tần suất)
bottom2 <- tail(freq10, n2 - mid2)
plot21 <- ggplot(bottom2, aes(x = ProductCategory, y = Count)) +
geom_col(fill = "#F4A460", color = "black") +
geom_text(aes(label = Count), vjust = -0.5, color = "black", size = 2.5) +
theme_bw() +
theme(axis.text.x = element_text(angle = 45, hjust = 1, size = 6))
# Ghép hai biểu đồ
plot12 + plot21
Nhận xét
Dựa vào bảng tần số, nhóm sản phẩm phổ biến nhất là Vegetables với 1728 sản phẩm, chiếm khoảng 12.29% tổng số quan sát. Theo sau là Snack Foods với 1600 sản phẩm (~11.38%), Fruit (765), và Meat (761). Ngược lại, các nhóm ít phổ biến nhất gồm Canned Oysters (35), Canned Sardines (40), và Candy (352), mỗi nhóm có chưa đến 50 quan sát, chiếm tỷ lệ rất nhỏ trong tổng thể dữ liệu.
Biểu đồ cột bên trái cho thấy sự phân bố không đồng đều, nổi bật nhất là hai nhóm Vegetables và Snack Foods với số lượng vượt trội so với các nhóm khác. Biểu đồ cột bên phải cung cấp thêm góc nhìn chi tiết hơn về các nhóm có tần suất thấp, cho thấy sự đa dạng nhưng phân tán nhỏ lẻ giữa nhiều danh mục.
Tổng quan, dữ liệu tập trung chủ yếu vào các mặt hàng rau củ, đồ ăn nhẹ và thực phẩm tươi sống, phản ánh xu hướng tiêu dùng chính. Những nhóm còn lại tuy nhiều về chủng loại nhưng chiếm tỷ trọng không lớn trong tập dữ liệu.
x <- table(dataDT$Country)
prop.test(c(x[["Canada"]],x[["Mexico"]]), c(sum(x), sum(x)), correct = TRUE)
##
## 2-sample test for equality of proportions with continuity correction
##
## data: c(x[["Canada"]], x[["Mexico"]]) out of c(sum(x), sum(x))
## X-squared = 2192.5, df = 1, p-value < 2.2e-16
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## -0.2130785 -0.1964812
## sample estimates:
## prop 1 prop 2
## 0.05754321 0.26232307
Mục tiêu
Thực hiện kiểm định để xác định xem tỷ lệ nữ trong tập dữ liệu có khác biệt so với 50% hay không.
Dữ liệu và biến quan tâm
Biến quan tâm: Gender
Hạng mục quan tâm: "F" (Female)
Tính toán tỷ lệ mẫu
# Số lượng nữ trong dữ liệu
sumF <- sum(dataDT$Gender == "F")
# Tổng số cá thể trong dữ liệu
sumGender <- length(dataDT$Gender)
Thực hiện kiểm định tỷ lệ 1 mẫu
Giả thuyết kiểm định:
Giả thuyết H0: Tỷ lệ nữ bằng 0.5
Giả thuyết H1: Tỷ lệ nữ khác 0.5
# Kiểm định tỷ lệ 1 mẫu với giả thuyết p = 0.5
prop.test(x = sumF, n = sumGender, p = 0.5, conf.level = 0.95, correct = TRUE)
##
## 1-sample proportions test with continuity correction
##
## data: sumF out of sumGender, 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
Kết quả kiểm định:
Giá trị thống kê Chi-squared: 5.5765
Bậc tự do (df): 1
p-value: 0.0182
Khoảng tin cậy 95% cho tỷ lệ nữ: (0.5017, 0.5183)
Ước lượng tỷ lệ nữ từ mẫu: 0.50999 (tức ~51%)
Kết luận:
Với mức ý nghĩa 5%, vì p-value = 0.0182 < 0.05, ta bác bỏ giả thuyết H0.Kết luận rằng tỷ lệ nữ trong tập dữ liệu khác 50% một cách có ý nghĩa thống kê.
Mục tiêu
Thực hiện kiểm định để xác định xem tỷ lệ khách hàng đã kết hôn (Married) trong tập dữ liệu có khác biệt so với 50% hay không.
Dữ liệu và biến quan tâm
Biến quan tâm: MaritalStatus
Hạng mục quan tâm: "M" (Married)
Tính toán tỷ lệ mẫu
# Số lượng khách hàng đã kết hôn trong dữ liệu
sumM <- sum(dataDT$MaritalStatus == "M")
# Tổng số khách hàng trong dữ liệu
sumMarital <- length(dataDT$MaritalStatus)
Kiểm định tỷ lệ 1 mẫu
Giả thuyết kiểm định:
H0: Tỷ lệ khách hàng đã kết hôn bằng 0.5
H1: Tỷ lệ khách hàng đã kết hôn khác 0.5
# Kiểm định tỷ lệ 1 mẫu với giả thuyết p = 0.5
prop.test(x = sumM, n = sumMarital, p = 0.5, conf.level = 0.95, correct = TRUE)
##
## 1-sample proportions test with continuity correction
##
## data: sumM out of sumMarital, 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.4800765 0.4966708
## sample estimates:
## p
## 0.4883704
Kết quả kiểm định:
Giá trị thống kê Chi-squared: 7.5593
Bậc tự do (df): 1
p-value: 0.006
Khoảng tin cậy 95% cho tỷ lệ đã kết hôn: (0.4801, 0.4967)
Ước lượng tỷ lệ đã kết hôn từ mẫu: 0.48837 (tức ~48.84%)
Kết luận:
Với mức ý nghĩa 5% (α = 0.05), vì p-value = 0.00597 < 0.05, ta bác bỏ giả thuyết H0. Điều này cho thấy rằng tỷ lệ khách hàng đã kết hôn trong tập dữ liệu khác 50% một cách có ý nghĩa thống kê. Cụ thể, tỷ lệ kết hôn trong mẫu là khoảng 48.84%, thấp hơn 50%.
Mục tiêu
Thực hiện kiểm định để xác định xem tỷ lệ khách hàng có nhà (Homeowner = “Y”) có khác biệt so với 50% hay không.
Dữ liệu và biến quan tâm
Biến quan tâm: Homeowner
Hạng mục quan tâm: "Y" (Có nhà)
Tính toán tỷ lệ mẫu
# Số lượng khách hàng có nhà
sumY <- sum(dataDT$Homeowner == "Y")
# Tổng số khách hàng
sumHomeowner <- length(dataDT$Homeowner)
Kiểm định tỷ lệ 1 mẫu
Giả thuyết kiểm định:
H0: Tỷ lệ khách hàng có nhà bằng 0.5
H1: Tỷ lệ khách hàng có nhà khác 0.5
# Kiểm định tỷ lệ 1 mẫu với giả thuyết p = 0.5
prop.test(x = sumY, n = sumHomeowner, p = 0.5, conf.level = 0.95, correct = TRUE)
##
## 1-sample proportions test with continuity correction
##
## data: sumY out of sumHomeowner, null probability 0.5
## X-squared = 568.86, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.5924537 0.6087145
## sample estimates:
## p
## 0.6006117
Kết quả kiểm định:
Giá trị thống kê Chi-squared là 568.86, với 1 bậc tự do.
Giá trị p-value < 2.2e-16, rất nhỏ hơn nhiều so với mức ý nghĩa thông thường 0.05.
Khoảng tin cậy 95% cho tỷ lệ khách hàng có nhà là (0.5925, 0.6087).
Ước lượng tỷ lệ khách hàng có nhà trong mẫu là 0.6006 (tức khoảng 60.06%).
Kết luận
Với mức ý nghĩa 5% (α = 0.05), vì p-value < 2.2e-16 < 0.05, ta bác bỏ giả thuyết H0.Điều này cho thấy rằng tỷ lệ khách hàng sở hữu nhà trong tập dữ liệu khác 50% một cách có ý nghĩa thống kê.Cụ thể, tỷ lệ sở hữu nhà trong mẫu là khoảng 60.06%, cao hơn 50%.
Kiểm định Chi-bình phương (Chi-square test of independence) là một phương pháp thống kê dùng để xác định xem hai biến định tính (phân loại) có quan hệ với nhau hay không, hay nói cách khác là chúng có độc lập với nhau hay không trong tổng thể.
Giả thuyết kiểm định
H₀ (Giả thuyết không): Hai biến X và Y độc lập với nhau.
H₁ (Giả thuyết đối): Hai biến X và Y có mối liên hệ, tức là không độc lập.
Giá trị kiểm định
Phép kiểm định sử dụng phân phối Chi-bình phương (χ²) với công thức:
\[ \chi^2 = \sum_{i,j} \frac{(n_{ij} - \hat{\mu}_{ij})^2}{\hat{\mu}_{ij}} \]
Trong đó:
Diễn giải kết quả
Sau khi chạy kiểm định trong R bằng hàm chisq.test(),
kết quả trả về bao gồm:
Giá trị thống kê Chi-bình phương
(X-squared)
Bậc tự do (degrees of freedom – df)
Giá trị p (p-value)
Cách diễn giải:
Nếu p-value < 0.05 → bác bỏ giả thuyết H₀ → hai biến có mối liên hệ, không độc lập.
Nếu p-value ≥ 0.05 → không bác bỏ H₀ → chưa có bằng chứng thống kê đủ mạnh để khẳng định hai biến có quan hệ → có thể độc lập.
Relative Risk (RR) hay Rủi ro tương đối là một chỉ số thống kê dùng để so sánh xác suất xảy ra sự kiện (hoặc “rủi ro”) giữa hai nhóm. Đây là chỉ số quan trọng trong các nghiên cứu so sánh như y tế, xã hội học, và khoa học hành vi.
Giả sử ta có hai nhóm so sánh, thì:
\[ RR = \frac{\pi_1}{\pi_2} \]
Trong đó: - \(\pi_1\): Xác suất xảy ra sự kiện ở nhóm thứ nhất (nhóm khảo sát)
Odd là tỷ số giữa xác suất sự kiện xảy ra với xác
suất sự kiện không xảy ra.
Công thức tính:
\[ \text{Odd} = \frac{P(\text{sự kiện xảy ra})}{1 - P(\text{sự kiện xảy ra})} \]
Ví dụ, nếu xác suất một người sở hữu nhà là 0.75, thì odd là:
\[ \frac{0.75}{1 - 0.75} = \frac{0.75}{0.25} = 3 \]
Điều này có nghĩa là “tỷ lệ cược” sự kiện xảy ra là 3:1.
Odds Ratio (OR) dùng để so sánh odd giữa hai nhóm khác nhau.
Công thức tổng quát:
\[ \text{OR} = \frac{\text{Odd của nhóm 1}}{\text{Odd của nhóm 2}} = \frac{\frac{P_1}{1 - P_1}}{\frac{P_2}{1 - P_2}} \]
Bảng ngẫu nhiên (random table) thường được sử dụng trong thống kê để biểu diễn dữ liệu phân loại hoặc đếm theo các nhóm khác nhau. Cấu trúc xác suất của bảng này được mô tả qua các phân phối xác suất có thể sinh ra dữ liệu đó. Hai phân phối phổ biến nhất dùng để mô hình hóa bảng ngẫu nhiên là:
Phân phối Poisson (Poisson Distribution)
Phân phối Poisson mô tả số lượng sự kiện xảy ra trong một khoảng thời gian hoặc không gian cố định, với giả định các sự kiện xảy ra độc lập và với tỉ lệ trung bình cố định.
\[ P(X = k) = \frac{e^{-\lambda} \lambda^{k}}{k!}, \quad k = 0, 1, 2, \dots \]
Ý nghĩa tham số: \(\lambda\) là số sự kiện trung bình xảy ra trong khoảng quan sát.
Ứng dụng: Thường dùng để mô tả số lượng sự kiện hiếm gặp như số cuộc gọi điện thoại trong 1 giờ, số khách hàng đến cửa hàng trong 1 ngày, hay số lỗi phát sinh trên một sản phẩm.
Phân phối Đa thức (Multinomial Distribution)
Phân phối Đa thức là sự mở rộng của phân phối Nhị thức (Binomial), mô tả số lần các kết quả khác nhau xảy ra trong một chuỗi các phép thử độc lập, mỗi phép thử có nhiều hơn hai kết quả có thể.
\[ (X_1, X_2, \dots, X_k) \]
là số lần kết quả thứ \(i\) xảy ra, có phân phối Đa thức với xác suất:
\[ P(X_1 = x_1, \dots, X_k = x_k) = \frac{n!}{x_1! x_2! \cdots x_k!} p_1^{x_1} p_2^{x_2} \cdots p_k^{x_k} \]
với điều kiện \(\sum_{i=1}^k x_i = n\).
Tóm lại, cấu trúc xác suất của bảng ngẫu nhiên thường được xây dựng dựa trên phân phối Poisson khi quan tâm đến số lượng sự kiện xảy ra trên các ô bảng (đếm số lượng) hoặc phân phối Đa thức khi quan tâm đến phân phối tỉ lệ của các nhóm trong tổng số các phép thử.
Bảng tần số chéo
marital_homeowner <- table(dataDT$MaritalStatus, dataDT$Homeowner)
marital_homeowner
##
## N Y
## M 1719 5147
## S 3896 3297
Nhận xét
Khách hàng đã kết hôn (M): Có tới 5147 người sở hữu nhà ở, chiếm phần lớn trong nhóm này, trong khi chỉ có 1719 người không sở hữu nhà.
Khách hàng độc thân (S): Ngược lại, nhóm này có xu hướng không sở hữu nhà ở cao hơn với 3896 người, trong khi số người sở hữu nhà chỉ là 3297 người.
So sánh giữa hai nhóm:
Nhóm đã kết hôn có tỷ lệ sở hữu nhà ở cao hơn đáng kể so với nhóm độc thân.
Nhóm độc thân có số lượng không sở hữu nhà ở vượt trội, cho thấy xu hướng chưa ổn định về tài chính hoặc cuộc sống gia đình.
Bảng tần suất chéo
prop.table(marital_homeowner)
##
## N Y
## M 0.1222704 0.3661000
## S 0.2771179 0.2345117
Nhận xét
Nhóm khách hàng đã kết hôn sở hữu nhà chiếm tỷ trọng lớn nhất trong toàn bộ dữ liệu (36.61%), cho thấy đây là nhóm có xu hướng ổn định về tài chính và chỗ ở.
Khách hàng độc thân không sở hữu nhà cũng chiếm tỷ trọng khá lớn (27.71%), phản ánh phần nào sự chưa ổn định về tài sản hoặc giai đoạn đầu trong chu kỳ sống cá nhân.
Nhìn chung, dữ liệu cho thấy mối liên hệ đáng chú ý giữa tình trạng hôn nhân và quyền sở hữu nhà ở, trong đó việc đã kết hôn thường đi kèm với tỷ lệ sở hữu nhà cao hơn.
Vẽ đồ thị
library(ggplot2)
library(dplyr)
# Chuyển đổi dữ liệu sang dạng data frame
df_marital_homeowner <- as.data.frame(marital_homeowner)
colnames(df_marital_homeowner) <- c("MaritalStatus", "Homeowner", "Count")
# Vẽ biểu đồ cột nhóm
ggplot(df_marital_homeowner, aes(x = Homeowner, y = Count, fill = MaritalStatus)) +
geom_bar(stat = "identity", position = "dodge") +
labs(title = "Số lượng khách hàng theo Homeowner và Marital Status",
x = "Tình trạng sở hữu nhà", y = "Số lượng") +
theme_minimal()+
theme(plot.title = element_text(hjust = 0.5))
Nhận xét
Khác biệt giữa hai nhóm hôn nhân: Khách hàng đã
kết hôn (M) có số lượng sở hữu nhà (Y) vượt
trội (hơn 5000 người), trong khi khách hàng độc thân (S)
lại chủ yếu thuộc nhóm không sở hữu nhà (N), với khoảng
3900 người.
Xu hướng ổn định tài chính khi kết hôn: Nhóm đã kết hôn có tỷ lệ sở hữu nhà cao, phản ánh sự ổn định về tài chính hoặc nhu cầu ổn định nơi ở cho gia đình. Ngược lại, nhóm độc thân có tỷ lệ không sở hữu nhà cao hơn, có thể do ưu tiên linh hoạt, chưa ổn định cuộc sống.
Sự chênh lệch trong nhóm không sở hữu nhà: Trong
nhóm không sở hữu nhà (N), số lượng khách hàng độc thân gần
gấp đôi so với khách hàng đã kết hôn.
Mối liên hệ tiềm năng: Biểu đồ cho thấy tình trạng hôn nhân có thể liên quan đến việc sở hữu nhà – người đã kết hôn có xu hướng sở hữu nhà nhiều hơn.
Kết luận: Biểu đồ gợi ý rằng tình trạng hôn nhân có thể ảnh hưởng đến quyền sở hữu nhà. Tuy nhiên, để xác định mối liên hệ này có ý nghĩa thống kê hay không, cần thực hiện thêm kiểm định Chi-bình phương.
Giả thuyết kiểm định::
H0: Hai biến MaritalStatus và Homeowner độc lập
H1: Hai biến MaritalStatus và Homeowner có mối liên hệ
Thực hiện kiểm định Chi- bình phương
chisq_result1 <- chisq.test(marital_homeowner)
chisq_result1
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: marital_homeowner
## X-squared = 1241.2, df = 1, p-value < 2.2e-16
Kết quả kiểm định:
Giá trị thống kê Chi-bình phương: X-squared = 1241.2
Bậc tự do: df = 1
Giá trị p: p-value < 2.2e-16
Kết luận:
Vì giá trị p rất nhỏ (p < 0.05), ta bác bỏ giả thuyết không H0. Điều này cho thấy có mối liên hệ có ý nghĩa thống kê giữa tình trạng hôn nhân và tình trạng sở hữu nhà.
Thảo luận thêm
Kết quả kiểm định củng cố cho nhận định trước đó từ biểu đồ: khách hàng đã kết hôn có xu hướng sở hữu nhà nhiều hơn so với khách hàng độc thân. Mối quan hệ này có thể phản ánh các yếu tố kinh tế – xã hội như:
Những người đã kết hôn thường có nhu cầu ổn định nơi ở và khả năng tài chính cao hơn (do thu nhập hộ gia đình gộp lại).
Người độc thân có thể ưu tiên tính linh hoạt, hoặc đang trong giai đoạn chưa ổn định sự nghiệp hay thu nhập.
library(epitools)
marital_homeowner <- table(dataDT$MaritalStatus, dataDT$Homeowner)
addmargins(marital_homeowner)
##
## N Y Sum
## M 1719 5147 6866
## S 3896 3297 7193
## Sum 5615 8444 14059
riskratio(marital_homeowner)
## $data
##
## N Y Total
## M 1719 5147 6866
## S 3896 3297 7193
## Total 5615 8444 14059
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## M 1.0000000 NA NA
## S 0.6114466 0.5942071 0.6291862
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## M NA NA NA
## S 0 1.822183e-277 3.663022e-272
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
epitab(marital_homeowner, method = 'riskratio', rev = 'c')
## $tab
##
## Y p0 N p1 riskratio lower upper p.value
## M 5147 0.7496359 1719 0.2503641 1.0000 NA NA NA
## S 3297 0.4583623 3896 0.5416377 2.1634 2.065887 2.265515 1.822183e-277
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
odd_M <- marital_homeowner["M", "Y"] / marital_homeowner["M", "N"]
odd_S <- marital_homeowner["S", "Y"] / marital_homeowner["S", "N"]
cat("Odd nhóm M:", odd_M, "\n")
## Odd nhóm M: 2.994183
cat("Odd nhóm S:", odd_S, "\n")
## Odd nhóm S: 0.8462526
odds_ratio <- odd_S / odd_M
cat("Odds ratio (S so với M):", odds_ratio, "\n")
## Odds ratio (S so với M): 0.2826322
# Hoặc dùng hàm epitools để tính Odds Ratio cùng khoảng tin cậy
library(epitools)
result <- oddsratio(marital_homeowner, method="wald")
print(result)
## $data
##
## N Y Total
## M 1719 5147 6866
## S 3896 3297 7193
## Total 5615 8444 14059
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## M 1.0000000 NA NA
## S 0.2826322 0.2630929 0.3036227
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## M NA NA NA
## S 0 1.822183e-277 3.663022e-272
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Bảng tần số chéo
gender_family <- table(dataDT$Gender, dataDT$ProductFamily)
gender_family
##
## Drink Food Non-Consumable
## F 669 5149 1352
## M 581 5004 1304
Nhận xét
Cả nam và nữ đều có xu hướng tiêu dùng tương tự nhau, trong đó nhóm sản phẩm Food là được lựa chọn nhiều nhất.
Khách hàng nữ (F) mua 5149 sản phẩm thuộc nhóm Food, cao nhất trong ba nhóm, tiếp theo là Non-Consumable (1352) và thấp nhất là Drink (669).
Khách hàng nam (M) cũng có xu hướng tương tự với 5004 lượt mua Food, tiếp đến là Non-Consumable (1304) và Drink (581).
Nhìn chung, nhóm Food chiếm tỷ lệ lớn nhất ở cả hai giới, cho thấy đây là nhóm sản phẩm phổ biến nhất. Trong khi đó, nhóm Drink có số lượt mua thấp nhất, phản ánh mức độ quan tâm hoặc nhu cầu tiêu dùng thấp hơn đối với loại sản phẩm này. Sự khác biệt nhỏ giữa hai giới cho thấy hành vi lựa chọn sản phẩm theo giới tính có thể tồn tại một số khác biệt nhẹ, cần được kiểm chứng bằng phân tích thống kê tiếp theo.
Bảng tần suất chéo
prop.table(gender_family)
##
## Drink Food Non-Consumable
## F 0.04758518 0.36624226 0.09616616
## M 0.04132584 0.35592859 0.09275197
Nhận xét
Kết quả trong bảng tần suất chéo cho thấy:
Trong tổng số khách hàng mua hàng, khoảng 4.76% là khách hàng nữ (F) mua sản phẩm nhóm Drink, và khoảng 4.13% là khách hàng nam (M) mua nhóm này.
Nhóm sản phẩm Food là nhóm được mua nhiều nhất, chiếm khoảng 36.62% tổng số giao dịch từ nữ và 35.59% từ nam.
Nhóm Non-Consumable chiếm khoảng 9.62% tổng số giao dịch từ nữ và 9.28% từ nam.
Như vậy, nhóm sản phẩm Food chiếm tỷ lệ lớn nhất trong tổng thể số lượt mua của cả hai giới, phản ánh sự phổ biến và nhu cầu cao đối với nhóm sản phẩm này. Mức độ mua hàng của nam và nữ ở các nhóm sản phẩm có sự tương đồng khá lớn, cho thấy hành vi tiêu dùng giữa hai giới trong các nhóm sản phẩm này tương đối đồng đều. Tuy nhiên, nhóm Drink có tỷ lệ thấp nhất trong tổng thể lượt mua, cho thấy nhóm sản phẩm này ít được lựa chọn hơn.
Vẽ đồ thị
# Chuyển đổi dữ liệu sang dạng data frame
df_gender_family <- as.data.frame(gender_family)
colnames(df_gender_family) <- c("Gender", "ProductFamily", "Count")
# Vẽ biểu đồ cột nhóm
ggplot(df_gender_family, aes(x = ProductFamily, y = Count, fill = Gender)) +
geom_bar(stat = "identity", position = "dodge") +
labs(title = "Số lượt mua theo ProductFamily và Gender",
x = "Product Family", y = "Số lượt mua") +
theme_minimal()
Nhận xét
Xu hướng tiêu dùng tương đồng: Biểu đồ cho thấy cả nam và nữ đều có xu hướng tiêu dùng tương tự nhau. Ở mỗi nhóm sản phẩm, chiều cao cột của hai giới gần bằng nhau, cho thấy mức độ mua sắm giữa hai giới không chênh lệch đáng kể.
Nhóm sản phẩm Food được ưa chuộng nhất: Đây là nhóm sản phẩm có số lượt mua cao vượt trội so với hai nhóm còn lại ở cả nam và nữ. Điều này phản ánh nhu cầu tiêu dùng thực phẩm là chủ yếu trong tổng thể các giao dịch.
Drink là nhóm ít được mua nhất: Số lượt mua nhóm Drink thấp nhất ở cả hai giới, điều này có thể cho thấy mức độ ưu tiên thấp hơn của khách hàng đối với đồ uống trong danh sách tiêu dùng.
Sự khác biệt giới tính nhỏ: Trong từng nhóm sản phẩm, nữ có số lượt mua nhỉnh hơn nam một chút, nhưng không đáng kể. Điều này gợi ý rằng giới tính không phải là yếu tố chi phối mạnh hành vi tiêu dùng theo nhóm sản phẩm, mặc dù có thể có những xu hướng nhỏ.
Kết luận: Biểu đồ trực quan hỗ trợ kết luận rằng hai biến định tính “Giới tính” và “Nhóm sản phẩm” có mối quan hệ tương đối ổn định và tương đồng, không có sự khác biệt lớn giữa nam và nữ trong hành vi chọn loại sản phẩm. Tuy nhiên, để khẳng định mối liên kết có ý nghĩa thống kê hay không, cần thực hiện thêm các kiểm định như kiểm định Chi-bình phương (Chi-square test).
Giả thuyết kiểm định:
H0: Hai biến Gender và ProductFamily độc lập
H1: Hai biến Gender và ProductFamily có mối liên hệ
Thực hiện kiểm định Chi- bình phương
chisq_result2 <- chisq.test(gender_family)
chisq_result2
##
## Pearson's Chi-squared test
##
## data: gender_family
## X-squared = 3.5185, df = 2, p-value = 0.1722
Kết quả kiểm định:
Giá trị thống kê Chi-bình phương: X-squared = 3.5185
Bậc tự do: df = 2
Giá trị p: p-value = 0.1722 Kết luận
Với mức ý nghĩa α = 0.05, ta không đủ bằng chứng để bác bỏ giả thuyết không vì giá trị p = 0.1722 > 0.05.
Điều này có nghĩa là chưa có đủ bằng chứng thống kê để khẳng định rằng giới tính có ảnh hưởng đến loại sản phẩm được chọn. Nói cách khác, hai biến Gender và ProductFamily có thể được xem là độc lập trong dữ liệu này.
Thảo luận thêm
Mặc dù kiểm định thống kê không phát hiện mối quan hệ có ý nghĩa giữa hai biến, nhưng qua bảng tần suất chéo và biểu đồ minh họa, ta vẫn có thể quan sát được một số xu hướng nhỏ như:
Cả nam và nữ đều chọn nhóm sản phẩm Food nhiều nhất, tiếp theo là Non-Consumable, và ít nhất là Drink.
Số lượt mua giữa nam và nữ ở từng nhóm sản phẩm có sự chênh lệch nhẹ, tuy nhiên, mức độ khác biệt này chưa đủ lớn để trở nên có ý nghĩa thống kê.
Do đó, mặc dù kết quả kiểm định cho thấy tính độc lập giữa hai biến, nhưng việc khám phá xu hướng hành vi tiêu dùng theo giới tính vẫn có thể hữu ích khi phân tích sâu hơn hoặc mở rộng mẫu dữ liệu trong các nghiên cứu tiếp theo.
Bảng tần số chéo
home_income <- table(dataDT$Homeowner, dataDT$AnnualIncome)
home_income
##
## $10K - $30K $110K - $130K $130K - $150K $150K + $30K - $50K $50K - $70K
## N 1359 119 136 48 2087 1063
## Y 1731 524 624 225 2514 1307
##
## $70K - $90K $90K - $110K
## N 686 117
## Y 1023 496
Nhận xét:
Kết quả thể hiện số lượng người sở hữu nhà (Homeowner = Y) và không sở hữu nhà (Homeowner = N) theo các nhóm thu nhập hằng năm. Từ đó, ta có thể rút ra một số nhận xét quan trọng:
Nhóm thu nhập $10K – $30K là nhóm có số lượng cá nhân khá lớn. Đáng chú ý, số người sở hữu nhà (1.731) vượt qua số người không sở hữu (1.359), điều này cho thấy rằng ở nhóm thu nhập thấp nhất, việc sở hữu nhà có thể đến từ các yếu tố phi thu nhập như hỗ trợ từ gia đình hoặc chi phí nhà ở thấp.
Nhóm $30K – $50K có sự chênh lệch đáng kể với 2.514 người sở hữu nhà so với 2.087 người không sở hữu, cho thấy khi thu nhập tăng lên mức trung bình thấp, khả năng sở hữu nhà tăng đáng kể, có thể nhờ tích lũy tài chính hoặc khả năng tiếp cận tín dụng.
Ở nhóm thu nhập $50K – $70K, xu hướng tiếp tục được duy trì với 1.307 người sở hữu và 1.063 người không sở hữu, cho thấy thu nhập từ mức trung bình trở lên đã bắt đầu giúp đa số cá nhân sở hữu nhà.
Nhóm thu nhập $70K – $90K cho thấy tỷ lệ sở hữu nhà tiếp tục tăng mạnh, với 1.023 người sở hữu so với 686 người không sở hữu, tương đương khoảng 60% cá nhân trong nhóm này đã sở hữu nhà.
Ở mức $90K – $110K, xu hướng sở hữu nhà trở nên rõ rệt, khi có tới 496 người sở hữu nhà và chỉ 117 người không sở hữu, tương đương tỷ lệ sở hữu nhà khoảng 80%.
Trong nhóm $110K – $130K, có tới 524 người sở hữu nhà so với 119 người không sở hữu, cho thấy thu nhập cao hơn tiếp tục gia tăng xác suất sở hữu bất động sản.
Nhóm $130K – $150K thể hiện tỷ lệ sở hữu nhà vượt trội với 624 người có nhà và chỉ 136 người không có, phản ánh rằng tại mức thu nhập này, việc sở hữu nhà đã trở thành chuẩn mực phổ biến.
Cuối cùng, nhóm thu nhập trên $150K có 225 người sở hữu nhà và chỉ 48 người không sở hữu, tương đương tỷ lệ sở hữu trên 82%, cho thấy rằng ở mức thu nhập rất cao, việc sở hữu nhà gần như là mặc định.
Kết luận: Từ những phân tích trên, có thể thấy rằng mức thu nhập hằng năm có mối quan hệ thuận chiều với tỷ lệ sở hữu nhà. Khi thu nhập tăng, khả năng sở hữu bất động sản tăng lên rõ rệt. Tuy nhiên, việc một số nhóm thu nhập thấp vẫn có tỷ lệ sở hữu nhà cao cũng gợi ý rằng các yếu tố ngoài thu nhập như thừa kế, giá nhà ở thấp hoặc các chương trình hỗ trợ nhà ở có thể đóng vai trò quan trọng.
Bảng tần suất chéo
prop.table(home_income)
##
## $10K - $30K $110K - $130K $130K - $150K $150K + $30K - $50K $50K - $70K
## N 0.096664059 0.008464329 0.009673519 0.003414183 0.148445835 0.075609930
## Y 0.123123978 0.037271499 0.044384380 0.016003983 0.178817839 0.092965360
##
## $70K - $90K $90K - $110K
## N 0.048794367 0.008322071
## Y 0.072764777 0.035279892
Nhận xét
Bảng tỷ lệ phần trăm tổng thể cho thấy xu hướng rất rõ ràng về mối quan hệ giữa thu nhập và quyền sở hữu nhà ở. Cụ thể:
Ở nhóm thu nhập $10K – $30K, tỷ lệ người sở hữu nhà chiếm 12.31%, cao hơn so với 9.66% người không sở hữu. Điều này cho thấy rằng ngay cả ở mức thu nhập thấp nhất, vẫn có một bộ phận lớn người dân có khả năng sở hữu nhà, có thể nhờ các yếu tố hỗ trợ như tài sản thừa kế hoặc chi phí nhà ở thấp.
Khi thu nhập tăng lên nhóm $30K – $50K, tỷ lệ người sở hữu nhà tăng lên 17.88%, vượt khá xa so với 14.84% người không sở hữu. Đây có thể là giai đoạn nhiều người bắt đầu có khả năng tích lũy hoặc tiếp cận các khoản vay mua nhà.
Nhóm thu nhập $50K – $70K tiếp tục phản ánh xu hướng này, với 9.30% người sở hữu nhà so với 7.50% người không sở hữu.
Ở các nhóm thu nhập trung bình cao như $70K – $90K và $90K – $110K, chênh lệch trở nên rõ rệt hơn. Tỷ lệ người sở hữu nhà lần lượt là 7.28% và 3.53%, so với tỷ lệ không sở hữu chỉ là 4.87% và 0.83%. Đây là minh chứng rõ ràng cho việc thu nhập cao giúp nâng cao khả năng sở hữu nhà.
Từ mức thu nhập $110K – $130K trở đi, khoảng cách giữa hai nhóm tăng mạnh. Người sở hữu nhà chiếm 3.73%, cao gấp hơn 4 lần so với 0.84% người không sở hữu.
Với nhóm $130K – $150K, tỷ lệ người sở hữu nhà lên tới 4.44%, trong khi không sở hữu nhà chỉ chiếm 0.97%. Điều này cho thấy rằng ở mức thu nhập này, việc sở hữu nhà gần như trở thành chuẩn mực phổ biến.
Cuối cùng, nhóm thu nhập trên $150K có tỷ lệ người sở hữu nhà là 1.60%, cao gấp gần 5 lần so với 0.34% người không sở hữu. Tức là, tại mức thu nhập rất cao, quyền sở hữu nhà gần như là mặc định*.
Nhìn chung, dữ liệu phản ánh một mối quan hệ thuận chiều rất rõ ràng giữa thu nhập hằng năm và tỷ lệ sở hữu nhà. Khi thu nhập tăng lên, khả năng sở hữu bất động sản cũng tăng theo một cách đáng kể. Tuy nhiên, cũng cần lưu ý rằng ở nhóm thu nhập thấp, tỷ lệ sở hữu nhà vẫn không hề nhỏ. Điều này cho thấy rằng thu nhập không phải là yếu tố duy nhất quyết định, và các yếu tố khác như thừa kế, giá bất động sản vùng, hay hỗ trợ chính sách nhà ở cũng có thể đóng vai trò quan trọng.
Vẽ đồ thị
# Chuyển bảng tần suất chéo sang data frame
df_home_income <- as.data.frame(home_income)
colnames(df_home_income) <- c("Homeowner", "AnnualIncome", "Count")
# Vẽ biểu đồ cột nhóm
ggplot(df_home_income, aes(x = AnnualIncome, y = Count, fill = Homeowner)) +
geom_bar(stat = "identity", position = "dodge") +
labs(title = "Số lượng người sở hữu và không sở hữu nhà theo nhóm thu nhập",
x = "Nhóm thu nhập hằng năm",
y = "Số lượng cá nhân") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Nhận xét:
Tỷ lệ sở hữu nhà tăng theo thu nhập: Biểu đồ cho
thấy xu hướng rất rõ ràng: khi nhóm thu nhập tăng, số lượng người sở hữu
nhà (Y) cũng tăng đáng kể, đặc biệt rõ ràng ở nhóm
$30K – $50K và $50K – $70K.
Nhóm thu nhập $30K – $50K chiếm ưu thế rõ rệt: Đây là nhóm có số lượng người sở hữu nhà cao nhất trong toàn bộ biểu đồ, vượt trội hơn hẳn so với nhóm không sở hữu trong cùng phân khúc. Điều này cho thấy đây có thể là mức thu nhập trung bình phổ biến, đủ để người dân bắt đầu tiếp cận thị trường bất động sản.
Người thu nhập thấp vẫn có khả năng sở hữu nhà:
Ở nhóm thu nhập $10K – $30K, số lượng người sở hữu nhà vẫn
cao hơn người không sở hữu. Điều này có thể phản ánh sự hỗ trợ từ các
yếu tố khác như tài sản thừa kế, nhà giá rẻ vùng nông thôn hoặc hỗ trợ
xã hội.
Tỷ lệ không sở hữu nhà giảm ở các nhóm thu nhập
cao: Từ nhóm $70K – $90K trở đi, số người không sở
hữu nhà (N) giảm mạnh, trong khi người sở hữu nhà vẫn duy trì số lượng
ổn định. Điều này phản ánh rằng thu nhập cao gắn liền với khả năng sở
hữu nhà gần như mặc định.
Chênh lệch rõ rệt giữa hai nhóm sở hữu: Ở các
nhóm thu nhập cao hơn ($90K – $110K,
$110K – $130K và trên $150K), số người sở hữu
nhà tuy có xu hướng giảm nhẹ về số tuyệt đối, nhưng vẫn vượt xa số người
không sở hữu, cho thấy mức độ phổ biến của việc sở hữu nhà ở nhóm thu
nhập cao.
Kết luận:Biểu đồ cho thấy mối quan hệ thuận chiều mạnh mẽ giữa thu nhập hằng năm và khả năng sở hữu nhà. Càng có thu nhập cao, người dân càng có xu hướng sở hữu nhà nhiều hơn. Tuy nhiên, sự hiện diện đáng kể của chủ sở hữu nhà trong nhóm thu nhập thấp cũng cho thấy thu nhập không phải yếu tố duy nhất, và cần xét thêm đến các yếu tố khác như chính sách nhà ở, môi trường sống, hoặc hỗ trợ tài chính từ gia đình. Để khẳng định rõ ràng hơn về mối liên hệ này, có thể cần thực hiện thêm kiểm định thống kê (như Chi-squared test).
Giả thuyết kiểm định
Thực hiện kiểm định Chi-bình phương
chisq_result3<- chisq.test(home_income)
chisq_result3
##
## Pearson's Chi-squared test
##
## data: home_income
## X-squared = 546.37, df = 7, p-value < 2.2e-16
Kết quả kiểm định:
Giá trị thống kê Chi-bình phương: X-squared = 546.37
Bậc tự do: df = 7
Giá trị p: p-value < 2.2e-16
Kết luận:
Với giá trị p rất nhỏ (p < 0.05), ta bác bỏ giả thuyết không H0. Điều này cho thấy có mối liên hệ có ý nghĩa thống kê giữa thu nhập hằng năm và việc sở hữu nhà.
Thảo luận thêm:
Kết quả kiểm định này củng cố các nhận xét mô tả và trực quan hóa trước đó:
Thu nhập hằng năm là yếu tố quan trọng ảnh hưởng đến khả năng sở hữu nhà.
Mức thu nhập càng cao thì tỷ lệ sở hữu nhà càng lớn, phản ánh xu hướng tích lũy tài sản hoặc khả năng tiếp cận các nguồn tài chính mua nhà thuận lợi hơn.
Tỷ lệ sở hữu nhà trong các nhóm thu nhập thấp vẫn không nhỏ, cho thấy ngoài thu nhập còn có các yếu tố hỗ trợ như thừa kế, chính sách nhà ở, hoặc điều kiện thị trường bất động sản vùng miền.
Để hiểu rõ hơn về mối quan hệ này, có thể tiếp tục nghiên cứu bằng các mô hình hồi quy đa biến hoặc phân tích sâu hơn.
Tóm tắt những phát hiện chính
Qua các phân tích định tính, ta rút ra được những hiểu biết quan trọng về đặc điểm khách hàng và hành vi mua sắm như sau:
Mối quan hệ giữa tình trạng hôn nhân và việc sở hữu nhà
(MaritalStatus – Homeowner):
Kết quả kiểm định Chi-bình phương cho thấy có sự khác biệt đáng kể giữa
các nhóm tình trạng hôn nhân về tỷ lệ sở hữu nhà. Điều này cho thấy nhóm
khách hàng đã kết hôn có xu hướng sở hữu nhà cao hơn so với những người
độc thân hoặc chưa kết hôn, phản ánh đặc điểm tài chính và ổn định hơn
của nhóm này.
Mối quan hệ giữa việc sở hữu nhà và thu nhập hàng năm
(Homeowner – AnnualIncome):
Khách hàng sở hữu nhà thường có mức thu nhập cao hơn so với khách hàng
thuê nhà hoặc chưa sở hữu. Mối quan hệ này phản ánh mức độ khả năng tài
chính và sự ổn định của khách hàng, có thể ảnh hưởng đến khả năng chi
tiêu và lựa chọn sản phẩm cao cấp hơn.
Những phát hiện này cung cấp một cái nhìn toàn diện về các nhóm khách hàng chính dựa trên các đặc điểm định tính, giúp doanh nghiệp nắm bắt được phân khúc khách hàng, nhu cầu và xu hướng tiêu dùng để từ đó tối ưu hóa chiến lược kinh doanh.
Hạn chế của phân tích
Chất lượng dữ liệu: Dữ liệu có thể chưa được làm sạch hoàn toàn hoặc thiếu thông tin chi tiết về các nhóm con, dẫn đến việc kết quả phân tích có thể bị ảnh hưởng bởi các giá trị thiếu hoặc không đầy đủ.
Giới hạn phân tích biến định tính: Việc chỉ tập trung phân tích các biến định tính mà không kết hợp các biến định lượng (như tuổi, số lần mua hàng, chi tiêu trung bình…) có thể làm giảm độ sâu và tính toàn diện của phân tích hành vi khách hàng.
Kích thước mẫu không đồng đều: Một số hạng mục con trong các biến định tính có thể có số lượng mẫu rất nhỏ, ảnh hưởng đến độ tin cậy của kết quả kiểm định và khả năng tổng quát hóa.
Không xem xét yếu tố thời gian: Phân tích tĩnh, không theo dõi biến đổi hành vi theo thời gian có thể bỏ lỡ các xu hướng thay đổi trong hành vi khách hàng.
Đề xuất
Chiến lược marketing theo phân khúc: Dựa trên sự khác biệt về sở thích sản phẩm theo giới tính và tình trạng hôn nhân, doanh nghiệp nên phát triển các chiến dịch marketing được cá nhân hóa, nhắm đúng nhóm khách hàng mục tiêu.
Phân loại sản phẩm phù hợp: Cần tập trung phát triển các dòng sản phẩm phù hợp với từng nhóm khách hàng đặc trưng, ví dụ sản phẩm cao cấp cho nhóm khách hàng thu nhập cao và sở hữu nhà, sản phẩm giá cả phải chăng hơn cho nhóm khách hàng thu nhập thấp.
Nhắm mục tiêu khách hàng ổn định tài chính: Khách hàng sở hữu nhà và có thu nhập cao là nhóm khách hàng tiềm năng để phát triển các chương trình chăm sóc và khuyến mãi đặc biệt nhằm tăng tỷ lệ giữ chân và giá trị vòng đời khách hàng.
Câu hỏi mở / Hướng nghiên cứu tiếp theo
Phân tích kết hợp biến định tính và định lượng: Liệu việc tích hợp các biến định lượng như tuổi, số lần mua hàng, chi tiêu trung bình sẽ giúp hiểu rõ hơn về hành vi và giá trị khách hàng?
Phân tích hành vi theo thời gian: Có những xu hướng thay đổi nào trong sở thích sản phẩm hoặc đặc điểm khách hàng theo thời gian (ví dụ theo mùa hoặc theo năm)?
Tác động của các yếu tố xã hội khác: Liệu các yếu tố như vùng địa lý, trình độ học vấn, nghề nghiệp có ảnh hưởng như thế nào đến hành vi mua sắm của khách hàng?
Ứng dụng mô hình dự đoán: Có thể xây dựng các mô hình dự đoán hành vi khách hàng dựa trên các đặc điểm định tính và định lượng đã phân tích để tối ưu hóa chiến lược marketing và bán hàng?