Bộ dữ liệu được rút gọn từ một chiến dịch marketing qua điện thoại của một ngân hàng tại Bồ Đào Nha. Dữ liệu ban đầu nhằm phục vụ cho việc dự đoán khả năng khách hàng đăng ký gửi tiền có kỳ hạn. Tuy nhiên, trong nghiên cứu này, tác giả tập trung vào biến định tính quan trọng có liên quan đến hành vi tài chính của khách hàng, đó là:
loan: Khách hàng có vay tiêu dùng hay
không (yes/no)Hai biến này được chọn làm biến phụ thuộc, với mục tiêu phân tích xem các yếu tố nhân khẩu học và đặc điểm khách hàng như:
job)marital)education)default)contact)housing)… có ảnh hưởng như thế nào đến quyết định vay tiêu dùng của khách hàng.
Thông qua việc sử dụng các công cụ phân tích dữ liệu định tính như: bảng tần số, biểu đồ minh họa, kiểm định Chi bình phương, phân tích tỷ số chênh lệch (Odds Ratio) và rủi ro tương đối (Relative Risk), bài nghiên cứu sẽ làm rõ các yếu tố quan trọng ảnh hưởng đến hành vi tài chính của khách hàng.
data <- read.xlsx("D:/PTDLDT/data.xlsx", sheetIndex = 1, header = TRUE)
data <- data %>%
mutate(
loan = as.factor(loan),
housing = as.factor(housing),
job = as.factor(job),
marital = as.factor(marital),
education = as.factor(education),
default = as.factor(default),
contact = as.factor(contact)
)
str(data)
## 'data.frame': 4521 obs. of 8 variables:
## $ age : num 30 33 35 30 59 35 36 39 41 43 ...
## $ job : Factor w/ 12 levels "admin.","blue-collar",..: 11 8 5 5 2 5 7 10 3 8 ...
## $ marital : Factor w/ 3 levels "divorced","married",..: 2 2 3 2 2 3 2 2 2 2 ...
## $ education: Factor w/ 4 levels "primary","secondary",..: 1 2 3 3 2 3 3 2 3 1 ...
## $ default : Factor w/ 2 levels "no","yes": 1 1 1 1 1 1 1 1 1 1 ...
## $ housing : Factor w/ 2 levels "no","yes": 1 2 2 2 2 1 2 2 2 2 ...
## $ loan : Factor w/ 2 levels "no","yes": 1 2 1 2 1 1 1 1 1 2 ...
## $ contact : Factor w/ 3 levels "cellular","telephone",..: 1 1 1 3 3 1 1 1 3 1 ...
summary(data)
## age job marital education default
## Min. :19.00 management :969 divorced: 528 primary : 678 no :4445
## 1st Qu.:33.00 blue-collar:946 married :2797 secondary:2306 yes: 76
## Median :39.00 technician :768 single :1196 tertiary :1350
## Mean :41.17 admin. :478 unknown : 187
## 3rd Qu.:49.00 services :417
## Max. :87.00 retired :230
## (Other) :713
## housing loan contact
## no :1962 no :3830 cellular :2896
## yes:2559 yes: 691 telephone: 301
## unknown :1324
##
##
##
##
| Tên biến | Kiểu dữ liệu | Số lượng giá trị duy nhất | Mô tả nội dung |
|---|---|---|---|
age |
Numeric | 67 | Tuổi của khách hàng (từ 19 đến 87 tuổi). |
job |
Character | 12 | Nghề nghiệp của khách hàng như: management,
blue-collar, services, student,
retired, unemployed,… |
marital |
Character | 3 | Tình trạng hôn nhân: single, married,
divorced. |
education |
Character | 4 | Trình độ học vấn: primary, secondary,
tertiary, unknown. |
default |
Character | 2 | Khách hàng có nợ tín dụng quá hạn không? (yes,
no) |
housing |
Character | 2 | Khách hàng có vay mua nhà không? (yes,
no) |
loan |
Character | 2 | Khách hàng có vay tiêu dùng không? (yes,
no) |
contact |
Character | 3 | Hình thức liên hệ: cellular, telephone,
unknown |
Nhận xét
Bộ dữ liệu gồm 8 biến và 4251 quan sát, được chia thành hai nhóm chính: biến định lượng và biến định tính.
Biến định lượng: Chỉ có một biến duy nhất là biến định lượng, đó là biến age. Đây là biến đo lường tuổi của khách hàng, có kiểu số (numeric), có thể sử dụng để tính toán trung bình, độ lệch chuẩn, phân phối, v.v. Biến này mang thông tin liên tục và có thể dùng cho các phương pháp phân tích định lượng như hồi quy tuyến tính hoặc phân tích phương sai.
Các biến định tính: Có bảy biến còn lại thuộc loại biến định tính. Các biến này mang thông tin dạng danh mục (categorical), không dùng để tính toán trực tiếp mà thường được phân tích bằng cách đếm tần số, tỷ lệ, hoặc dùng các phương pháp thống kê cho dữ liệu định tính như kiểm định Chi bình phương, tính Odds Ratio, Relative Risk,…
Tạo bộ dữ liệu chỉ có biến định tính
library(dplyr)
# Tạo bộ dữ liệu chỉ chứa các biến định tính
data1 <- data %>%
dplyr::select(job, marital, education, default, housing, loan, contact)
# Xem trước dữ liệu mới
str(data1)
## 'data.frame': 4521 obs. of 7 variables:
## $ job : Factor w/ 12 levels "admin.","blue-collar",..: 11 8 5 5 2 5 7 10 3 8 ...
## $ marital : Factor w/ 3 levels "divorced","married",..: 2 2 3 2 2 3 2 2 2 2 ...
## $ education: Factor w/ 4 levels "primary","secondary",..: 1 2 3 3 2 3 3 2 3 1 ...
## $ default : Factor w/ 2 levels "no","yes": 1 1 1 1 1 1 1 1 1 1 ...
## $ housing : Factor w/ 2 levels "no","yes": 1 2 2 2 2 1 2 2 2 2 ...
## $ loan : Factor w/ 2 levels "no","yes": 1 2 1 2 1 1 1 1 1 2 ...
## $ contact : Factor w/ 3 levels "cellular","telephone",..: 1 1 1 3 3 1 1 1 3 1 ...
head(data1)
Lập bảng tần số và tần suất
table(data1$loan)
##
## no yes
## 3830 691
prop.table(table(data1$loan))
##
## no yes
## 0.8471577 0.1528423
Vẽ biểu đồ cột
freq_loan <- as.data.frame(table(data1$loan))
colnames(freq_loan) <- c("Loan", "Count")
ggplot(freq_loan, aes(x = Loan, y = Count)) +
geom_col(fill = "#9370DB", color = "black") +
geom_text(aes(label = Count), vjust = -0.5) +
labs(title = "Tần số vay tiêu dùng", x = "Vay tiêu dùng", y = "Số lượng") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5))
Vẽ biểu đồ tròn
# Tạo bảng tần suất
loan_freq <- table(data1$loan)
loan_prop <- prop.table(loan_freq)
# Chuyển thành data frame để dùng ggplot2
loan_df <- as.data.frame(loan_prop)
colnames(loan_df) <- c("Loan", "Proportion")
# Tính phần trăm để hiển thị nhãn
loan_df$Percent <- paste0(round(loan_df$Proportion * 100, 1), "%")
# Vẽ biểu đồ tròn bằng ggplot2
ggplot(loan_df, aes(x = "", y = Proportion, fill = Loan)) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y") +
geom_text(aes(label = Percent), position = position_stack(vjust = 0.5)) +
labs(title = "Tỷ lệ vay tiêu dùng", x = NULL, y = NULL) +
theme_void()+
theme(plot.title = element_text(hjust = 0.5))
Dựa vào bảng tần số, tần suất và biểu đồ của biến loan, ta có các nhận định sau:
Nhóm không vay tiêu dùng (no) chiếm số lượng lớn vượt trội với 3.830 người, tương ứng khoảng 84.7% tổng số mẫu. Đây là nhóm chiếm ưu thế rõ rệt.
Nhóm có vay tiêu dùng (yes) chỉ có 691 người, chiếm khoảng 15.3%.
Kết luận:
Phân bố vay tiêu dùng cho thấy đa số khách hàng không sử dụng hình thức vay tiêu dùng, phản ánh sự thận trọng trong chi tiêu hoặc tiếp cận hạn chế với loại hình tín dụng này. Yếu tố này có thể đóng vai trò trong việc xác định mức độ tiêu dùng cá nhân và khả năng tiếp cận tín dụng tiêu dùng trong nghiên cứu hành vi tài chính.
Lập bảng tần số và tần suất
table(data1$housing)
##
## no yes
## 1962 2559
prop.table(table(data1$housing))
##
## no yes
## 0.4339748 0.5660252
Vẽ biểu đồ cột
freq_housing <- as.data.frame(table(data1$housing))
colnames(freq_housing) <- c("Housing", "Count")
ggplot(freq_housing, aes(x = Housing, y = Count)) +
geom_col(fill = "#66CDAA", color = "black") +
geom_text(aes(label = Count), vjust = -0.5) +
labs(title = "Tần số vay mua nhà", x = "Vay nhà", y = "Số lượng") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5))
# Tạo bảng tần suất
housing_freq <- table(data1$housing)
housing_prop <- prop.table(housing_freq)
# Chuyển sang data frame để vẽ với ggplot2
housing_df <- as.data.frame(housing_prop)
colnames(housing_df) <- c("Housing", "Proportion")
# Thêm cột phần trăm để làm nhãn
housing_df$Percent <- paste0(round(housing_df$Proportion * 100, 1), "%")
# Vẽ biểu đồ tròn
ggplot(housing_df, aes(x = "", y = Proportion, fill = Housing)) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y") +
geom_text(aes(label = Percent), position = position_stack(vjust = 0.5)) +
labs(title = "tỷ lệ vay mua nhà", x = NULL, y = NULL) +
theme_void()
theme(plot.title = element_text(hjust = 0.5))
## List of 1
## $ plot.title:List of 11
## ..$ family : NULL
## ..$ face : NULL
## ..$ colour : NULL
## ..$ size : NULL
## ..$ hjust : num 0.5
## ..$ vjust : NULL
## ..$ angle : NULL
## ..$ lineheight : NULL
## ..$ margin : NULL
## ..$ debug : NULL
## ..$ inherit.blank: logi FALSE
## ..- attr(*, "class")= chr [1:2] "element_text" "element"
## - attr(*, "class")= chr [1:2] "theme" "gg"
## - attr(*, "complete")= logi FALSE
## - attr(*, "validate")= logi TRUE
Dựa vào bảng tần số, tần suất và biểu đồ của biến housing, ta có các nhận định sau:
Nhóm có vay mua nhà (yes) chiếm tỷ lệ cao hơn với 2,559 người, tương ứng khoảng 56.6% tổng số mẫu. Đây là nhóm chiếm tỷ trọng lớn trong tập dữ liệu.
Nhóm không vay mua nhà (no) có 1,962 người, chiếm khoảng 43.4%.
Kết luận:
Phân bố dữ liệu cho thấy phần lớn khách hàng trong tập dữ liệu có khoản vay mua nhà. Điều này có thể phản ánh nhu cầu về nhà ở cũng như mức độ tiếp cận tín dụng mua bất động sản của khách hàng trong tập mẫu.
Lập bảng tần số và tần suất
#Bảng tần số
table(data1$job)
##
## admin. blue-collar entrepreneur housemaid management
## 478 946 168 112 969
## retired self-employed services student technician
## 230 183 417 84 768
## unemployed unknown
## 128 38
#Bảng tần suất
table(data1$job)/sum(table(data1$job))
##
## admin. blue-collar entrepreneur housemaid management
## 0.10572882 0.20924574 0.03715992 0.02477328 0.21433311
## retired self-employed services student technician
## 0.05087370 0.04047777 0.09223623 0.01857996 0.16987392
## unemployed unknown
## 0.02831232 0.00840522
Vẽ biểu đồ cột
library(ggplot2)
library(ggplot2)
# Tạo bảng tần số cho biến job
freq1 <- table(data1$job)
# Chuyển thành data frame
job_freq <- as.data.frame(freq1)
colnames(job_freq) <- c("Job", "Count")
# Vẽ biểu đồ cột
ggplot(job_freq, aes(x = Job, y = Count)) +
geom_col(fill = "#6495ED", color = "black") +
geom_text(aes(label = Count), vjust = -0.5, color = "black") +
labs(title = "Tần số theo nghề nghiệp", x = "Nghề nghiệp", y = "Số lượng") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))+
theme(plot.title = element_text(hjust = 0.5))
Dựa vào bảng tần số và biểu đồ trên, ta có các nhận định sau:
Nghề nghiệp phổ biến nhất là management với 969 người, chiếm khoảng 21.4% tổng số mẫu.
Theo sau là blue-collar (946 người, ~20.9%) và technician (768 người, ~17.0%).
Các nhóm nghề ít phổ biến hơn gồm: student (84 người, ~1.9%) và unknown (38 người, ~0.8%).
Tổng cộng, ba nhóm nghề chiếm tỷ lệ cao nhất (management, blue-collar, technician) đã chiếm hơn 59% toàn bộ dữ liệu.
Kết luận:
Phân bố nghề nghiệp không đều, cho thấy các khách hàng trong dữ liệu chủ yếu đến từ các ngành quản lý, lao động phổ thông và kỹ thuật viên.
Lập bảng tần số và tần suất
# Bảng tần số
table(data1$marital)
##
## divorced married single
## 528 2797 1196
# Bảng tần suất
prop.table(table(data1$marital))
##
## divorced married single
## 0.1167883 0.6186684 0.2645432
Vẽ biểu đồ cột
# Biểu đồ cột
library(ggplot2)
freq_marital <- as.data.frame(table(data1$marital))
colnames(freq_marital) <- c("Marital", "Count")
ggplot(freq_marital, aes(x = Marital, y = Count)) +
geom_col(fill = "#6495ED", color = "black") +
geom_text(aes(label = Count), vjust = -0.5) +
labs(title = "Tần số theo tình trạng hôn nhân", x = "Tình trạng hôn nhân", y = "Số lượng") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1),
plot.title = element_text(hjust = 0.5))
Dựa vào bảng tần số và tần suất của biến marital, ta có các nhận định sau:
Nhóm kết hôn (married) chiếm tỷ lệ cao nhất, với 2,797 người, tương ứng khoảng 61.9% tổng số mẫu. Đây là nhóm chiếm ưu thế vượt trội.
Nhóm độc thân (single) chiếm 1,196 người (~26.5%), đứng thứ hai về tần suất.
Nhóm ly hôn (divorced) chỉ chiếm 528 người (~11.7%), là nhóm có số lượng thấp nhất.
Kết luận:
Phân bố tình trạng hôn nhân trong tập dữ liệu này khá chênh lệch, với phần lớn khách hàng là người đã kết hôn. Điều này có thể phản ánh xu hướng hoặc cấu trúc dân số của khách hàng trong tập dữ liệu.
Lập bảng tần số và tần suất
table(data1$education)
##
## primary secondary tertiary unknown
## 678 2306 1350 187
prop.table(table(data1$education))
##
## primary secondary tertiary unknown
## 0.14996682 0.51006415 0.29860650 0.04136253
Vẽ biểu đồ cột
freq_edu <- as.data.frame(table(data1$education))
colnames(freq_edu) <- c("Education", "Count")
ggplot(freq_edu, aes(x = Education, y = Count)) +
geom_col(fill = "#FF9966", color = "black") +
geom_text(aes(label = Count), vjust = -0.5) +
labs(title = "Tần số theo trình độ học vấn", x = "Trình độ", y = "Số lượng") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1),
plot.title = element_text(hjust = 0.5))
Dựa vào bảng tần số và tần suất của biến education, ta có các nhận định sau:
Nhóm có trình độ học vấn secondary chiếm tỷ lệ cao nhất, với 2,306 người, tương ứng khoảng 51.0% tổng số mẫu. Đây là nhóm chiếm ưu thế vượt trội.
Nhóm có trình độ tertiary (đại học, sau đại học) có 1,350 người, chiếm khoảng 29.8%, đứng thứ hai về tần suất.
Nhóm primary có 678 người, tương ứng khoảng 15.0% tổng số mẫu.
Nhóm unknown (không rõ trình độ học vấn) chỉ chiếm 187 người, tương ứng 4.1%, là nhóm có số lượng thấp nhất.
Kết luận:
Phân bố trình độ học vấn trong tập dữ liệu cho thấy phần lớn khách hàng có trình độ học vấn trung học. Điều này có thể phản ánh cấu trúc trình độ học vấn phổ biến trong nhóm khách hàng được khảo sát, đồng thời là yếu tố cần xem xét trong các phân tích liên quan đến hành vi tiêu dùng hoặc khả năng tiếp cận dịch vụ.
Lập bảng tần số và tần suất
table(data1$default)
##
## no yes
## 4445 76
prop.table(table(data1$default))
##
## no yes
## 0.98318956 0.01681044
Vẽ biểu đồ cột
freq_default <- as.data.frame(table(data1$default))
colnames(freq_default) <- c("Default", "Count")
ggplot(freq_default, aes(x = Default, y = Count)) +
geom_col(fill = "#F08080", color = "black") +
geom_text(aes(label = Count), vjust = -0.5) +
labs(title = "Tần số nợ tín dụng xấu", x = "Default", y = "Số lượng") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5))
Dựa vào bảng tần số và tần suất của biến default, ta có các nhận định sau:
Nhóm không có nợ tín dụng xấu (no) chiếm số lượng lớn nhất với 4,445 người, tương ứng khoảng 98.4% tổng số mẫu. Đây là nhóm chiếm ưu thế gần như tuyệt đối.
Nhóm có nợ tín dụng xấu (yes) chỉ có 76 người, chiếm tỷ lệ rất nhỏ, khoảng 1.7%.
Kết luận:
Phân bố nợ tín dụng xấu trong tập dữ liệu cho thấy phần lớn khách hàng không có lịch sử nợ xấu. Điều này phản ánh chất lượng tín dụng tương đối tốt của nhóm khách hàng được khảo sát.
Kiểm định Chi bình phương (Chi-squared test) được sử dụng để kiểm tra xem có mối liên hệ thống kê giữa hai biến phân loại (categorical variables) hay không. Trong bối cảnh này, ta kiểm tra xem các yếu tố như housing, marital, education, default, v.v. có ảnh hưởng đến quyết định vay tiêu dùng (loan) hay không.
Giả thuyết kiểm định
# Thực hiện kiểm định Chi bình phương
table_loan_housing <- table(data1$loan, data1$housing)
chisq_housing <- chisq.test(table_loan_housing)
chisq_housing
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: table_loan_housing
## X-squared = 1.4374, df = 1, p-value = 0.2306
Giả thuyết kiểm định
# Thực hiện kiểm định Chi bình phương
table_loan_job <- table(data1$loan, data1$job)
chisq_job <- chisq.test(table_loan_job)
chisq_job
##
## Pearson's Chi-squared test
##
## data: table_loan_job
## X-squared = 47.191, df = 11, p-value = 1.989e-06
Giả thuyết kiểm định
table_loan_edu <- table(data1$loan, data1$education)
chisq_edu <- chisq.test(table_loan_edu)
chisq_edu
##
## Pearson's Chi-squared test
##
## data: table_loan_edu
## X-squared = 39.798, df = 3, p-value = 1.176e-08
Giả thuyết kiểm định
table_loan_default <- table(data1$loan, data1$default)
chisq_edu <- chisq.test(table_loan_default)
chisq_edu
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: table_loan_default
## X-squared = 17.157, df = 1, p-value = 3.441e-05
Giả thuyết kiểm định
table_loan_marital <- table(data1$loan, data1$marital)
chisq_edu <- chisq.test(table_loan_marital)
chisq_edu
##
## Pearson's Chi-squared test
##
## data: table_loan_marital
## X-squared = 10.88, df = 2, p-value = 0.004339
Thông qua kết quả kiểm định chỉ có 1 biến housing là
không có mối liên hệ với biến loan, 4 biến độc lập còn lại
đều có mối liên hệ với biến phụ thuộc là loan. Tiếp theo đó
ta sẽ phân tích sâu về tình trạng vay tiêu dùng với 4 biến độc lập là:
job, education, marital và default thông qua relative risk và
oddratio.
Sau khi kiểm định Chi bình phương, 4 biến định tính gồm:
education, default, marital, và
job được xác định là có mối liên hệ thống kê với biến phụ
thuộc loan. Chúng ta tiếp tục đặt ra các câu hỏi
nghiên cứu cụ thể và phân tích sâu hơn bằng Relative
Risk và Odds Ratio.
Liệu khách hàng có trình độ học vấn cao (tertiary) có xu hướng vay tiêu dùng cao hơn so với những người không có học vấn cao hoặc không rõ học vấn không?
data1$edu_grouped <- ifelse(data1$education == "tertiary", "high",
ifelse(data1$education %in% c("primary", "secondary"), "low", NA))
table_edu_grouped <- table(data1$loan, data1$edu_grouped)
table_edu_grouped
##
## high low
## no 1176 2474
## yes 174 510
data1 <- na.omit(data1)
df_edu_grouped <- as.data.frame(table_edu_grouped)
colnames(df_edu_grouped) <- c("Loan", "Edu_Grouped", "Count")
ggplot(df_edu_grouped, aes(x = Edu_Grouped, y = Count, fill = Loan)) +
geom_bar(stat = "identity", position = "dodge") +
labs(
title = "Phân bố vay tiêu dùng theo trình độ học vấn",
x = "Trình độ học vấn",
y = "Số lượng",
fill = "Vay tiêu dùng"
) +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5))
mat_edu_grouped <- matrix(c(
sum(data1$loan == "no" & data1$edu_grouped == "low"),
sum(data1$loan == "no" & data1$edu_grouped == "high"),
sum(data1$loan == "yes" & data1$edu_grouped == "low"),
sum(data1$loan == "yes" & data1$edu_grouped == "high")
),
byrow = TRUE, nrow = 2,
dimnames = list(Loan = c("no", "yes"), Education = c("low", "high")))
mat_edu_grouped
## Education
## Loan low high
## no 2474 1176
## yes 510 174
rr_edu_grouped <- riskratio(mat_edu_grouped)
rr_edu_grouped$measure
## risk ratio with 95% C.I.
## Loan estimate lower upper
## no 1.0000000 NA NA
## yes 0.7895483 0.6886984 0.9051661
or_edu_grouped <- oddsratio(mat_edu_grouped)
or_edu_grouped$measure
## odds ratio with 95% C.I.
## Loan estimate lower upper
## no 1.0000000 NA NA
## yes 0.7181725 0.5952221 0.8629916
Trong phân tích mối quan hệ giữa trình độ học vấn và hành vi vay tiêu dùng, tác giả phân chia khách hàng thành hai nhóm:
Nhóm có học vấn cao: khách hàng có trình độ tertiary
Nhóm học vấn thấp: bao gồm trình độ primary và secondary
Sau khi tính toán Relative Risk (RR) và Odds Ratio (OR) để so sánh xác suất và khả năng vay tiêu dùng giữa hai nhóm, kết quả cho thấy cả RR và OR đều nhỏ hơn 1 điều đó có nghĩa là khách hàng có học vấn cao có xu hướng vay tiêu dùng ít hơn nhóm học vấn thấp.
Cụ thể:
table_default <- table(data1$loan, data1$default)
table_default
##
## no yes
## no 3601 49
## yes 660 24
df_default <- as.data.frame(table_default)
colnames(df_default) <- c("Loan", "Default", "Count")
ggplot(df_default, aes(x = Default, y = Count, fill = Loan)) +
geom_bar(stat = "identity", position = "dodge") +
labs(
title = "Phân bố vay tiêu dùng theo trạng thái nợ tín dụng",
x = "Nợ tín dụng",
y = "Số lượng",
fill = "Vay tiêu dùng"
) +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5))
# Tạo ma trận với nhóm 'yes' (vay tiêu dùng) làm dòng thứ nhất = nhóm tham chiếu
mat_default <- matrix(c(
sum(data1$loan == "yes" & data1$default == "yes"), # a
sum(data1$loan == "yes" & data1$default == "no"), # b
sum(data1$loan == "no" & data1$default == "yes"), # c
sum(data1$loan == "no" & data1$default == "no") # d
),
byrow = TRUE, nrow = 2,
dimnames = list(Loan = c("yes", "no"), Default = c("yes", "no")))
mat_default
## Default
## Loan yes no
## yes 24 660
## no 49 3601
# Tính RR và OR với nhóm 'yes' làm tham chiếu
rr_default <- riskratio(mat_default)
rr_default$measure
## risk ratio with 95% C.I.
## Loan estimate lower upper
## yes 1.000000 NA NA
## no 1.022451 1.007447 1.037678
or_default <- oddsratio(mat_default)
or_default$measure
## odds ratio with 95% C.I.
## Loan estimate lower upper
## yes 1.000000 NA NA
## no 2.680628 1.604802 4.358874
Trong phân tích này, tác giả xem xét mối liên hệ giữa hành vi vay tiêu dùng (loan) và tình trạng nợ tín dụng quá hạn (default). Nhóm có vay tiêu dùng được chọn làm nhóm tham chiếu, nhằm so sánh nguy cơ và khả năng nợ tín dụng ở nhóm không vay.
Kết quả như sau:
Nguy cơ tương đối (Relative Risk – RR) của nhóm không vay so với nhóm có vay là 1.022451 → Điều này có nghĩa là xác suất nợ tín dụng quá hạn ở nhóm không vay cao hơn 2.25% so với nhóm có vay.
Tỷ số chênh (Odds Ratio – OR) giữa hai nhóm là 2.680628 → Diễn giải rằng khả năng nợ tín dụng quá hạn (odds) ở nhóm không vay cao gấp 2.68 lần so với nhóm có vay.
Tóm lại, cả RR và OR đều lớn hơn 1 và có ý nghĩa thống kê, cho thấy nhóm khách hàng không vay tiêu dùng có nguy cơ và khả năng nợ tín dụng quá hạn cao hơn đáng kể so với nhóm có vay tiêu dùng.
Khách hàng đã kết hôn có xu hướng vay tiêu dùng khác với người chưa kết hôn không?
data1$marital_grouped <- ifelse(data1$marital == "married", "married", "others")
table_marital <- table(data1$loan, data1$marital_grouped)
table_marital
##
## married others
## no 2232 1418
## yes 448 236
df_marital <- as.data.frame(table_marital)
colnames(df_marital) <- c("Loan", "Marital", "Count")
ggplot(df_marital, aes(x = Marital, y = Count, fill = Loan)) +
geom_bar(stat = "identity", position = "dodge") +
labs(
title = "Phân bố vay tiêu dùng theo tình trạng hôn nhân",
x = "Tình trạng hôn nhân",
y = "Số lượng",
fill = "Vay tiêu dùng"
) +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5))
mat_marital <- matrix(c(
sum(data1$loan == "yes" & data1$marital_grouped == "married"),
sum(data1$loan == "yes" & data1$marital_grouped == "others"),
sum(data1$loan == "no" & data1$marital_grouped == "married"),
sum(data1$loan == "no" & data1$marital_grouped == "others")
),
byrow = TRUE, nrow = 2,
dimnames = list(Loan = c("yes", "no"), Marital = c("married", "others")))
mat_marital
## Marital
## Loan married others
## yes 448 236
## no 2232 1418
rr_marital <- riskratio(mat_marital)
rr_marital$measure
## risk ratio with 95% C.I.
## Loan estimate lower upper
## yes 1.000000 NA NA
## no 1.125972 1.00769 1.258137
or_marital <- oddsratio(mat_marital)
or_marital$measure
## odds ratio with 95% C.I.
## Loan estimate lower upper
## yes 1.000000 NA NA
## no 1.205617 1.016948 1.432372
Trong phân tích này, khách hàng được chia thành hai nhóm: đã kết hôn (married) và khác (others – bao gồm độc thân, ly hôn…). Nhóm khách hàng có vay tiêu dùng (Loan = yes) được chọn làm nhóm tham chiếu.
Kết quả cho thấy
Nguy cơ tương đối (RR) của nhóm không vay tiêu dùng so với nhóm vay tiêu dùng là 1.126, nghĩa là xác suất không vay tiêu dùng của nhóm chưa kết hôn cao hơn 12.6% so với nhóm đã kết hôn. Khoảng tin cậy 95% là [1.008 ; 1.258], cho thấy sự khác biệt có ý nghĩa thống kê.
Tương tự, tỷ số chênh (OR) là 1.2056, tức là odds không vay tiêu dùng của nhóm chưa kết hôn cao hơn khoảng 20.56% so với nhóm đã kết hôn. Khoảng tin cậy 95% là [1.017 ; 1.432], tiếp tục khẳng định kết quả có ý nghĩa thống kê.
Như vậy, khách hàng đã kết hôn có xu hướng vay tiêu dùng nhiều hơn so với nhóm chưa kết hôn.
Liệu nhóm người thất nghiệp có xu hướng vay tiêu dùng khác biệt so với các nhóm nghề còn lại không?
data1$job_grouped <- ifelse(data1$job == "unemployed", "unemployed", "others")
table_job <- table(data1$loan, data1$job_grouped)
table_job
##
## others unemployed
## no 3537 113
## yes 671 13
df_job <- as.data.frame(table_job)
colnames(df_job) <- c("Loan", "Job_Group", "Count")
ggplot(df_job, aes(x = Job_Group, y = Count, fill = Loan)) +
geom_bar(stat = "identity", position = "dodge") +
labs(
title = "Phân bố vay tiêu dùng theo nghề nghiệp (thất nghiệp vs còn lại)",
x = "Nhóm nghề nghiệp",
y = "Số lượng",
fill = "Vay tiêu dùng"
) +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5))
mat_job <- matrix(c(
sum(data1$loan == "yes" & data1$job_grouped == "unemployed"),
sum(data1$loan == "no" & data1$job_grouped == "unemployed"),
sum(data1$loan == "yes" & data1$job_grouped == "others"),
sum(data1$loan == "no" & data1$job_grouped == "others")
),
byrow = TRUE, nrow = 2,
dimnames = list(Loan = c("yes", "no"), Job = c("unemployed", "others")))
mat_job
## Job
## Loan unemployed others
## yes 13 113
## no 671 3537
rr_job <- riskratio(mat_job)
rr_job$measure
## risk ratio with 95% C.I.
## Loan estimate lower upper
## yes 1.0000000 NA NA
## no 0.9372413 0.8820711 0.9958623
or_job <- oddsratio(mat_job)
or_job$measure
## odds ratio with 95% C.I.
## Loan estimate lower upper
## yes 1.0000000 NA NA
## no 0.6131379 0.3264265 1.055025
Trong phân tích này, khách hàng được chia thành hai nhóm nghề nghiệp: thất nghiệp (unemployed) và các nhóm nghề còn lại (others). Nhóm khách hàng có vay tiêu dùng (Loan = yes) được chọn làm nhóm tham chiếu.
Kết quả cho thấy
Nguy cơ tương đối (RR) là 0.9372, nghĩa là xác suất không vay tiêu dùng của nhóm còn lại chỉ bằng 93.72% so với nhóm thất nghiệp. Khoảng tin cậy 95% là [0.8821 ; 0.9959], cho thấy sự khác biệt có ý nghĩa thống kê.
Trong khi đó, tỷ số chênh (OR) là 0.6131, tức là odds không vay tiêu dùng của nhóm nghề nghiệp còn lại thấp hơn khoảng 38.7% so với nhóm thất nghiệp. Tuy nhiên, khoảng tin cậy 95% là [0.3264 ; 1.0550], có chứa 1, nên kết quả này chưa đủ bằng chứng để kết luận có sự khác biệt thống kê ở mức ý nghĩa 5%.
Như vậy, có thể kết luận rằng nhóm khách hàng thất nghiệp có xu hướng không vay tiêu dùng cao hơn so với các nhóm nghề còn lại, và sự khác biệt này có ý nghĩa thống kê khi xét theo RR, nhưng chưa rõ ràng theo OR.
Giả thuyết kiểm định
Trước tiên, tác giả thực hiện các mô hình hồi quy logistic đơn biến,
mỗi mô hình chỉ bao gồm một biến giải thích nhằm phân tích riêng lẻ ảnh
hưởng của từng yếu tố đến khả năng vay tiêu dùng
(loan).
# Hồi quy đơn biến với education
model_uni_edu <- glm(loan ~ education, data = data1, family = binomial)
summary(model_uni_edu)
##
## Call:
## glm(formula = loan ~ education, family = binomial, data = data1)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.82661 0.11113 -16.436 <2e-16 ***
## educationsecondary 0.31296 0.12363 2.531 0.0114 *
## educationtertiary -0.08421 0.13765 -0.612 0.5407
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 3779.6 on 4333 degrees of freedom
## Residual deviance: 3760.2 on 4331 degrees of freedom
## AIC: 3766.2
##
## Number of Fisher Scoring iterations: 4
Phương trình logit ước lượng
\[ \text{logit}(P(\text{loan} = \text{yes})) = -1.83 + 0.31 \times \text{educationsecondary} - 0.08 \times \text{educationtertiary} \]
Diễn giải hệ số có ý nghĩa thống kê
| Biến | Nhóm so sánh | Hệ số (β) | p-value | Odds Ratio (e^β) | Diễn giải |
|---|---|---|---|---|---|
| educationsecondary | So với primary | 0.31 | 0.011 | 1.37 | Người học trung học có odds vay cao hơn 37% |
| educationtertiary | So với primary | -0.08 | 0.541 | 0.92 | Không có ý nghĩa thống kê |
Kết luận
Biến educationsecondary có ảnh hưởng đáng kể đến xác
suất vay tiêu dùng. Những người học hết trung học có odds vay cao hơn
37% so với người chỉ học tiểu học. Trong khi đó, nhóm có trình độ đại
học trở lên (tertiary) không có ảnh hưởng đáng kể đến khả
năng vay.
Mô hình có dạng:
\[ \log \left( \frac{P(loan = yes)}{1 - P(loan = yes)} \right) = \beta_0 + \beta_1 \cdot education \]
Sau khi thực hiện phân tích nguy cơ tương đối (Relative Risk) và tỷ số chênh (Odds Ratio) để khám phá mối liên hệ giữa hành vi vay tiêu dùng với từng biến độc lập, bước tiếp theo là xây dựng mô hình hồi quy logistic nhằm đánh giá đồng thời tác động của các yếu tố này đến khả năng vay tiêu dùng của khách hàng.
Mô hình hồi quy logistic sử dụng hàm liên kết logit để mô hình hóa log-odds của hành vi vay tiêu dùng. Cụ thể, mô hình có dạng:
\[ \log\left( \frac{P(loan = yes)}{1 - P(loan = yes)} \right) = \beta_0 + \beta_1 \cdot job + \beta_2 \cdot education + \beta_3 \cdot marital + \beta_4 \cdot default \]
Giả thuyết kiểm định
Với từng biến độc lập, ta thực hiện kiểm định:
Mức ý nghĩa thống kê được sử dụng là 5% (α = 0.05). Nếu p-value < 0.05, ta bác bỏ giả thuyết H₀.
# Hồi quy logistic
model_logit <- glm(loan ~ job + education + marital + default,
data = data1,
family = binomial)
# Tóm tắt kết quả
summary(model_logit)
##
## Call:
## glm(formula = loan ~ job + education + marital + default, family = binomial,
## data = data1)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.58836 0.20458 -7.764 8.22e-15 ***
## jobblue-collar -0.08718 0.15435 -0.565 0.572185
## jobentrepreneur 0.44778 0.22476 1.992 0.046340 *
## jobhousemaid -0.60363 0.34688 -1.740 0.081833 .
## jobmanagement -0.33188 0.17955 -1.848 0.064543 .
## jobretired -0.28758 0.23024 -1.249 0.211644
## jobself-employed -0.09880 0.23845 -0.414 0.678629
## jobservices -0.11508 0.17553 -0.656 0.512067
## jobstudent -2.58693 1.01624 -2.546 0.010909 *
## jobtechnician -0.21448 0.15634 -1.372 0.170112
## jobunemployed -0.68802 0.31788 -2.164 0.030430 *
## jobunknown -1.51908 1.03125 -1.473 0.140740
## educationsecondary 0.33074 0.13543 2.442 0.014601 *
## educationtertiary 0.05984 0.17065 0.351 0.725858
## maritalmarried -0.07152 0.12961 -0.552 0.581097
## maritalsingle -0.33498 0.14894 -2.249 0.024508 *
## defaultyes 0.93740 0.25773 3.637 0.000276 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 3779.6 on 4333 degrees of freedom
## Residual deviance: 3698.3 on 4317 degrees of freedom
## AIC: 3732.3
##
## Number of Fisher Scoring iterations: 6
Mô hình hồi quy logistic được xây dựng nhằm phân tích xác suất khách hàng đăng ký vay tiêu dùng (loan = yes) dựa trên các biến định tính: nghề nghiệp (job), trình độ học vấn (education), tình trạng hôn nhân (marital) và lịch sử tín dụng (default). Mức ý nghĩa được sử dụng là 5% (α = 0.05).
Bảng tổng hợp các biến có ý nghĩa thống kê (kèm Odds Ratio)
| Biến | Nhóm so sánh | Hệ số (β) | p-value | Odds Ratio (e^β) | Diễn giải chi tiết |
|---|---|---|---|---|---|
jobstudent |
So với admin. |
-2.59 | 0.011 | 0.075 | Sinh viên có odds vay chỉ bằng 7.5% so với nhóm hành chính → rất ít đăng ký vay. |
jobunemployed |
So với admin. |
-0.69 | 0.030 | 0.50 | Người thất nghiệp có odds vay bằng một nửa nhóm hành chính → khả năng vay thấp hơn. |
jobentrepreneur |
So với admin. |
0.45 | 0.046 | 1.57 | Người tự doanh có odds vay cao hơn 57% → có xu hướng vay tiêu dùng nhiều hơn. |
educationsecondary |
So với primary |
0.33 | 0.015 | 1.39 | Khách hàng học hết trung học có odds vay cao hơn 39% so với người chỉ học tiểu học. |
maritalsingle |
So với divorced |
-0.33 | 0.025 | 0.72 | Người độc thân có odds vay thấp hơn khoảng 28% so với người đã ly hôn. |
defaultyes |
So với default = no |
0.94 | < 0.001 | 2.55 | Người có nợ xấu có odds vay cao gấp 2.55 lần người không có nợ xấu → tác động mạnh. |
Kết quả từ mô hình logit như sau:
Mô hình hồi quy logistic được sử dụng nhằm phân tích khả năng khách hàng đăng ký vay tiêu dùng (loan = yes) dựa trên các đặc điểm cá nhân như nghề nghiệp, trình độ học vấn, tình trạng hôn nhân và lịch sử tín dụng. Mức ý nghĩa được xét là 5% (α = 0.05).
Phương trình logit được ước lượng như sau:
logit(P(loan = yes)) = -1.59 - 2.59×jobstudent - 0.69×jobunemployed + 0.45×jobentrepreneur + 0.33×educationsecondary - 0.33×maritalsingle + 0.94×defaultyes
Hệ số chặn (Intercept):
exp(-1.59) ≈ 0.204, xác suất vay là
0.204 / (1 + 0.204) ≈ 17%.Biến jobstudent:
exp(-2.59) ≈ 0.075Biến jobunemployed:
exp(-0.69) ≈ 0.50Biến jobentrepreneur:
exp(0.45) ≈ 1.57Biến educationsecondary:
exp(0.33) ≈ 1.39Biến maritalsingle:
exp(-0.33) ≈ 0.72Biến defaultyes:
exp(0.94) ≈ 2.55Kết luận
Tất cả các biến trên đều có ảnh hưởng đáng kể đến khả năng vay tiêu dùng. Hệ số âm cho thấy odds vay giảm so với nhóm tham chiếu, trong khi hệ số dương phản ánh xu hướng tăng. Việc phân tích cụ thể từng hệ số như trên giúp hiểu rõ ai là đối tượng dễ vay hoặc khó vay, từ đó hỗ trợ ra quyết định cho ngân hàng hoặc tổ chức tín dụng.
Giả thuyết kiểm định
Tác giả thực hiện hồi quy Probit đơn biến với biến giải thích là
education để kiểm định ảnh hưởng của trình độ học vấn đến
xác suất vay tiêu dùng (loan).
# Hồi quy Probit đơn biến với education
model_probit_edu <- glm(loan ~ education, data = data1, family = binomial(link = "probit"))
summary(model_probit_edu)
##
## Call:
## glm(formula = loan ~ education, family = binomial(link = "probit"),
## data = data1)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.08644 0.06002 -18.100 <2e-16 ***
## educationsecondary 0.17259 0.06732 2.564 0.0104 *
## educationtertiary -0.04522 0.07405 -0.611 0.5414
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 3779.6 on 4333 degrees of freedom
## Residual deviance: 3760.2 on 4331 degrees of freedom
## AIC: 3766.2
##
## Number of Fisher Scoring iterations: 4
Phương trình Probit được ước lượng
\[ \Phi^{-1}(P(\text{loan} = \text{yes})) = -1.09 + 0.17 \times \text{educationsecondary} - 0.05 \times \text{educationtertiary} \]
Bảng tóm tắt các biến có ý nghĩa thống kê
| Biến | Nhóm so sánh | Hệ số (β) | p-value | Diễn giải |
|---|---|---|---|---|
| educationsecondary | So với primary | 0.17 | 0.010 | Người học trung học có probit cao hơn 0.17 đơn vị → xác suất vay tăng. |
| educationtertiary | So với primary | -0.05 | 0.541 | Không có ý nghĩa thống kê. |
Kết luận
Kết quả hồi quy Probit cho thấy trình độ học vấn bậc trung học (secondary) có ảnh hưởng đáng kể đến xác suất vay tiêu dùng. Cụ thể, hệ số ước lượng là 0.17 (p = 0.010), cho thấy người học hết trung học có khả năng vay cao hơn so với người chỉ học tiểu học. Trong khi đó, nhóm học đại học trở lên (tertiary) không có ảnh hưởng thống kê rõ rệt (p = 0.541).
Sau khi thực hiện mô hình hồi quy logistic, tác giả tiếp tục triển
khai mô hình hồi quy Probit nhằm kiểm định tính nhất
quán và độ nhạy của các kết quả. Mô hình Probit sử dụng hàm liên kết là
phân phối chuẩn tích lũy \(\Phi(\cdot)\) để mô phỏng xác suất khách
hàng vay tiêu dùng (loan = yes) dựa trên các biến độc lập:
job (nghề nghiệp), education (trình độ học
vấn), marital (tình trạng hôn nhân) và default
(lịch sử nợ quá hạn).
Mô hình có dạng:
\[ P(\text{loan}_i = 1 \mid X_i) = \Phi(\beta_0 + \beta_1 \cdot \text{job}_i + \beta_2 \cdot \text{education}_i + \beta_3 \cdot \text{marital}_i + \beta_4 \cdot \text{default}_i) \]
Trong đó:
Giả thuyết kiểm định
Với từng biến độc lập, ta thực hiện kiểm định:
Mức ý nghĩa sử dụng là \(\alpha = 0.05\). Nếu pvalue < 0.05, bác bỏ \(H_0\).
Kết quả mô hình Probit
# Chạy mô hình probit
model_probit <- glm(loan ~ job + education + marital + default,
data = data1,
family = binomial(link = "probit"))
# Hiển thị kết quả
summary(model_probit)
##
## Call:
## glm(formula = loan ~ job + education + marital + default, family = binomial(link = "probit"),
## data = data1)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.95148 0.11423 -8.330 < 2e-16 ***
## jobblue-collar -0.04945 0.08733 -0.566 0.571234
## jobentrepreneur 0.25600 0.13113 1.952 0.050907 .
## jobhousemaid -0.32254 0.18134 -1.779 0.075288 .
## jobmanagement -0.18647 0.09917 -1.880 0.060054 .
## jobretired -0.16692 0.12751 -1.309 0.190520
## jobself-employed -0.06293 0.13357 -0.471 0.637561
## jobservices -0.06470 0.09927 -0.652 0.514542
## jobstudent -1.19238 0.39451 -3.022 0.002507 **
## jobtechnician -0.12132 0.08785 -1.381 0.167308
## jobunemployed -0.37298 0.16658 -2.239 0.025157 *
## jobunknown -0.76093 0.46589 -1.633 0.102407
## educationsecondary 0.18140 0.07419 2.445 0.014476 *
## educationtertiary 0.03537 0.09280 0.381 0.703059
## maritalmarried -0.03876 0.07259 -0.534 0.593391
## maritalsingle -0.18677 0.08238 -2.267 0.023374 *
## defaultyes 0.54800 0.15588 3.516 0.000439 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 3779.6 on 4333 degrees of freedom
## Residual deviance: 3698.3 on 4317 degrees of freedom
## AIC: 3732.3
##
## Number of Fisher Scoring iterations: 6
Mô hình hồi quy logistic được xây dựng nhằm phân tích xác suất khách hàng đăng ký vay tiêu dùng (loan = yes) dựa trên các biến định tính: nghề nghiệp (job), trình độ học vấn (education), tình trạng hôn nhân (marital) và lịch sử tín dụng (default). Mức ý nghĩa được sử dụng là 5% (α = 0.05).
Bảng tổng hợp các biến có ý nghĩa thống kê (mô hình Probit)
| Biến | Nhóm so sánh | Hệ số (β) | p-value | Diễn giải chi tiết |
|---|---|---|---|---|
| jobstudent | So với admin. | -1.19 | 0.0025 | Sinh viên có xác suất vay tiêu dùng thấp hơn đáng kể so với nhóm hành chính. |
| jobunemployed | So với admin. | -0.37 | 0.0252 | Người thất nghiệp có xác suất vay tiêu dùng thấp hơn so với nhóm hành chính. |
| jobentrepreneur | So với admin. | 0.26 | 0.0509 | Người tự doanh có xác suất vay tiêu dùng cao hơn một chút so với nhóm hành chính. |
| educationsecondary | So với primary | 0.18 | 0.0145 | Người học trung học có xác suất vay cao hơn so với người chỉ học tiểu học. |
| maritalsingle | So với divorced | -0.19 | 0.0234 | Người độc thân có xác suất vay thấp hơn so với người đã ly hôn. |
| defaultyes | So với default = no | 0.55 | 0.0004 | Người có nợ xấu có xác suất vay tiêu dùng cao hơn đáng kể. |
Phương trình Probit được ước lượng như sau:
probit(P(loan = yes)) = -0.95 - 1.19×jobstudent - 0.37×jobunemployed + 0.26×jobentrepreneur + 0.18×educationsecondary - 0.19×maritalsingle + 0.55×defaultyes
Hệ số chặn (Intercept):
pnorm(-0.95) ≈ 17%.Biến jobstudent:
pnorm(-0.95 - 1.19) ≈ pnorm(-2.14) ≈ 1.6%.Biến jobunemployed:
pnorm(-0.95 - 0.37) ≈ pnorm(-1.32) ≈ 9%.Biến jobentrepreneur:
pnorm(-0.95 + 0.26) ≈ pnorm(-0.69) ≈ 24%.Biến educationsecondary:
pnorm(-0.95 + 0.18) ≈ pnorm(-0.77) ≈ 22%.Biến maritalsingle:
pnorm(-0.95 - 0.19) ≈ pnorm(-1.14) ≈ 13%.Biến defaultyes:
pnorm(-0.95 + 0.55) ≈ pnorm(-0.40) ≈ 34%.Mô hình Probit cho thấy nhiều đặc điểm cá nhân có ảnh hưởng đáng kể đến xác suất vay tiêu dùng. Các hệ số âm cho thấy xu hướng giảm xác suất vay, trong khi hệ số dương cho thấy tăng xác suất vay. Phân tích chi tiết từng yếu tố như trên cung cấp góc nhìn sâu sắc cho các ngân hàng khi đánh giá hồ sơ vay của khách hàng.
Mô hình hồi quy Cloglog (complementary log-log regression) là một dạ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 phi đối xứng – đặc biệt phù hợp khi xác suất xảy ra sự kiện quan tâm rất nhỏ (hiếm gặp) hoặc rất lớn (gần như chắc chắn).
Hàm liên kết Cloglog
Mô hình có dạng toán học như sau:
\[ \log\left[-\log(1 - P(Y = 1))\right] = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \cdots + \beta_k X_k \]
hay viết lại theo xác suất:
\[ P(Y = 1 | X) = 1 - \exp\left[-\exp\left(\beta_0 + \beta_1 X_1 + \cdots + \beta_k X_k \right)\right] \]
Trong nghiên cứu này, ta áp dụng mô hình cho biến phụ thuộc:
Các biến độc lập gồm: job, education,
marital, default.
\[ \log[-\log(1 - P(\text{loan} = 1))] = \beta_0 + \beta_1 \cdot \text{job} + \beta_2 \cdot \text{education} + \beta_3 \cdot \text{marital} + \beta_4 \cdot \text{default} \]
Giả thuyết kiểm định
- H₀: Trình độ học vấn không ảnh hưởng đến xác suất vay
tiêu dùng.
- H₁: Trình độ học vấn có ảnh hưởng đến xác suất vay
tiêu dùng.
# Hồi quy Cloglog đơn biến với biến education
model_cloglog_edu <- glm(loan ~ education, data = data1, family = binomial(link = "cloglog"))
summary(model_cloglog_edu)
##
## Call:
## glm(formula = loan ~ education, family = binomial(link = "cloglog"),
## data = data1)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.90216 0.10324 -18.425 <2e-16 ***
## educationsecondary 0.28739 0.11432 2.514 0.0119 *
## educationtertiary -0.07845 0.12812 -0.612 0.5403
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 3779.6 on 4333 degrees of freedom
## Residual deviance: 3760.2 on 4331 degrees of freedom
## AIC: 3766.2
##
## Number of Fisher Scoring iterations: 5
Phương trình Cloglog được ước lượng
\[ \log(-\log(1 - P(\text{loan} = \text{yes}))) = -1.90 + 0.29 \times \text{educationsecondary} - 0.08 \times \text{educationtertiary} \]
Bảng tóm tắt các biến có ý nghĩa thống kê
| Biến | Nhóm so sánh | Hệ số (β) | p-value | Diễn giải |
|---|---|---|---|---|
| educationsecondary | So với primary | 0.29 | 0.0119 | Người học trung học có cloglog cao hơn 0.29 → xác suất vay tăng. |
| educationtertiary | So với primary | -0.08 | 0.5403 | Không có ý nghĩa thống kê. |
Kết luận
Kết quả hồi quy Cloglog đơn biến cho thấy nhóm có
trình độ học vấn trung học (secondary) có ảnh hưởng
có ý nghĩa thống kê đến khả năng vay tiêu dùng
(p = 0.0119).
Cụ thể, hệ số ước lượng là 0.29, cho thấy nhóm này có
giá trị cloglog cao hơn, tức là xác suất vay tiêu dùng cao
hơn so với nhóm chỉ học tiểu học (primary).
Ngược lại, nhóm học đại học trở lên (tertiary) có hệ số
âm nhẹ và không có ý nghĩa thống kê (p =
0.5403).
Giả thuyết kiểm định
Với mỗi biến độc lập \(X_j\), ta kiểm định:
Dựa vào p-value trong kết quả ước lượng, ta đưa ra quyết định bác bỏ hay giữ H₀ tại mức ý nghĩa α (thường là 0.05).
Ước lượng mô hình
Mô hình được ước lượng bằng phương pháp tối đa hóa hàm hợp lý (Maximum Likelihood Estimation - MLE).
# Hồi quy cloglog
model_cloglog <- glm(loan ~ job + education + marital + default,
data = data1,
family = binomial(link = "cloglog"))
# Tóm tắt kết quả
summary(model_cloglog)
##
## Call:
## glm(formula = loan ~ job + education + marital + default, family = binomial(link = "cloglog"),
## data = data1)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.68393 0.18527 -9.089 < 2e-16 ***
## jobblue-collar -0.08106 0.13885 -0.584 0.559350
## jobentrepreneur 0.39136 0.19585 1.998 0.045690 *
## jobhousemaid -0.56392 0.32618 -1.729 0.083833 .
## jobmanagement -0.30336 0.16384 -1.852 0.064084 .
## jobretired -0.25619 0.20990 -1.221 0.222256
## jobself-employed -0.08133 0.21554 -0.377 0.705915
## jobservices -0.10557 0.15805 -0.668 0.504166
## jobstudent -2.49997 1.00726 -2.482 0.013066 *
## jobtechnician -0.19380 0.14125 -1.372 0.170039
## jobunemployed -0.63490 0.29818 -2.129 0.033233 *
## jobunknown -1.44554 1.00786 -1.434 0.151495
## educationsecondary 0.29882 0.12413 2.407 0.016070 *
## educationtertiary 0.05028 0.15685 0.321 0.748543
## maritalmarried -0.06355 0.11699 -0.543 0.586968
## maritalsingle -0.30214 0.13555 -2.229 0.025810 *
## defaultyes 0.80285 0.21172 3.792 0.000149 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 3779.6 on 4333 degrees of freedom
## Residual deviance: 3698.5 on 4317 degrees of freedom
## AIC: 3732.5
##
## Number of Fisher Scoring iterations: 6
Trong phần này, ta đi sâu phân tích ý nghĩa thống kê và thực tiễn của từng nhóm biến độc lập trong mô hình Cloglog. Mỗi hệ số phản ánh tác động của biến độc lập tương ứng đến log[-log(1 - P(loan = yes))], với các nhóm tham chiếu đã được xác định rõ.
Bảng tổng hợp các biến có ý nghĩa thống kê (mô hình Cloglog)
|——————–|—————————|———–|———-|————————|———————| | jobstudent | So với admin. | -2.50 | 0.013 | 0.082 | Sinh viên có xác suất vay cực thấp (hazard chỉ bằng 8.2% so với nhóm hành chính). | | jobunemployed | So với admin. | -0.63 | 0.033 | 0.53 | Người thất nghiệp có xác suất vay thấp hơn khoảng 47%. | | jobentrepreneur | So với admin. | 0.39 | 0.046 | 1.48 | Người tự doanh có xác suất vay cao hơn 48%. | | educationsecondary | So với primary | 0.30 | 0.016 | 1.35 | Người học trung học có xác suất vay cao hơn 35% so với người chỉ học tiểu học. | | maritalsingle | So với divorced | -0.30 | 0.026 | 0.74 | Người độc thân có xác suất vay thấp hơn khoảng 26%. | | defaultyes | So với default = no | 0.80 | <0.001 | 2.23 | Người có nợ xấu có xác suất vay cao gấp 2.23 lần người không có nợ xấu. |
Phương trình Cloglog được ước lượng như sau
cloglog(P(loan = yes)) = -1.68 - 2.50×jobstudent - 0.63×jobunemployed + 0.39×jobentrepreneur + 0.30×educationsecondary - 0.30×maritalsingle + 0.80×defaultyes
Hệ số chặn (Intercept)
1 - exp(-exp(-1.68)) ≈ 0.18Biến jobstudent
exp(-2.50) ≈ 0.082Biến jobunemployed
exp(-0.63) ≈ 0.53Biến jobentrepreneur
exp(0.39) ≈ 1.48Biến educationsecondary
exp(0.30) ≈ 1.35Biến maritalsingle
exp(-0.30) ≈ 0.74Biến defaultyes
exp(0.80) ≈ 2.23Kết luận chung từ mô hình Cloglog
Các biến jobstudent, jobunemployed,
jobentrepreneur, educationsecondary,
maritalsingle, và defaultyes đều ảnh hưởng có
ý nghĩa thống kê đến khả năng vay tiêu dùng.
Mô hình cloglog phù hợp khi xác suất xảy ra sự kiện thấp, và kết quả thu
được khá nhất quán với mô hình logit và probit.
→ Giúp tăng độ tin cậy trong phân tích và ra quyết định.
# So sánh AIC giữa các mô hình
aic_results <- AIC(model_logit, model_probit, model_cloglog)
# So sánh Log-Likelihood
ll_logit <- logLik(model_logit)
ll_probit <- logLik(model_probit)
ll_cloglog <- logLik(model_cloglog)
# Cài gói và tính Pseudo R²
if (!require(pscl)) install.packages("pscl")
library(pscl)
r2_logit <- pR2(model_logit)["McFadden"]
## fitting null model for pseudo-r2
r2_probit <- pR2(model_probit)["McFadden"]
## fitting null model for pseudo-r2
r2_cloglog <- pR2(model_cloglog)["McFadden"]
## fitting null model for pseudo-r2
# Tổng hợp kết quả vào bảng
comparison_table <- data.frame(
Model = c("Logit", "Probit", "Cloglog"),
AIC = round(aic_results$AIC, 2),
LogLikelihood = c(round(ll_logit[1], 2),
round(ll_probit[1], 2),
round(ll_cloglog[1], 2)),
McFadden_R2 = round(c(r2_logit, r2_probit, r2_cloglog), 4)
)
# Hiển thị bảng kết quả
knitr::kable(comparison_table, caption = "So sánh ba mô hình nhị phân")
| Model | AIC | LogLikelihood | McFadden_R2 |
|---|---|---|---|
| Logit | 3732.26 | -1849.13 | 0.0215 |
| Probit | 3732.26 | -1849.13 | 0.0215 |
| Cloglog | 3732.53 | -1849.26 | 0.0214 |
Nhận xét
Để lựa chọn mô hình hồi quy nhị phân phù hợp, ba mô hình được đánh giá theo các tiêu chí: Akaike Information Criterion (AIC), Log-Likelihood và Pseudo R² của McFadden.
AIC: Mô hình logit và probit đều có giá trị AIC thấp nhất (3732.26), cho thấy độ phù hợp mô hình tương đương và tốt hơn mô hình cloglog (3732.53).
Log-Likelihood: Hai mô hình logit và probit cùng đạt giá trị log-likelihood cao hơn một chút so với cloglog (ít âm hơn), phản ánh khả năng khớp dữ liệu tốt hơn nhẹ.
McFadden’s R²: Cả logit và probit có cùng giá trị R² là 0.0215, nhỉnh hơn so với cloglog (0.0214). Tuy nhiên, các giá trị này đều tương đối thấp, phản ánh khả năng giải thích biến phụ thuộc còn hạn chế.
Kết luận
Trong bối cảnh ba mô hình có hiệu quả dự đoán gần như tương đương, mô hình logit được xem là lựa chọn phù hợp hơn. Do đó, mô hình logit sẽ được sử dụng cho các phân tích và suy luận tiếp theo trong nghiên cứu này.