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

Tập dữ liệu được sử dụng trong phân tích này nhằm khảo sát nhu cầu và hành vi lựa chọn xe hơi của người tiêu dùng. Mỗi quan sát trong bộ dữ liệu đại diện cho một mẫu xe cụ thể, với các đặc điểm kỹ thuật khác nhau và mức đánh giá tổng thể từ hệ thống.

Các biến gồm có:

  • buying: Giá mua xe (Expensive,low)
  • maint: Chi phí bảo trì (high,low)
  • doors: Số cửa (2,more2)
  • persons: Số chỗ ngồi (little, more)
  • lug_boot: Kích thước khoang hành lý (small, big)
  • safety: Mức độ an toàn (low,high)
  • class: Mức đánh giá tổng thể của xe (unacc, acc)
df <- read.csv("C:/Users/Admin/Documents/PHÂN TÍCH DỮ LIỆU ĐỊNH TÍNH/data car (2).csv", stringsAsFactors = FALSE)
str(df)
## 'data.frame':    1728 obs. of  7 variables:
##  $ buying  : chr  "Expensive" "Expensive" "Expensive" "Expensive" ...
##  $ maint   : chr  "high" "high" "high" "high" ...
##  $ doors   : chr  "little" "little" "little" "little" ...
##  $ persons : chr  "2" "2" "2" "2" ...
##  $ lug_boot: chr  "small" "small" "small" "small" ...
##  $ safety  : chr  "low" "low" "high" "low" ...
##  $ class   : chr  "unacc" "acc" "acc" "acc" ...
colSums(is.na(df))
##   buying    maint    doors  persons lug_boot   safety    class 
##        0        0        0        0        0        0        0
df$buying <- as.factor(df$buying)
df$maint <- as.factor(df$maint)
df$doors <- as.factor(df$doors)
df$persons <- as.factor(df$persons)
df$lug_boot <- as.factor(df$lug_boot)
df$safety <- as.factor(df$safety)
df$class <- as.factor(df$class)

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

2.1. Biến buying

Giới thiệu biến và thống kê

tanso_buying <- table(df$buying)
tanso_buying
## 
## Expensive       low 
##       908       820
tansuat_buying <- tanso_buying / nrow(df)
tansuat_buying
## 
## Expensive       low 
##  0.525463  0.474537
barplot(tansuat_buying,
        main = "Biểu đồ phân bố - Buying",
        xlab = "Buying",
        ylab = "Tần suất",
        col = "lightblue",
        border = "black")

pie(tansuat_buying,
    main = "Biểu đồ tròn - Buying",
    col = rainbow(length(tansuat_buying)),
    labels = paste(names(tansuat_buying), " (", round(tansuat_buying * 100, 1), "%)", sep = ""))

Nhận xét:

Kết quả phân tích cho thấy biến “buying” (Giá mua xe) có phân bố hoàn toàn gần như đồng đều giữa 2 nhóm:

  • Expensive (Giá cao): chiếm khoảng 52.55%
  • low (Thấp): chiếm khoảng 47.45%

Yếu tố giá cả là một trong những tiêu chí quan trọng hàng đầu ảnh hưởng đến quyết định mua xe, đặc biệt với những người tiêu dùng có ngân sách giới hạn. Trong kết quả này thì nhóm giá gần như tương đồng gần bằng nhau, không có sự chênh lệch nhiều

Ước lượng và kiểm định

n_low <- sum(df$buying == "low")

n_total <- nrow(df)

prop.test(n_low, n_total, p = 0.5, conf.level = 0.95)
## 
##  1-sample proportions test with continuity correction
## 
## data:  n_low out of n_total, null probability 0.5
## X-squared = 4.3802, df = 1, p-value = 0.03636
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.4507875 0.4984010
## sample estimates:
##        p 
## 0.474537

Giả thiết đặt ra:

  • Giả thuyết H₀ (H0): Tỷ lệ chọn mức giá low trong tổng biến buying là 50% (p = .05).

  • Giả thuyết H₁ (H1): Tỷ lệ chọn mức giá low trong tổng biến buying khác 50% (p ≠ 0.5)

  • Nếu p-value < 0.05 bác bỏ H₀ và ngược lại **p-value ≥ 0.05* chưa đủ bằng chứng bác bỏ giả thuyết H₀

Nhận xét:

  • Tỷ lệ chọn mức low trong dữ liệu là 47.45%, và nằm trong khoảng tin cậy 95% từ 45.08% đến 49.84% so với giả định 50%.

  • p-value = 0.03636 < 0.05, nên chúng ta bác bỏ giả thuyết rằng tỷ lệ mức "low" là 50%.

  • Biểu đồ và bảng tần suất cho thấy có sự chênh lệch nhẹ giữa hai nhóm giá mua (Expensivelow), tuy nhiên vẫn tương đối cân bằng.

  • Điều này cho thấy dữ liệu biến buying không phân phối hoàn toàn đều, và sự khác biệt nhỏ này có ý nghĩa thống kê, là cơ sở hữu ích để phân tích hành vi lựa chọn theo mức giá.

2.2. Biến maint

Giới thiệu biến và thống kê

tanso_maint <- table(df$maint)
tanso_maint
## 
## high  low 
##  835  893
tansuat_maint <- tanso_maint / nrow(df)
tansuat_maint
## 
##      high       low 
## 0.4832176 0.5167824
barplot(tansuat_maint,
        main = "Biểu đồ phân bố - Maint",
        xlab = "Maint",
        ylab = "Tần suất",
        col = "lightgreen",
        border = "black")

pie(tansuat_maint,
    main = "Biểu đồ tròn - Maint",
    col = rainbow(length(tansuat_maint)),
    labels = paste(names(tansuat_maint), " (", round(tansuat_maint * 100, 1), "%)", sep = ""))

Nhận xét:

  • Tỷ lệ xe có mức maint (chi phí bảo trì) là low chiếm 51.68%, nhỉnh hơn một chút so với mức high48.32%.

  • Sự chênh lệch giữa hai nhóm không lớn, cho thấy phân bố của biến maint khá đồng đều giữa hai mức chi phí bảo trì.

  • Biểu đồ cột và biểu đồ tròn minh họa rõ ràng sự phân bố tương đối cân bằng khi so sánh các nhóm xe theo tiêu chí bảo trì, tức là không có sự chênh lệnh nhiều ở hai mức

Ước lượng và kiểm định

n_low_maint <- sum(df$maint == "low")


n_total_maint <- nrow(df)


prop.test(n_low_maint, n_total_maint, p = 0.5, conf.level = 0.95)
## 
##  1-sample proportions test with continuity correction
## 
## data:  n_low_maint out of n_total_maint, null probability 0.5
## X-squared = 1.8802, df = 1, p-value = 0.1703
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.4929207 0.5405687
## sample estimates:
##         p 
## 0.5167824

Giả thiết đặt ra:

  • Giả thuyết H₀ (H0): Tỷ lệ chọn mức giá low trong tổng biến maint là 50% (p = 0.5).
  • Giả thuyết H₁ (H1): Tỷ lệ chọn mức giá low trong tổng biến maint khác 50% (p ≠ 0.5)
  • Nếu p-value < 0.05Bác bỏ giả thuyết H₀và ngược lại p-value ≥ 0.05chưa đủ bằng chứng bác bỏ giả thuyết H₀

Nhận xét:

  • Tỷ lệ chọn mức low trong biến maint51.68%, nằm trong khoảng tin cậy 95% từ 49.29% đến 54.06%.

  • p-value = 0.1703 > 0.05, nên chưa đủ bằng chứng để bác bỏ giả thuyết rằng tỷ lệ mức "low" là 50%.

  • Biểu đồ và tần suất cho thấy phân bố giữa hai mức chi phí bảo trì (highlow) là tương đối cân bằng, không có mức nào chiếm ưu thế rõ rệt. Điều này phản ánh rằng dữ liệu biến maint có sự phân phối gần đều, cho thấy lựa chọn xe không quá thiên lệch về chi phí bảo trì trong tập dữ liệu khảo sát.

2.3. Biến doors

Giới thiệu biến và thống kê

tanso_doors <- table(df$doors)
tanso_doors
## 
## little   more 
##    942    786
tansuat_doors <- tanso_doors / nrow(df)
tansuat_doors
## 
##    little      more 
## 0.5451389 0.4548611
barplot(tansuat_doors,
        main = "Biểu đồ phân bố - Doors",
        xlab = "Doors",
        ylab = "Tần suất",
        col = "lightcoral",
        border = "black")

pie(tansuat_doors,
    main = "Biểu đồ tròn - Doors",
    col = rainbow(length(tansuat_doors)),
    labels = paste(names(tansuat_doors), " (", round(tansuat_doors * 100, 1), "%)", sep = ""))

Nhận xét:

Nhận xét:

  • Tỷ lệ xe có số cửa thuộc nhóm little chiếm 54.51%, cao hơn một chút so với nhóm more45.49%.Sự chênh lệch này không quá lớn, cho thấy dữ liệu có phân bố khá cân bằng giữa hai loại thiết kế xe.

  • Biểu đồ cột và tròn thể hiện rõ ràng rằng xe ít cửa có xu hướng được chọn nhiều hơn trong tập dữ liệu, có thể liên quan đến sở thích xe nhỏ gọn hoặc xe cá nhân.

  • Kết quả này có thể phản ánh thực tế rằng người tiêu dùng có xu hướng ưa chuộng xe ít cửa, tiện lợi, dễ di chuyển, nhất là trong môi trường đô thị hoặc gia đình ít người.

Ước lượng và kiểm định

n_doors_2 <- sum(df$doors == "2")


n_total <- nrow(df)


prop.test(n_doors_2, n_total, p = 0.5, conf.level = 0.95)
## 
##  1-sample proportions test with continuity correction
## 
## data:  n_doors_2 out of n_total, null probability 0.5
## X-squared = 1726, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.000000000 0.002765346
## sample estimates:
## p 
## 0

Giả thiết đặt ra:

  • H₀: Tỷ lệ xe có 2 cửa trong tổng thể là 50% (p = 0.5)
  • H₁: Tỷ lệ xe có 2 cửa trong tổng thể khác 50% (p ≠ 0.5)

Kết quả kiểm định:

  • Tỷ lệ ước lượng: 0.00%
  • Khoảng tin cậy 95%: 0.00% – 0.28%
  • p-value = < 2.2e-16

Nhận xét:

  • p-value < 0.05, ta bác bỏ giả thuyết H₀, tức là tỷ lệ xe có 2 cửa khác biệt có ý nghĩa thống kê so với giả định 50%.

  • Tỷ lệ thực tế là 0%, cho thấy không có bất kỳ mẫu xe nào trong dữ liệu có 2 cửa.

  • Điều này phản ánh rằng xe 2 cửa gần như không được lựa chọn hoặc không có trong tập khảo sát, phù hợp với thực tế thị trường khi dòng xe 2 cửa thường ít phổ biến do hạn chế về số chỗ ngồi và tính thực dụng.

2.4. Biến persons

Giới thiệu biến và thống kê

tanso_persons <- table(df$persons)
tanso_persons
## 
##     2 more2 
##   558  1170
tansuat_persons <- tanso_persons / nrow(df)
tansuat_persons
## 
##         2     more2 
## 0.3229167 0.6770833
barplot(tansuat_persons,
        main = "Biểu đồ phân bố - Persons",
        xlab = "Persons",
        ylab = "Tần suất",
        col = "lightsalmon",
        border = "black")

pie(tansuat_persons,
    main = "Biểu đồ tròn - Persons",
    col = rainbow(length(tansuat_persons)),
    labels = paste(names(tansuat_persons), " (", round(tansuat_persons * 100, 1), "%)", sep = ""))

Nhận xét:

  • Tỷ lệ xe có 2 chỗ ngồi chỉ chiếm 32.29%, trong khi nhóm xe có từ 3 chỗ ngồi trở lên (more2) chiếm tới 67.71%.Phân bố này cho thấy người tiêu dùng có xu hướng ưu tiên xe có sức chứa lớn hơn, phù hợp với nhu cầu di chuyển theo nhóm, gia đình hoặc mục đích sử dụng linh hoạt hơn.

  • Biểu đồ minh họa rõ ràng sự thiên lệch về lựa chọn giữa hai nhóm, điều này có thể phản ánh thị hiếu tiêu dùng hiện nay ưu tiên tính thực dụng và sức chứa trong lựa chọn xe hơi.

Ước lượng và kiểm định

n_persons_2 <- sum(df$persons == "2")


n_total <- nrow(df)

prop.test(n_persons_2, n_total, p = 0.5, conf.level = 0.95)
## 
##  1-sample proportions test with continuity correction
## 
## data:  n_persons_2 out of n_total, null probability 0.5
## X-squared = 216.04, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.3010002 0.3456290
## sample estimates:
##         p 
## 0.3229167

Giả thiết đặt ra:

  • Giả thuyết H₀ (H0): Tỷ lệ xe có 2 chỗ ngồi trong tổng thể là 50% (p = 0.5)
  • Giả thuyết H₁ (H1): Tỷ lệ xe có 2 chỗ ngồi khác 50% (p ≠ 0.5)
  • Nếu p-value < 0.05Bác bỏ giả thuyết H₀
    Ngược lại, nếu p-value ≥ 0.05Chưa đủ bằng chứng để bác bỏ giả thuyết H₀

Kết quả kiểm định:

  • Tỷ lệ chọn mức 2 trong biến persons32.29%, nằm trong khoảng tin cậy 95% từ 30.10% đến 34.56%.
  • p-value < 2.2e-16 (rất nhỏ)

Kết luận:

  • p-value < 0.05, ta bác bỏ giả thuyết H₀, tức là tỷ lệ xe có 2 chỗ ngồi khác biệt có ý nghĩa thống kê so với 50%.

  • Biểu đồ và tần suất cho thấy tỷ lệ xe more2 (từ 3 chỗ trở lên) chiếm ưu thế vượt trội, phản ánh xu hướng tiêu dùng ưa chuộng xe có nhiều chỗ ngồi hơn.

  • Điều này phù hợp với hành vi lựa chọn thực tế trong bối cảnh gia đình hoặc nhóm người, và cho thấy xe 2 chỗ không phải là lựa chọn phổ biến trong tập dữ liệu khảo sát.

2.5. Biến lug_boot

Giới thiệu biến và thống kê

tanso_lug <- table(df$lug_boot)
tanso_lug
## 
##   big small 
##  1122   606
tansuat_lug <- tanso_lug / nrow(df)
tansuat_lug
## 
##       big     small 
## 0.6493056 0.3506944
barplot(tansuat_lug,
        main = "Biểu đồ phân bố - Lug Boot",
        xlab = "Lug Boot",
        ylab = "Tần suất",
        col = "lightcyan",
        border = "black")

pie(tansuat_lug,
    main = "Biểu đồ tròn - Lug Boot",
    col = rainbow(length(tansuat_lug)),
    labels = paste(names(tansuat_lug), " (", round(tansuat_lug * 100, 1), "%)", sep = ""))

Nhận xét:

  • Tỷ lệ xe có khoang hành lý lớn (big) chiếm tới 64.91%, trong khi nhóm khoang hành lý nhỏ (small) chỉ chiếm 35.09%.Phân bố này cho thấy người tiêu dùng có xu hướng ưu tiên lựa chọn các mẫu xe có không gian chứa đồ rộng rãi, phù hợp với nhu cầu vận chuyển linh hoạt, đặc biệt là các hộ gia đình hoặc chuyến đi dài ngày.

  • Biểu đồ trực quan cũng thể hiện sự thiên lệch rõ rệt về phía nhóm big, phản ánh thị hiếu thị trường đang nghiêng về sự tiện lợi và công năng sử dụng trong lựa chọn xe hơi.

Ước lượng và kiểm định

n_lug_small <- sum(df$lug_boot == "small")

n_total <- nrow(df)

prop.test(n_lug_small, n_total, p = 0.5, conf.level = 0.95)
## 
##  1-sample proportions test with continuity correction
## 
## data:  n_lug_small out of n_total, null probability 0.5
## X-squared = 153.49, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.3282646 0.3737952
## sample estimates:
##         p 
## 0.3506944

Giả thiết đặt ra:

  • Giả thuyết H₀ (H0): Tỷ lệ xe có khoang hành lý nhỏ (small) trong tổng thể là 50% (p = 0.5)
  • Giả thuyết H₁ (H1): Tỷ lệ xe có khoang hành lý nhỏ khác 50% (p ≠ 0.5)
  • Nếu p-value < 0.05Bác bỏ giả thuyết H₀
    Ngược lại, nếu p-value ≥ 0.05Chưa đủ bằng chứng để bác bỏ giả thuyết H₀

Kết quả kiểm định:

  • Tỷ lệ chọn mức small trong biến lug_boot35.09%, nằm trong khoảng tin cậy 95% từ 32.83% đến 37.38%
  • p-value < 2.2e-16 (rất nhỏ)

Kết luận:

  • p-value < 0.05, ta bác bỏ giả thuyết H₀, tức là tỷ lệ chọn khoang hành lý small khác biệt có ý nghĩa thống kê so với 50%.

  • Biểu đồ và tần suất cho thấy khoang hành lý lớn (big) chiếm ưu thế rõ rệt, phản ánh xu hướng người tiêu dùng ưu tiên tính tiện nghi, không gian chứa đồ rộng rãi khi lựa chọn xe.

  • Đây là yếu tố quan trọng để doanh nghiệp định hướng phát triển sản phẩm, đặc biệt trong phân khúc xe gia đình hoặc phục vụ nhu cầu vận chuyển nhiều đồ đạc.

2.6. Biến safety

Giới thiệu biến và thống kê

tanso_safety <- table(df$safety)
tanso_safety
## 
## high  low 
##  615 1113
tansuat_safety <- tanso_safety / nrow(df)
tansuat_safety
## 
##      high       low 
## 0.3559028 0.6440972
barplot(tansuat_safety,
        main = "Biểu đồ phân bố - Safety",
        xlab = "Safety",
        ylab = "Tần suất",
        col = "khaki",
        border = "black")

pie(tansuat_safety,
    main = "Biểu đồ tròn - Safety",
    col = rainbow(length(tansuat_safety)),
    labels = paste(names(tansuat_safety), " (", round(tansuat_safety * 100, 1), "%)", sep = ""))

Nhận xét:

  • Tỷ lệ xe có mức an toàn thấp (low) chiếm tới 64.41%, trong khi nhóm mức an toàn cao (high) chỉ chiếm 35.59%.Phân bố này cho thấy người tiêu dùng trong tập dữ liệu có xu hướng lựa chọn các mẫu xe không đặt nặng yếu tố an toàn, có thể vì lý do giá cả, thói quen sử dụng, hoặc tính năng khác được ưu tiên hơn, tuy nhiên vấn đề này vẫn được cho coi là đúng với thị trường hiện tại

  • Vì vậy có thể đây sẽ là yếu tố mà doanh nghiệp cần lưu ý khi xây dựng chiến lược sản phẩm, đặc biệt nếu nhắm vào phân khúc giá rẻ hoặc thị trường phổ thông – đồng thời cũng là cơ hội để truyền thông nâng cao nhận thức về an toàn trong tiêu dùng xe hơi.

Ước lượng và kiểm định

n_safety_low <- sum(df$safety == "low")

n_total <- nrow(df)

prop.test(n_safety_low, n_total, p = 0.5, conf.level = 0.95)
## 
##  1-sample proportions test with continuity correction
## 
## data:  n_safety_low out of n_total, null probability 0.5
## X-squared = 142.95, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.6209331 0.6666139
## sample estimates:
##         p 
## 0.6440972

Giả thiết đặt ra:

  • Giả thuyết H₀ (H0): Tỷ lệ chọn mức an toàn low trong tổng thể là 50% (p = 0.5)
  • Giả thuyết H₁ (H1): Tỷ lệ chọn mức an toàn low khác 50% (p ≠ 0.5)
  • Nếu p-value < 0.05Bác bỏ giả thuyết H₀
    Ngược lại, nếu p-value ≥ 0.05Chưa đủ bằng chứng để bác bỏ giả thuyết H₀

Kết quả kiểm định:

  • Tỷ lệ chọn mức low trong biến safety64.41%, nằm trong khoảng tin cậy 95% từ 62.09% đến 66.66%
  • p-value < 2.2e-16

Kết luận:

  • p-value < 0.05, ta bác bỏ giả thuyết H₀, tức là tỷ lệ chọn mức an toàn low khác biệt có ý nghĩa thống kê so với 50%.

  • Biểu đồ và tần suất cũng cho thấy sự thiên lệch rõ rệt về phía mức low, phản ánh rằng yếu tố an toàn chưa được đặt làm ưu tiên hàng đầu trong lựa chọn xe của người tiêu dùng trong tập dữ liệu khảo sát.Đây có thể được coi là 1 biến hạn chế sai lệch trong đề tài bởi vì nó không đúng thực tế

2.7. Biến class

Giới thiệu biến và thống kê

tanso_class <- table(df$class)
tanso_class
## 
##   acc unacc 
##   519  1209
tansuat_class <- tanso_class / nrow(df)
tansuat_class
## 
##       acc     unacc 
## 0.3003472 0.6996528
barplot(tansuat_class,
        main = "Biểu đồ phân bố - Class",
        xlab = "Class",
        ylab = "Tần suất",
        col = "plum",
        border = "black")

pie(tansuat_class,
    main = "Biểu đồ tròn - Class",
    col = rainbow(length(tansuat_class)),
    labels = paste(names(tansuat_class), " (", round(tansuat_class * 100, 1), "%)", sep = ""))

Nhận xét:

Kết quả phân tích cho thấy biến class (Phân loại xe) có sự phân bố không đồng đều giữa các nhóm:

  • Tỷ lệ xe được đánh giá “acceptable” (acc)** chỉ chiếm 30.03%, trong khi số lượng xe bị đánh giá “unacceptable” (unacc) chiếm tới 69.97%.Phân bố này cho thấy phần lớn các mẫu xe trong dữ liệu không đạt chuẩn chất lượng hoặc mức đánh giá tối thiểu, dẫn đến việc bị xếp loại unacc.

  • Biểu đồ cột và tròn minh họa rõ sự chênh lệch lớn giữa hai nhóm, cho thấy đây là một bộ dữ liệu với xu hướng thiên về đánh giá khắt khe hoặc các mẫu xe có thông số kỹ thuật chưa tốt.

Ước lượng và kiểm định

n_unacc <- sum(df$class == "unacc")

n_total <- nrow(df)

prop.test(n_unacc, n_total, p = 0.5, conf.level = 0.95)
## 
##  1-sample proportions test with continuity correction
## 
## data:  n_unacc out of n_total, null probability 0.5
## X-squared = 274.72, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.677321 0.721087
## sample estimates:
##         p 
## 0.6996528

Giả thiết đặt ra:

  • Giả thuyết H₀ (H0): Tỷ lệ xe bị đánh giá unacc trong tổng thể là 50% (p = 0.5)
  • Giả thuyết H₁ (H1): Tỷ lệ xe unacc khác 50% (p ≠ 0.5)
  • Nếu p-value < 0.05Bác bỏ giả thuyết H₀
    Ngược lại, nếu p-value ≥ 0.05Chưa đủ bằng chứng để bác bỏ giả thuyết H₀

Kết quả kiểm định:

  • Tỷ lệ chọn mức unacc trong biến class69.97%, nằm trong khoảng tin cậy 95% từ 67.73% đến 72.11%
  • p-value < 2.2e-16 (rất nhỏ)

Kết luận:

  • p-value < 0.05, ta bác bỏ giả thuyết H₀, tức là tỷ lệ xe bị đánh giá unacc khác biệt có ý nghĩa thống kê so với 50%.

  • Biểu đồ và tần suất cho thấy phần lớn xe trong dữ liệu không đạt mức đánh giá chấp nhận được, dẫn đến tỷ lệ unacc chiếm ưu thế.

  • Đây là dấu hiệu cho thấy chất lượng xe trong dữ liệu nhìn chung khá thấp, hoặc hệ thống đánh giá đang nghiêm khắc. Điều này có thể ảnh hưởng lớn đến niềm tin người tiêu dùng và là căn cứ để doanh nghiệp cải thiện tiêu chuẩn sản phẩm hoặc truyền thông rõ hơn về tính năng nổi bật của xe.

Phần 3: Phân tích mối quan hệ giữa hai biến Buying và Class

Tạo bảng tần số chéo

table_cb <- table(df$class, df$buying)
table_cb
##        
##         Expensive low
##   acc         265 254
##   unacc       643 566
round(prop.table(table_cb, margin = 1) * 100, 2)
##        
##         Expensive   low
##   acc       51.06 48.94
##   unacc     53.18 46.82

Quan sát bảng tần số chéo cho thấy:

  • Trong nhóm xe được đánh giá là acc (chấp nhận được):

    • 265 xe thuộc nhóm giá Expensive (51.06%)
    • 254 xe thuộc nhóm giá low (48.94%) → Phân bố giữa hai mức giá khá cân bằng trong nhóm xe được đánh giá tốt.
  • Ngược lại, trong nhóm unacc (không chấp nhận được):

    • 643 xe thuộc nhóm giá Expensive (53.18%)
    • 566 xe thuộc nhóm giá low (46.82%) → Nhóm unacc cũng phân bố tương đối đồng đều giữa hai mức giá, nhưng vẫn hơi nghiêng về phía xe đắt tiền.
  • Sự chênh lệch nhỏ giữa các tỷ lệ cho thấy giá mua không phải là yếu tố duy nhất quyết định mức độ đánh giá xe (class), vì cả xe đắt (Expensive) và rẻ (low) đều có tỷ lệ bị đánh giá unacc.

  • Điều này phản ánh rằng chất lượng đánh giá xe không phụ thuộc rõ rệt vào giá bán, mà có thể liên quan nhiều hơn đến các yếu tố như an toàn (safety), chi phí bảo trì (maint), hoặc số chỗ ngồi (persons).

Kiểm định Chi bình phương cho 2 biến

chisq.test(table_cb)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  table_cb
## X-squared = 0.57497, df = 1, p-value = 0.4483

Giả thiết đặt ra:

  • Giả thuyết H₀ (H0): Không có mối liên hệ giữa giá mua xe (buying)mức đánh giá xe (class)
  • Giả thuyết H₁ (H1): Có mối liên hệ giữa buyingclass
  • Nếu p-value < 0.05Bác bỏ H₀, ngược lại nếu p-value ≥ 0.05Chưa đủ bằng chứng bác bỏ H₀

Kết quả kiểm định:

  • X-squared = 0.57497 cho thấy chênh lệch giữa thực tế và kỳ vọng là rất nhỏ
  • p-value = 0.4483

Kết luận:

  • p-value = 0.4483 > 0.05, ta không bác bỏ giả thuyết H₀

  • Điều này cho thấy, giá mua xe không ảnh hưởng rõ rệt đến mức độ đánh giá chất lượng (acc hay unacc) trong bộ dữ liệu này.

  • Điều này phản ánh rằng người tiêu dùng hoặc hệ thống đánh giá không hoàn toàn căn cứ vào giá cả khi đưa ra nhận định chất lượng xe.Đây là cơ sở cho thấy giá không phải là yếu tố quyết định chất lượng, và doanh nghiệp nên tập trung cải thiện các yếu tố kỹ thuật, an toàn, hoặc chi phí sử dụng thay vì chỉ cạnh tranh bằng giá.

Biểu đồ cột thể hiện mối quan hệ 2 biến

library(ggplot2)

ggplot(df, aes(x = class, fill = buying)) +
  geom_bar(position = "dodge") +
  labs(
    title = "Biểu đồ cột nhóm: Class và Buying",
    x = "Class",
    y = "Số lượng",
    fill = "Buying"
  ) +
  theme_minimal()

Xét thêm về RR và OR giữa hai biến Buying và class

install.packages(“epitools”) library(epitools)

library(epitools)

# Tạo lại bảng 2x2 từ bảng tần số chéo trên 
table_cb2x2 <- matrix(c(265, 643, 254, 566), 
                      nrow = 2,
                      byrow = TRUE,
                      dimnames = list(Class = c("acc", "unacc"),
                                      Buying = c("Expensive", "low")))

Tính Risk Ratio

riskratio(table_cb2x2)
## $data
##        Buying
## Class   Expensive  low Total
##   acc         265  643   908
##   unacc       254  566   820
##   Total       519 1209  1728
## 
## $measure
##        risk ratio with 95% C.I.
## Class    estimate     lower    upper
##   acc   1.0000000        NA       NA
##   unacc 0.9747146 0.9161034 1.037076
## 
## $p.value
##        two-sided
## Class   midp.exact fisher.exact chi.square
##   acc           NA           NA         NA
##   unacc  0.4180589     0.430796  0.4174733
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
  • Kết quả phân tích Risk Ratio (RR) giữa hai biến class (gồm accunacc) và buying (Expensive vs low) cho thấy:

    • Với RR= 0.9747 nghĩa là nhóm xe bị đánh giá unacc có nguy cơ chọn mức low thấp hơn 0.9747 lần so với nhóm acc

    • Hay nói cách khác RR = 0.9747 nghĩa là: nguy cơ chọn mức giá low ở nhóm unacc giảm nhẹ khoảng 2.5% so với nhóm acctheo công thức (1 - 0.9747 = 0.0253 hay 2.53%)

    • Tất cả các giá trị p- value cho nhóm “unacc” (ví dụ: 0.4180589, 0.430796, 0.4174733) đều lớn hơn 0.05. Điều này khẳng định rằng không có đủ bằng chứng thống kê để kết luận có sự khác biệt đáng kể về nguy cơ giữa nhóm “unacc” và “acc”.

Tính Oddsratio

oddsratio(table_cb2x2)
## $data
##        Buying
## Class   Expensive  low Total
##   acc         265  643   908
##   unacc       254  566   820
##   Total       519 1209  1728
## 
## $measure
##        odds ratio with 95% C.I.
## Class    estimate     lower    upper
##   acc   1.0000000        NA       NA
##   unacc 0.9183985 0.7473962 1.128577
## 
## $p.value
##        two-sided
## Class   midp.exact fisher.exact chi.square
##   acc           NA           NA         NA
##   unacc  0.4180589     0.430796  0.4174733
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
  • Kết quả cho thấy:

    • Odds Ratio (OR) = 0.9184 nó cho biết xe thuộc nhóm unacc được chọn ở mức giá low bằng 0.9184 xe thuộc nhóm acc được chọn ở mức giá low
  • Hay nói cách khác giá trị OR = 0.9184 cho thấy:
    Odds (khả năng xảy ra tương đối) để xe thuộc nhóm unacc được chọn ở mức giá low thấp hơn khoảng 8.2% so với nhóm acc. ( do odds <1)

  • Điều này được tính theo công thức:
    \[ (1 - OR) \times 100\% = (1 - 0.9184) \times 100\% \approx 8.2\% \]

`- Tất cả các giá trị p- value cho nhóm “unacc” (0.4180589, 0.430796, 0.4174733) đều lớn hơn 0.05. Điều này khẳng định rằng không có đủ bằng chứng thống kê để kết luận có sự khác biệt đáng kể về nguy cơ giữa nhóm “unacc” và “acc”.

  • Điều này cho thấy mức giá xe chưa phải là yếu tố phân biệt rõ ràng trong đánh giá chất lượng xe theo biến class.

Phần 4: Hạn chế về dữ liệu phân tích

Sau quá trình phân tích, có thể nhận thấy rằng bộ dữ liệu hiện tại chưa thật sự phản ánh đầy đủ và chính xác nhu cầu mua xe của người tiêu dùng trong bối cảnh hiện tại, bởi các lý do sau:

  • Bộ dữ liệu chủ yếu dựa trên các yếu tố định tính như giá xe, kích thước cốp, dung tích chở người,… mà không xét đến các yếu tố quan trọng khác như thương hiệu xe, mức độ an toàn, hiệu suất tiêu thụ nhiên liệu, chính sách hậu mãi,…

  • Dữ liệu có vẻ đã cũ hoặc không cập nhật với thị trường thực tế ngày nay, vốn đã thay đổi nhiều về xu hướng tiêu dùng, công nghệ xe, và mức độ cạnh tranh.

Phần 5: Lý thuyết ước lượng Maximum likehood

5.1. Khái niệm Maximum Likelihood Estimation (MLE)

Ước lượng hợp lý cực đại (MLE) là một phương pháp thống kê nhằm tìm giá trị tham số \(\theta\) sao cho xác suất xảy ra của tập dữ liệu quan sát là lớn nhất, dựa trên hàm phân phối xác suất giả định.

Giả sử \(X_1, X_2, ..., X_n\) là mẫu ngẫu nhiên độc lập từ phân phối có hàm mật độ xác suất \(f(x; \theta)\), thì:

  • Hàm hợp lý (Likelihood): \[ L(\theta) = \prod_{i=1}^{n} f(x_i; \theta) \]

  • Log-likelihood: \[ \ell(\theta) = \log L(\theta) = \sum_{i=1}^{n} \log f(x_i; \theta) \]

  • Ước lượng MLE: \[ \hat{\theta}_{MLE} = \arg\max_{\theta} \ell(\theta) \]

5.2. Các bước thực hiện ước lượng MLE

  1. Xác định hàm phân phối xác suất phù hợp (chuẩn, nhị phân, Poisson,…)
  2. Thiết lập hàm hợp lý \(L(\theta)\) từ dữ liệu.
  3. Lấy log để được \(\ell(\theta)\).
  4. Giải phương trình đạo hàm bậc nhất \(\frac{d\ell(\theta)}{d\theta} = 0\).
  5. Kiểm tra đạo hàm bậc hai (nếu cần).
  6. Giá trị nghiệm là \(\hat{\theta}_{MLE}\).

5.3. Tính chất của ước lượng MLE

  • Tính nhất quán: \(\hat{\theta}_{MLE} \rightarrow \theta\) khi \(n \rightarrow \infty\)
  • Không thiên lệch tiệm cận: Khi \(n\) lớn, sai số nhỏ dần.
  • Hiệu quả tiệm cận: Phương sai nhỏ nhất trong lớp ước lượng không chệch (định lý Cramér–Rao).
  • Phân phối chuẩn tiệm cận: Khi \(n \to \infty\), \(\hat{\theta}_{MLE}\) gần đúng phân phối chuẩn.

5.4. Ví dụ minh họa: Ước lượng \(p\) trong phân phối Bernoulli

Giả sử \(X_1, X_2, ..., X_n \sim \text{Bernoulli}(p)\), với \(0 < p < 1\).

  • Hàm mật độ: \[ f(x; p) = p^x (1-p)^{1-x} \]

  • Hàm hợp lý: \[ L(p) = \prod_{i=1}^{n} p^{x_i}(1-p)^{1-x_i} \]

  • Log-likelihood: \[ \ell(p) = \sum_{i=1}^{n} \left[ x_i \log(p) + (1 - x_i) \log(1 - p) \right] \]

  • Đạo hàm log-likelihood: \[ \frac{d\ell(p)}{dp} = \frac{\sum x_i}{p} - \frac{n - \sum x_i}{1 - p} \]

Giải phương trình: \[ \frac{d\ell(p)}{dp} = 0 \Rightarrow \hat{p} = \frac{\sum x_i}{n} \]

Phần 6: Mô hình tuyến tính tổng quát GLM

GLM ( Generalized Linear Model ) là một mô hình hồi quy mở rộng từ hồi quy tuyến tính truyền thống, cho phép mô hình hóa nhiều loại biến phụ thuộc: nhị phân, đếm, liên tục dương,…

GLM gồm 3 thành phần chính:

6.1. Thành phần Hệ thống (Systematic Component)

  • Là phần tuyến tính:
    \[ \eta = \beta_0 + \beta_1 X_1 + \dots + \beta_k X_k \]

  • Còn gọi là bộ dự báo tuyến tính \(\eta\).

  • Mô tả ảnh hưởng tuyến tính của các biến độc lập \(X\) lên biến phụ thuộc đã biến đổi qua hàm liên kết.

6.2. Thành phần Ngẫu nhiên (Random Component)

  • Mô tả phân phối xác suất của biến phụ thuộc \(Y\).
  • GLM giả định \(Y\) tuân theo họ phân phối hàm mũ (Exponential Family), như:
    • Normal: Dữ liệu liên tục có thể âm/dương
    • Binomial: Dữ liệu nhị phân (0/1)
    • Poisson: Dữ liệu đếm (0, 1, 2,…)
    • Gamma: Dữ liệu liên tục, dương, lệch phải

6.4. Ví dụ minh họa về hàm GLM

Tình huống:
Giả sử bạn muốn dự đoán xác suất một khách hàng mua sản phẩm (Yes = 1, No = 0) dựa trên số lần họ truy cập website (visits) và số email quảng cáo đã nhận (emails).

Ta xây dựng một mô hình GLM như sau:

  • Biến phụ thuộc: customer_response (0 hoặc 1)
  • Biến độc lập: visits, emails
  • Phân phối của Y: Bernoulli (vì purchase là nhị phân)
  • Hàm liên kết: logit (log-odds)

Phân tích 3 thành phần GLM trong ví dụ

Thành phần Hệ thống (Systematic Component)
\[ \eta = \beta_0 + \beta_1 \cdot visits + \beta_2 \cdot emails \]
Đây là tổ hợp tuyến tính của các biến độc lập.

Thành phần Ngẫu nhiên (Random Component)
Biến purchase tuân theo phân phối Bernoulli, thuộc họ phân phối hàm mũ.

Hàm Liên kết (Link Function)
Sử dụng hàm logit:
\[ g(\mu) = \log\left( \frac{\mu}{1 - \mu} \right) \]
với \(\mu = E[Y] = \text{xác suất mua hàng}\)

Phần 7: Hàm Logistic và Hàm Probit trong GLM

7.1. Hàm Logistic

Hàm liên kết (logit)

Hàm logistic sử dụng logit – log của odds (tỷ số xác suất), được định nghĩa như sau:

\[ g(\mu) = \log\left( \frac{\mu}{1 - \mu} \right) = \eta \]

Trong đó: - \(\mu = E(Y) \in (0, 1)\) là kỳ vọng của biến phản hồi nhị phân, - \(\eta = \beta_0 + \beta_1 X_1 + \cdots + \beta_k X_k\)


Hàm nghịch đảo (inverse link – logistic function)

Giải phương trình theo \(\mu\):

\[ \mu = \frac{1}{1 + e^{-\eta}} \]

Từ đó:

\[ P(Y = 1 \mid X) = \mu = \frac{e^{\eta}}{1 + e^{\eta}} = \frac{1}{1 + e^{-\eta}}, \quad P(Y = 0 \mid X) = 1 - \mu = \frac{1}{1 + e^{\eta}} \]


Đạo hàm và độ dốc

Đạo hàm của hàm logistic theo \(\eta\):

\[ \frac{d\mu}{d\eta} = \mu (1 - \mu) \]

Hàm có độ dốc lớn nhất tại \(\mu = 0.5\), và tiến dần về 0 khi \(\mu \to 0\) hoặc \(\mu \to 1\).


Hàm log-likelihood (Bernoulli)

Với dữ liệu nhị phân \(Y_i \in \{0, 1\}\), log-likelihood có dạng:

\[ \ell(\beta) = \sum_{i=1}^n \left[ y_i \log(\mu_i) + (1 - y_i) \log(1 - \mu_i) \right] \]

Trong đó:

\[ \mu_i = \frac{1}{1 + e^{-X_i\beta}} \]

Ước lượng các hệ số \(\beta\) thông qua tối đa hóa log-likelihood.

7.2. Hàm Probit

Hàm liên kết (probit)

Hàm probit sử dụng hàm phân phối tích lũy chuẩn chuẩn hóa \(\Phi\) làm nghịch đảo của liên kết:

\[ g(\mu) = \Phi^{-1}(\mu) = \eta \]

Với:

\[ \Phi(z) = \int_{-\infty}^z \frac{1}{\sqrt{2\pi}} e^{-t^2/2} dt \quad \text{và} \quad \eta = X\beta \]


Hàm nghịch đảo (inverse link – CDF chuẩn hóa)

Giải theo \(\mu\):

\[ \mu = \Phi(\eta) \quad \Rightarrow \quad P(Y = 1 \mid X) = \Phi(X\beta) \quad \text{và} \quad P(Y = 0 \mid X) = 1 - \Phi(X\beta) \]


Đạo hàm của hàm probit

Đạo hàm của \(\mu\) theo \(\eta\) là hàm mật độ chuẩn chuẩn hóa:

\[ \frac{d\mu}{d\eta} = \phi(\eta) = \frac{1}{\sqrt{2\pi}} e^{-\eta^2 / 2} \]

Khác với logistic, độ dốc của probit không phụ thuộc vào \(\mu\), mà phụ thuộc vào \(\eta\).


Hàm log-likelihood

Log-likelihood của mô hình probit:

\[ \ell(\beta) = \sum_{i=1}^n \left[ y_i \log(\Phi(X_i\beta)) + (1 - y_i) \log(1 - \Phi(X_i\beta)) \right] \]

7.3. Phân tích dữ liệu theo hàm logistic và probit

df <- read.csv("data car (2).csv")
head(df)
##      buying maint  doors persons lug_boot safety class
## 1 Expensive  high little       2    small    low unacc
## 2 Expensive  high little       2    small    low   acc
## 3 Expensive  high little       2    small   high   acc
## 4 Expensive  high little       2    small    low   acc
## 5 Expensive  high little       2    small    low   acc
## 6 Expensive  high little       2    small   high   acc
str(df)
## 'data.frame':    1728 obs. of  7 variables:
##  $ buying  : chr  "Expensive" "Expensive" "Expensive" "Expensive" ...
##  $ maint   : chr  "high" "high" "high" "high" ...
##  $ doors   : chr  "little" "little" "little" "little" ...
##  $ persons : chr  "2" "2" "2" "2" ...
##  $ lug_boot: chr  "small" "small" "small" "small" ...
##  $ safety  : chr  "low" "low" "high" "low" ...
##  $ class   : chr  "unacc" "acc" "acc" "acc" ...
df$target <- ifelse(df$class == "unacc", 0, 1)
table(df$target)
## 
##    0    1 
## 1209  519

Tổng quan phân phối biến

Sau khi biến class được chuyển thành biến nhị phân target, trong đó:

  • target = 1 biểu thị các xe có chất lượng chấp nhận được trở lên (acc),

  • target = 0 biểu thị các xe bị đánh giá là không chấp nhận được (unacc),

ta thu được phân phối như sau:

  • Số lượng xe không chấp nhận được: 1.209 quan sát (chiếm khoảng 70%)

  • Số lượng xe chấp nhận được trở lên: 519 quan sát (chiếm khoảng 30%)

df$buying <- factor(df$buying)
df$maint <- factor(df$maint)
df$safety <- factor(df$safety)

# tạo biến giả 
df_encoded <- model.matrix(target ~ buying + maint + safety, data = df)[, -1]  

df_model <- data.frame(target = df$target, df_encoded)
# Hồi quy logistic
model_logit <- glm(target ~ ., data = df_model, family = binomial(link = "logit"))
summary(model_logit)
## 
## Call:
## glm(formula = target ~ ., family = binomial(link = "logit"), 
##     data = df_model)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -0.87100    0.11892  -7.324 2.40e-13 ***
## buyinglow    0.03663    0.10784   0.340    0.734    
## maintlow     0.72796    0.10940   6.654 2.85e-11 ***
## safetylow   -0.64303    0.10950  -5.873 4.29e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 2112.2  on 1727  degrees of freedom
## Residual deviance: 2029.0  on 1724  degrees of freedom
## AIC: 2037
## 
## Number of Fisher Scoring iterations: 4

Nhận xét:

Dựa trên kết quả hồi quy logistic với hàm liên kết logit, ta nhận được các hệ số ước lượng và giá trị kiểm định như sau:

Biến maintlow có hệ số \(\hat{\beta} = 0.72796\), với giá trị p-value rất nhỏ (\(2.85 \times 10^{-11}\)), có ý nghĩa thống kê ở mức 1%. Điều này cho thấy, khi chi phí bảo trì ở mức thấp (maint = low), xác suất xe được đánh giá là “chấp nhận được trở lên” tăng lên đáng kể.

Biến safetylow có hệ số âm \(\hat{\beta} = -0.64403\) và p-value cực kỳ nhỏ (\(4.29 \times 10^{-9}\)), cũng có ý nghĩa thống kê ở mức 1%. Điều này cho thấy mức độ an toàn thấp làm giảm đáng kể xác suất xe được đánh giá là chấp nhận được.

Biến buyinglow có hệ số dương rất nhỏ \(\hat{\beta} = 0.03663\), nhưng p-value là 0.734, không có ý nghĩa thống kê, tức là ảnh hưởng của giá mua ở mức thấp không đáng kể trong việc phân biệt khả năng được chấp nhận.

Intercept (hệ số chặn) có ý nghĩa thống kê cao, và phản ánh log-odds khi tất cả các biến giả đều bằng 0

# Hồi quy probit
model_probit <- glm(target ~ ., data = df_model, family = binomial(link = "probit"))
summary(model_probit)
## 
## Call:
## glm(formula = target ~ ., family = binomial(link = "probit"), 
##     data = df_model)
## 
## Coefficients:
##              Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -0.517585   0.071355  -7.254 4.06e-13 ***
## buyinglow   -0.003252   0.064663  -0.050     0.96    
## maintlow     0.431793   0.064978   6.645 3.03e-11 ***
## safetylow   -0.385140   0.066239  -5.814 6.09e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 2112.2  on 1727  degrees of freedom
## Residual deviance: 2030.2  on 1724  degrees of freedom
## AIC: 2038.2
## 
## Number of Fisher Scoring iterations: 4

Nhận xét:

Dựa trên mô hình hồi quy Probit với hàm liên kết chuẩn, ta thu được các kết quả ước lượng và kiểm định như sau:

  • Biến maintlow có hệ số \(\hat{\beta} = 0.43179\), với giá trị p-value rất nhỏ \((3.03 \times 10^{-11})\), có ý nghĩa thống kê ở mức 1%. Điều này cho thấy, khi chi phí bảo trì ở mức thấp (maint = low), xác suất xe được đánh giá là “chấp nhận được trở lên” tăng lên đáng kể.

  • Biến safetylow có hệ số âm \(\hat{\beta} = -0.38514\) và p-value cực kỳ nhỏ \((6.09 \times 10^{-9})\), cũng có ý nghĩa thống kê ở mức 1%. Điều này cho thấy mức độ an toàn thấp làm giảm đáng kể xác suất xe được đánh giá là chấp nhận được.

  • Biến buyinglow có hệ số rất nhỏ \(\hat{\beta} = -0.00325\), với p-value là 0.96, không có ý nghĩa thống kê, tức là ảnh hưởng của giá mua ở mức thấp không đáng kể trong việc phân biệt khả năng được chấp nhận.

  • Intercept (hệ số chặn) có ý nghĩa thống kê cao, và phản ánh log-probit khi tất cả các biến giả đều bằng 0

coef_logit <- coef(model_logit)
coef_probit <- coef(model_probit)

comparison <- data.frame(
  Variable = names(coef_logit),
  Logit_Coeff = round(coef_logit, 4),
  Probit_Coeff = round(coef_probit, 4)
)
comparison
##                Variable Logit_Coeff Probit_Coeff
## (Intercept) (Intercept)     -0.8710      -0.5176
## buyinglow     buyinglow      0.0366      -0.0033
## maintlow       maintlow      0.7280       0.4318
## safetylow     safetylow     -0.6430      -0.3851

Nhận xét:

Bảng trên thể hiện sự khác biệt giữa hệ số hồi quy thu được từ mô hình LogitProbit

  • Biến maintlow có hệ số dương trong cả hai mô hình (logit: 0.7280, probit: 0.4318), cho thấy chi phí bảo trì thấp làm tăng khả năng xe được đánh giá là chấp nhận được.

  • Biến safetylow có hệ số âm ở cả hai mô hình (logit: -0.6430, probit: -0.3851), cho thấy mức độ an toàn thấp làm giảm xác suất xe được đánh giá tích cực.

  • Biến buyinglow có hệ số gần 0 ở cả hai mô hình (logit: 0.0366, probit: -0.0033) và không có ý nghĩa thống kê. Do đó, biến này không có tác động đáng kể đến khả năng xe được chấp nhận.

  • Hệ số chặn (intercept) khác biệt giữa hai mô hình (logit: -0.8710, probit: -0.5176), phản ánh khác biệt về thang đo của hai hàm liên kết, nhưng không ảnh hưởng đến ý nghĩa thống kê của các biến độc lập.

df_model$pred_logit <- predict(model_logit, type = "response")
df_model$pred_probit <- predict(model_probit, type = "response")


df_model$pred_class_logit <- ifelse(df_model$pred_logit >= 0.5, 1, 0)
df_model$pred_class_probit <- ifelse(df_model$pred_probit >= 0.5, 1, 0)


acc_logit <- mean(df_model$pred_class_logit == df_model$target)
acc_probit <- mean(df_model$pred_class_probit == df_model$target)

c("Accuracy - Logistic" = acc_logit, "Accuracy - Probit" = acc_probit)
## Accuracy - Logistic   Accuracy - Probit 
##           0.6996528           0.6996528

Sau khi chạy mô hình hồi quy logistic hoặc probit, ta sẽ thu được một giá trị xác suất dự đoán cho mỗi quan sát – ký hiệu là \(\hat{p} = P(Y = 1 | X)\), tức là xác suất để biến phụ thuộc bằng 1, dựa trên các biến đầu vào.Tuy nhiên trong bài toán data car ta cần xem mỗi quan sát nên được xếp vào nhóm 0 hay 1. Vì thế, ta cần xác định một ngưỡng phân loại – thường là 0.5:

  • Nếu xác suất dự đoán \(\hat{p} \geq 0.5\) → dự đoán là \(Y = 1\)
  • Nếu \(\hat{p} < 0.5\) → dự đoán là \(Y = 0\)

Để đánh giá độ chính xác(Accuracy) của mô hình bằng cách so sánh nhãn dự đoán với nhãn thực tế. Cụ thể, độ chính xácđược tính theo công thức:

\[ \text{Accuracy} = \frac{\text{Số lượng dự đoán đúng}}{\text{Tổng số quan sát}} = \frac{\sum_{i=1}^{n} I(\hat{y}_i = y_i)}{n} \]

Trong đó: - \(\hat{y}_i\): kết quả mô hình dự đoán (sau phân loại) - \(y_i\): nhãn thực tế của dữ liệu - \(I(\hat{y}_i = y_i)\): hàm chỉ thị, trả về 1 nếu dự đoán đúng, 0 nếu sai

Nhận xét kết quả thu được

Sau khi áp dụng cả hai mô hình vào bộ dữ liệu xe, ta thu được kết quả phân loại với độ chính xác (Accuracy) như sau:

  • Hồi quy Logistic: 0.6996528
  • Hồi quy Probit: 0.6996528

-> Cả hai mô hình đều cho ra độ chính xác hoàn toàn giống nhau, tức là khoảng 70% các trường hợp đã được dự đoán đúng so với dữ liệu thực tế.Điều này cho thấy hai mô hình có hiệu suất tương đương nhau trên bộ dữ liệu này khi sử dụng cùng một tập biến giải thích và ngưỡng phân loại 0.5.