Dữ liệu được sử dụng trong bài tập này có tên là “Student Spending Habits”, tạm dịch: Thói quen chi tiêu của sinh viên.
Bộ dữ liệu được thu thập và công bố trên nền tảng Kaggle, nhằm phục vụ mục đích học tập và nghiên cứu trong lĩnh vực phân tích dữ liệu.
Nguồn trích dẫn cụ thể: Student Spending Habits Dataset
Dữ liệu mô phỏng kết quả khảo sát về tình hình chi tiêu của sinh viên đại học, bao gồm nhiều nhóm đối tượng khác nhau dựa trên đặc điểm nhân khẩu học và ngành học. Thông tin được thu thập thông qua bảng khảo sát trực tuyến, với trọng tâm là các khoản chi tiêu thường gặp cũng như sự khác biệt trong hành vi tài chính của sinh viên.
Bộ dữ liệu “Student Spending” mô phỏng chi tiết thói quen chi tiêu của 1.000 sinh viên đại học đến từ nhiều nhóm nhân khẩu học và chuyên ngành khác nhau. Mỗi quan sát tương ứng với một sinh viên, bao gồm thông tin cá nhân (tuổi, giới tính, năm học, chuyên ngành), thu nhập và hỗ trợ tài chính, cùng với các khoản chi tiêu theo từng danh mục cụ thể và phương thức thanh toán ưa thích.
library(readr)
library(readxl)
library(dplyr)
##
## 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
library(skimr)
library(psych)
library(csv)
library(DT)
library(ggplot2)
##
## Attaching package: 'ggplot2'
## The following objects are masked from 'package:psych':
##
## %+%, alpha
library(forcats)
library(knitr)
library(tibble)
library(kableExtra)
##
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
##
## group_rows
library(DescTools)
##
## Attaching package: 'DescTools'
## The following objects are masked from 'package:psych':
##
## AUC, ICC, SD
data <- read_xlsx("F:/PTDLDT/student_spending_modified.xlsx")
datatable(data)
Trước khi tiến hành phân tích, ta cần tìm hiểu cụ thể các biến có trong bộ dữ liệu, bao gồm tên biến, kiểu dữ liệu và ý nghĩa nội dung. Việc hiểu rõ các biến giúp xác định chính xác phương pháp xử lý phù hợp cho từng loại biến (định tính hay định lượng).
Tên của các biến trong bộ dữ liệu có thể được liệt kê thông qua lệnh names() như sau:
names(data)
## [1] "Unnamed: 0" "age"
## [3] "gender" "year_in_school"
## [5] "major" "monthly_income"
## [7] "financial_aid" "tuition"
## [9] "housing" "food"
## [11] "transportation" "books_supplies"
## [13] "entertainment" "personal_care"
## [15] "technology" "health_wellness"
## [17] "miscellaneous" "preferred_payment_method"
Dưới đây là bảng mô tả chi tiết từng biến:
variable_description <- data.frame(
Bien = c("Unnamed: 0", "Age", "Gender", "Year in School", "Major",
"Monthly Income", "Financial Aid", "Tuition", "Housing", "Food",
"Transportation", "Books & Supplies", "Entertainment",
"Personal Care", "Technology", "Health & Wellness",
"Miscellaneous", "Preferred Payment Method"),
Mo_ta = c("Chỉ số dòng trong tập dữ liệu (tự sinh ra, có thể bỏ qua)",
"Tuổi của sinh viên",
"Giới tính của sinh viên (Nam, Nữ)",
"Năm học hiện tại (Năm nhất, Năm hai, Năm ba, Năm cuối)",
"Ngành học chính của sinh viên",
"Thu nhập hàng tháng của sinh viên (USD)",
"Số tiền hỗ trợ tài chính/học bổng nhận được (USD)",
"Chi phí học phí hàng tháng (USD)",
"Chi phí nhà ở hàng tháng (USD)",
"Chi phí thực phẩm hàng tháng (USD)",
"Chi phí đi lại hàng tháng (USD)",
"Chi phí sách vở và dụng cụ học tập (USD)",
"Chi phí giải trí hàng tháng (USD)",
"Chi phí chăm sóc cá nhân hàng tháng (USD)",
"Chi phí công nghệ hàng tháng (USD)",
"Chi phí sức khỏe và chăm sóc sức khỏe (USD)",
"Các chi phí lặt vặt khác (USD)",
"Phương thức thanh toán ưa thích (Tiền mặt, Thẻ tín dụng/Ghi nợ, Ứng dụng thanh toán)"),
stringsAsFactors = FALSE
)
kbl(variable_description, col.names = c("Biến", "Mô tả"), booktabs = TRUE) %>%
kable_styling(latex_options = c("striped", "hold_position"))
Biến | Mô tả |
---|---|
Unnamed: 0 | Chỉ số dòng trong tập dữ liệu (tự sinh ra, có thể bỏ qua) |
Age | Tuổi của sinh viên |
Gender | Giới tính của sinh viên (Nam, Nữ) |
Year in School | Năm học hiện tại (Năm nhất, Năm hai, Năm ba, Năm cuối) |
Major | Ngành học chính của sinh viên |
Monthly Income | Thu nhập hàng tháng của sinh viên (USD) |
Financial Aid | Số tiền hỗ trợ tài chính/học bổng nhận được (USD) |
Tuition | Chi phí học phí hàng tháng (USD) |
Housing | Chi phí nhà ở hàng tháng (USD) |
Food | Chi phí thực phẩm hàng tháng (USD) |
Transportation | Chi phí đi lại hàng tháng (USD) |
Books & Supplies | Chi phí sách vở và dụng cụ học tập (USD) |
Entertainment | Chi phí giải trí hàng tháng (USD) |
Personal Care | Chi phí chăm sóc cá nhân hàng tháng (USD) |
Technology | Chi phí công nghệ hàng tháng (USD) |
Health & Wellness | Chi phí sức khỏe và chăm sóc sức khỏe (USD) |
Miscellaneous | Các chi phí lặt vặt khác (USD) |
Preferred Payment Method | Phương thức thanh toán ưa thích (Tiền mặt, Thẻ tín dụng/Ghi nợ, Ứng dụng thanh toán) |
Để có cái nhìn tổng quan về dữ liệu, ta sử dụng hàm
str()
. Lệnh này sẽ hiển thị tổng số dòng (quan sát) và số
cột (biến), tên các biến cùng kiểu dữ liệu tương ứng (số, chuỗi ký tự,
nhân tố), cũng như một vài giá trị đầu tiên của từng biến, giúp xác định
nhanh cấu trúc và đặc điểm cơ bản của tập dữ liệu.
str(data)
## tibble [1,000 × 18] (S3: tbl_df/tbl/data.frame)
## $ Unnamed: 0 : num [1:1000] 0 1 2 3 4 5 6 7 8 9 ...
## $ age : num [1:1000] 19 24 24 23 20 25 23 23 22 18 ...
## $ gender : chr [1:1000] "Male" "Female" "Female" "Female" ...
## $ year_in_school : chr [1:1000] "Freshman" "Junior" "Junior" "Senior" ...
## $ major : chr [1:1000] "Economics" "Economics" "Psychology" "Economics" ...
## $ monthly_income : num [1:1000] 470 1155 632 1462 1772 ...
## $ financial_aid : num [1:1000] 270 875 928 265 522 790 69 748 248 74 ...
## $ tuition : num [1:1000] 4519 8165 5434 8899 7268 ...
## $ housing : num [1:1000] 709 557 666 652 825 413 812 571 599 626 ...
## $ food : num [1:1000] 296 365 220 289 372 386 398 269 354 249 ...
## $ transportation : num [1:1000] 62 78 241 187 124 277 124 121 195 225 ...
## $ books_supplies : num [1:1000] 188 252 99 223 194 131 213 251 155 123 ...
## $ entertainment : num [1:1000] 41 74 130 99 48 73 21 37 123 51 ...
## $ personal_care : num [1:1000] 78 92 23 30 71 38 38 90 41 74 ...
## $ technology : num [1:1000] 134 226 239 163 88 234 157 152 162 243 ...
## $ health_wellness : num [1:1000] 127 129 112 105 71 108 117 56 172 34 ...
## $ miscellaneous : num [1:1000] 72 68 133 55 104 99 48 62 194 196 ...
## $ preferred_payment_method: chr [1:1000] "Cash" "Credit/Debit Card" "Cash" "Credit/Debit Card" ...
Dựa trên kết quả từ str()
, bộ dữ liệu bao gồm
1.000 quan sát và 18 biến. Trong đó,
các biến thể hiện thông tin nhân khẩu học, tình hình tài chính, chi tiêu
và hành vi thanh toán của sinh viên.
Để phục vụ cho quá trình phân tích, ta cần xác định các biến định tính trong bộ dữ liệu. Việc này giúp phân biệt giữa các biến phân loại (danh mục) và biến định lượng, từ đó lựa chọn phương pháp phân tích phù hợp. Trong R, ta có thể sử dụng đoạn mã sau để lọc ra tên các biến định tính:
qualitative_vars <- names(data)[sapply(data, function(x) is.factor(x) || is.character(x))]
qualitative_vars
## [1] "gender" "year_in_school"
## [3] "major" "preferred_payment_method"
Câu lệnh trên trả về danh sách các biến có kiểu dữ liệu là factor hoặc character, vốn thường được dùng để biểu diễn thông tin phân loại như giới tính, ngành học, hoặc phương thức thanh toán.
Phân tích dữ liệu tập trung vào việc khám phá đặc điểm chi tiêu của sinh viên, và đánh giá vai trò của các biến định tính trong việc phản ánh thông tin cá nhân và hành vi tiêu dùng.
Sau khi lọc và kiểm tra kiểu dữ liệu, có thể xác định được 4 biến định tính chính trong bộ dữ liệu như sau:
Gender
: Giới tính của sinh viên
(Male – Nam, Female – Nữ)
Year in School
: Năm học hiện tại của sinh viên
(Freshman – Năm nhất, Sophomore – Năm hai, Junior – Năm ba, Senior –
Năm cuối)
Major
: Ngành học chính
Preferred Payment Method
: Phương thức thanh toán ưa
thích
(Cash – Tiền mặt, Credit/Debit Card – Thẻ tín dụng/Ghi nợ, Mobile
Payment App – Ứng dụng thanh toán di động)
Ngoài ra, các biến định lượng phản ánh tình hình tài chính và chi tiêu bao gồm:
Monthly Income
: Thu nhập hàng tháng (USD)Financial Aid
: Học bổng/Hỗ trợ tài chính (USD)Tuition
, Housing
, Food
,
Transportation
, Books & Supplies
,
Entertainment
, Personal Care
,
Technology
, Health & Wellness
,
Miscellaneous
: Các khoản chi tiêu cụ thể theo danh mục
(USD)Trong 4 biến định tính, ta chọn ra 1 biến phụ thuộc là
preferred payment method.
Mục đích là để kiểm tra xem sự phân bố lựa chọn phương thức thanh toán
có chịu ảnh hưởng bởi các yếu tố khác như giới tính, năm học hoặc ngành
học hay không.
Việc này giúp xác định liệu có mối liên hệ đáng kể nào giữa đặc điểm
nhân khẩu học và hành vi chi tiêu của sinh viên, từ đó hỗ trợ phân tích
sâu hơn ở các bước tiếp theo.
Sau khi đã xác định được các biến định tính, ta tiến hành trích lọc
riêng các biến này để phục vụ phân tích mô tả và kiểm định giả thuyết
cho từng nhóm phân loại. Tập con dữ liệu mới này được đặt tên là
dldt
để tiện thao tác và xử lý trong các bước tiếp
theo.
dldt <- data[, qualitative_vars]
Bảng tần số
tanso_gender <- table(dldt$gender)
tanso_gender
##
## Female Male
## 483 517
Biểu đồ
barplot(
tanso_gender,
main = "Tần số theo giới tính",
xlab = "Giới tính",
ylab = "Số quan sát",
las = 1,
col = c("pink", "blue"),
border = "white")
Bảng tần suất
tansuat_gender <- tanso_gender/sum(nrow(dldt))
tansuat_gender
##
## Female Male
## 0.483 0.517
Biểu đồ
# Màu cho từng lát
cols <- c("pink", "green","yellow")
# Nhãn phần trăm
nhangender <- paste0(round(tansuat_gender * 100, 1), "%")
# Vẽ pie chart không nhãn
pie(
tansuat_gender,
labels = NA, # ẩn nhãn ngay trên lát
main = "Tần suất theo giới tính",
col = cols,
border = "white"
)
# Thêm legend bên ngoài góc phải
legend(
x = "topright",
legend = paste(names(tansuat_gender), nhangender),
fill = cols,
)
Nhận xét:
Kết quả phân tích cho thấy cơ cấu giới tính trong bộ dữ liệu khá đồng đều giữa ba nhóm:
Biểu đồ tần số và tần suất cho thấy sự phân bố giới tính tương đối cân bằng, với sự chênh lệch không đáng kể giữa các nhóm. Điều này cho thấy dữ liệu được thu thập khá đại diện, tạo điều kiện thuận lợi cho việc phân tích so sánh theo giới tính trong các phần tiếp theo.
n_female <- sum(dldt$gender == "Female")
n_total <- nrow(dldt)
prop.test(n_female, n_total, conf.level = 0.95)
##
## 1-sample proportions test with continuity correction
##
## data: n_female out of n_total, null probability 0.5
## X-squared = 1.089, df = 1, p-value = 0.2967
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.4516554 0.5144768
## sample estimates:
## p
## 0.483
Tỷ lệ ước lượng: Khoảng *48.3%** sinh viên trong mẫu là nữ.
Khoảng tin cậy 95%: nằm trong khoảng từ 45.17% đến 51.45%.
Diễn giải: Kết quả kiểm định cho thấy tỷ lệ sinh
viên nữ trong mẫu là khoảng 48.3%. Khoảng tin cậy 95% cho tỷ lệ này được
tính từ kết quả prop.test()
. Vì khoảng tin cậy bao gồm 50%
và p-value lớn hơn 0.05, ta không có đủ bằng chứng để kết luận rằng tỷ
lệ sinh viên nữ trong tổng thể khác 50%.
Giả thuyết H₀ (H0): Tỷ lệ sinh viên nữ trong tổng thể là 50% (p = 0.5).
Giả thuyết H₁ (H1): Tỷ lệ sinh viên nữ trong tổng thể khác 50% (p ≠ 0.5).
Quy tắc quyết định:
Nếu p-value < 0.05 → Bác bỏ giả thuyết H₀: Có đủ bằng chứng thống kê để kết luận rằng tỷ lệ sinh viên nữ khác 50%.
Nếu p-value ≥ 0.05 → Không bác bỏ giả thuyết H₀: Chưa đủ bằng chứng để kết luận tỷ lệ sinh viên nữ khác 50%.
prop.test(n_female, n_total, p = 0.5, alternative = "two.sided", conf.level = 0.95)
##
## 1-sample proportions test with continuity correction
##
## data: n_female out of n_total, null probability 0.5
## X-squared = 1.089, df = 1, p-value = 0.2967
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.4516554 0.5144768
## sample estimates:
## p
## 0.483
→ Kết quả: p-value = 0.2967 > 0.05 → chưa
có đủ cơ sở để bác bỏ giả thuyết H₀.
Do đó, không có đủ bằng chứng để kết luận rằng tỷ lệ sinh viên nữ khác
50%. Trong mẫu khảo sát, tỷ lệ này là khoảng 48.3%, khá gần với mức giả
định.
Bảng tần số
tanso_year <- table(dldt$year_in_school)
tanso_year
##
## Freshman Junior Senior Sophomore
## 253 247 254 246
Biểu đồ
barplot(
tanso_year,
main = "Tần số theo năm học",
xlab = "Năm học",
ylab = "Số quan sát",
las = 1,
col = c("skyblue", "orange", "lightgreen", "plum"),
border = "white"
)
Bảng tần suất
tansuat_year <- tanso_year / sum(tanso_year)
tansuat_year
##
## Freshman Junior Senior Sophomore
## 0.253 0.247 0.254 0.246
Biểu đồ
# Màu cho từng lát
cols <- c("skyblue", "orange", "lightgreen", "plum")
# Nhãn phần trăm
nhan_year <- paste0(round(tansuat_year * 100, 1), "%")
# Vẽ biểu đồ tròn
pie(
tansuat_year,
labels = NA,
main = "Tần suất theo năm học",
col = cols,
border = "white"
)
# Thêm chú thích
legend(
x = "topright",
legend = paste(names(tansuat_year), nhan_year),
fill = cols
)
Nhận xét:
Kết quả phân tích cho thấy cơ cấu năm học trong bộ dữ liệu khá đồng đều giữa bốn nhóm:
Freshman (Năm nhất): chiếm khoảng 25.3%
Sophomore (Năm hai): chiếm khoảng 24.6%
Junior (Năm ba): chiếm khoảng 24.7%
Senior (Năm tư): chiếm khoảng 25.4%
Biểu đồ tần số và tần suất cho thấy sự phân bố sinh viên theo năm học tương đối cân bằng, với sự chênh lệch rất nhỏ giữa các nhóm. Điều này cho thấy dữ liệu được thu thập khá đại diện cho các năm học, tạo điều kiện thuận lợi cho các phân tích so sánh theo năm học trong các phần tiếp theo.
n_freshman <- sum(dldt$year_in_school == "Freshman")
n_total <- nrow(dldt)
prop.test(n_freshman, n_total, conf.level = 0.95)
##
## 1-sample proportions test with continuity correction
##
## data: n_freshman out of n_total, null probability 0.5
## X-squared = 243.05, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.2265552 0.2813702
## sample estimates:
## p
## 0.253
Tỷ lệ ước lượng: Khoảng 25.3% sinh viên trong mẫu là sinh viên năm nhất.
Khoảng tin cậy 95%: nằm trong khoảng từ 22.66% đến 28.14%.
Diễn giải: Kết quả kiểm định cho thấy tỷ lệ sinh
viên năm nhất trong mẫu là khoảng 25.3%. Khoảng tin cậy 95% cho tỷ lệ
này được tính từ kết quả prop.test()
. Vì khoảng tin cậy
không bao gồm 50% và p-value nhỏ hơn 0.05, ta có thể kết luận rằng tỷ lệ
sinh viên năm nhất trong tổng thể khác 50% với độ tin
cậy cao.
Giả thuyết H₀ (H0): Tỷ lệ sinh viên năm nhất trong tổng thể là 20% (p = 0.2).
Giả thuyết H₁ (H1): Tỷ lệ sinh viên năm nhất trong tổng thể bé hơn 20% (p < 0.2).
Quy tắc quyết định:
Nếu p-value < 0.05 → Bác bỏ giả thuyết H₀: Có đủ bằng chứng thống kê để kết luận rằng tỷ lệ sinh viên năm nhất nhỏ hơn 20%.
Nếu p-value ≥ 0.05 → Không đủ cơ sở bác bỏ giả thuyết H₀: Chưa đủ bằng chứng để kết luận tỷ lệ sinh viên năm nhất nhỏ hơn 20%.
prop.test(n_freshman, n_total, p = 0.2, alternative = "less", conf.level = 0.95)
##
## 1-sample proportions test with continuity correction
##
## data: n_freshman out of n_total, null probability 0.2
## X-squared = 17.227, df = 1, p-value = 1
## alternative hypothesis: true p is less than 0.2
## 95 percent confidence interval:
## 0.0000000 0.2767716
## sample estimates:
## p
## 0.253
→ Kết quả: p-value = 1 > 0.05 → không đủ cơ sở bác bỏ giả thuyết H₀. Do đó, chưa có đủ bằng chứng thống kê để kết luận rằng tỷ lệ sinh viên năm nhất nhỏ hơn 20%. Tỷ lệ thực tế trong mẫu là khoảng 25.3%, cao hơn so với giả định ban đầu.
Bảng tần số
tanso_major <- table(dldt$major)
tanso_major
##
## Biology Computer Science Economics Engineering
## 210 160 375 132
## Psychology
## 123
Biểu đồ
barplot(
tanso_major,
main = "Tần số theo chuyên ngành",
xlab = "Chuyên ngành",
ylab = "Số quan sát",
las = 1,
col = rainbow(length(tanso_major)),
border = "white",
cex.names = 0.8
)
Bảng tần suất
tansuat_major <- tanso_major / nrow(dldt)
tansuat_major
##
## Biology Computer Science Economics Engineering
## 0.210 0.160 0.375 0.132
## Psychology
## 0.123
Biểu đồ
cols_major <- rainbow(length(tansuat_major))
nhanmajor <- paste0(round(tansuat_major * 100, 1), "%")
pie(
tansuat_major,
labels = NA,
main = "Tần suất theo chuyên ngành",
col = cols_major,
border = "white"
)
legend(
x = "topright",
legend = paste(names(tansuat_major), nhanmajor),
fill = cols_major,
)
Nhận xét:
Kết quả phân tích cho thấy cơ cấu chuyên ngành trong bộ dữ liệu có sự phân bố tương đối đồng đều giữa năm nhóm chính:
Biology: chiếm khoảng 21%
Computer Science: chiếm khoảng 16%
Economics: chiếm khoảng 37.5%
Engineering: chiếm khoảng 13.2%
Psychology: chiếm khoảng 12.3%
Biểu đồ tần số và tần suất cho thấy sự phân bố sinh viên theo chuyên ngành khá cân bằng, với một chút chênh lệch giữa các nhóm. Nhóm Biology có số lượng sinh viên cao nhất (228 sinh viên), trong khi các nhóm còn lại dao động từ 184 đến 204 sinh viên. Điều này cho thấy dữ liệu được thu thập tương đối đồng đều giữa các chuyên ngành, hỗ trợ tốt cho các phân tích tiếp theo theo chuyên ngành học.
most_common_major <- names(which.max(tanso_major))
most_common_major
## [1] "Economics"
n_major <- max(tanso_major)
n_total <- nrow(dldt)
prop.test(n_major, n_total, conf.level = 0.95)
##
## 1-sample proportions test with continuity correction
##
## data: n_major out of n_total, null probability 0.5
## X-squared = 62.001, df = 1, p-value = 3.433e-15
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.3450362 0.4059364
## sample estimates:
## p
## 0.375
Tỷ lệ ước lượng: Khoảng 37.5% sinh viên thuộc chuyên ngành phổ biến nhất (Economics).
Diễn giải: Dựa trên kết quả kiểm định, tỷ lệ sinh
viên thuộc chuyên ngành phổ biến nhất được ước lượng và khoảng tin cậy
95% được tính bằng prop.test()
.
Giả thuyết H₀ (H0): Tỷ lệ sinh viên theo chuyên ngành phổ biến nhất là 20% (p = 0.2).
Giả thuyết H₁ (H1): Tỷ lệ sinh viên theo chuyên ngành đó lớn hơn 20% (p > 0.2).
Quy tắc quyết định:
Nếu p-value < 0.05 → bác bỏ H₀
Nếu p-value ≥ 0.05 → không bác bỏ H₀
prop.test(n_major, n_total, p = 0.2, alternative = "greater", conf.level = 0.95)
##
## 1-sample proportions test with continuity correction
##
## data: n_major out of n_total, null probability 0.2
## X-squared = 190.31, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is greater than 0.2
## 95 percent confidence interval:
## 0.3496955 1.0000000
## sample estimates:
## p
## 0.375
→ Kết quả: p-value = < 2.2e-16 < 0.05 →
đủ cơ sở để bác bỏ giả thuyết H₀.
Do đó, có đủ bằng chứng thống kê để kết luận rằng tỷ lệ sinh
viên chọn chuyên ngành Biology lớn hơn 20%.
Tỷ lệ thực tế trong mẫu là khoảng 37.5%, cao hơn so với
giả định ban đầu.
Bảng tần số
tanso_payment <- table(dldt$preferred_payment_method)
tanso_payment
##
## Cash Credit/Debit Card Mobile Payment App
## 342 291 367
Biểu đồ
barplot(
tanso_payment,
main = "Tần số theo phương thức thanh toán ưa thích",
xlab = "Phương thức",
ylab = "Số quan sát",
las = 1,
col = terrain.colors(length(tanso_payment)),
border = "white")
Bảng tần suất
tansuat_payment <- tanso_payment / nrow(dldt)
tansuat_payment
##
## Cash Credit/Debit Card Mobile Payment App
## 0.342 0.291 0.367
Biểu đồ
cols_payment <- terrain.colors(length(tansuat_payment))
nhanpayment <- paste0(round(tansuat_payment * 100, 1), "%")
pie(
tansuat_payment,
labels = NA,
main = "Tần suất theo phương thức thanh toán ưa thích",
col = cols_payment,
border = "white"
)
legend(
x = "topright",
legend = paste(names(tansuat_payment), nhanpayment),
fill = cols_payment,
)
Nhận xét:
Kết quả phân tích cho thấy cơ cấu Preferred Payment Method trong bộ dữ liệu có sự phân bố tương đối đồng đều giữa ba nhóm chính:
Cash: chiếm khoảng 34.2%
Credit/Debit Card: chiếm khoảng 29.1%
Mobile Payment App: chiếm khoảng 36.7%
Biểu đồ tần số và tần suất cho thấy sự phân bố theo phương thức thanh toán khá cân bằng, với một chút chênh lệch giữa các nhóm. Nhóm Mobile Payment App có số lượng người dùng cao nhất (367 người), trong khi các nhóm còn lại dao động từ 342 đến 291 người. Điều này cho thấy dữ liệu được thu thập tương đối đồng đều giữa các phương thức thanh toán, hỗ trợ tốt cho các phân tích tiếp theo về hành vi người dùng.
most_common_payment <- names(which.max(tanso_payment))
most_common_payment
## [1] "Mobile Payment App"
n_payment <- max(tanso_payment)
n_total <- nrow(dldt)
prop.test(n_payment, n_total, conf.level = 0.95)
##
## 1-sample proportions test with continuity correction
##
## data: n_payment out of n_total, null probability 0.5
## X-squared = 70.225, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.3371990 0.3978359
## sample estimates:
## p
## 0.367
Tỷ lệ ước lượng: Khoảng 36.7% sinh viên chọn phương thức thanh toán phổ biến nhất (Mobile Payment App).
Giả thuyết H₀ (H0): Tỷ lệ chọn phương thức thanh toán phổ biến nhất là 30% (p = 0.3).
Giả thuyết H₁ (H1): Tỷ lệ chọn phương thức đó lớn hơn 30% (p > 0.3).
Quy tắc quyết định:
Nếu p-value < 0.05 → bác bỏ H₀
Nếu p-value ≥ 0.05 → không bác bỏ H₀
prop.test(n_payment, n_total, p = 0.3, alternative = "greater", conf.level = 0.95)
##
## 1-sample proportions test with continuity correction
##
## data: n_payment out of n_total, null probability 0.3
## X-squared = 21.058, df = 1, p-value = 2.228e-06
## alternative hypothesis: true p is greater than 0.3
## 95 percent confidence interval:
## 0.3418282 1.0000000
## sample estimates:
## p
## 0.367
→ Kết quả: p-value = 0.000002228 < 0.05 →
bác bỏ giả thuyết H₀.
Do đó, có đủ bằng chứng thống kê để kết luận rằng tỷ lệ chọn
phương thức thanh toán phổ biến nhất lớn hơn 30%.
Tỷ lệ thực tế trong mẫu là khoảng 36.7%, cao hơn so với
giả định ban đầu.
Bảng tần số
GP <- table(dldt$gender, dldt$preferred_payment_method)
GP
##
## Cash Credit/Debit Card Mobile Payment App
## Female 112 188 183
## Male 230 103 184
addmargins(table(dldt$gender, dldt$preferred_payment_method))
##
## Cash Credit/Debit Card Mobile Payment App Sum
## Female 112 188 183 483
## Male 230 103 184 517
## Sum 342 291 367 1000
Biểu đồ
ggplot(
dldt %>%
group_by(gender, preferred_payment_method) %>%
summarise(count = n()) %>%
ungroup(),
aes(x = gender, y = count, fill = preferred_payment_method)
) +
geom_col(position = position_dodge()) +
geom_text(aes(label = count), position = position_dodge(width = 0.9), vjust = -0.5) +
labs(
title = "Số lượng sinh viên theo giới tính và phương thức thanh toán ưa thích",
y = "Số lượng",
x = "Giới tính",
fill = "Phương thức ưa thích"
) +
theme_minimal()
## `summarise()` has grouped output by 'gender'. You can override using the
## `.groups` argument.
Nhận xét
Khi xét theo giới tính, có thể thấy sự lựa chọn phương thức thanh toán phân bố như sau:
Nhìn chung, từ bảng số liệu có thể thấy sự phân bố phương thức thanh toán giữa nam và nữ có sự khác biệt rõ rệt. Cụ thể, nữ giới có xu hướng sử dụng Credit/Debit Card nhiều hơn, trong khi nam giới lại chuộng thanh toán bằng tiền mặt (Cash). Sự khác biệt này cho thấy giới tính có thể ảnh hưởng đến lựa chọn phương thức thanh toán. Để xác nhận điều này, cần thực hiện kiểm định thống kê (ví dụ như kiểm định Chi-square).
chisq.test(GP)
##
## Pearson's Chi-squared test
##
## data: GP
## X-squared = 64.463, df = 2, p-value = 1.005e-14
Giả thuyết kiểm định:
Giải thích ý nghĩa kiểm định:
Kết quả kiểm định:
Kết luận thống kê:
Vì p-value = 1.005e-14 < 0.05, ta bác bỏ giả thuyết H₀. Do đó, có thể kết luận rằng giới tính ảnh hưởng đến lựa chọn phương thức thanh toán. Nói cách khác, cách sinh viên chọn phương thức thanh toán có khác biệt đáng kể giữa các nhóm giới tính trong tập dữ liệu này.
Giả thuyết H₀ (H0): Tỷ lệ sinh viên nữ chọn thanh toán bằng tiền mặt bằng với tỷ lệ sinh viên nam chọn thanh toán bằng tiền mặt (p₁ = p₂).
Giả thuyết H₁ (H1): Tỷ lệ sinh viên nữ chọn thanh toán bằng tiền mặt khác với tỷ lệ sinh viên nam (p₁ ≠ p₂).
Quy tắc quyết định:
Nếu p-value < 0.05 → bác bỏ H₀
Nếu p-value ≥ 0.05 → không đủ cơ sở bác bỏ H₀
# Lấy số người chọn Cash theo giới tính
n_female <- GP["Female", "Cash"]
n_male <- GP["Male", "Cash"]
# Tổng số người nam/nữ chỉ xét Cash và Mobile Payment App
total_female <- GP["Female", "Cash"] + GP["Female", "Mobile Payment App"]
total_male <- GP["Male", "Cash"] + GP["Male", "Mobile Payment App"]
# Kiểm định chênh lệch tỷ lệ
prop.test(
x = c(n_female, n_male),
n = c(total_female, total_male),
alternative = "two.sided",
conf.level = 0.95
)
##
## 2-sample test for equality of proportions with continuity correction
##
## data: c(n_female, n_male) out of c(total_female, total_male)
## X-squared = 20.646, df = 1, p-value = 5.526e-06
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## -0.25199541 -0.09979367
## sample estimates:
## prop 1 prop 2
## 0.3796610 0.5555556
→ Kết quả: p-value = 5.526e-06 < 0.05 →
bác bỏ giả thuyết H₀.
Điều này cho thấy có thể khẳng định rằng giới tính có ảnh hưởng
đến tỷ lệ sinh viên chọn thanh toán bằng tiền mặt.
Tỷ lệ thực tế trong mẫu là khoảng *37.97% ở nữ và 55.56% ở nam**,cho thấy có sự khác biệt rõ rệt giữa hai nhóm giới tính về xu hướng chọn phương thức thanh toán này.
Trong phân tích thống kê, các chỉ số như Relative Risk (RR) và Odds Ratio (OR) chỉ được áp dụng hợp lý trong bối cảnh của bảng 2x2, tức là khi so sánh hai nhóm phân loại trong biến độc lập và hai mức kết quả trong biến phụ thuộc.
Do đó, để đảm bảo điều kiện áp dụng và diễn giải có ý nghĩa:
Việc giới hạn phân tích vào hai nhóm này giúp:
sub_data <- subset(dldt, gender %in% c("Male", "Female") & preferred_payment_method %in% c("Cash", "Mobile Payment App"))
table(sub_data$gender, sub_data$preferred_payment_method)
##
## Cash Mobile Payment App
## Female 112 183
## Male 230 184
Sau khi lọc, ta thu được bảng chéo giữa giới tính và năm học. Tiếp theo, ta tính toán Relative Risk để so sánh xác suất là thanh toán tiền mặt giữa hai nhóm giới tính:
library(epitools)
riskratio(table(sub_data$gender, sub_data$preferred_payment_method))
## $data
##
## Cash Mobile Payment App Total
## Female 112 183 295
## Male 230 184 414
## Total 342 367 709
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## Female 1.0000000 NA NA
## Male 0.7164542 0.6229259 0.8240251
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Female NA NA NA
## Male 3.795396e-06 4.545244e-06 3.837678e-06
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Điều này cho thấy:
Nam giới có vẻ ít chọn phương thức thanh toán bằng ví điện tử hơn so với nữ giới.
Vì khoảng tin cậy 95% không bao gồm giá trị 1, ta có thể kết luận rằng có sự khác biệt có ý nghĩa thống kê giữa nam và nữ trong việc lựa chọn ví điện tử.
Cụ thể, tỷ lệ chọn ví điện tử ở nam thấp hơn đáng kể so với nữ, cho thấy giới tính là một yếu tố ảnh hưởng đến xu hướng sử dụng phương thức thanh toán hiện đại này.
oddsratio(sub_data$gender, sub_data$preferred_payment_method)
## $data
## Outcome
## Predictor Cash Mobile Payment App Total
## Female 112 183 295
## Male 230 184 414
## Total 342 367 709
##
## $measure
## odds ratio with 95% C.I.
## Predictor estimate lower upper
## Female 1.0000000 NA NA
## Male 0.4903417 0.3607397 0.664281
##
## $p.value
## two-sided
## Predictor midp.exact fisher.exact chi.square
## Female NA NA NA
## Male 3.795396e-06 4.545244e-06 3.837678e-06
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
Nhận xét:
Odds ratio = 0.4903 cho thấy nữ giới có xu hướng chọn
thanh toán bằng tiền mặt (so với ví điện tử) thấp hơn so với nam
giới.
Nói cách khác, khả năng chọn tiền mặt ở nữ giới chỉ bằng khoảng
49% so với nam giới.
Khoảng tin cậy 95% cho odds ratio không bao gồm giá trị 1, cho thấy có sự khác biệt có ý nghĩa thống kê giữa hai nhóm giới tính trong lựa chọn giữa Cash và Mobile Payment App.
Điều này cho thấy giới tính có thể là yếu tố ảnh hưởng đến xu hướng lựa chọn hình thức thanh toán trong mẫu khảo sát này.
Kết luận:
Trong mẫu khảo sát này, giới tính có ảnh hưởng rõ rệt đến việc
lựa chọn giữa tiền mặt và ví điện tử. Cụ thể, nữ giới
có xu hướng sử dụng ví điện tử nhiều hơn, trong khi nam
giới có xu hướng chọn tiền mặt nhiều hơn.
Bảng tần số
YP <- table(dldt$year_in_school, dldt$preferred_payment_method)
YP
##
## Cash Credit/Debit Card Mobile Payment App
## Freshman 74 92 87
## Junior 77 72 98
## Senior 95 68 91
## Sophomore 96 59 91
Biểu đồ
ggplot(
dldt %>%
group_by(year_in_school, preferred_payment_method) %>%
summarise(count = n()) %>%
ungroup(),
aes(x = year_in_school, y = count, fill = preferred_payment_method)
) +
geom_col(position = position_dodge()) +
geom_text(aes(label = count), position = position_dodge(width = 0.9), vjust = -0.5) +
labs(
title = "Số lượng sinh viên theo năm học và phương thức thanh toán ưa thích",
y = "Số lượng",
x = "Năm học",
fill = "Phương thức ưa thích"
) +
theme_minimal()
## `summarise()` has grouped output by 'year_in_school'. You can override using
## the `.groups` argument.
Nhận xét
Khi xét theo năm học, có thể thấy sự lựa chọn phương thức thanh toán phân bố như sau:
Nhìn chung, từ bảng số liệu có thể thấy nhóm sinh viên năm nhất (Freshman) có xu hướng sử dụng Credit/Debit Card cao hơn so với các nhóm khác, trong khi nhóm Sophomore và Senior có tỷ lệ chọn Cash cao hơn.
Phân bố giữa ba phương thức thanh toán ở các nhóm năm học không hoàn toàn giống nhau, cho thấy năm học có thể ảnh hưởng đến xu hướng lựa chọn phương thức thanh toán. Tuy nhiên, cần thực hiện kiểm định thống kê để xác định liệu sự khác biệt này có ý nghĩa hay không.
chisq.test(YP)
##
## Pearson's Chi-squared test
##
## data: YP
## X-squared = 13.207, df = 6, p-value = 0.03987
Giả thuyết kiểm định:
Giải thích ý nghĩa kiểm định:
Kết quả kiểm định:
Kết luận thống kê:
Vì p-value = 0.03987 < 0.05, ta bác bỏ giả thuyết H₀. Do đó, có đủ bằng chứng thống kê để kết luận rằng năm học có ảnh hưởng đến lựa chọn phương thức thanh toán.
Nói cách khác, cách sinh viên chọn phương thức thanh toán có sự khác biệt đáng kể giữa các nhóm năm học trong tập dữ liệu này.
Giả thuyết H₀ (H0): Tỷ lệ sinh viên năm nhất (Freshman) chọn thanh toán bằng Credit/Debit Card nhỏ hơn hoặc bằng tỷ lệ sinh viên năm tư (Senior) chọn phương thức này (p₁ ≤ p₂).
Giả thuyết H₁ (H1): Tỷ lệ sinh viên năm nhất (Freshman) chọn thanh toán bằng Credit/Debit Card lớn hơn so với sinh viên năm tư (p₁ > p₂).
Quy tắc quyết định:
# Lấy số sinh viên chọn Credit/Debit Card theo năm học
n_freshman <- YP["Freshman", "Credit/Debit Card"]
n_senior <- YP["Senior", "Credit/Debit Card"]
# Tổng số sinh viên Freshman và Senior chọn Credit/Debit Card hoặc Mobile Payment App
total_freshman <- YP["Freshman", "Credit/Debit Card"] + YP["Freshman", "Mobile Payment App"]
total_senior <- YP["Senior", "Credit/Debit Card"] + YP["Senior", "Mobile Payment App"]
# Kiểm định chênh lệch tỷ lệ chọn Credit/Debit Card giữa Freshman và Senior
prop.test(
x = c(n_freshman, n_senior),
n = c(total_freshman, total_senior),
alternative = "greater",
conf.level = 0.95
)
##
## 2-sample test for equality of proportions with continuity correction
##
## data: c(n_freshman, n_senior) out of c(total_freshman, total_senior)
## X-squared = 2.181, df = 1, p-value = 0.06986
## alternative hypothesis: greater
## 95 percent confidence interval:
## -0.008755192 1.000000000
## sample estimates:
## prop 1 prop 2
## 0.5139665 0.4276730
→ Kết quả: p-value = 0.06986 > 0.05 →
không đủ cơ sở để bác bỏ giả thuyết H₀.
Điều này cho thấy chưa có đủ bằng chứng thống kê để kết luận
rằng sinh viên năm nhất có tỷ lệ chọn thanh toán bằng Credit/Debit Card
cao hơn sinh viên năm tư.
Tỷ lệ thực tế trong mẫu là khoảng 51.40% ở năm nhất (Freshman) và 42.77% ở năm tư (Senior), cho thấy sự khác biệt không đáng kể giữa hai nhóm về xu hướng lựa chọn phương thức thanh toán này.
sub_data <- subset(dldt, year_in_school %in% c("Freshman", "Senior") & preferred_payment_method %in% c("Cash", "Credit/Debit Card"))
table(sub_data$year_in_school, sub_data$preferred_payment_method)
##
## Cash Credit/Debit Card
## Freshman 74 92
## Senior 95 68
Sau khi lọc, ta thu được bảng chéo giữa năm học và phương thức thanh toán ưa thích. Tiếp theo, ta tính toán Relative Risk để so sánh xác suất là thanh toán bằng thẻ giữa hai nhóm năm học:
library(epitools)
riskratio(table(sub_data$year_in_school, sub_data$preferred_payment_method))
## $data
##
## Cash Credit/Debit Card Total
## Freshman 74 92 166
## Senior 95 68 163
## Total 169 160 329
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## Freshman 1.0000000 NA NA
## Senior 0.7527341 0.5998569 0.9445729
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Freshman NA NA NA
## Senior 0.01333132 0.01523654 0.01290107
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Nhận xét:
Sinh viên năm tư có vẻ chọn phương thức thanh toán bằng thẻ (Credit/Debit Card) nhiều hơn so với sinh viên năm nhất.
Tuy nhiên, khoảng tin cậy 95% cho risk ratio là [0.916 ; 1.349], bao gồm giá trị 1, cho thấy không thể kết luận chắc chắn rằng có sự khác biệt thật sự giữa hai nhóm.
Nói cách khác, không loại trừ khả năng rằng sinh viên năm nhất và năm tư có tỷ lệ chọn thẻ tương đương, và năm học có thể không phải là yếu tố ảnh hưởng rõ rệt đến việc lựa chọn phương thức thanh toán này.
oddsratio(table(sub_data$year_in_school, sub_data$preferred_payment_method), rev = 'c')
## $data
##
## Credit/Debit Card Cash Total
## Freshman 92 74 166
## Senior 68 95 163
## Total 160 169 329
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## Freshman 1.00000 NA NA
## Senior 1.73296 1.120811 2.69155
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Freshman NA NA NA
## Senior 0.01333132 0.01523654 0.01290107
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
Nhận xét:
Odds ratio = 1.733 cho thấy sinh viên năm nhất có xu
hướng chọn thanh toán bằng Credit/Debit Card cao hơn so với
sinh viên năm tư.
Nói cách khác, khả năng chọn thẻ ở sinh viên năm nhất cao hơn
khoảng 73.3% so với sinh viên năm tư.
Khoảng tin cậy 95% cho odds ratio là (1.1208 ; 2.6916), không bao gồm giá trị 1, cho thấy sự khác biệt này có ý nghĩa thống kê.
Kết luận:
Có đủ bằng chứng để kết luận rằng năm học (Freshman vs
Senior) có ảnh hưởng đến xu hướng lựa chọn Credit/Debit
Card so với Cash, với sinh viên năm nhất có xu hướng sử dụng
thẻ nhiều hơn.
Bảng tần số
MP <- table(dldt$major, dldt$preferred_payment_method)
MP
##
## Cash Credit/Debit Card Mobile Payment App
## Biology 77 20 113
## Computer Science 49 23 88
## Economics 80 224 71
## Engineering 70 19 43
## Psychology 66 5 52
Biểu đồ
ggplot(
dldt %>%
group_by(major, preferred_payment_method) %>%
summarise(count = n()) %>%
ungroup(),
aes(x = major, y = count, fill = preferred_payment_method)
) +
geom_col(position = position_dodge()) +
geom_text(aes(label = count), position = position_dodge(width = 0.9), vjust = -0.5) +
labs(
title = "Số lượng sinh viên theo ngành học và phương thức thanh toán ưa thích",
y = "Số lượng",
x = "Ngành học",
fill = "Phương thức ưa thích"
) +
theme_minimal()
## `summarise()` has grouped output by 'major'. You can override using the
## `.groups` argument.
Nhận xét
Khi xét theo ngành học, có thể thấy sự lựa chọn phương thức thanh toán phân bố không đồng đều:
Tổng quan:
chisq.test(MP)
##
## Pearson's Chi-squared test
##
## data: MP
## X-squared = 308.49, df = 8, p-value < 2.2e-16
Giả thuyết kiểm định:
Giải thích ý nghĩa kiểm định:
Kết quả kiểm định:
Kết luận thống kê:
Vì p-value < 0.05, ta bác bỏ giả thuyết
H₀.
Điều này cho thấy có sự khác biệt có ý nghĩa thống kê
trong phân bố phương thức thanh toán giữa các nhóm ngành
học.
Nói cách khác, ngành học có ảnh hưởng đáng kể đến lựa chọn phương thức thanh toán của sinh viên trong bộ dữ liệu này..
Giả thuyết H₀ (H0): Tỷ lệ sinh viên ngành Economics chọn thanh toán bằng Credit/Debit Card lớn hơn hoặc bằng tỷ lệ sinh viên ngành Biology chọn phương thức này (p₁ ≥ p₂).
Giả thuyết H₁ (H1): Tỷ lệ sinh viên ngành Economics chọn thanh toán bằng Credit/Debit Card nhỏ hơn so với ngành Biology (p₁ < p₂).
Quy tắc quyết định:
# Lấy số sinh viên chọn Credit/Debit Card theo ngành học
n_economics <- MP["Economics", "Credit/Debit Card"]
n_biology <- MP["Biology", "Credit/Debit Card"]
# Tổng số sinh viên ngành Economics và Biology chọn Credit/Debit Card hoặc Mobile Payment App
total_economics <- MP["Economics", "Credit/Debit Card"] + MP["Economics", "Mobile Payment App"]
total_biology <- MP["Biology", "Credit/Debit Card"] + MP["Biology", "Mobile Payment App"]
# Kiểm định chênh lệch tỷ lệ chọn Credit/Debit Card giữa Economics và Biology
prop.test(
x = c(n_economics, n_biology),
n = c(total_economics, total_biology),
alternative = "less",
conf.level = 0.95
)
##
## 2-sample test for equality of proportions with continuity correction
##
## data: c(n_economics, n_biology) out of c(total_economics, total_biology)
## X-squared = 136.22, df = 1, p-value = 1
## alternative hypothesis: less
## 95 percent confidence interval:
## -1.0000000 0.6797846
## sample estimates:
## prop 1 prop 2
## 0.7593220 0.1503759
→ Kết quả: p-value = 1 > 0.05 → không đủ
cơ sở để bác bỏ giả thuyết H₀.
Điều này cho thấy chưa có đủ bằng chứng thống kê để kết luận
rằng sinh viên ngành Economics có tỷ lệ chọn thanh toán bằng
Credit/Debit Card thấp hơn sinh viên ngành Biology.
Tỷ lệ thực tế trong mẫu là khoảng 75.93% ở ngành Economics và 15.04% ở ngành Biology, cho thấy mặc dù tỷ lệ ở nhóm Economics cao hơn rõ rệt, nhưng sự khác biệt này không đạt ý nghĩa thống kê theo kiểm định tỉ lệ với giả thuyết một phía..
sub_data2 <- subset(dldt, major %in% c("Biology", "Economics") & preferred_payment_method %in% c("Credit/Debit Card", "Mobile Payment App"))
table(sub_data2$major, sub_data2$preferred_payment_method)
##
## Credit/Debit Card Mobile Payment App
## Biology 20 113
## Economics 224 71
Sau khi lọc, ta thu được bảng chéo giữa ngành học và phương thức thanh toán ưa thích. Tiếp theo, ta tính toán Relative Risk để so sánh xác suất là thanh toán bằng ví điện tử giữa hai nhóm năm học:
library(epitools)
riskratio(table(sub_data2$major, sub_data2$preferred_payment_method))
## $data
##
## Credit/Debit Card Mobile Payment App Total
## Biology 20 113 133
## Economics 224 71 295
## Total 244 184 428
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## Biology 1.0000000 NA NA
## Economics 0.2832758 0.2284895 0.3511986
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Biology NA NA NA
## Economics 0 2.070183e-33 5.130155e-32
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Nhận xét:
Tỷ lệ sinh viên ngành Economics sử dụng Mobile Payment App chỉ bằng khoảng 28.3% so với sinh viên ngành Biology, cho thấy một sự chênh lệch tương đối lớn về tỷ lệ sử dụng giữa hai nhóm ngành.
Tuy nhiên, vì khoảng tin cậy 95% của RR là [0.2285 ; 0.3512] và không chứa giá trị 1, nên sự khác biệt này có ý nghĩa thống kê.
Kết luận:
Kết quả cho thấy ngành học (Economics so với Biology)
có ảnh hưởng đáng kể đến xu hướng lựa chọn Mobile Payment
App.
oddsratio(table(sub_data2$major, sub_data2$preferred_payment_method), rev = 'both')
## $data
##
## Mobile Payment App Credit/Debit Card Total
## Economics 71 224 295
## Biology 113 20 133
## Total 184 244 428
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## Economics 1.00000000 NA NA
## Biology 0.05689156 0.03214652 0.09636029
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Economics NA NA NA
## Biology 0 2.070183e-33 5.130155e-32
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
Nhận xét:
Odds ratio = 0.0569 cho thấy sinh viên ngành Economics có xu hướng chọn Mobile Payment App (so với Credit/Debit Card) thấp hơn rất nhiều so với sinh viên ngành Biology.
Đồng thời, khoảng tin cậy 95% không bao gồm giá trị 1, cho thấy sự khác biệt này là có ý nghĩa thống kê.
Kết luận:
Kết quả chỉ ra rằng ngành học (Economics so với
Biology) có ảnh hưởng rõ rệt đến xu hướng lựa
chọn giữa Mobile Payment App và Credit/Debit
Card..
Mục tiêu:
Phần này nhằm phân tích xem giới tính của sinh viên có ảnh hưởng như thế nào đến khả năng lựa chọn phương thức thanh toán bằng tiền mặt (Cash). Cụ thể:
Biến phụ thuộc là preferred_payment_method, được mã hóa lại thành biến nhị phân payment_binary, với:
1 nếu sinh viên chọn Cash
0 nếu chọn phương thức khác (Credit/Debit Card hoặc Mobile Payment App)
Biến giải thích là gender, phân loại thành hai nhóm: male (0) và female (1).
Việc ước lượng được thực hiện bằng phương pháp Maximum Likelihood Estimation, sử dụng hàm liên kết logit để liên hệ giữa xác suất xảy ra sự kiện (chọn Cash) và giới tính của sinh viên.
Công thức tổng quát của mô hình như sau:
\[ \log\left( \frac{P(\text{payment\_binary} = 1)}{1 - P(\text{payment\_binary} = 1)} \right) = \beta_0 + \beta_1 \cdot \text{gender} \]
Trong đó:
gender
, phản ánh mức thay đổi log-odds khi chuyển từ nam
sang nữ.data <- data[data$gender %in% c("Male", "Female"), ]
data$payment_binary <- ifelse(data$preferred_payment_method == "Cash", 1, 0)
# Mã hóa giới tính: male = 0, female = 1
data$gender <- factor(data$gender, levels = c("Male", "Female"))
# Hồi quy logit
model_logit <- glm(payment_binary ~ gender, data = data, family = binomial(link = "logit"))
# Kết quả hồi quy
summary(model_logit)
##
## Call:
## glm(formula = payment_binary ~ gender, family = binomial(link = "logit"),
## data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.2214 0.0885 -2.502 0.0124 *
## genderFemale -0.9763 0.1395 -6.999 2.57e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1284.7 on 999 degrees of freedom
## Residual deviance: 1233.5 on 998 degrees of freedom
## AIC: 1237.5
##
## Number of Fisher Scoring iterations: 4
Nhận xét:
Kết quả từ mô hình hồi quy logistic nhị phân cho thấy hệ số chặn
(Intercept
) là -0.2214, còn hệ số của biến
genderFemale là -0.9763, với ý nghĩa
thống kê rất cao (p-value < 0.001). Điều này cho
thấy rằng khi giới tính là nữ, xác suất chọn
thanh toán bằng tiền mặt (cash) giảm đáng
kể so với nam giới.
Nếu chuyển hệ số logit sang tỷ số odds (odds ratio), ta được:
\[ \exp(-0.9763) \approx 0.376 \]
→ Tức là, nữ giới có khả năng chọn thanh toán bằng tiền mặt thấp hơn khoảng 62.4% so với nam giới.
Công thức hồi quy từ mô hình:
\[ \log \left( \frac{P(\text{payment} = \text{"cash"})}{1 - P(\text{payment} = \text{"cash"})} \right) = -0.2214 - 0.9763 \cdot \text{genderFemale} \]
Về mức độ phù hợp của mô hình, sai số log-likelihood đã giảm từ 1284.7 (null deviance) xuống 1233.5 (residual deviance) khi thêm biến giới tính. Giá trị AIC = 1237.5 cho thấy mô hình có mức phù hợp tương đối tốt và có thể dùng để so sánh với các mô hình khác trong phần sau.
Mục tiêu:
Phần này nhằm xây dựng mô hình hồi quy logit đa biến để đánh giá tác động đồng thời của giới tính, thu nhập hàng tháng và mức học phí đến khả năng sinh viên lựa chọn phương thức thanh toán bằng tiền mặt (Cash).
Trong đó, hai biến định lượng monthly_income và tuition được phân nhóm thành ba mức (thấp, trung bình, cao) nhằm:
Đảm bảo điều kiện áp dụng kiểm định Chi-squared với biến phụ thuộc định tính.
Kiểm tra sơ bộ xem các nhóm giá trị khác nhau của từng biến có liên hệ thống kê đáng kể với lựa chọn phương thức thanh toán hay không.
Sau khi xác định được các biến có mối liên hệ đáng kể, ta đưa tất cả vào mô hình logit để lượng hóa ảnh hưởng của từng yếu tố, từ đó làm rõ vai trò của đặc điểm nhân khẩu học và chi tiêu trong hành vi lựa chọn phương thức thanh toán của sinh viên.
Giả thuyết kiểm định:
Giải thích ý nghĩa kiểm định:
data$income_group <- cut(data$monthly_income,
breaks = quantile(data$monthly_income, probs = c(0, 1/3, 2/3, 1), na.rm = TRUE),
labels = c("Low", "Medium", "High"),
include.lowest = TRUE)
chisq.test(table(data$income_group, data$preferred_payment_method))
##
## Pearson's Chi-squared test
##
## data: table(data$income_group, data$preferred_payment_method)
## X-squared = 531.9, df = 4, p-value < 2.2e-16
Kết quả kiểm định:
Kết luận thống kê:
Vì p-value < 0.05, ta bác bỏ giả thuyết
H₀.
Điều này cho thấy có đủ bằng chứng thống kê để kết luận rằng thu
nhập hàng tháng có ảnh hưởng đến lựa chọn phương thức thanh
toán.
Nói cách khác, cách sinh viên lựa chọn phương thức thanh toán khác biệt đáng kể giữa các nhóm thu nhập khác nhau trong bộ dữ liệu này.
Giả thuyết kiểm định:
Giải thích ý nghĩa kiểm định:
data$tuition_group <- cut(data$tuition,
breaks = quantile(data$tuition, probs = c(0, 1/3, 2/3, 1), na.rm = TRUE),
labels = c("Low", "Medium", "High"),
include.lowest = TRUE)
chisq.test(table(data$tuition_group, data$preferred_payment_method))
##
## Pearson's Chi-squared test
##
## data: table(data$tuition_group, data$preferred_payment_method)
## X-squared = 1014.7, df = 4, p-value < 2.2e-16
Kết quả kiểm định:
Kết luận thống kê:
Vì p-value < 0.05, ta bác bỏ giả thuyết
H₀.
Điều này cho thấy có đủ bằng chứng thống kê để kết luận rằng mức
học phí có ảnh hưởng đến lựa chọn phương thức thanh toán.
Nói cách khác, cách sinh viên lựa chọn phương thức thanh toán khác biệt đáng kể giữa các nhóm mức học phí khác nhau trong bộ dữ liệu này.
Sau khi xác định được hai biến định lượng có mối liên hệ thống kê với biến phụ thuộc thông qua kiểm định Chi-squared, ta tiến hành xây dựng mô hình hồi quy logistic đa biến nhằm phân tích các yếu tố ảnh hưởng đến xu hướng lựa chọn phương thức thanh toán bằng tiền mặt của sinh viên.
Cấu trúc mô hình như sau:
Biến phụ thuộc:
preferred_payment_method
, được mã hóa nhị phân thành
payment_binary
Các biến giải thích:
gender
(giới tính)monthly_income
(thu nhập hàng tháng)tuition
(học phí)Mô hình được ước lượng bằng phương pháp Maximum Likelihood Estimation (MLE) với hàm liên kết logit, cho phép ước tính xác suất một sinh viên lựa chọn Cash dưới ảnh hưởng đồng thời của giới tính, thu nhập và mức học phí.
# Mô hình logit đa biến
model_logit_multi <- glm(payment_binary ~ gender + monthly_income + tuition,
data = data,
family = binomial(link = "logit"))
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
summary(model_logit_multi)
##
## Call:
## glm(formula = payment_binary ~ gender + monthly_income + tuition,
## family = binomial(link = "logit"), data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 36.8420268 4.2158493 8.739 < 2e-16 ***
## genderFemale -0.3164211 0.3942190 -0.803 0.422
## monthly_income -0.0066120 0.0011097 -5.958 2.55e-09 ***
## tuition -0.0058609 0.0007313 -8.015 1.10e-15 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1284.71 on 999 degrees of freedom
## Residual deviance: 180.59 on 996 degrees of freedom
## AIC: 188.59
##
## Number of Fisher Scoring iterations: 10
Nhận xét:
Kết quả hồi quy từ mô hình logit nhị phân cho thấy hành vi lựa chọn phương thức thanh toán bằng tiền mặt (Cash) của sinh viên bị ảnh hưởng đáng kể bởi hai yếu tố tài chính là thu nhập hàng tháng và mức học phí, trong khi yếu tố giới tính không thể hiện tác động rõ ràng trong mô hình này.
Hệ số chặn (Intercept) có giá trị dương rất lớn (36.842) và có ý nghĩa thống kê cao (p < 0.001), phản ánh log-odds lựa chọn Cash ở nhóm tham chiếu – tức sinh viên nam với mức thu nhập và học phí bằng 0. Đây là giá trị kỹ thuật ban đầu, mang tính tham khảo.
Biến monthly_income
có hệ số
-0.0066, với giá trị p gần bằng 0 (p < 0.001), cho
thấy khi thu nhập tăng, xác suất sinh viên chọn thanh
toán bằng tiền mặt giảm đáng kể. Diễn giải theo xu
hướng thực tế, sinh viên có thu nhập cao hơn thường tiếp cận với các
hình thức thanh toán hiện đại như thẻ ngân hàng hoặc ứng dụng ví điện
tử.
Tương tự, biến tuition
có hệ số âm
-0.0059 và mức ý nghĩa thống kê cao (p < 0.001), cho
thấy mức học phí cao hơn cũng liên quan đến khả
năng chọn Cash thấp hơn. Điều này có thể phản ánh rằng sinh
viên có học phí cao thường thuộc nhóm có điều kiện tài chính tốt hơn và
quen thuộc với phương thức thanh toán phi tiền mặt.
Trong khi đó, biến genderFemale
có
hệ số -0.3164, tuy nhiên không có ý nghĩa thống
kê (p = 0.422), cho thấy không có sự khác biệt rõ rệt
giữa nam và nữ trong xu hướng sử dụng tiền mặt.
Ngoài ra, giá trị AIC = 188.6 và Residual Deviance giảm mạnh từ 1284.7 xuống 180.6 cho thấy mô hình phù hợp tốt với dữ liệu. Điều này khẳng định rằng các yếu tố định lượng tài chính có vai trò quan trọng hơn giới tính trong việc lý giải hành vi thanh toán của sinh viên.
Mục tiêu:
Phần này nhằm đánh giá xem giới tính có ảnh hưởng như thế nào đến xác suất sinh viên lựa chọn phương thức thanh toán bằng tiền mặt (Cash), thông qua mô hình hồi quy nhị phân Probit.
preferred_payment_method
, được mã hóa thành
payment_binary
:
gender
, gồm:
Mô hình Probit được sử dụng nhằm ước lượng xác suất lựa chọn Cash theo giới tính, với giả định rằng sai số trong mô hình tuân theo phân phối chuẩn chuẩn hóa. Các hệ số được ước lượng bằng phương pháp tối đa hóa hàm khả năng (MLE).
Công thức tổng quát của mô hình Probit:
\[ P(\text{payment\_binary} = 1) = \Phi(\beta_0 + \beta_1 \cdot \text{gender}) \]
Trong đó:
gender
, phản ánh ảnh hưởng của việc là nữ đối với xác
suất lựa chọn thanh toán bằng tiền mặt.# Hồi quy probit
model_probit <- glm(payment_binary ~ gender, data = data, family = binomial(link = "probit"))
# Kết quả hồi quy
summary(model_probit)
##
## Call:
## glm(formula = payment_binary ~ gender, family = binomial(link = "probit"),
## data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.13862 0.05531 -2.506 0.0122 *
## genderFemale -0.59403 0.08380 -7.088 1.36e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1284.7 on 999 degrees of freedom
## Residual deviance: 1233.5 on 998 degrees of freedom
## AIC: 1237.5
##
## Number of Fisher Scoring iterations: 4
Nhận xét:
Kết quả từ mô hình Probit nhị phân cho thấy giới tính có ảnh hưởng
đáng kể đến xác suất sinh viên lựa chọn phương thức thanh toán bằng tiền
mặt. Hệ số chặn (Intercept
) có giá trị
-0.1386, đại diện cho logit chuẩn hóa khi sinh viên là
nam. Trong khi đó, hệ số của biến genderFemale là
-0.5940, và có ý nghĩa thống kê rất cao
(p-value < 0.001), cho thấy sinh viên nữ có xác suất
chọn Cash thấp hơn đáng kể so với sinh viên nam.
Mặc dù hệ số Probit không thể trực tiếp diễn giải như hệ số Logit hay
Odds Ratio, dấu âm của hệ số vẫn cho thấy chiều hướng tác động tiêu cực
của biến genderFemale
đến xác suất chọn Cash. Nghĩa là,
sinh viên nữ ít có khả năng sử dụng tiền mặt hơn nam giới khi chi
tiêu.
Công thức mô hình có thể biểu diễn như sau:
\[ P(\text{payment\_binary} = 1) = \Phi(-0.1386 - 0.5940 \cdot \text{genderFemale}) \]
Trong đó \(\Phi(.)\) là hàm phân phối tích lũy chuẩn.
Về mức độ phù hợp của mô hình, residual deviance đã giảm từ 1284.7 xuống 1233.5, cho thấy biến giới tính đã góp phần giải thích đáng kể xác suất lựa chọn phương thức thanh toán. Giá trị AIC = 1237.5 cũng cung cấp cơ sở để so sánh với các mô hình khác về sau.
# Mô hình logit đa biến
model_probit_multi <- glm(payment_binary ~ gender + monthly_income + tuition,
data = data,
family = binomial(link = "probit"))
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
summary(model_probit_multi)
##
## Call:
## glm(formula = payment_binary ~ gender + monthly_income + tuition,
## family = binomial(link = "probit"), data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 20.6081758 2.1752204 9.474 < 2e-16 ***
## genderFemale -0.1720241 0.2202715 -0.781 0.435
## monthly_income -0.0037296 0.0005923 -6.297 3.04e-10 ***
## tuition -0.0032771 0.0003809 -8.604 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1284.71 on 999 degrees of freedom
## Residual deviance: 179.59 on 996 degrees of freedom
## AIC: 187.59
##
## Number of Fisher Scoring iterations: 11
Nhận xét:
Kết quả hồi quy từ mô hình probit nhị phân cho thấy hành vi lựa chọn phương thức thanh toán bằng tiền mặt (Cash) của sinh viên bị ảnh hưởng đáng kể bởi hai yếu tố tài chính là thu nhập hàng tháng và mức học phí, trong khi yếu tố giới tính không thể hiện tác động có ý nghĩa thống kê.
Hệ số chặn (intercept) có giá trị rất lớn (20.61) và có ý nghĩa thống kê cao (p < 0.001). Đây là mức xác suất khởi điểm trong mô hình, đại diện cho sinh viên nam với mức thu nhập và học phí bằng 0 trong thang đo chuẩn hóa của Probit.
Biến monthly_income có hệ số âm (-0.0037), với p-value rất nhỏ (p < 0.001), cho thấy khi thu nhập tăng, xác suất sinh viên chọn thanh toán bằng tiền mặt giảm. Kết quả này phản ánh thực tế rằng sinh viên có thu nhập cao thường sử dụng các phương thức thanh toán hiện đại hơn như thẻ ngân hàng hoặc ví điện tử.
Biến tuition cũng có hệ số âm (-0.0033) và có ý nghĩa thống kê cao (p < 0.001), cho thấy sinh viên có học phí cao hơn có xu hướng không sử dụng tiền mặt. Điều này có thể xuất phát từ việc họ thuộc nhóm có điều kiện tài chính tốt và quen thuộc hơn với các phương thức thanh toán phi tiền mặt.
Trong khi đó, biến genderFemale có hệ số âm (-0.1720), nhưng không có ý nghĩa thống kê (p = 0.435), cho thấy không có sự khác biệt rõ rệt giữa nam và nữ trong hành vi lựa chọn phương thức thanh toán bằng tiền mặt.
Xét về độ phù hợp của mô hình, residual deviance giảm mạnh từ 1284.71 xuống còn 179.59 và AIC đạt 187.59, cho thấy mô hình probit này phù hợp tốt với dữ liệu và có thể giải thích hành vi thanh toán của sinh viên chủ yếu dựa trên các yếu tố tài chính hơn là giới tính.
Hồi quy Cloglog (complementary log-log) là một dạng mở rộng của mô hình hồi quy nhị phân, tương tự như Logit và Probit, nhưng sử dụng một hàm liên kết không đối xứng. Mô hình này đặc biệt hữu ích trong các tình huống mà xác suất xảy ra của biến phụ thuộc rất thấp (sự kiện hiếm gặp) hoặc rất cao (gần như chắc chắn).
Không giống như Logit hay Probit – vốn có hàm liên kết đối xứng – hàm liên kết trong Cloglog nghiêng về một phía, giúp mô hình phản ánh tốt hơn các tình huống mất cân bằng về phân phối nhị phân của biến phụ thuộc.
Cấu trúc toán học
Hàm liên kết của mô hình Cloglog được thể hiện như sau:
\[ \log[-\log(1 - P(Y = 1))] = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \cdots + \beta_k X_k \]
Từ đó, ta có thể suy ra xác suất xảy ra sự kiện:
\[ P(Y = 1 \mid X) = 1 - \exp\left[-\exp(\beta_0 + \beta_1 X_1 + \cdots + \beta_k X_k)\right] \]
Do đặc điểm bất đối xứng của hàm liên kết, mô hình Cloglog thường được lựa chọn trong những trường hợp mà Logit và Probit không mô phỏng tốt các tình huống xác suất phân bố lệch.
Công thức tổng quát của mô hình Cloglog:
\[ \log[-\log(1 - P(\text{payment\_binary} = 1))] = \beta_0 + \beta_1 \cdot \text{gender} \]
Hay tương đương với:
\[ P(\text{payment\_binary} = 1) = 1 - \exp\left[-\exp(\beta_0 + \beta_1 \cdot \text{gender})\right] \]
Trong đó:
gender
, phản ánh ảnh hưởng của việc là nữ đối với xác suất
lựa chọn thanh toán bằng tiền mặt.# Hồi quy probit
model_cloglog <- glm(payment_binary ~ gender, data = data, family = binomial(link = "cloglog"))
# Kết quả hồi quy
summary(model_cloglog)
##
## Call:
## glm(formula = payment_binary ~ gender, family = binomial(link = "cloglog"),
## data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.53008 0.06689 -7.924 2.30e-15 ***
## genderFemale -0.80243 0.11600 -6.918 4.59e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1284.7 on 999 degrees of freedom
## Residual deviance: 1233.5 on 998 degrees of freedom
## AIC: 1237.5
##
## Number of Fisher Scoring iterations: 5
Nhận xét
Kết quả từ mô hình hồi quy nhị phân với hàm liên kết Cloglog cho thấy giới tính có ảnh hưởng đáng kể đến xác suất sinh viên lựa chọn phương thức thanh toán bằng tiền mặt (Cash).
Intercept
) là
-0.53008
, đại diện cho log-hazard khi sinh viên là nam
(nhóm tham chiếu).genderFemale
là
-0.80243
và có ý nghĩa thống kê rất cao (p-value <
0.001), cho thấy rằng sinh viên nữ có xác suất chọn Cash thấp
hơn đáng kể so với sinh viên nam.Trong mô hình Cloglog, các hệ số thể hiện ảnh hưởng lên log[-log(1 - P)], vì vậy không thể diễn giải trực tiếp như odds ratio. Tuy nhiên, dấu âm của hệ số cho thấy chiều hướng tác động tiêu cực – tức là khi giới tính chuyển từ nam sang nữ, xác suất chọn Cash giảm.
Công thức mô hình có thể biểu diễn như sau:
\[ \log[-\log(1 - P(\text{payment\_binary} = 1))] = -0.53008 - 0.80243 \cdot \text{genderFemale} \]
Hay viết lại theo xác suất:
\[ P(\text{payment\_binary} = 1) = 1 - \exp\left[-\exp(-0.53008 - 0.80243 \cdot \text{genderFemale})\right] \]
Về mức độ phù hợp của mô hình, residual deviance đã
giảm từ 1284.7
xuống 1233.5
, cho thấy biến
giới tính có đóng góp vào việc lý giải hành vi chọn phương thức thanh
toán. Giá trị AIC = 1237.5 cũng phản ánh mức độ phù hợp
của mô hình khi so sánh với các mô hình khác.
# Mô hình logit đa biến
model_cloglog_multi <- glm(payment_binary ~ gender + monthly_income + tuition,
data = data,
family = binomial(link = "cloglog"))
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
summary(model_cloglog_multi)
##
## Call:
## glm(formula = payment_binary ~ gender + monthly_income + tuition,
## family = binomial(link = "cloglog"), data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 21.1915286 2.2116004 9.582 < 2e-16 ***
## genderFemale -0.0930571 0.2292175 -0.406 0.685
## monthly_income -0.0038647 0.0006239 -6.195 5.83e-10 ***
## tuition -0.0034742 0.0003911 -8.884 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1284.71 on 999 degrees of freedom
## Residual deviance: 189.73 on 996 degrees of freedom
## AIC: 197.73
##
## Number of Fisher Scoring iterations: 11
Nhận xét
Kết quả từ mô hình hồi quy nhị phân với hàm liên kết Cloglog cho thấy hành vi lựa chọn phương thức thanh toán bằng tiền mặt (Cash) của sinh viên chịu ảnh hưởng đáng kể từ hai yếu tố tài chính là thu nhập hàng tháng và mức học phí, trong khi yếu tố giới tính không có tác động đáng kể về mặt thống kê.
Hệ số chặn (Intercept) có giá trị rất lớn (21.19) và có ý nghĩa thống kê cao (p < 0.001). Hệ số này đại diện cho log[-log(1 - P)] khi sinh viên là nam và có thu nhập, học phí bằng 0 – một giá trị kỹ thuật thể hiện mức khởi điểm của mô hình trong không gian log-hazard.
Biến monthly_income
có hệ số âm
(-0.0039) với p-value rất nhỏ (p < 0.001), cho thấy khi thu nhập
tăng, xác suất sinh viên chọn thanh toán bằng tiền mặt giảm đáng
kể. Điều này phù hợp với thực tế rằng sinh viên có thu nhập cao
thường sử dụng các phương thức hiện đại như thẻ hoặc ví điện
tử.
Biến tuition
cũng có hệ số âm
(-0.0035) và có ý nghĩa thống kê cao (p < 0.001), cho thấy sinh viên
có học phí cao hơn có xu hướng ít sử dụng tiền mặt hơn.
Kết quả này cho thấy học phí có thể đại diện cho điều kiện tài chính và
mức độ quen thuộc với các phương thức thanh toán phi tiền mặt.
Biến genderFemale
có hệ số âm nhỏ
(-0.0931) và không có ý nghĩa thống kê (p = 0.685), cho
thấy không có sự khác biệt đáng kể giữa nam và nữ trong
xác suất lựa chọn thanh toán bằng tiền mặt trong mô hình này.
Residual deviance giảm mạnh từ 1284.71 xuống 189.73 sau khi đưa các biến vào mô hình, cùng với giá trị AIC = 197.73 phản ánh mức độ phù hợp cao của mô hình Cloglog với dữ liệu. Nhìn chung, các yếu tố tài chính có vai trò quan trọng hơn giới tính trong việc giải thích hành vi thanh toán của sinh viên.
AIC(model_logit_multi)
## [1] 188.5944
AIC(model_probit_multi)
## [1] 187.5895
AIC(model_cloglog_multi)
## [1] 197.7313
Trong ba mô hình được so sánh, mô hình Probit có giá trị AIC thấp nhất (187.5895), cho thấy đây là lựa chọn phù hợp nhất theo tiêu chí đánh giá AIC.
BrierScore(model_logit_multi)
## [1] 0.02830116
BrierScore(model_probit_multi)
## [1] 0.0283894
BrierScore(model_cloglog_multi)
## [1] 0.02950196
Chỉ số Brier Score của ba mô hình hồi quy nhị phân như sau:
Brier Score phản ánh sai số trung bình bình phương giữa xác suất dự đoán và kết quả thực tế (0 hoặc 1). Giá trị càng thấp cho thấy mô hình dự báo xác suất càng chính xác.
Trong kết quả trên, mô hình logit đạt Brier Score thấp nhất, cho thấy khả năng dự đoán xác suất chính xác hơn hai mô hình còn lại. Probit có hiệu năng tương đương với logit nhưng kém hơn một chút. Trong khi đó, cloglog là mô hình có độ chính xác thấp nhất trong ba mô hình xét theo tiêu chí Brier.
Tuy sự chênh lệch là khá nhỏ, đặc biệt giữa logit và probit, nhưng vẫn có thể kết luận rằng*logit là mô hình hiệu quả nhất về mặt dự báo xác suất trong trường hợp này.
# Tính xác suất dự đoán từ mô hình logit đa biến
prob <- predict(model_logit_multi, type = "response")
# Đảm bảo cùng độ dài với dữ liệu ban đầu (loại NA nếu có)
actual <- model_logit_multi$y # Đây là y gốc đã dùng trong mô hình
predicted <- ifelse(prob >= 0.5, 1, 0)
# Tạo ma trận nhầm lẫn
conf_mat <- table(Predicted = predicted, Actual = actual)
print(conf_mat)
## Actual
## Predicted 0 1
## 0 636 15
## 1 22 327
library(caret)
## Loading required package: lattice
##
## Attaching package: 'caret'
## The following objects are masked from 'package:DescTools':
##
## MAE, RMSE
confusionMatrix(as.factor(predicted), as.factor(actual), positive = "1")
## Confusion Matrix and Statistics
##
## Reference
## Prediction 0 1
## 0 636 15
## 1 22 327
##
## Accuracy : 0.963
## 95% CI : (0.9494, 0.9738)
## No Information Rate : 0.658
## P-Value [Acc > NIR] : <2e-16
##
## Kappa : 0.9182
##
## Mcnemar's Test P-Value : 0.3239
##
## Sensitivity : 0.9561
## Specificity : 0.9666
## Pos Pred Value : 0.9370
## Neg Pred Value : 0.9770
## Prevalence : 0.3420
## Detection Rate : 0.3270
## Detection Prevalence : 0.3490
## Balanced Accuracy : 0.9614
##
## 'Positive' Class : 1
##
# Dự đoán xác suất từ mô hình Probit
predicted_probit <- ifelse(predict(model_probit_multi, type = "response") >= 0.5, 1, 0)
# Lấy giá trị thực tế tương ứng với mô hình đã sử dụng
actual_probit <- model_probit_multi$y
# Ma trận nhầm lẫn đơn giản
conf_mat_probit <- table(Predicted = predicted_probit, Actual = actual_probit)
print(conf_mat_probit)
## Actual
## Predicted 0 1
## 0 636 15
## 1 22 327
# Ma trận nhầm lẫn chi tiết dùng gói caret
library(caret)
confusionMatrix(as.factor(predicted_probit), as.factor(actual_probit), positive = "1")
## Confusion Matrix and Statistics
##
## Reference
## Prediction 0 1
## 0 636 15
## 1 22 327
##
## Accuracy : 0.963
## 95% CI : (0.9494, 0.9738)
## No Information Rate : 0.658
## P-Value [Acc > NIR] : <2e-16
##
## Kappa : 0.9182
##
## Mcnemar's Test P-Value : 0.3239
##
## Sensitivity : 0.9561
## Specificity : 0.9666
## Pos Pred Value : 0.9370
## Neg Pred Value : 0.9770
## Prevalence : 0.3420
## Detection Rate : 0.3270
## Detection Prevalence : 0.3490
## Balanced Accuracy : 0.9614
##
## 'Positive' Class : 1
##
# Dự đoán xác suất từ mô hình cloglog
predicted_cloglog <- ifelse(predict(model_cloglog_multi, type = "response") >= 0.5, 1, 0)
# Giá trị thực tế
actual_cloglog <- model_cloglog_multi$y
# Ma trận nhầm lẫn dạng bảng đếm
conf_mat_cloglog <- table(Predicted = predicted_cloglog, Actual = actual_cloglog)
print(conf_mat_cloglog)
## Actual
## Predicted 0 1
## 0 639 19
## 1 19 323
library(caret)
confusionMatrix(as.factor(predicted_cloglog), as.factor(actual_cloglog), positive = "1")
## Confusion Matrix and Statistics
##
## Reference
## Prediction 0 1
## 0 639 19
## 1 19 323
##
## Accuracy : 0.962
## 95% CI : (0.9482, 0.973)
## No Information Rate : 0.658
## P-Value [Acc > NIR] : <2e-16
##
## Kappa : 0.9156
##
## Mcnemar's Test P-Value : 1
##
## Sensitivity : 0.9444
## Specificity : 0.9711
## Pos Pred Value : 0.9444
## Neg Pred Value : 0.9711
## Prevalence : 0.3420
## Detection Rate : 0.3230
## Detection Prevalence : 0.3420
## Balanced Accuracy : 0.9578
##
## 'Positive' Class : 1
##
Kết quả từ ma trận nhầm lẫn của ba mô hình hồi quy nhị phân (Logit, Probit và Cloglog) cho thấy hiệu suất dự đoán rất cao và khá tương đồng giữa các mô hình.
Tổng kết Cả ba mô hình đều hoạt động hiệu quả với độ chính xác cao. Mô hình Logit và Probit có xu hướng cân bằng giữa khả năng phát hiện và phân biệt, trong khi Cloglog có phần ưu thế hơn trong việc nhận diện đúng nhóm không dùng tiền mặt. Tuy nhiên, sự khác biệt giữa các mô hình là rất nhỏ, cho thấy các yếu tố được đưa vào mô hình đã giải thích tốt hành vi lựa chọn phương thức thanh toán của sinh viên.
Ở các phần trước, chúng ta đã tập trung phân tích yếu tố ảnh hưởng đến sự lựa chọn phương thức thanh toán bằng tiền mặt (Cash) của sinh viên, thông qua các biến giải thích như giới tính, thu nhập hàng tháng và mức học phí. Tuy nhiên, việc chỉ xem xét một lựa chọn nhị phân (Cash hoặc không Cash) có thể làm mất đi thông tin chi tiết về hành vi lựa chọn thực tế.
Do đó, trong phần này, chúng ta mở rộng phân tích bằng cách xem xét đầy đủ ba phương thức thanh toán phổ biến mà sinh viên có thể lựa chọn, bao gồm: Cash, Credit/Debit Card, và Mobile Payment App. Mô hình logit đa thức (Multinomial Logit Model) được sử dụng để đánh giá xác suất sinh viên lựa chọn từng phương thức thanh toán, dựa trên các yếu tố cá nhân như giới tính, thu nhập hàng tháng và mức học phí.
Việc áp dụng mô hình logit đa thức không chỉ giúp phản ánh sự đa dạng trong hành vi thanh toán, mà còn cho phép so sánh tác động của từng biến độc lập đến xác suất lựa chọn mỗi hình thức thanh toán cụ thể.
library(nnet)
# Đảm bảo biến phụ thuộc là factor (định danh đa thức)
data$preferred_payment_method <- as.factor(data$preferred_payment_method)
# Kiểm tra thứ tự các cấp để biết đâu là category tham chiếu (mặc định là cấp đầu tiên)
levels(data$preferred_payment_method)
## [1] "Cash" "Credit/Debit Card" "Mobile Payment App"
# Thiết lập "Cash" làm nhóm tham chiếu nếu muốn (tùy theo mục tiêu)
data$preferred_payment_method <- relevel(data$preferred_payment_method, ref = "Cash")
# Chạy mô hình logit đa thức
model_mlogit <- multinom(preferred_payment_method ~ gender + monthly_income + tuition, data = data)
## # weights: 15 (8 variable)
## initial value 1098.612289
## iter 10 value 345.607162
## iter 20 value 242.859169
## iter 30 value 235.050066
## final value 234.910803
## converged
# Tóm tắt kết quả mô hình
summary(model_mlogit)
## Call:
## multinom(formula = preferred_payment_method ~ gender + monthly_income +
## tuition, data = data)
##
## Coefficients:
## (Intercept) genderFemale monthly_income tuition
## Credit/Debit Card -61.56210 0.9617162 0.01425371 0.007853918
## Mobile Payment App -36.82023 0.3157400 0.00660174 0.005858134
##
## Std. Errors:
## (Intercept) genderFemale monthly_income tuition
## Credit/Debit Card 3.046174e-07 1.163316e-07 0.0011600724 0.0001811064
## Mobile Payment App 1.223700e-07 8.876745e-07 0.0009672455 0.0001550460
##
## Residual Deviance: 469.8216
## AIC: 485.8216
# Tính giá trị p từ z
z <- summary(model_mlogit)$coefficients / summary(model_mlogit)$standard.errors
p_values <- 2 * (1 - pnorm(abs(z)))
print(p_values)
## (Intercept) genderFemale monthly_income tuition
## Credit/Debit Card 0 0 0.000000e+00 0
## Mobile Payment App 0 0 8.774315e-12 0
Mô hình logit đa thức được sử dụng để phân tích các yếu tố ảnh hưởng đến sự lựa chọn phương thức thanh toán của sinh viên, với ba lựa chọn: Cash (làm nhóm tham chiếu), Credit/Debit Card, và Mobile Payment App. Các biến độc lập bao gồm: giới tính, thu nhập hàng tháng, và mức học phí.
Kết quả ước lượng cho thấy:
Với nhóm Credit/Debit Card (so với Cash):
genderMale
có hệ số âm (-0.96) và có ý nghĩa thống
kê cao (p ≈ 0), cho thấy nam giới ít có xu hướng chọn Credit/Debit Card
hơn nữ giới.monthly_income
và tuition
đều có hệ số
dương và ý nghĩa thống kê rất cao (p < 0.001), cho thấy sinh viên có
thu nhập và học phí cao hơn có xác suất lựa chọn thẻ nhiều hơn.Với nhóm Mobile Payment App (so với Cash):
genderMale
có hệ số âm (-0.32) và ý nghĩa thống kê
cao, cho thấy nam giới ít có xu hướng chọn ví điện tử hơn nữ giới.monthly_income
và tuition
đều có ảnh hưởng
tích cực và có ý nghĩa thống kê cao, cho thấy sinh viên có điều kiện tài
chính tốt hơn có xu hướng sử dụng ví điện tử.Tổng kết:
Kết quả mô hình cho thấy giới tính và điều kiện tài chính (thu nhập, học
phí) đều ảnh hưởng đáng kể đến hành vi lựa chọn phương thức thanh toán.
Nữ giới và những sinh viên có thu nhập hoặc học phí cao hơn có xu hướng
ưu tiên các hình thức thanh toán hiện đại hơn thay vì tiền mặt.