Phần 1: Tìm hiểu và Chuẩn bị Dữ liệu

# Đọc dữ liệu từ file tmp.csv 
df <- read.csv("C:/Users/Admin/Downloads/Supermarket Transactions.csv", stringsAsFactors = FALSE)
# Hiển thị cấu trúc của dữ liệu
str(df)
## 'data.frame':    14059 obs. of  16 variables:
##  $ X                : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ PurchaseDate     : chr  "12/18/2007" "12/20/2007" "12/21/2007" "12/21/2007" ...
##  $ 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(df)
##   X PurchaseDate CustomerID Gender MaritalStatus Homeowner Children
## 1 1   12/18/2007       7223      F             S         Y        2
## 2 2   12/20/2007       7841      M             M         Y        5
## 3 3   12/21/2007       8374      F             M         N        2
## 4 4   12/21/2007       9619      M             M         Y        3
## 5 5   12/22/2007       1900      F             S         Y        3
## 6 6   12/22/2007       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(df)
##           X PurchaseDate CustomerID Gender MaritalStatus Homeowner Children
## 14054 14054   12/29/2009       2032      F             M         N        3
## 14055 14055   12/29/2009       9102      F             M         Y        2
## 14056 14056   12/29/2009       4822      F             M         Y        3
## 14057 14057   12/31/2009        250      M             S         Y        1
## 14058 14058   12/31/2009       6153      F             S         N        4
## 14059 14059   12/31/2009       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
# Kiểm tra giá trị thiếu ở các cột
colSums(is.na(df))
##                 X      PurchaseDate        CustomerID            Gender 
##                 0                 0                 0                 0 
##     MaritalStatus         Homeowner          Children      AnnualIncome 
##                 0                 0                 0                 0 
##              City   StateorProvince           Country     ProductFamily 
##                 0                 0                 0                 0 
## ProductDepartment   ProductCategory         UnitsSold           Revenue 
##                 0                 0                 0                 0
# Chuyển các biến định tính sang factor nếu chưa là factor
df$Gender <- as.factor(df$Gender)
df$MaritalStatus <- as.factor(df$MaritalStatus)
df$Homeowner <- as.factor(df$Homeowner)
df$AnnualIncome <- as.factor(df$AnnualIncome)

# Các biến sản phẩm và địa lý
df$ProductFamily <- as.factor(df$ProductFamily)
df$ProductDepartment <- as.factor(df$ProductDepartment)
df$ProductCategory <- as.factor(df$ProductCategory)
df$City <- as.factor(df$City)

df$StateorProvince <- as.factor(df$StateorProvince)
df$Country <- as.factor(df$Country)

Phần 2: Phân tích Mô tả Một biến Định tính

2.1. Phân tích dữ liệliệu

# Tạo bảng tần suất và tỷ lệ phần trăm cho các biến định tính

categorical_vars <- c("Gender", "MaritalStatus", "Homeowner", "AnnualIncome",
                      "City", "StateorProvince", "Country",
                      "ProductFamily", "ProductDepartment", "ProductCategory")

# Lặp qua từng biến định tính để hiển thị bảng tần suất và tỷ lệ phần trăm
for (var in categorical_vars) {
  cat("\n### Biến:", var, "\n")
  freq <- table(df[[var]])
  percent <- prop.table(freq) * 100
  print(freq)
  print(round(percent, 2))
}
## 
## ### Biến: Gender 
## 
##    F    M 
## 7170 6889 
## 
##  F  M 
## 51 49 
## 
## ### Biến: MaritalStatus 
## 
##    M    S 
## 6866 7193 
## 
##     M     S 
## 48.84 51.16 
## 
## ### Biến: Homeowner 
## 
##    N    Y 
## 5615 8444 
## 
##     N     Y 
## 39.94 60.06 
## 
## ### Biến: AnnualIncome 
## 
##   $10K - $30K $110K - $130K $130K - $150K       $150K +   $30K - $50K 
##          3090           643           760           273          4601 
##   $50K - $70K   $70K - $90K  $90K - $110K 
##          2370          1709           613 
## 
##   $10K - $30K $110K - $130K $130K - $150K       $150K +   $30K - $50K 
##         21.98          4.57          5.41          1.94         32.73 
##   $50K - $70K   $70K - $90K  $90K - $110K 
##         16.86         12.16          4.36 
## 
## ### Biến: 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 
## 
##      Acapulco    Bellingham Beverly Hills     Bremerton       Camacho 
##          2.72          1.02          5.77          5.93          3.22 
##   Guadalajara       Hidalgo   Los Angeles        Merida   Mexico City 
##          0.53          6.01          6.59          4.65          1.38 
##       Orizaba      Portland         Salem    San Andres     San Diego 
##          3.30          6.23          9.86          4.42          6.16 
## San Francisco       Seattle       Spokane        Tacoma     Vancouver 
##          0.92          6.56          6.22          8.94          4.50 
##      Victoria   Walla Walla        Yakima 
##          1.25          1.14          2.67 
## 
## ### Biến: StateorProvince 
## 
##        BC        CA        DF  Guerrero   Jalisco        OR  Veracruz        WA 
##       809      2733       815       383        75      2262       464      4567 
##   Yucatan Zacatecas 
##       654      1297 
## 
##        BC        CA        DF  Guerrero   Jalisco        OR  Veracruz        WA 
##      5.75     19.44      5.80      2.72      0.53     16.09      3.30     32.48 
##   Yucatan Zacatecas 
##      4.65      9.23 
## 
## ### Biến: Country 
## 
## Canada Mexico    USA 
##    809   3688   9562 
## 
## Canada Mexico    USA 
##   5.75  26.23  68.01 
## 
## ### Biến: ProductFamily 
## 
##          Drink           Food Non-Consumable 
##           1250          10153           2656 
## 
##          Drink           Food Non-Consumable 
##           8.89          72.22          18.89 
## 
## ### Biến: 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 
## 
## Alcoholic Beverages         Baked Goods        Baking Goods           Beverages 
##                2.53                3.02                7.63                4.84 
##     Breakfast Foods        Canned Foods     Canned Products            Carousel 
##                1.34                6.95                0.78                0.42 
##            Checkout               Dairy                Deli                Eggs 
##                0.58                6.42                4.97                1.41 
##        Frozen Foods  Health and Hygiene           Household                Meat 
##                9.83                6.35               10.10                0.63 
##         Periodicals             Produce             Seafood         Snack Foods 
##                1.44               14.18                0.73               11.38 
##              Snacks       Starchy Foods 
##                2.50                1.97 
## 
## ### Biến: 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 
## 
##         Baking Goods    Bathroom Products        Beer and Wine 
##                 3.44                 2.60                 2.53 
##                Bread      Breakfast Foods              Candles 
##                 3.02                 2.97                 0.32 
##                Candy     Canned Anchovies         Canned Clams 
##                 2.50                 0.31                 0.38 
##       Canned Oysters      Canned Sardines        Canned Shrimp 
##                 0.25                 0.28                 0.27 
##          Canned Soup          Canned Tuna Carbonated Beverages 
##                 2.87                 0.62                 1.10 
##    Cleaning Supplies        Cold Remedies                Dairy 
##                 1.34                 0.66                 6.42 
##        Decongestants               Drinks                 Eggs 
##                 0.60                 0.96                 1.41 
##           Electrical      Frozen Desserts       Frozen Entrees 
##                 2.53                 2.30                 0.84 
##                Fruit             Hardware        Hot Beverages 
##                 5.44                 0.92                 1.61 
##              Hygiene     Jams and Jellies     Kitchen Products 
##                 1.40                 4.18                 1.54 
##            Magazines                 Meat        Miscellaneous 
##                 1.44                 5.41                 0.30 
##  Packaged Vegetables       Pain Relievers       Paper Products 
##                 0.34                 1.37                 2.45 
##                Pizza     Plastic Products Pure Juice Beverages 
##                 1.38                 1.00                 1.17 
##              Seafood          Side Dishes          Snack Foods 
##                 0.73                 1.09                11.38 
##            Specialty        Starchy Foods           Vegetables 
##                 2.06                 1.97                12.29
# Vẽ biểu đồ cột cho các biến định tính
library(ggplot2)

for (var in categorical_vars) {
  cat("\n### Biểu đồ cột cho biến:", var, "\n")
  print(
    ggplot(df, aes_string(x = var)) +
      geom_bar(fill = "steelblue") +
      labs(title = paste("Biểu đồ tần suất -", var), x = var, y = "Tần suất") +
      theme_minimal() +
      theme(axis.text.x = element_text(angle = 45, hjust = 1))
  )
}
## 
## ### Biểu đồ cột cho biến: Gender
## Warning: `aes_string()` was deprecated in ggplot2 3.0.0.
## ℹ Please use tidy evaluation idioms with `aes()`.
## ℹ See also `vignette("ggplot2-in-packages")` for more information.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

## 
## ### Biểu đồ cột cho biến: MaritalStatus

## 
## ### Biểu đồ cột cho biến: Homeowner

## 
## ### Biểu đồ cột cho biến: AnnualIncome

## 
## ### Biểu đồ cột cho biến: City

## 
## ### Biểu đồ cột cho biến: StateorProvince

## 
## ### Biểu đồ cột cho biến: Country

## 
## ### Biểu đồ cột cho biến: ProductFamily

## 
## ### Biểu đồ cột cho biến: ProductDepartment

## 
## ### Biểu đồ cột cho biến: ProductCategory

# Biểu đồ tròn cho một số biến phù hợp (ví dụ: Gender, Homeowner)
selected_vars <- c("Gender", "Homeowner")

for (var in selected_vars) {
  cat("\n### Biểu đồ tròn cho biến:", var, "\n")
  pie_data <- as.data.frame(table(df[[var]]))
  names(pie_data) <- c("Category", "Count")
  pie_data$Percent <- round(pie_data$Count / sum(pie_data$Count) * 100, 2)
  pie_data$Label <- paste0(pie_data$Category, " (", pie_data$Percent, "%)")

  print(
    ggplot(pie_data, aes(x = "", y = Count, fill = Label)) +
      geom_bar(stat = "identity", width = 1) +
      coord_polar("y") +
      labs(title = paste("Biểu đồ tròn -", var), fill = var) +
      theme_void()
  )
}
## 
## ### Biểu đồ tròn cho biến: Gender

## 
## ### Biểu đồ tròn cho biến: Homeowner

Tổng hợp Nhận xét Các Biến Định Tính:

  1. Gender (Giới tính) Biểu đồ tròn cho thấy tỷ lệ giới tính nữ (F) chiếm khoảng 51% và nam (M) chiếm 49%, gần như ngang nhau.
    Việc phân bố giới tính đồng đều giúp việc phân tích không bị thiên lệch.

  2. MaritalStatus (Tình trạng hôn nhân) Hầu hết khách hàng là độc thân (Single) hoặc đã kết hôn (Married).
    Nhóm độc thân có xu hướng chiếm tỷ lệ cao hơn một chút, cho thấy nhiều khách hàng có thể là người trẻ tuổi, chưa lập gia đình.

  3. Homeowner (Có sở hữu nhà hay không) Biểu đồ tròn cho thấy 60% khách hàng có sở hữu nhà (Y) và 40% không sở hữu nhà (N).
    Phần lớn khách hàng đã ổn định chỗ ở, điều này có thể ảnh hưởng đến thói quen tiêu dùng như mua sắm cho gia đình, đầu tư dài hạn.

  4. AnnualIncome (Thu nhập hàng năm) Khách hàng có thu nhập tập trung nhiều ở nhóm $50K–$60K.
    Các nhóm thu nhập từ $30K đến $70K cũng khá phổ biến, cho thấy phần lớn là người có thu nhập trung bình.

  5. City (Thành phố) Một số thành phố như San Diego, San Jose và Phoenix có số lượng khách hàng cao hơn hẳn các thành phố còn lại.
    Điều này cho thấy hoạt động mua sắm tập trung chủ yếu ở một vài đô thị lớn.

  6. StateorProvince (Bang/Tỉnh) WA (Washington), CA (California) và ON (Ontario) là những nơi có số lượng khách hàng cao nhất.
    Dữ liệu phân bố chủ yếu ở các bang của Mỹ và một phần Canada, trong khi các tỉnh ở Mexico ít hơn.

  7. Country (Quốc gia) USA chiếm phần lớn khách hàng trong tập dữ liệu, tiếp theo là Mexico và ít nhất là Canada.
    Điều này cho thấy thị trường chính của hệ thống siêu thị là tại Hoa Kỳ.

  8. ProductDepartment (Phòng ban sản phẩm) Produce (nông sản), Snack Foods (đồ ăn vặt) và Breakfast Foods (bữa sáng) là những nhóm sản phẩm được mua nhiều nhất.
    Một số nhóm như Greeting Cards hoặc Canned Products có lượng mua rất ít, có thể là do nhu cầu thấp.

  9. ProductCategory (Loại sản phẩm) Vegetables và Snack Foods là hai danh mục có số lượt mua cao nhất.
    Ngược lại, một số mặt hàng như Oysters, Canned Sardines có rất ít người mua. Siêu thị có thể xem xét tối ưu lại nhóm sản phẩm.

Phần 3: Ước lượng Khoảng và Kiểm định Giả thuyết cho Tỷ lệ

Biến 3.1: Gender (Giới tính) – Hạng mục quan tâm: “F” (Nữ)

# Số nữ và tổng số
n_female <- sum(df$Gender == "F")
n_total_gender <- length(df$Gender)

# Ước lượng và kiểm định giả thuyết (H0: p = 0.5)
gender_result <- prop.test(x = n_female, n = n_total_gender, p = 0.5, alternative = "two.sided", conf.level = 0.95)
gender_result
## 
##  1-sample proportions test with continuity correction
## 
## data:  n_female out of n_total_gender, 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

Diễn giải:
Khoảng tin cậy 95% cho tỷ lệ nữ trong tổng thể nằm trong khoảng được hiển thị bên trên.
Dựa vào p-value, nếu nhỏ hơn 0.05 thì ta bác bỏ giả thuyết tỷ lệ nữ = 50%.
Ngược lại, nếu p-value lớn hơn 0.05 thì chưa đủ bằng chứng để kết luận tỷ lệ nữ khác 50%.

Nhận xét: Tỷ lệ nữ trong dữ liệu là khoảng 50.99% và nằm trong khoảng tin cậy 95% từ 50.17% đến 51.89%. Vì p-value = 0.0182 < 0.05 nên nói tỷ lệ nữ khác 50% một cách có ý nghĩa thống kê.

Biến 3.2.: Homeowner - Hạng mục quan tâm “Y” (có nhà )

# Số người có nhà và tổng số
n_homeowner <- sum(df$Homeowner == "Y")
n_total_homeowner <- length(df$Homeowner)

# Ước lượng và kiểm định giả thuyết (H0: p = 0.5)
homeowner_result <- prop.test(x = n_homeowner, n = n_total_homeowner, p = 0.5, alternative = "two.sided", conf.level = 0.95)
homeowner_result
## 
##  1-sample proportions test with continuity correction
## 
## data:  n_homeowner out of n_total_homeowner, 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

Diễn giải:
Ta kiểm định xem tỷ lệ khách hàng có nhà có khác 50% hay không.
Khoảng tin cậy và p-value giúp ta kết luận liệu giả thuyết H0 có bị bác bỏ hay không.

Nhận xét: Tỷ lệ khách hàng sở hữu nhà là khoảng 60.06%, với khoảng tin cậy 95% từ 59.25% đến 60.87%. Vì p-value < 2.2e-16 (rất nhỏ hơn 0.05), vậy đồng nghĩa rằng tỷ lệ sở hữu nhà khác 50% một cách rất rõ ràng và có ý nghĩa thống kê.

Biến 3.3.: ProductDepartment – Hạng mục quan tâm: “Produce”

# Số sản phẩm thuộc phòng ban "Produce"
n_produce <- sum(df$ProductDepartment == "Produce")
n_total_proddept <- length(df$ProductDepartment)

# Ước lượng và kiểm định giả thuyết (H0: p >= 0.2)
prod_result <- prop.test(x = n_produce, n = n_total_proddept, p = 0.2, alternative = "greater", conf.level = 0.95)
prod_result
## 
##  1-sample proportions test with continuity correction
## 
## data:  n_produce out of n_total_proddept, null probability 0.2
## X-squared = 296.95, df = 1, p-value = 1
## alternative hypothesis: true p is greater than 0.2
## 95 percent confidence interval:
##  0.137025 1.000000
## sample estimates:
##         p 
## 0.1418309

Diễn giải:
Ta kiểm định giả thuyết: tỷ lệ sản phẩm thuộc phòng ban “Produce” có lớn hơn hoặc bằng 20% không.
Nếu p-value < 0.05 → có bằng chứng rằng “Produce” chiếm nhiều hơn 20%.
Nếu p-value ≥ 0.05 → không đủ bằng chứng để kết luận như vậy.

Nhận xét: Nhóm sản phẩm “Produce” là mặt hàng thiết yếu, thường xuyên tiêu dùng và đóng vai trò thu hút khách hàng của siêu thị. Do đó, ta đặt giả thuyết kỳ vọng rằng nhóm “Produce” nên chiếm ít nhất 20% tổng số sản phẩm – đây là một mốc hợp lý trong ngành bán lẻ thực phẩm. Kết quả kiểm định cho thấy tỷ lệ sản phẩm thuộc nhóm Produce là khoảng 14.18%, với khoảng tin cậy 95% là từ 13.70% đến 100% .Kết quả p-value = 1 > 0.05 nên không có bằng chứng thống kê để cho thấy tỷ lệ thực tế lớn hơn 20% như kỳ vọng ban đầu.

Phần 4: Phân tích mối quan hệ giữa hai biến định tính

  1. GenderProductFamily
  2. MaritalStatusHomeowner
  3. StateorProvinceProductFamily

4.1.Biến Gender vs ProductFamily

# Tạo bảng tần suất chéo và phần trăm
table1 <- table(df$Gender, df$ProductFamily)
table1
##    
##     Drink Food Non-Consumable
##   F   669 5149           1352
##   M   581 5004           1304
prop.table(table1, margin = 1)  # theo hàng
##    
##          Drink       Food Non-Consumable
##   F 0.09330544 0.71813110     0.18856346
##   M 0.08433735 0.72637538     0.18928727
# Biểu đồ cột chồng theo tỷ lệ
ggplot(df, aes(x = Gender, fill = ProductFamily)) +
  geom_bar(position = "fill") +
  labs(title = "Tỷ lệ ProductFamily theo Gender", x = "Gender", y = "Tỷ lệ") +
  theme_minimal()

# Kiểm định Chi-bình phương
chisq.test(table1)
## 
##  Pearson's Chi-squared test
## 
## data:  table1
## X-squared = 3.5185, df = 2, p-value = 0.1722

Nhận xét: Ta có thể thấy mối quan hệ giữa giới tính (Gender) và loại sản phẩm (ProductFamily) cho thấy cả nam và nữ đều có xu hướng mua nhiều nhất là nhóm sản phẩm Food, chiếm khoảng 72% trong tổng số lượt mua của mỗi giới. Hai nhóm còn lại là Drink và Non-Consumable có tỷ lệ tương đối thấp và gần như tương đương nhau giữa hai giới. Kết quả kiểm định Chi-bình phương cho p-value = 0.1722, lớn hơn mức ý nghĩa 0.05, nghĩa là không có bằng chứng thống kê cho thấy giới tính và loại sản phẩm có mối liên hệ với nhau. ## 4.2.Biến MaritalStatus và Homeowner

# Tạo bảng tần suất chéo giữa MaritalStatus và Homeowner
table2 <- table(df$MaritalStatus, df$Homeowner)
table2
##    
##        N    Y
##   M 1719 5147
##   S 3896 3297
prop.table(table2, margin = 1)  # Tính tỷ lệ theo hàng
##    
##             N         Y
##   M 0.2503641 0.7496359
##   S 0.5416377 0.4583623
# Biểu đồ cột chồng thể hiện mối quan hệ giữa MaritalStatus và Homeowner
library(ggplot2)

ggplot(df, aes(x = MaritalStatus, fill = Homeowner)) +
  geom_bar(position = "fill") +
  labs(
    title = "Tỷ lệ Homeowner theo MaritalStatus",
    x = "Tình trạng hôn nhân",
    y = "Tỷ lệ"
  ) +
  theme_minimal()

# Kiểm định Chi-bình phương cho MaritalStatus và Homeowner
chisq.test(table2)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  table2
## X-squared = 1241.2, df = 1, p-value < 2.2e-16

Nhận xét: Dựa vào kết quả phân tích ta có thể thấy mối quan hệ giữa tình trạng hôn nhân (MaritalStatus) và quyền sở hữu nhà (Homeowner) cho thấy có sự khác biệt rõ rệt giữa hai nhóm. Cụ thể, trong nhóm đã kết hôn (M), khoảng 75% khách hàng có sở hữu nhà, trong khi nhóm độc thân (S) thì phần lớn không sở hữu nhà (chiếm khoảng 54%). Kiểm định Chi-bình phương cho kết quả p-value < 2.2e-16, rất nhỏ hơn 0.05, cho thấy mối liên hệ giữa tình trạng hôn nhân và quyền sở hữu nhà là có ý nghĩa thống kê.

4.3.Biến StateorProvince và ProductFamily

# Bảng tần suất chéo giữa StateorProvince và ProductFamily
table3 <- table(df$StateorProvince, df$ProductFamily)
table3
##            
##             Drink Food Non-Consumable
##   BC           69  580            160
##   CA          258 1974            501
##   DF           65  598            152
##   Guerrero     41  272             70
##   Jalisco       5   57             13
##   OR          199 1629            434
##   Veracruz     44  322             98
##   WA          399 3287            881
##   Yucatan      48  494            112
##   Zacatecas   122  940            235
prop.table(table3, margin = 1)  # Tính tỷ lệ theo từng bang/tỉnh
##            
##                  Drink       Food Non-Consumable
##   BC        0.08529048 0.71693449     0.19777503
##   CA        0.09440176 0.72228321     0.18331504
##   DF        0.07975460 0.73374233     0.18650307
##   Guerrero  0.10704961 0.71018277     0.18276762
##   Jalisco   0.06666667 0.76000000     0.17333333
##   OR        0.08797524 0.72015915     0.19186561
##   Veracruz  0.09482759 0.69396552     0.21120690
##   WA        0.08736589 0.71972849     0.19290563
##   Yucatan   0.07339450 0.75535168     0.17125382
##   Zacatecas 0.09406322 0.72474942     0.18118736
# Biểu đồ cột chồng thể hiện tỷ lệ ProductFamily theo từng bang/tỉnh
ggplot(df, aes(x = StateorProvince, fill = ProductFamily)) +
  geom_bar(position = "fill") +
  labs(
    title = "Tỷ lệ ProductFamily theo Bang/Tỉnh",
    x = "Bang/Tỉnh",
    y = "Tỷ lệ"
  ) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 60, hjust = 1))

# Kiểm định Chi-bình phương giữa StateorProvince và ProductFamily
chisq.test(table3)
## 
##  Pearson's Chi-squared test
## 
## data:  table3
## X-squared = 12.3, df = 18, p-value = 0.8314

Nhận xét: Dựa vào kkết quả phân tích mối quan hệ giữa bang/tỉnh (StateorProvince) và loại sản phẩm (ProductFamily) cho thấy, tại hầu hết các địa phương, khách hàng đều có xu hướng lựa chọn nhóm sản phẩm Food là chủ yếu, chiếm tỷ lệ trên 70%. Trong khi đó, hai nhóm còn lại là Drink và Non-Consumable có tỷ lệ thấp hơn và phân bố khá đồng đều giữa các tỉnh thành. Mặc dù có một số khác biệt nhỏ giữa các khu vực, kết quả kiểm định Chi-bình phương với p-value = 0.8314 (lớn hơn 0.05) cho thấy k mối liên hệ thống kê có ý nghĩa giữa địa phương và loại sản phẩm được mua là không cao

Phần 5: Thảo luận và hạn chế

Qua phân tích cho thấy hầu hết khách hàng có thu nhập trung bình, mua nhiều sản phẩm thuộc nhóm Food và chủ yếu sống ở Mỹ. Tỷ lệ nữ và tỷ lệ người sở hữu nhà đều khác đáng kể so với giả thiết ban đầu, còn nhóm sản phẩm “Produce” không đạt mức kỳ vọng 20%. Trong các cặp biến được phân tích, chỉ có tình trạng hôn nhân và việc sở hữu nhà là có mối liên hệ rõ ràng. Giới tính và nơi sống không ảnh hưởng nhiều đến loại sản phẩm mà khách hàng chọn mua. Tuy nhiên dữ liệu chỉ phản ánh hành vi mua sắm trong một khoảng thời gian nhất định và tại một hệ thống siêu thị, chưa đại diện cho toàn bộ thị trườnG nên đây là một bài phân tích nhỏ của cá nhân dưới góc độ sinh viên

Phần 6: Ôn tập

6.1. Bảng tần số chéo

Bảng tần số chéo Bảng tần số chéo là công cụ thống kê mô tả sự phân phối đồng thời của hai biến phân loại. Mỗi ô trong bảng thể hiện số lượng quan sát rơi vào một tổ hợp cụ thể của hai biến.

6.2. Ý nghĩa kiểm định chi bình phương

Kiểm định Chi-bình phương về tính độc lập được sử dụng để kiểm tra xem hai biến phân loại có quan hệ thống kê với nhau hay không. Đây là phương pháp suy diễn thống kê thường dùng trong phân tích bảng tần số chéo (contingency table).

Giả thuyết kiểm định:

  • \(H_0\): Hai biến là độc lập, không có mối liên hệ.
  • \(H_1\): Hai biến là không độc lập, có mối liên hệ thống kê.

Thống kê kiểm định:

Thống kê Chi-bình phương được tính bằng công thức:

\[ \chi^2 = \sum_{i=1}^{r} \sum_{j=1}^{c} \frac{(O_{ij} - E_{ij})^2}{E_{ij}} \]

Trong đó: - \(O_{ij}\): tần số quan sát tại ô \((i,j)\). - \(E_{ij}\): tần số kỳ vọng tại ô \((i,j)\), được tính bởi:

\[ E_{ij} = \frac{(Tổng hàng i) \cdot (Tổng cột j)}{Tổng số quan sát} \] Bậc tự do:

\[ df = (r - 1)(c - 1) \]

Trong đó: - \(r\): số hàng (số mức của biến thứ nhất). - \(c\): số cột (số mức của biến thứ hai).

Diễn giả : - Nếu \(p\text{-value} < \alpha\) (thường chọn \(\alpha = 0.05\)):

Bác bỏ giả thuyết \(H_0\) → có mối liên hệ thống kê giữa hai biến.

  • Nếu \(p\text{-value} \geq \alpha\):

    Không bác bỏ \(H_0\) → không đủ bằng chứng thống kê để kết luận hai biến có liên hệ.

ý nghĩa:

Kiểm định Chi-bình phương thường được dùng trong các nghiên cứu xã hội, y tế, kinh tế để phân tích mối quan hệ giữa hai đặc điểm phân loại như giới tính, tình trạng sức khỏe, hành vi tiêu dùng

6.3. Relative risk

1. Định nghĩa

Relative Risk (RR) – hay còn gọi là Tỷ số nguy cơ – là một thước đo thống kê dùng để so sánh xác suất xảy ra một hiện tượng (sự kiện) giữa hai nhóm (ví dụ: nhóm tiếp xúc và nhóm không tiếp xúc).

RR thường được sử dụng trong các nghiên cứu đoàn hệ (cohort studies) và thử nghiệm thực nghiệm có thể đo lường xác suất thực sự trong từng nhóm.


2. Công thức

Giả sử có bảng tần số chéo dạng 2×2 như sau:

Sự kiện xảy ra Không xảy ra Tổng số
Nhóm 1 a b a + b
Nhóm 2 c d c + d

Tỷ số nguy cơ được tính như sau:

\[ RR = \frac{a / (a + b)}{c / (c + d)} \]

Trong đó: - \(a / (a + b)\): Xác suất xảy ra sự kiện ở nhóm 1. - \(c / (c + d)\): Xác suất xảy ra sự kiện ở nhóm 2.


3. Diễn giải

  • \(RR = 1\): Nguy cơ xảy ra sự kiện là như nhau giữa hai nhóm.
  • \(RR > 1\): Nhóm 1 có nguy cơ cao hơn nhóm 2.
  • \(RR < 1\): Nhóm 1 có nguy cơ thấp hơn nhóm 2.

4. Đặc điểm và tính chất

  • Không có đơn vị vì là tỷ số giữa hai xác suất.
  • Ý nghĩa trực quan và dễ truyền đạt trong báo cáo thực nghiệm.
  • Chỉ nên sử dụng khi có thể ước lượng được xác suất xảy ra sự kiện trong từng nhóm.

5. Ứng dụng

  • So sánh nguy cơ bệnh lý giữa nhóm phơi nhiễm và nhóm không phơi nhiễm trong nghiên cứu y học.
  • So sánh hành vi hoặc trạng thái giữa hai nhóm khách hàng trong nghiên cứu kinh doanh hoặc xã hội.

6. Hạn chế

  • Không áp dụng được cho nghiên cứu hồi cứu (case-control studies) vì không thể ước lượng xác suất xảy ra sự kiện thực sự → trong trường hợp đó nên dùng Odds Ratio (Tỷ số chênh).

6.4. Xét Relative risk: MaritalStatus, Homeowner

library(epitools)
marital_homeowner <- table(df$MaritalStatus, df$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"

Nhận xét

Dựa trên kết quả từ hàm riskratio(), ta thu được bảng tần số chéo giữa hai biến phân loại: MaritalStatus (Married, Single) và Homeowner (Yes, No). Cụ thể, có tổng cộng 6866 người đã kết hôn và 7193 người độc thân trong mẫu khảo sát. Trong đó, 5147 người kết hôn và 3297 người độc thân sở hữu nhà.

Kết quả phân tích tỷ số nguy cơ (Relative Risk - RR) cho thấy:

  • Nhóm Married được chọn làm nhóm tham chiếu, có RR = 1.0.
  • Nhóm Single có RR = 0.6114, với khoảng tin cậy 95% là (0.5942; 0.6292).

Điều này có nghĩa là nguy cơ sở hữu nhà của người độc thân chỉ bằng khoảng 61.1% so với người đã kết hôn, và sự khác biệt này là có ý nghĩa thống kê vì khoảng tin cậy không chứa 1.

Các kiểm định thống kê đi kèm (midp, Fisher exact, chi-square) đều cho giá trị p gần bằng 0 (ví dụ: Fisher’s exact = 1.82 × 10⁻²⁷⁷), cho thấy sự khác biệt về tỷ lệ sở hữu nhà giữa hai nhóm là rất đáng tin cậy về mặt thống kê.

Tóm lại, kết quả này cho thấy tình trạng hôn nhân có mối liên hệ chặt chẽ với khả năng sở hữu nhà, trong đó người đã kết hôn có nguy cơ cao hơn đáng kể so với người độc thân.

6.5. Tính OR cho biến