knitr::opts_chunk$set(echo = TRUE, warning = FALSE, message = FALSE)
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.4.3
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
library(readxl)
## Warning: package 'readxl' was built under R version 4.4.3
library(nnet)
library(pscl)
## Warning: package 'pscl' was built under R version 4.4.3
## Classes and Methods for R originally developed in the
## Political Science Computational Laboratory
## Department of Political Science
## Stanford University (2002-2015),
## by and under the direction of Simon Jackman.
## hurdle and zeroinfl functions by Achim Zeileis.
library(pROC)
## Warning: package 'pROC' was built under R version 4.4.3
## Type 'citation("pROC")' for a citation.
##
## Attaching package: 'pROC'
## The following objects are masked from 'package:stats':
##
## cov, smooth, var
library(MASS)
## Warning: package 'MASS' was built under R version 4.4.3
##
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
##
## select
library(epitools)
library(stargazer)
##
## Please cite as:
## Hlavac, Marek (2022). stargazer: Well-Formatted Regression and Summary Statistics Tables.
## R package version 5.2.3. https://CRAN.R-project.org/package=stargazer
library(xlsx)
## Warning: package 'xlsx' was built under R version 4.4.3
Em xin cam đoan rằng đề tài “Phân tích các yếu tố nhân khẩu học và tín dụng ảnh hưởng đến quyết định vay tiêu dùng của khách hàng” là công trình nghiên cứu do chính tôi thực hiện. Các số liệu, kết quả phân tích và các nhận định trong đề tài là trung thực, có cơ sở khoa học, được thu thập và xử lý theo đúng quy trình nghiên cứu. Em khẳng định không sao chép, không vi phạm bản quyền của bất kỳ cá nhân hay tổ chức nào. Mọi trích dẫn trong đề tài đều được ghi rõ nguồn gốc. Em xin chịu hoàn toàn trách nhiệm trước nhà trường về tính trung thực và nguyên bản của nội dung đề tài này.
Em xin chân thành cảm ơn Thầy Trần Mạnh Tường – người đã tận tình hướng dẫn, định hướng và góp ý chuyên môn giúp em hoàn thiện tiểu luận “Phân tích các yếu tố nhân khẩu học và tín dụng ảnh hưởng đến quyết định vay tiêu dùng của khách hàng” một cách khoa học và sát với thực tiễn. Em cũng xin gửi lời cảm ơn sâu sắc đến quý Thầy Cô trong khoa Khoa học Dữ liệu – Trường Đại học Tài chính – Marketing đã giảng dạy, truyền đạt kiến thức và tạo điều kiện thuận lợi để em có thể hoàn thành tốt quá trình học tập và nghiên cứu của mình. Em xin chân thành cảm ơn!
Trong bối cảnh nền kinh tế Việt Nam ngày càng phát triển và mức sống người dân được cải thiện rõ rệt, nhu cầu vay tiêu dùng đang trở thành một xu hướng phổ biến và đóng vai trò ngày càng quan trọng trong tài chính cá nhân. Vay tiêu dùng không chỉ hỗ trợ người dân nâng cao chất lượng cuộc sống mà còn góp phần thúc đẩy tăng trưởng kinh tế thông qua việc gia tăng sức mua, kích thích tiêu dùng nội địa. Tuy nhiên, không phải mọi cá nhân đều có xu hướng hoặc khả năng tiếp cận tín dụng tiêu dùng như nhau. Các yếu tố nhân khẩu học như giới tính, độ tuổi, trình độ học vấn, tình trạng hôn nhân và nghề nghiệp có thể ảnh hưởng đáng kể đến nhận thức, động cơ cũng như hành vi vay vốn của khách hàng. Việc hiểu rõ các đặc điểm này sẽ cung cấp cơ sở khoa học cho việc dự đoán hành vi tài chính, đồng thời giúp các tổ chức tín dụng tối ưu hóa chiến lược sản phẩm, tiếp thị và quản trị rủi ro.
Trên thực tế, nhiều tổ chức tín dụng vẫn đang áp dụng các chính sách tín dụng tương đối đồng nhất cho mọi đối tượng khách hàng, dẫn đến việc bỏ lỡ cơ hội tiếp cận hiệu quả các phân khúc tiềm năng. Ngoài ra, tình trạng tín dụng của khách hàng – đặc biệt là lịch sử nợ xấu – cũng là một yếu tố quan trọng ảnh hưởng đến khả năng tiếp cận vay vốn, nhưng vẫn chưa được tích hợp đầy đủ vào các mô hình phân tích hành vi vay tiêu dùng. Xuất phát từ những lý do trên, đề tài “Phân tích các yếu tố nhân khẩu học và tín dụng ảnh hưởng đến quyết định vay tiêu dùng của khách hàng” được lựa chọn với kỳ vọng mang lại những phát hiện có giá trị cho cả lĩnh vực nghiên cứu và thực tiễn hoạt động tín dụng tiêu dùng tại Việt Nam.
Mục tiêu của đề tài là phân tích các yếu tố nhân khẩu học ảnh hưởng đến quyết định vay tiêu dùng của khách hàng. Cụ thể, nghiên cứu tập trung vào việc mô tả đặc điểm nhân khẩu học của khách hàng trong tập dữ liệu khảo sát, đồng thời xác định mối quan hệ giữa các yếu tố như giới tính, trình độ học vấn, tình trạng hôn nhân, nghề nghiệp, tình trạng vay mua nhà và vay nợ tín dụng với hành vi vay tiêu dùng. Trên cơ sở đó, đề tài tiến hành đánh giá mức độ ảnh hưởng của từng yếu tố đến xu hướng vay tiêu dùng, nhằm làm rõ nhóm đối tượng nào có khả năng vay cao hơn. Cuối cùng, từ những phát hiện thực nghiệm, nghiên cứu đề xuất một số khuyến nghị cụ thể dành cho các tổ chức tín dụng trong việc phát triển sản phẩm tài chính phù hợp, nâng cao hiệu quả tiếp cận và quản lý khách hàng mục tiêu.
Các đặc điểm nhân khẩu học và tín dụng nào có mối liên hệ đáng kể với quyết định vay tiêu dùng của khách hàng?
Nghề nghiệp, trình độ học vấn, tình trạng hôn nhân và tình trạng nợ tín dụng ảnh hưởng như thế nào đến khả năng vay tiêu dùng?
Nhóm nhân khẩu học nào có xu hướng vay tiêu dùng cao hơn hoặc thấp hơn so với các nhóm khác?
Đối tượng nghiên cứu của đề tài là hành vi vay tiêu dùng của khách hàng cá nhân, cụ thể là quyết định có hoặc không vay tiêu dùng, được đo lường thông qua biến định tính nhị phân trong tập dữ liệu khảo sát. Bên cạnh đó, đề tài xem xét các yếu tố nhân khẩu học bao gồm giới tính, trình độ học vấn, tình trạng hôn nhân, nghề nghiệp, tình trạng vay mua nhà và vay nợ tín dụng được giả định là các biến độc lập có khả năng ảnh hưởng đến hành vi vay tiêu dùng.
Trong nghiên cứu này, phương pháp định lượng được sử dụng nhằm phân tích mối quan hệ giữa các yếu tố nhân khẩu học và tín dụng (giới tính, độ tuổi, trình độ học vấn, tình trạng hôn nhân, thu nhập, v.v.) với quyết định vay tiêu dùng của khách hàng.
Ngoài mục lục, danh mục chữ viết tắt, danh mục hình ảnh và bảng biểu, phụ lục cùng tài liệu tham khảo đề tài được chia thành ba chương chính:
Chương 1: Giới thiệu đề tài
Trình bày bối cảnh, lý do chọn đề tài, mục tiêu và câu hỏi nghiên cứu, đối tượng phạm vi nghiên cứu, phương pháp và kết cấu của đề tài.
Chương 2: Cơ sở lý thuyết và phương pháp nghiên cứu
Tổng hợp các khái niệm, lý thuyết liên quan đến hành vi vay tiêu dùng và đặc điểm nhân khẩu học. Trình bày các phương pháp thống kê và mô hình định lượng được sử dụng trong phân tích.
Chương 3: Kết quả nghiên cứu
Phân tích dữ liệu thực nghiệm, trình bày kết quả từ các phương pháp thống kê và mô hình hồi quy, đánh giá mức độ ảnh hưởng của các yếu tố, và đề xuất một số khuyến nghị thực tiễn.
Vay tiêu dùng là một dạng hành vi tài chính trong đó cá nhân sử dụng các hình thức tín dụng để tài trợ cho nhu cầu chi tiêu cá nhân như mua sắm, học tập, sinh hoạt hoặc các mục đích không mang tính sản xuất. Đây là hoạt động phổ biến trong nền kinh tế hiện đại, góp phần thúc đẩy tiêu dùng hộ gia đình và lưu chuyển dòng vốn trong xã hội.
Quyết định vay tiêu dùng của một cá nhân không chỉ phụ thuộc vào điều kiện tài chính hiện tại mà còn bị chi phối bởi nhiều yếu tố phi tài chính, trong đó đáng chú ý là các đặc điểm nhân khẩu học. Các yếu tố như giới tính, độ tuổi, trình độ học vấn, tình trạng hôn nhân và nghề nghiệp có ảnh hưởng đáng kể đến thái độ đối với rủi ro tài chính, khả năng tiếp cận tín dụng cũng như nhu cầu vay vốn trong từng giai đoạn của cuộc sống. Việc nghiên cứu vai trò của các yếu tố nhân khẩu học đối với hành vi vay tiêu dùng là cơ sở quan trọng để hiểu rõ hơn về hành vi tài chính cá nhân và đưa ra các chính sách tín dụng phù hợp theo từng phân khúc khách hàng.
Các đặc điểm nhân khẩu học và tín dụng đóng vai trò quan trọng trong việc lý giải sự khác biệt trong hành vi vay tiêu dùng giữa các cá nhân hoặc nhóm xã hội. Trong nghiên cứu này, các yếu tố bao gồm:
job): Thể hiện khả năng
tạo thu nhập và mức độ ổn định tài chính. Người có nghề nghiệp ổn định
thường dễ được phê duyệt tín dụng hơn.marital): Người
đã kết hôn thường có nhu cầu chi tiêu cao hơn và xu hướng vay để phục vụ
mục đích chung như nhà ở, con cái.education): Tác động
đến khả năng hiểu biết tài chính và tiếp cận các sản phẩm tín dụng phù
hợp.default): Phản
ánh lịch sử tín dụng và khả năng tuân thủ nghĩa vụ tài chính.housing): Có
thể đại diện cho cam kết tài chính dài hạn, ảnh hưởng đến khả năng hoặc
nhu cầu vay tiêu dùng bổ sung.Mô hình hồi quy nhị phân là công cụ phổ biến được sử dụng để phân tích và dự báo xác suất xảy ra của một sự kiện nhị phân, trong đó biến phụ thuộc chỉ nhận giá trị 0 hoặc 1. Trong bối cảnh nghiên cứu này, biến phụ thuộc là hành vi vay tiêu dùng của khách hàng (1 = có vay, 0 = không vay). Mục tiêu của các mô hình hồi quy nhị phân là ước lượng xác suất xảy ra sự kiện \(Y=1\) dựa trên các biến độc lập \(X_1, X_2, \dots, X_k\).
Dạng tổng quát của mô hình:
\[ P(Y = 1|X) = G(X\beta) \]
Trong đó:
Sử dụng hàm logistic:
\[ P(Y=1|X) = \frac{e^{X\beta}}{1 + e^{X\beta}} \]
Hàm logit giữ xác suất trong khoảng (0,1) và hệ số \(\beta\) được diễn giải thông qua log(Odds Ratio).
Sử dụng hàm phân phối tích lũy chuẩn hóa:
\[ P(Y=1|X) = \Phi(X\beta) \]
Phù hợp trong các trường hợp dữ liệu giả định có phân phối chuẩn ở sai số.
Sử dụng hàm:
\[ P(Y=1|X) = 1 - e^{-e^{X\beta}} \]
Phù hợp khi xác suất xảy ra sự kiện gần bằng 0 hoặc gần bằng 1.
Mô hình xác suất tuyến tính là một trường hợp đặc biệt của Mô hình Tuyến tính Tổng quát (Generalized Linear Model - GLM), trong đó hàm liên kết là hàm đồng nhất (identity link function). Công thức mô hình được biểu diễn như sau:
\[ P(Y = 1 \mid X) = X\beta \]
Trong đó:
Mô hình này cho phép diễn giải trực tiếp xác suất xảy ra sự kiện \(Y = 1\) như một hàm tuyến tính của các biến giải thích \(X\).
Ưu điểm của mô hình này là đơn giản, dễ ước lượng bằng phương pháp OLS và dễ diễn giải. Tuy nhiên, vì giá trị dự báo có thể nằm ngoài khoảng [0, 1], mô hình này thường không đảm bảo ý nghĩa xác suất. Điều này dẫn đến vi phạm giả định và độ chính xác thấp khi dự đoán hành vi nhị phân.
Trong GLM, mô hình xác suất tuyến tính vẫn được sử dụng như một bước tham chiếu ban đầu để so sánh với các mô hình logit, probit hoặc cloglog.
Các mô hình nhị phân như logit, probit và cloglog đều được ước lượng bằng phương pháp ước lượng hợp lý tối đa (MLE). Đây là phương pháp tìm giá trị tham số \(\beta\) sao cho xác suất tạo ra dữ liệu quan sát là cao nhất. Trong GLMs, hàm hợp lý được xây dựng dựa trên phân phối nhị thức và tối ưu hóa bằng các thuật toán như Newton-Raphson.
Trong các mô hình hồi quy nhị phân thuộc họ GLM như logit, probit và cloglog, tham số \(\beta\) không được ước lượng bằng phương pháp bình phương tối thiểu như trong hồi quy tuyến tính cổ điển, mà thay vào đó sử dụng phương pháp ước lượng hợp lý tối đa (Maximum Likelihood Estimation - MLE).
Phương pháp MLE tìm tập giá trị của \(\beta\) sao cho hàm hợp lý (likelihood function) đạt cực đại – nghĩa là, khả năng tạo ra bộ dữ liệu quan sát từ mô hình là cao nhất. Hàm hợp lý trong trường hợp nhị phân dựa trên phân phối nhị thức:
\[ L(\beta) = \prod_{i=1}^{n} [P_i]^{y_i} [1 - P_i]^{1 - y_i}, \quad \text{trong đó } P_i = G(X_i\beta) \]
Để đơn giản hóa tính toán, ta lấy log của hàm hợp lý để có log-likelihood:
\[ \log L(\beta) = \sum_{i=1}^{n} \left[ y_i \log P_i + (1 - y_i) \log(1 - P_i) \right] \]
Giải bài toán tối đa hóa log-likelihood bằng các thuật toán số học như Newton-Raphson hoặc Fisher Scoring, ta thu được ước lượng \(\hat{\beta}\).
Trong nghiên cứu xã hội học, marketing hay tài chính tiêu dùng, hai chỉ số phổ biến dùng để đo lường mối quan hệ giữa đặc điểm cá nhân và hành vi (như vay tiêu dùng) là Relative Risk (RR) và Odds Ratio (OR). Các chỉ số này giúp đánh giá mức độ khác biệt về khả năng xảy ra hành vi giữa các nhóm khách hàng có hoặc không có một đặc điểm nhất định (ví dụ: có nhà ở hoặc không, đã kết hôn hoặc độc thân).
Relative Risk (RR) – hay còn gọi là nguy cơ tương đối – so sánh xác suất xảy ra hành vi vay tiêu dùng giữa hai nhóm:
\[ RR = \frac{P_1}{P_0} \]
Trong đó:
Diễn giải:
Odds Ratio (OR) đo lường tỷ lệ odds (khả năng xảy ra so với không xảy ra) giữa hai nhóm:
\[ OR = \frac{P_1 / (1 - P_1)}{P_0 / (1 - P_0)} = \frac{P_1 (1 - P_0)}{P_0 (1 - P_1)} \]
Trong mô hình hồi quy logistic, kết quả hồi quy chính là log(OR):
\[ \log(OR) = X\beta \]
Diễn giải:
library()
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 ...
| 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,…
Dữ liệu sử dụng trong nghiên cứu được trích xuất từ một chiến dịch tiếp thị qua điện thoại của một ngân hàng. Tập 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 phạm vi nghiên cứu này, tác giả tập trung phân tích hành vi tài chính cụ thể là vay tiêu dùng cá nhân.
Biến phụ thuộc chính trong mô hình là:
loan: Thể hiện khách hàng có
vay tiêu dùng hay không, được mã hóa lại dưới dạng nhị phân:
1: nếu khách hàng có vay tiêu dùng (loan = “yes”)0: nếu khách hàng không vay tiêu dùng (loan =
“no”)Các biến độc lập là các yếu tố nhân khẩu học và đặc điểm tài chính của khách hàng, được chọn lọc từ bộ dữ liệu gốc:
job: Nghề nghiệp của khách hàng
(admin., technician, blue-collar, etc.)marital: Tình trạng hôn nhân (married,
single, divorced)education: Trình độ học vấn (primary,
secondary, tertiary, unknown)default: Có nợ quá hạn hay không
(yes/no)housing: Có vay mua nhà hay không
(yes/no)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)
# Xem trước dữ liệu mới
str(data1)
## 'data.frame': 4521 obs. of 6 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 ...
head(data1)
## job marital education default housing loan
## 1 unemployed married primary no no no
## 2 services married secondary no yes yes
## 3 management single tertiary no yes no
## 4 management married tertiary no yes yes
## 5 blue-collar married secondary no yes no
## 6 management single tertiary no no no
Quy trình nghiên cứu được tác giả xây dựng theo các bước logic và tuần tự nhằm đảm bảo tính hệ thống, độ tin cậy và cơ sở khoa học trong phân tích dữ liệu. Cụ thể bao gồm các bước sau:
library(DiagrammeR)
DiagrammeR::grViz("
digraph research_flow {
graph [rankdir = TB]
node [shape = rectangle, style = filled, color = lightblue, fontname = Helvetica, fontsize = 12]
A [label = 'Bước 1: Thu thập & xử lý dữ liệu']
B [label = 'Bước 2: Thống kê mô tả\n(Dữ liệu đơn biến)']
C [label = 'Bước 3: Kiểm định Chi-square\n(Giữa biến phụ thuộc và độc lập)']
D [label = 'Bước 4: Phân tích cặp biến\n(Bảng tần số, biểu đồ, RR & OR)']
E [label = 'Bước 5: Ước lượng mô hình nhị phân\n(Logit, Probit, Cloglog, GLM)']
F [label = 'Bước 6: So sánh mô hình\n(AIC, ROC, Confusion Matrix)']
G [label = 'Bước 7: Đề xuất chính sách\n(Dựa trên kết quả mô hình)']
A -> B -> C -> D -> E -> F -> G
}
")
Bước 1: Thu thập và xử lý dữ liệu
Tác giả sử dụng tập dữ liệu được rút trích 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. Từ đó, tác giả lựa chọn các biến phù hợp với mục tiêu nghiên cứu:
Sau khi xác định biến, tác giả tiến hành làm sạch dữ liệu, mã hóa và chuyển đổi các biến định tính về định dạng phù hợp (factor) để phục vụ phân tích.
Bước 2: Thống kê mô tả đơn biến
Tác giả tiến hành thống kê tần suất và tỷ lệ phần trăm cho từng biến nhằm mô tả đặc điểm tổng quát của dữ liệu. Kết quả được minh họa thông qua biểu đồ cột và biểu đồ tròn nhằm trực quan hóa đặc điểm nhân khẩu học của khách hàng.
Bước 3: Kiểm định Chi-bình phương
Ở bước này, tác giả sử dụng kiểm định Chi-square để kiểm tra mối liên hệ thống kê giữa biến phụ thuộc loan và từng biến độc lập. Những biến có giá trị p < 0.05 được xem là có mối quan hệ có ý nghĩa thống kê với hành vi vay tiêu dùng, từ đó được đưa vào các phân tích sâu hơn.
Bước 4: Phân tích mối quan hệ giữa cặp biến
Với mỗi cặp biến có mối liên hệ, tác giả thực hiện các bước:
Lập bảng tần số chéo để mô tả phân phối chung.
Vẽ biểu đồ cột phân nhóm để so sánh trực quan.
Thực hiện kiểm định tỷ lệ giữa các nhóm.
Tính toán hai chỉ số quan trọng: Relative Risk (RR) và Odds Ratio (OR) nhằm lượng hóa mức độ ảnh hưởng của các yếu tố nhân khẩu học đến quyết định vay tiêu dùng.
Bước 5: Ước lượng mô hình hồi quy nhị phân
Tác giả tiến hành xây dựng và ước lượng 4 mô hình hồi quy nhị phân nhằm phân tích tác động của các biến nhân khẩu học đến hành vi vay tiêu dùng:
Hồi quy Logistic (Logit)
Hồi quy Probit
Hồi quy Complementary log-log (Cloglog)
Mô hình xác suất tuyến tính (LMP)
Việc ước lượng các mô hình này được thực hiện bằng phương pháp ước lượng hợp lý tối đa (Maximum Likelihood Estimation – MLE).
Bước 6: Đánh giá và lựa chọn mô hình phù hợp
Tác giả sử dụng các tiêu chí đánh giá mô hình bao gồm:
Chỉ số AIC (Akaike Information Criterion)
Đường cong ROC và diện tích dưới đường cong (AUC)
Ma trận nhầm lẫn (Confusion Matrix)
Dựa trên kết quả đánh giá, mô hình tốt nhất sẽ được lựa chọn để diễn giải và đề xuất chính sách.
Bước 7: Kết luận và khuyến nghị
Tác giả tổng hợp các kết quả định tính và định lượng, từ đó rút ra các kết luận chính về mối quan hệ giữa các đặc điểm nhân khẩu học và hành vi vay tiêu dùng. Trên ở đcơ só, nghiên cứu đưa ra các khuyến nghị thực tiễn cho tổ chức tín dụng nhằm cải thiện hiệu quả tiếp cận khách hàng mục tiêu.
Biến hành vi vay tiêu dùng (Loan)
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))
Vẽ biểu đồ tròn
# 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 2559 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))
Vẽ biểu đồ tròn
# Tạo bảng tần suất cho biến job
job_freq <- table(data1$job)
job_prop <- prop.table(job_freq)
# Chuyển sang data frame để vẽ
job_df <- as.data.frame(job_prop)
colnames(job_df) <- c("Job", "Proportion")
# Thêm cột phần trăm để làm nhãn
job_df$Percent <- paste0(round(job_df$Proportion * 100, 1), "%")
# Vẽ biểu đồ tròn
ggplot(job_df, aes(x = "", y = Proportion, fill = Job)) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y") +
geom_text(aes(label = Percent), position = position_stack(vjust = 0.5), size = 3) +
labs(title = "Tỷ lệ phân bố nghề nghiệp", x = NULL, y = NULL) +
theme_void() +
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))
Vẽ biểu đồ tròn
# Bảng tần số và tần suất
marital_freq <- table(data1$marital)
marital_prop <- prop.table(marital_freq)
# Chuyển sang data frame để vẽ
marital_df <- as.data.frame(marital_prop)
colnames(marital_df) <- c("Marital", "Proportion")
# Thêm cột phần trăm để làm nhãn
marital_df$Percent <- paste0(round(marital_df$Proportion * 100, 1), "%")
# Vẽ biểu đồ tròn
ggplot(marital_df, aes(x = "", y = Proportion, fill = Marital)) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y") +
geom_text(aes(label = Percent), position = position_stack(vjust = 0.5), size = 4) +
labs(title = "Tỷ lệ tình trạng hôn nhân", 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 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))
Vẽ biểu đồ tròn
# Bảng tần số và tần suất
education_freq <- table(data1$education)
education_prop <- prop.table(education_freq)
# Chuyển sang data frame để vẽ
education_df <- as.data.frame(education_prop)
colnames(education_df) <- c("Education", "Proportion")
# Thêm cột phần trăm để làm nhãn
education_df$Percent <- paste0(round(education_df$Proportion * 100, 1), "%")
# Vẽ biểu đồ tròn
ggplot(education_df, aes(x = "", y = Proportion, fill = Education)) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y") +
geom_text(aes(label = Percent), position = position_stack(vjust = 0.5), size = 4) +
labs(title = "Tỷ lệ trình độ học vấn", 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 education, ta có các nhận định sau:
Nhóm có trình độ học vấn secondary (trung học) 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 (tiểu học) 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))
Vẽ biểu đồ tròn
# Bảng tần số và tần suất
default_freq <- table(data1$default)
default_prop <- prop.table(default_freq)
# Chuyển sang data frame để vẽ
default_df <- as.data.frame(default_prop)
colnames(default_df) <- c("Default", "Proportion")
# Thêm cột phần trăm để làm nhãn
default_df$Percent <- paste0(round(default_df$Proportion * 100, 1), "%")
# Vẽ biểu đồ tròn
ggplot(default_df, aes(x = "", y = Proportion, fill = Default)) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y") +
geom_text(aes(label = Percent), position = position_stack(vjust = 0.5), size = 4) +
labs(title = "Tỷ lệ khách hàng có nợ quá hạn", x = NULL, y = NULL) +
theme_void() +
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.
Trong nghiên cứu này, kiểm định Chi bình phương (Chi-squared test) được sử dụng nhằm xác định xem có tồn tại mối liên hệ thống kê giữa quyết định vay tiêu dùng của khách hàng (biến phụ thuộc loan) với một số đặc điểm nhân khẩu học và kinh tế xã hội (các biến độc lập phân loại) hay không. Cụ thể, các biến phân loại được đưa vào kiểm định bao gồm:
Thứ nhất, biến housing (tình trạng vay mua nhà) phản ánh việc khách hàng hiện có đang vay tiền để mua nhà hay không. Biến này gồm ba nhóm giá trị: “yes”, “no”, và “unknown”. Kiểm định giúp xác định liệu việc đã vay mua nhà có ảnh hưởng đến khả năng tiếp tục vay tiêu dùng hay không.
Thứ hai, biến marital (tình trạng hôn nhân) phản ánh tình trạng hôn nhân của khách hàng, bao gồm các nhóm: độc thân, đã kết hôn và ly hôn. Việc kiểm định biến này cho phép đánh giá xem tình trạng hôn nhân có ảnh hưởng đáng kể đến quyết định vay tiêu dùng hay không.
Thứ ba, biến education (trình độ học vấn) thể hiện mức học vấn cao nhất của khách hàng với các nhóm: tiểu học, trung học, đại học/cao đẳng và không rõ. Trình độ học vấn có thể phản ánh khả năng tài chính cũng như khả năng tiếp cận tín dụng, do đó kiểm định biến này rất quan trọng.
Thứ tư, biến default (nợ quá hạn) cho biết khách hàng có từng nợ quá hạn trong quá khứ hay không. Biến này gồm hai nhóm: “yes” và “no”. Đây là yếu tố then chốt trong đánh giá rủi ro tín dụng của khách hàng, và có thể ảnh hưởng mạnh đến việc cấp khoản vay mới.
Cuối cùng, biến job (nghề nghiệp) phản ánh lĩnh vực nghề nghiệp hiện tại của khách hàng, bao gồm nhiều nhóm như: nhân viên hành chính, lao động phổ thông, doanh nhân, học sinh – sinh viên, người đã nghỉ hưu, thất nghiệp,… Nghề nghiệp có thể phản ánh mức thu nhập và ổn định tài chính, từ đó ảnh hưởng đến quyết định vay tiêu dùng.
Việc kiểm định Chi bình phương giữa từng biến kể trên với biến loan sẽ giúp xác định xem mỗi đặc điểm nhân khẩu học có ảnh hưởng đáng kể đến hành vi vay tiêu dùng của khách hàng hay không. Nếu giá trị p-value của kiểm định nhỏ hơn 0.05, ta có thể kết luận rằng tồn tại mối liên hệ thống kê giữa hai biến.
Giả thuyết kiểm định
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
Kết quả kiểm đinh
Với p-value = 0.2837 lớn hơn mức ý nghĩa 5%. Vậy ta không đủ cơ sở để bác bỏ giả thuyết H0, có nghĩa là không có mối liên hệ giữa vay tiêu dùng và vay mua nhà.
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
Kết quả kiểm đinh
Với p-value = 2.863e-06 nhỏ hơn mức ý nghĩa 5%. Vậy ta bác bỏ giả thuyết H0, có nghĩa là có mối liên hệ giữa vay tiêu dùng và nghề nghiệp.
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
Kết quả kiểm đinh
Với p-value = 6.698e-05 nhỏ hơn mức ý nghĩa 5%. Vậy ta bác bỏ giả thuyết H0, có nghĩa là có mối liên hệ giữa vay tiêu dùngvà trình độ học vấn.
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
Kết quả kiểm đinh
Với p-value = 0.0001051 nhỏ hơn mức ý nghĩa 5%. Vậy ta bác bỏ giả thuyết H0, có nghĩa là có mối liên hệ giữa vay tiêu dùng và tình trạng nợ quá hạn.
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
Kết quả kiểm đinh
Với p-value = 0.002975 nhỏ hơn mức ý nghĩa 5%. Vậy ta bác bỏ giả thuyết H0, có nghĩa là có mối liên hệ giữa tình trạng hôn nhân và việc vay tiêu dùng.
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 hơn về mối quan hệ giữa các biến độc lập và tình
trạng vay tiêu dùng với 4 biến độc lập là: job, education, marital và
default.
Tạo bảng tần số
Để phân tích mối quan hệ giữa vay tiêu dùng (loan) và nghề nghiệp (job), ta tiến hành tạo bảng chéo tần số và bảng tần suất phần trăm tương ứng nhằm quan sát sự phân bố của các nhóm đối tượng trong từng loại nghề nghiệp.
table_job1 <- table(data1$loan, data1$job)
table_job1
##
## admin. blue-collar entrepreneur housemaid management retired
## no 387 790 127 99 849 198
## yes 91 156 41 13 120 32
##
## self-employed services student technician unemployed unknown
## no 153 343 83 649 115 37
## yes 30 74 1 119 13 1
Trực quan hoá bằng biểu đồ
Để minh họa trực quan mối quan hệ giữa tình trạng vay tiêu dùng và nghề nghiệp, ta sử dụng biểu đồ cột (barplot).
# Chuyển bảng tần số sang data frame để ggplot dùng được
df_job <- as.data.frame(table_job1)
colnames(df_job) <- c("Loan", "Job", "Count")
# Vẽ biểu đồ cột
library(ggplot2)
ggplot(df_job, aes(x = Loan, y = Count, fill = Job)) +
geom_bar(stat = "identity", position = "dodge") +
labs(
title = "Phân bố vay tiêu dùng theo nhóm nghề nghiệp",
x = "Nhóm nghề nghiệp",
y = "Số lượng khách hàng",
fill = "Tình trạng vay"
) +
theme_minimal() +
theme(
plot.title = element_text(hjust = 0.5),
axis.text.x = element_text(angle = 45, hjust = 1)
)
Nhận xét
Dựa trên bảng tần số giữa hai biến loan và job, có thể thấy rằng ở hầu hết các nhóm nghề nghiệp, số lượng khách hàng không vay tiêu dùng chiếm ưu thế rõ rệt so với số lượng khách hàng có vay. Một số nhóm có số lượng khách hàng vay tiêu dùng tương đối cao bao gồm:
Nhóm management ghi nhận 120 khách hàng có vay tiêu dùng trên tổng số 969 người thuộc nhóm này.
Nhóm technician có 119 người vay trong số 768 người.
Nhóm blue-collar (lao động phổ thông) có số lượng người vay tiêu dùng cao nhất, với 156 khách hàng trên tổng số 946 người.
Ngược lại, có những nhóm nghề nghiệp mà số lượng khách hàng vay tiêu dùng rất thấp, cụ thể:
Nhóm student chỉ có 1 khách hàng vay tiêu dùng.
Nhóm unknown cũng chỉ ghi nhận 1 khách hàng vay.
Những con số này cho thấy rằng, những nhóm có nghề nghiệp ổn định và có khả năng tạo thu nhập rõ ràng hơn thường có xu hướng vay tiêu dùng nhiều hơn. Trong khi đó, các nhóm như học sinh – sinh viên hoặc không xác định nghề nghiệp hầu như không có nhu cầu hoặc không đủ điều kiện để vay.
Tác giả muốn kiểm tra xem tỷ lệ vay tiêu dùng của nhóm khách hàng đang có việc làm (employed) có bằng 60% hay không.
Giả thuyết kiểm định
# Bước 1: Tạo nhóm nghề
data1$job_group <- ifelse(data1$job %in% c("unemployed", "unknown"), "non-employed", "employed")
# Bước 2: Lọc nhóm "employed"
employed_data <- subset(data1, job_group == "employed")
# Bước 3: Tính số lượng và số người vay
n_employed <- nrow(employed_data)
n_loan_yes <- sum(employed_data$loan == "yes")
# Kiểm định tỷ lệ có bằng 0.6 không
prop.test(x = n_loan_yes, n = n_employed, p = 0.6, alternative = "two.sided")
##
## 1-sample proportions test with continuity correction
##
## data: n_loan_yes out of n_employed, null probability 0.6
## X-squared = 3584.2, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.6
## 95 percent confidence interval:
## 0.1448848 0.1666360
## sample estimates:
## p
## 0.1554535
Kết luận
Dựa trên kết quả kiểm định, giá trị p-value rất nhỏ (gần bằng 0), điều này cho thấy tỷ lệ vay tiêu dùng của khách hàng có việc làm khác xa so với giả định ban đầu là 60%. Vì vậy, ta bác bỏ giả thuyết H₀ ở mức ý nghĩa 5%.
Kết quả phân tích cho thấy tỷ lệ vay tiêu dùng thực tế chỉ khoảng 15.55%, thấp hơn rất nhiều so với mức giả định. Đồng thời, khoảng tin cậy 95% nằm trong khoảng từ 14.49% đến 16.66%, nghĩa là tỷ lệ thực tế gần như luôn nằm trong khoảng này.
Tóm lại, khách hàng có việc làm trong tập dữ liệu này không có xu hướng vay tiêu dùng nhiều như kỳ vọng.
Tiếp theo, tác giả muốn kiểm tra xem tỷ lệ vay tiêu dùng của nhóm khách hàng không có việc làm (employed) có bằng 30% hay không.
Giả thuyết kiểm định
# Bước 2: Tạo bảng chéo giữa loan và job_group
table_loan_jobgroup <- table(data1$loan, data1$job_group)
# Bước 3: Lấy số người non-employed có vay
n_loan_yes_nonemp <- table_loan_jobgroup["yes", "non-employed"]
n_nonemp <- sum(table_loan_jobgroup[, "non-employed"])
# Bước 4: Kiểm định tỷ lệ với p giả định = 0.3
prop.test(x = n_loan_yes_nonemp, n = n_nonemp, p = 0.3,
alternative = "two.sided", correct = TRUE)
##
## 1-sample proportions test with continuity correction
##
## data: n_loan_yes_nonemp out of n_nonemp, null probability 0.3
## X-squared = 35.746, df = 1, p-value = 2.248e-09
## alternative hypothesis: true p is not equal to 0.3
## 95 percent confidence interval:
## 0.04861084 0.14015910
## sample estimates:
## p
## 0.08433735
Kết luận
Dựa trên kết quả kiểm định, giá trị p-value rất nhỏ (< 0.05), vì vậy ta bác bỏ giả thuyết H₀ ở mức ý nghĩa 5%. Điều này cho thấy tỷ lệ vay tiêu dùng thực tế của khách hàng không có việc làm khác biệt đáng kể so với tỷ lệ giả định là 30%.
Cụ thể, tỷ lệ vay thực tế chỉ khoảng 8.43%, thấp hơn rất nhiều so với kỳ vọng ban đầu. Khoảng tin cậy 95% (4.86% – 14.02%) cho thấy tỷ lệ thực tế nằm ổn định trong mức thấp, phản ánh rằng khách hàng không có việc làm trong tập dữ liệu này ít có xu hướng vay tiêu dùng.
Để đánh giá sự khác biệt về hành vi vay tiêu dùng giữa hai nhóm khách hàng có việc làm (employed) và không có việc làm (non-employed), tác giả sử dụng hai chỉ số thống kê phổ biến là Risk Ratio (RR) và Odds Ratio (OR). Kết quả được trình bày như sau:
# Tạo ma trận tần số giữa loan và job_group
mat_job <- matrix(c(
sum(data1$loan == "no" & data1$job_group == "non-employed"),
sum(data1$loan == "no" & data1$job_group == "employed"),
sum(data1$loan == "yes" & data1$job_group == "non-employed"),
sum(data1$loan == "yes" & data1$job_group == "employed")
),
nrow = 2,
byrow = FALSE,
dimnames = list(
Loan = c("no", "yes"),
Job_Group = c("non-employed", "employed")
))
# Hiển thị bảng
mat_job
## Job_Group
## Loan non-employed employed
## no 152 14
## yes 3678 677
# Tính Risk Ratio
library(epitools)
rr_job <- riskratio(mat_job)
rr_job$measure
## risk ratio with 95% C.I.
## Loan estimate lower upper
## no 1.000000 NA NA
## yes 1.843234 1.111285 3.057283
# Tính Odds Ratio
or_job <- oddsratio(mat_job)
or_job$measure
## odds ratio with 95% C.I.
## Loan estimate lower upper
## no 1.000000 NA NA
## yes 1.977549 1.178452 3.606751
Sau khi tính toán Nguy cơ tương đối (Relative Risk - RR) và Tỷ lệ cược (Odds Ratio - OR) nhằm so sánh xu hướng vay tiêu dùng giữa hai nhóm khách hàng, kết quả cho thấy cả RR và OR đều lớn hơn 1. Điều này cho thấy khách hàng có việc làm có khả năng vay tiêu dùng cao hơn so với nhóm không có việc làm.
Cụ thể:
Nguy cơ tương đối (RR) = 1.843: Nghĩa là xác suất vay tiêu dùng ở nhóm khách hàng có việc làm cao hơn khoảng 1.84 lần so với nhóm không có việc làm.
Tỷ lệ cược (OR) = 1.978: Điều này có nghĩa là tỷ lệ cược vay tiêu dùng của nhóm có việc làm cao hơn gần gấp 2 lần so với nhóm không có việc làm.
Để tìm hiểu mối liên hệ giữa tình trạng vay tiêu dùng của khách hàng
và tình trạng nợ tín dụng trước đó, tác giả tiến hành tạo bảng tần số
chéo giữa hai biến loan và default, đồng thời
trực quan hóa kết quả thông qua biểu đồ cột.
Tạo bảng tần số
table_default1 <- table(data1$loan, data1$default)
table_default1
##
## no yes
## no 3779 51
## yes 666 25
Trực quan hoá bằng biểu đồ
df_default <- as.data.frame(table_default1)
colnames(df_default) <- c("Loan", "Default", "Count")
ggplot(df_default, aes(x = Loan, y = Count, fill = Default)) +
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))
Nhận xét
Trong nhóm khách hàng không có nợ quá hạn, phần lớn vẫn chọn không vay tiêu dùng, tuy nhiên cũng có tới 666 người đã vay.
Ngược lại, trong nhóm có nợ quá hạn, có 25 người vẫn tiếp tục vay, cho thấy một phần khách hàng dù có lịch sử tín dụng xấu vẫn có nhu cầu vay vốn.
Để phân tích sâu hơn, có thể tiếp tục tính tỷ số nguy cơ (Relative Risk) và tỷ lệ cược (Odds Ratio) nhằm đánh giá xác suất và khả năng vay giữa hai nhóm.
Tác giả muốn kiểm tra xem tỷ lệ vay tiêu dùng trong nhóm khách hàng không có nợ quá hạn có bằng 5% hay không.
Giả thuyết kiểm định
Giả thuyết H0: Tỷ lệ vay tiêu dùng trong nhóm không có nợ quá hạn bằng 5%
Giả thuyết H1: Tỷ lệ vay tiêu dùng trong nhóm không có nợ quá hạn khác 5% .
# Lọc dữ liệu nhóm default = "no"
default_no <- subset(data1, default == "no")
# Tính số người trong nhóm và số người vay tiêu dùng
n_default_no <- nrow(default_no)
n_loan_yes_default_no <- sum(default_no$loan == "yes")
# Thực hiện kiểm định tỷ lệ một mẫu (so với giả định 5%)
prop.test(x = n_loan_yes_default_no, n = n_default_no, p = 0.05, alternative = "two.sided")
##
## 1-sample proportions test with continuity correction
##
## data: n_loan_yes_default_no out of n_default_no, null probability 0.05
## X-squared = 930.53, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.05
## 95 percent confidence interval:
## 0.1395325 0.1607413
## sample estimates:
## p
## 0.1498313
Kết luận
Tóm lại, việc không có nợ quá hạn không đồng nghĩa với việc khách hàng không vay tiêu dùng, ngược lại, đây còn có thể là nhóm mục tiêu tiềm năng của các chiến dịch tín dụng tiêu dùng.
Tiếp theo tác giả muốn kiểm tra xem tỷ lệ vay tiêu dùng trong nhóm khách hàng không có nợ tín dụng quá hạn có bằng 10% hay không.
Giả thuyết kiểm định
Giả thuyết H0: Tỷ lệ vay tiêu dùng trong nhóm có nợ quá hạn bằng 10%
Giả thuyết H1: Tỷ lệ vay tiêu dùng trong nhóm có nợ quá hạn khác 10% .
# Lọc dữ liệu theo trạng thái default = "yes"
default_yes_data <- subset(data1, default == "yes")
# Tổng số khách hàng có nợ quá hạn
n_default_yes <- nrow(default_yes_data)
# Số khách hàng có nợ quá hạn và vay tiêu dùng
n_loan_yes_default_yes <- sum(default_yes_data$loan == "yes")
# Kiểm định tỷ lệ có bằng 10%
prop.test(x = n_loan_yes_default_yes,
n = n_default_yes,
p = 0.10,
alternative = "two.sided")
##
## 1-sample proportions test with continuity correction
##
## data: n_loan_yes_default_yes out of n_default_yes, null probability 0.1
## X-squared = 41.756, df = 1, p-value = 1.034e-10
## alternative hypothesis: true p is not equal to 0.1
## 95 percent confidence interval:
## 0.2280397 0.4473121
## sample estimates:
## p
## 0.3289474
Kết luận
Kết quả kiểm định cho thấy tỷ lệ vay tiêu dùng thực tế của nhóm khách hàng có nợ tín dụng quá hạn là 32.89%, cao hơn đáng kể so với tỷ lệ giả định ban đầu là 10%. Với giá trị p-value rất nhỏ (≈ 0), ta bác bỏ giả thuyết H₀ ở mức ý nghĩa 5%. Ngoài ra, khoảng tin cậy 95% cho tỷ lệ thực tế nằm trong khoảng từ 22.80% đến 44.73%.
Điều này cho thấy rằng nhóm khách hàng có lịch sử tín dụng không tốt (từng nợ quá hạn) lại có xác suất vay tiêu dùng cao hơn nhiều so với kỳ vọng. Điều này có thể phản ánh xu hướng sử dụng tín dụng nhiều hơn của nhóm khách hàng này hoặc có thể là dấu hiệu rủi ro trong hành vi tài chính.
Tóm lại, khách hàng có nợ tín dụng quá hạn vẫn tiếp tục tham gia vào các khoản vay tiêu dùng, thậm chí ở mức cao hơn đáng kể. Đây là nhóm cần được các tổ chức tín dụng theo dõi chặt chẽ và thiết kế chính sách cho vay phù hợp nhằm hạn chế rủi ro tín dụng.
# Tạo ma trận với nhóm 'no' (không vay tiêu dùng) làm dòng đầu tiên = nhóm tham chiếu
mat_default <- matrix(c(
sum(data1$loan == "no" & data1$default == "yes"), # a
sum(data1$loan == "no" & data1$default == "no"), # b
sum(data1$loan == "yes" & data1$default == "yes"), # c
sum(data1$loan == "yes" & data1$default == "no") # d
),
byrow = TRUE, nrow = 2,
dimnames = list(Loan = c("no", "yes"), Default = c("yes", "no")))
# Hiển thị bảng tần số
mat_default
## Default
## Loan yes no
## no 51 3779
## yes 25 666
# Tính RR và OR với nhóm "no" làm tham chiếu
library(epitools)
rr_default <- riskratio(mat_default)
rr_default$measure
## risk ratio with 95% C.I.
## Loan estimate lower upper
## no 1.0000000 NA NA
## yes 0.9768279 0.9623744 0.9914985
or_default <- oddsratio(mat_default)
or_default$measure
## odds ratio with 95% C.I.
## Loan estimate lower upper
## no 1.0000000 NA NA
## yes 0.3584669 0.2225622 0.5924711
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 khách hàng (có và không có nợ tín dụng quá hạn), kết quả cho thấy cả RR và OR đều nhỏ hơn 1, điều này có nghĩa là khách hàng có nợ quá hạn ít có xu hướng vay tiêu dùng hơn so với nhóm không có nợ quá hạn.
Cụ thể:
Nguy cơ tương đối (RR) là 0.9768, tức là nhóm khách hàng không có nợ quá hạn có xác suất vay tiêu dùng bằng 97.68% so với nhóm khách hàng có nợ quá hạn. Nói cách khác, xác suất vay tiêu dùng của nhóm không có nợ quá hạn thấp hơn một chút so với nhóm có nợ quá hạn.
Tỷ lệ cược (OR) là 0.3585, nghĩa là tỷ lệ cược vay tiêu dùng của nhóm không có nợ quá hạn chỉ bằng khoảng 35.85% so với nhóm có quá hạn. Nói cách khác, nhóm không có nợ quá hạn ít có khả năng vay tiêu dùng hơn đáng kể so với nhóm có nợ quá hạn. Tỷ lệ cược thấp hơn này cho thấy mối liên hệ nghịch chiều giữa tình trạng nợ quá hạn và xác suất vay tiêu dùng: những người có nợ quá hạn lại có xu hướng đi vay cao hơn.
Kết quả này có thể phản ánh rằng nhóm từng nợ quá hạn có nhu cầu tài chính cấp thiết hơn hoặc thói quen tài chính kém an toàn hơn, dẫn đến khả năng tiếp tục vay cao hơn.
Tạo bảng tần số
table_marital1 <- table(data1$loan, data1$marital)
table_marital1
##
## divorced married single
## no 438 2344 1048
## yes 90 453 148
Trực quan hoá bằng biểu đồ
df_marital <- as.data.frame(table_marital1)
colnames(df_marital) <- c("Loan", "Marital", "Count")
ggplot(df_marital, aes(x = Loan, y = Count, fill = Marital)) +
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))
Nhận xét
Biểu đồ cột mô tả sự phân bố tình trạng vay tiêu dùng theo tình trạng hôn nhân của khách hàng, từ đó có thể rút ra một số nhận định quan trọng như sau:
Nhóm đã kết hôn (married) là nhóm có số lượng người vay tiêu dùng cao nhất tuyệt đối, với 453 người vay, so với 2344 người không vay. Sự chênh lệch lớn giữa số người vay và không vay cho thấy phần lớn người đã kết hôn không tham gia vay tiêu dùng. Tuy nhiên, với tổng quy mô lớn nhất (2797 người), nhóm này có đóng góp lớn nhất vào tổng số người vay trong toàn bộ mẫu.
Nhóm độc thân (single) có 148 người vay, ít hơn so với nhóm đã kết hôn, mặc dù tổng số người trong nhóm này cũng đáng kể (1196 người). Số người không vay trong nhóm này là 1048, lớn hơn nhiều so với số người có vay. Điều này cho thấy phần lớn người độc thân trong mẫu không vay tiêu dùng.
Nhóm đã ly hôn (divorced) là nhóm có quy mô nhỏ nhất (528 người), nhưng vẫn có 90 người vay tiêu dùng, tức là cứ khoảng 6 người thì có 1 người vay. Tức là, nhóm ly hôn tuy ít người nhưng cũng có một lượng đáng kể vay tiêu dùng.
Tác giả muốn kiểm tra xem tỷ lệ vay tiêu dùng của nhóm khách hàng đã kết hôn có bằng 15% hay không.
Giả thuyết kiểm định:
# Tạo nhóm "married" và "others"
data1$marital_grouped <- ifelse(data1$marital == "married", "married", "others")
# Tạo bảng tần số
table_marital1 <- table(data1$loan, data1$marital_grouped)
# Lọc nhóm "married"
married_data <- subset(data1, marital_grouped == "married")
n_married <- nrow(married_data)
n_loan_yes_married <- sum(married_data$loan == "yes")
# Kiểm định tỷ lệ với giả định 15%
prop.test(x = n_loan_yes_married, n = n_married, p = 0.15, alternative = "two.sided")
##
## 1-sample proportions test with continuity correction
##
## data: n_loan_yes_married out of n_married, null probability 0.15
## X-squared = 3.0444, df = 1, p-value = 0.08101
## alternative hypothesis: true p is not equal to 0.15
## 95 percent confidence interval:
## 0.1485986 0.1762593
## sample estimates:
## p
## 0.1619592
Kết luận
Vì p-value = 0.081 > 0.05, nên ta bác bỏ giả thuyết H0 ở mức ý nghĩa 5%. Điều này có nghĩa là tỷ lệ vay tiêu dùng trong nhóm khách hàng đã kết hôn không khác biệt có ý nghĩa thống kê so với mức giả định là 15%.
Tuy nhiên, tỷ lệ thực tế ước lượng là 16.20%, cao hơn một chút so với 15%, và khoảng tin cậy 95% [14.86%; 17.63%] cho thấy tỷ lệ thực tế có thể dao động xung quanh giá trị này.
Kết quả này cho thấy rằng mặc dù tỷ lệ vay tiêu dùng của nhóm đã kết hôn có cao hơn mức kỳ vọng ban đầu, nhưng sự chênh lệch không đủ lớn để được xem là có ý nghĩa thống kê. Do đó, có thể xem mức 15% vẫn là một ước lượng hợp lý cho nhóm khách hàng đã kết hôn trong bối cảnh dữ liệu này.
# Tạo ma trận với nhóm "no" (không vay) làm tham chiếu
mat_marital <- matrix(c(
sum(data1$loan == "no" & data1$marital_grouped == "married"), #a
sum(data1$loan == "no" & data1$marital_grouped == "others"), #b
sum(data1$loan == "yes" & data1$marital_grouped == "married"), #c
sum(data1$loan == "yes" & data1$marital_grouped == "others") #d
),
byrow = TRUE, nrow = 2,
dimnames = list(Loan = c("no", "yes"), Marital = c("married", "others")))
# Hiển thị bảng
mat_marital
## Marital
## Loan married others
## no 2344 1486
## yes 453 238
# Tính Risk Ratio và Odds Ratio
library(epitools)
rr_marital <- riskratio(mat_marital)
rr_marital$measure
## risk ratio with 95% C.I.
## Loan estimate lower upper
## no 1.0000000 NA NA
## yes 0.8877259 0.7950262 0.9912342
or_marital <- oddsratio(mat_marital)
or_marital$measure
## odds ratio with 95% C.I.
## Loan estimate lower upper
## no 1.0000000 NA NA
## yes 0.8290024 0.6986618 0.9815672
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 khách hàng (đã kết hôn và chưa kết hôn/ly hôn), kết quả cho thấy cả RR và OR đều nhỏ hơn 1, điều này có nghĩa là khách hàng đã kết hôn có xu hướng vay tiêu dùng hơn nhiều so với nhóm khách hàng còn lại.
Cụ thể:
Nguy cơ tương đối (RR) là 0.8877, tức là xác suất vay tiêu dùng của khách hàng chưa kết hôn hoặc đã ly hôn chỉ bằng 88.77% so với khách hàng đã kết hôn. Nói cách khác, xác suất này thấp hơn 11.23% so với nhóm còn lại.
Tỷ lệ cược (OR) là 0.8290, nghĩa là tỷ lệ cược vay tiêu dùng của nhóm chưa kết hôn hoặc đã ly hôn chỉ bằng khoảng 82.90% so với nhóm đã kết hôn.
Kết quả này cho thấy rằng tình trạng hôn nhân là một yếu tố có ảnh hưởng đáng kể đến hành vi vay tiêu dùng, trong đó khách hàng đã kết hôn có khả năng vay tiêu dùng cao hơn so với những khách hàng chưa kết hôn hoặc đã ly hôn trong tập dữ liệu nghiên cứu.
Tạo bảng tần số
table_edu1 <- table(data1$loan, data1$education)
table_edu1
##
## primary secondary tertiary unknown
## no 584 1890 1176 180
## yes 94 416 174 7
Trực quan hoá bằng biểu đồ
df_edu_grouped <- as.data.frame(table_edu1)
colnames(df_edu_grouped) <- c("Loan", "Education", "Count")
ggplot(df_edu_grouped, aes(x = Loan, y = Count, fill = Education)) +
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))
Dựa trên bảng tần số và biểu đồ trực quan hóa, ta có thể rút ra một số nhận xét sau:
Nhóm có trình độ trung học (secondary) chiếm tỷ lệ lớn nhất trong tổng số khách hàng, và cũng là nhóm có số lượng khách hàng vay tiêu dùng cao nhất (416 người), điều này cho thấy đây là đối tượng mục tiêu quan trọng đối với các sản phẩm tín dụng tiêu dùng.
Nhóm có trình độ đại học (tertiary) đứng thứ hai về số lượng khách hàng và số người vay, với 174 khách hàng vay tiêu dùng trong tổng số 1176 người – cho thấy một mức độ tham gia tương đối cao vào các hoạt động vay.
Nhóm trình độ tiểu học (primary) có số người vay tiêu dùng là 94 trên tổng số 584 người – tỷ lệ này cũng khá đáng kể, thể hiện rằng ngay cả nhóm học vấn thấp vẫn có nhu cầu vay.
Nhóm không rõ trình độ học vấn (unknown) có số lượng nhỏ nhất (chỉ 7 người vay), điều này không đủ để đưa ra đánh giá chắc chắn về hành vi vay của nhóm này.
Nhìn chung, sự phân bố vay tiêu dùng giữa các nhóm học vấn cho thấy trình độ học vấn có thể có ảnh hưởng đến hành vi vay tiêu dùng. Nhóm học vấn trung bình và cao thể hiện nhu cầu vay rõ rệt hơn, gợi ý rằng ngân hàng nên cân nhắc yếu tố học vấn khi xây dựng chiến lược tiếp cận khách hàng.
Tác giả muốn kiểm tra xem tỷ lệ vay tiêu dùng của nhóm khách hàng có trình độ học vấn thấp có bằng 15% hay không.
Giả thuyết kiểm định
# Gộp nhóm học vấn: low (primary, secondary, unknown) và high (tertiary)
data1$edu_group <- ifelse(data1$education %in% c("primary", "secondary", "unknown"), "low", "high")
# Tạo bảng tần số
table_edu <- table(data1$loan, data1$edu_group)
table_edu
##
## high low
## no 1176 2654
## yes 174 517
# Lọc dữ liệu nhóm học vấn thấp
n_low <- sum(data1$edu_group == "low")
n_loan_yes_low <- sum(data1$loan == "yes" & data1$edu_group == "low")
# Kiểm định tỷ lệ một mẫu (1-sample proportion test)
prop.test(x = n_loan_yes_low, n = n_low, p = 0.15, alternative = "two.sided")
##
## 1-sample proportions test with continuity correction
##
## data: n_loan_yes_low out of n_low, null probability 0.15
## X-squared = 4.1274, df = 1, p-value = 0.04219
## alternative hypothesis: true p is not equal to 0.15
## 95 percent confidence interval:
## 0.1504393 0.1764662
## sample estimates:
## p
## 0.1630401
Kết luận
Với giá trị p-value = 0.04219 < 0.05, ta bác bỏ giả thuyết H₀ ở mức ý nghĩa 5%. Điều này cho thấy tỷ lệ vay tiêu dùng trong nhóm khách hàng có trình độ học vấn thấp khác biệt có ý nghĩa thống kê so với tỷ lệ giả định là 15%.
Tỷ lệ thực tế là 16.30%, cao hơn một chút so với mức giả định. Điều này cho thấy khách hàng có học vấn thấp vẫn có nhu cầu vay tiêu dùng tương đối đáng kể, không thấp như kỳ vọng ban đầu.
Khoảng tin cậy 95% (15.04% – 17.65%) càng củng cố kết luận rằng tỷ lệ thực tế không phải đúng bằng 15%, mà có xu hướng cao hơn.
Tính Relative Risk và Odd Ratio
# Tạo ma trận với 'no' (không vay tiêu dùng) làm dòng tham chiếu
mat_edu_grouped <- matrix(c(
sum(data1$loan == "no" & data1$edu_group == "low"),
sum(data1$loan == "no" & data1$edu_group== "high"),
sum(data1$loan == "yes" & data1$edu_group == "low"),
sum(data1$loan == "yes" & data1$edu_group == "high")
),
byrow = TRUE, nrow = 2,
dimnames = list(Loan = c("no", "yes"), Education = c("low", "high")))
# Hiển thị ma trận
mat_edu_grouped
## Education
## Loan low high
## no 2654 1176
## yes 517 174
# Tính Risk Ratio (RR) với nhóm 'no' là tham chiếu
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.8200921 0.715063 0.9405481
# Tính Odds Ratio (OR) với nhóm 'no' là tham chiếu
or_edu_grouped <- oddsratio(mat_edu_grouped)
or_edu_grouped$measure
## odds ratio with 95% C.I.
## Loan estimate lower upper
## no 1.000000 NA NA
## yes 0.759991 0.6302186 0.9127086
Sau khi tính toán Risk Ratio (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 khách hàng theo trình độ học vấn (low và high), với nhóm không vay tiêu dùng (Loan = no) làm nhóm tham chiếu, kết quả cho thấy cả RR và OR đều nhỏ hơn 1.
Cụ thể:
Nguy cơ tương đối (RR) là 0.8201, nghĩa là xác suất vay tiêu dùng của nhóm khách hàng có trình độ học vấn cao chỉ bằng khoảng 82.01% so với nhóm có trình độ học vấn thấp. Nói cách khác, nhóm học vấn thấp có xác suất vay tiêu dùng thấp hơn khoảng 17.99% so với nhóm học vấn cao.
Tỷ lệ cược (OR) là 0.7600, nghĩa là tỷ lệ cược vay tiêu dùng của nhóm học cao thấp chỉ bằng 76% so với nhóm học vấn thấp.
Kết quả phân tích cho thấy rằng trình độ học vấn là một yếu tố có thể ảnh hưởng đáng kể đến hành vi vay tiêu dùng. Cụ thể, những người thuộc nhóm có học vấn cao (tertiary) có xu hướng vay tiêu dùng ít hơn so với nhóm có học vấn thấp (gồm primary, secondary và unknown). Cả hệ số Relative Risk (RR = 0.8201) và Odds Ratio (OR = 0.76) đều nhỏ hơn 1, cho thấy xác suất và khả năng vay tiêu dùng của nhóm học vấn cao thấp hơn rõ rệt so với nhóm học vấn thấp.
Điều này có thể phản ánh rằng nhóm khách hàng có học vấn cao thường có thu nhập ổn định hơn nên ít cần đến các khoản vay tiêu dùng. Ngoài ra, họ có thể có kỹ năng quản lý tài chính cá nhân tốt hơn, dẫn đến việc sử dụng tín dụng một cách thận trọng hơn.
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).
Giả thuyết kiểm định Với từng biến độc lập, ta thực hiện kiểm định:
# Hồi quy đơn biến với từng biến độc lập
model_job <- glm(loan ~ job, data = data1, family = binomial)
model_edu <- glm(loan ~ education, data = data1, family = binomial)
model_marital <- glm(loan ~ marital, data = data1, family = binomial)
model_default <- glm(loan ~ default, data = data1, family = binomial)
# Tóm tắt kết quả
summary(model_job)
##
## Call:
## glm(formula = loan ~ job, family = binomial, data = data1)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.4476 0.1165 -12.425 < 2e-16 ***
## jobblue-collar -0.1746 0.1458 -1.198 0.230974
## jobentrepreneur 0.3170 0.2141 1.480 0.138764
## jobhousemaid -0.5826 0.3172 -1.837 0.066227 .
## jobmanagement -0.5090 0.1519 -3.350 0.000808 ***
## jobretired -0.3750 0.2233 -1.679 0.093147 .
## jobself-employed -0.1817 0.2312 -0.786 0.431941
## jobservices -0.0861 0.1732 -0.497 0.619130
## jobstudent -2.9713 1.0114 -2.938 0.003307 **
## jobtechnician -0.2487 0.1533 -1.622 0.104796
## jobunemployed -0.7324 0.3150 -2.326 0.020044 *
## jobunknown -2.1633 1.0201 -2.121 0.033943 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 3866.4 on 4520 degrees of freedom
## Residual deviance: 3810.6 on 4509 degrees of freedom
## AIC: 3834.6
##
## Number of Fisher Scoring iterations: 6
summary(model_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.011358 *
## educationtertiary -0.08421 0.13765 -0.612 0.540684
## educationunknown -1.42044 0.40080 -3.544 0.000394 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 3866.4 on 4520 degrees of freedom
## Residual deviance: 3819.9 on 4517 degrees of freedom
## AIC: 3827.9
##
## Number of Fisher Scoring iterations: 5
summary(model_marital)
##
## Call:
## glm(formula = loan ~ marital, family = binomial, data = data1)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.58241 0.11573 -13.673 < 2e-16 ***
## maritalmarried -0.06131 0.12660 -0.484 0.62818
## maritalsingle -0.37502 0.14528 -2.581 0.00984 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 3866.4 on 4520 degrees of freedom
## Residual deviance: 3855.2 on 4518 degrees of freedom
## AIC: 3861.2
##
## Number of Fisher Scoring iterations: 4
summary(model_default)
##
## Call:
## glm(formula = loan ~ default, family = binomial, data = data1)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.73593 0.04203 -41.307 < 2e-16 ***
## defaultyes 1.02298 0.24774 4.129 3.64e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 3866.4 on 4520 degrees of freedom
## Residual deviance: 3851.6 on 4519 degrees of freedom
## AIC: 3855.6
##
## Number of Fisher Scoring iterations: 4
library(broom)
library(dplyr)
# job
tidy(model_job) %>%
mutate(
OR = exp(estimate),
p.value = round(p.value, 4),
estimate = round(estimate, 4),
OR = round(OR, 3)
) %>%
dplyr::select(term, estimate, OR, p.value) %>%
knitr::kable(caption = "Bảng: Hồi quy đơn biến - Biến job")
| term | estimate | OR | p.value |
|---|---|---|---|
| (Intercept) | -1.4476 | 0.235 | 0.0000 |
| jobblue-collar | -0.1746 | 0.840 | 0.2310 |
| jobentrepreneur | 0.3170 | 1.373 | 0.1388 |
| jobhousemaid | -0.5826 | 0.558 | 0.0662 |
| jobmanagement | -0.5090 | 0.601 | 0.0008 |
| jobretired | -0.3750 | 0.687 | 0.0931 |
| jobself-employed | -0.1817 | 0.834 | 0.4319 |
| jobservices | -0.0861 | 0.918 | 0.6191 |
| jobstudent | -2.9713 | 0.051 | 0.0033 |
| jobtechnician | -0.2487 | 0.780 | 0.1048 |
| jobunemployed | -0.7324 | 0.481 | 0.0200 |
| jobunknown | -2.1634 | 0.115 | 0.0339 |
# education
tidy(model_edu) %>%
mutate(
OR = exp(estimate),
p.value = round(p.value, 4),
estimate = round(estimate, 4),
OR = round(OR, 3)
) %>%
dplyr::select(term, estimate, OR, p.value) %>%
knitr::kable(caption = "Bảng: Hồi quy đơn biến - Biến education")
| term | estimate | OR | p.value |
|---|---|---|---|
| (Intercept) | -1.8266 | 0.161 | 0.0000 |
| educationsecondary | 0.3130 | 1.367 | 0.0114 |
| educationtertiary | -0.0842 | 0.919 | 0.5407 |
| educationunknown | -1.4204 | 0.242 | 0.0004 |
# marital
tidy(model_marital) %>%
mutate(
OR = exp(estimate),
p.value = round(p.value, 4),
estimate = round(estimate, 4),
OR = round(OR, 3)
) %>%
dplyr::select(term, estimate, OR, p.value) %>%
knitr::kable(caption = "Bảng: Hồi quy đơn biến - Biến marital")
| term | estimate | OR | p.value |
|---|---|---|---|
| (Intercept) | -1.5824 | 0.205 | 0.0000 |
| maritalmarried | -0.0613 | 0.941 | 0.6282 |
| maritalsingle | -0.3750 | 0.687 | 0.0098 |
# default
tidy(model_default) %>%
mutate(
OR = exp(estimate),
p.value = round(p.value, 4),
estimate = round(estimate, 4),
OR = round(OR, 3)
) %>%
dplyr::select(term, estimate, OR, p.value) %>%
knitr::kable(caption = "Bảng: Hồi quy đơn biến - Biến default")
| term | estimate | OR | p.value |
|---|---|---|---|
| (Intercept) | -1.7359 | 0.176 | 0 |
| defaultyes | 1.0230 | 2.781 | 0 |
jobNhóm tham chiếu: admin.
Một số nhóm nghề có ảnh hưởng đến hành vi vay tiêu dùng:
| Nhóm nghề | Hệ số (β) | p-value | Odds Ratio | Diễn giải |
|---|---|---|---|---|
| student | -2.97 | 0.003 | ~0.051 | Sinh viên có tỷ số khả năng vay tiêu dùng bằng 0.051 lần nhóm hành chính. |
| unemployed | -0.73 | 0.020 | ~0.481 | Người thất nghiệp có tỷ số khả năng vay bằng 0.481 lần nhóm hành chính. |
| management | -0.51 | 0.001 | ~0.601 | Người quản lý có tỷ số khả năng vay bằng 0.601 lần nhóm hành chính. |
| unknown | -2.16 | 0.034 | ~0.115 | Người không rõ nghề nghiệp có tỷ số khả năng vay bằng 0.115 lần nhóm hành chính. |
educationNhóm tham chiếu: primary
| Trình độ học vấn | Hệ số (β) | p-value | Odds Ratio | Diễn giải |
|---|---|---|---|---|
| secondary | 0.313 | 0.011 | ~1.37 | Người học trung học có tỷ số khả năng vay bằng 1.37 lần nhóm tiểu học. |
| tertiary | -0.084 | 0.541 | ~0.92 | Người học đại học có tỷ số khả năng vay bằng 0.92 lần nhóm tiểu học. |
| unknown | -1.42 | 0.000 | ~0.24 | Người không rõ trình độ học vấn có tỷ số khả năng vay bằng 0.24 lần nhóm tiểu học. |
maritalNhóm tham chiếu: divorced
| Tình trạng hôn nhân | Hệ số (β) | p-value | Odds Ratio | Diễn giải |
|---|---|---|---|---|
| married | -0.061 | 0.628 | ~0.94 | Người đã kết hôn có tỷ số khả năng vay bằng 0.94 lần so với người ly hôn. |
| single | -0.375 | 0.010 | ~0.69 | Người độc thân có tỷ số khả năng vay bằng 0.69 lần so với người ly hôn. |
defaultNhóm tham chiếu: default = no
| Biến nợ tín dụng | Hệ số (β) | p-value | Odds Ratio | Diễn giải |
|---|---|---|---|---|
| defaultyes | 1.023 | < 0.001 | ~2.78 | Khách hàng có nợ xấu có tỷ số khả năng vay bằng 2.78 lần so với người không có nợ xấu. |
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.60551 0.20391 -7.873 3.45e-15 ***
## jobblue-collar -0.10603 0.15352 -0.691 0.489759
## jobentrepreneur 0.41625 0.22335 1.864 0.062365 .
## jobhousemaid -0.43385 0.32559 -1.333 0.182693
## jobmanagement -0.31758 0.17801 -1.784 0.074404 .
## jobretired -0.30717 0.22939 -1.339 0.180554
## jobself-employed -0.10641 0.23785 -0.447 0.654607
## jobservices -0.11069 0.17441 -0.635 0.525660
## jobstudent -2.64478 1.01440 -2.607 0.009127 **
## jobtechnician -0.21511 0.15549 -1.383 0.166533
## jobunemployed -0.69291 0.31752 -2.182 0.029091 *
## jobunknown -1.68023 1.02690 -1.636 0.101795
## educationsecondary 0.33071 0.13538 2.443 0.014573 *
## educationtertiary 0.04987 0.17005 0.293 0.769314
## educationunknown -1.30192 0.40606 -3.206 0.001345 **
## maritalmarried -0.04975 0.12924 -0.385 0.700269
## maritalsingle -0.30828 0.14838 -2.078 0.037747 *
## defaultyes 0.98169 0.25354 3.872 0.000108 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 3866.4 on 4520 degrees of freedom
## Residual deviance: 3757.2 on 4503 degrees of freedom
## AIC: 3793.2
##
## 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ó tỷ số khả năng vay bằng 0.075 lần so với nhóm hành chính. |
jobunemployed |
So với admin. |
-0.69 | 0.030 | 0.50 | Người thất nghiệp có tỷ số khả năng vay bằng 0.50 lần so với nhóm hành chính. |
jobentrepreneur |
So với admin. |
0.45 | 0.046 | 1.57 | Người tự doanh có tỷ số khả năng vay bằng 1.57 lần so với nhóm hành chính. |
educationsecondary |
So với primary |
0.33 | 0.015 | 1.39 | Người học hết trung học có tỷ số khả năng vay bằng 1.39 lần so với học tiểu học. |
maritalsingle |
So với divorced |
-0.33 | 0.025 | 0.72 | Người độc thân có tỷ số khả năng vay bằng 0.72 lần 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ó tỷ số khả năng vay bằng 2.55 lần so với người không nợ xấu. |
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).
Từ kết quả, 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
Kết luận
Các biến định tính như nghề nghiệp, trình độ học vấn, tình trạng hôn nhân và lịch sử nợ tín dụng đều cho thấy ảnh hưởng có ý nghĩa thống kê đến khả năng vay tiêu dùng của khách hàng.
Hệ số âm tương ứng với tỷ số khả năng (odds) thấp hơn so với nhóm tham chiếu, cho thấy nhóm đó ít có khả năng vay tiêu dùng.
Hệ số dương cho thấy tỷ số khả năng cao hơn, phản ánh nhóm khách hàng đó có xu hướng vay nhiều hơn.
Việc phân tích chi tiết từng hệ số giúp xác định những nhóm khách hàng dễ tiếp cận tín dụng và những nhóm có nguy cơ bị từ chối vay, từ đó cung cấp thông tin quan trọng trong quyết định cấp tín dụng, thiết kế sản phẩm phù hợp và quản trị rủi ro cho ngân hàng hoặc tổ chức tài chính.
Tác giả tiếp tục sử dụng mô hình hồi quy Probit để phân tích riêng lẻ
ảnh hưởng của từng yếu tố định tính đến xác suất khách hàng vay tiêu
dùng (loan). Mô hình Probit sử dụng hàm liên kết chuẩn
(normal link) thay vì logit như ở hồi quy logistic, với công thức tổng
quát:
\[ P(loan = yes) = \Phi(\beta_0 + \beta_1 \cdot X) \]
Trong đó:
- \(\Phi\) là hàm phân phối chuẩn tích
lũy (CDF).
- \(X\) là biến giải thích.
Mỗi mô hình dưới đây chỉ chứa một biến độc lập để xác định ảnh hưởng riêng biệt đến xác suất vay tiêu dùng.
# Hồi quy Probit đơn biến với từng biến độc lập
model_probit_job <- glm(loan ~ job, data = data1, family = binomial(link = "probit"))
model_probit_edu <- glm(loan ~ education, data = data1, family = binomial(link = "probit"))
model_probit_marital <- glm(loan ~ marital, data = data1, family = binomial(link = "probit"))
model_probit_default <- glm(loan ~ default, data = data1, family = binomial(link = "probit"))
# Tóm tắt kết quả
summary(model_probit_job)
##
## Call:
## glm(formula = loan ~ job, family = binomial(link = "probit"),
## data = data1)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.87651 0.06609 -13.262 < 2e-16 ***
## jobblue-collar -0.09799 0.08205 -1.194 0.232389
## jobentrepreneur 0.18317 0.12461 1.470 0.141572
## jobhousemaid -0.31835 0.16842 -1.890 0.058726 .
## jobmanagement -0.27950 0.08394 -3.330 0.000869 ***
## jobretired -0.20772 0.12235 -1.698 0.089545 .
## jobself-employed -0.10191 0.12894 -0.790 0.429328
## jobservices -0.04859 0.09769 -0.497 0.618951
## jobstudent -1.38368 0.38711 -3.574 0.000351 ***
## jobtechnician -0.13893 0.08586 -1.618 0.105644
## jobunemployed -0.39619 0.16431 -2.411 0.015896 *
## jobunknown -1.06142 0.43073 -2.464 0.013730 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 3866.4 on 4520 degrees of freedom
## Residual deviance: 3810.6 on 4509 degrees of freedom
## AIC: 3834.6
##
## Number of Fisher Scoring iterations: 6
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.010351 *
## educationtertiary -0.04522 0.07405 -0.611 0.541397
## educationunknown -0.69485 0.18030 -3.854 0.000116 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 3866.4 on 4520 degrees of freedom
## Residual deviance: 3819.9 on 4517 degrees of freedom
## AIC: 3827.9
##
## Number of Fisher Scoring iterations: 5
summary(model_probit_marital)
##
## Call:
## glm(formula = loan ~ marital, family = binomial(link = "probit"),
## data = data1)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.95237 0.06456 -14.752 <2e-16 ***
## maritalmarried -0.03407 0.07053 -0.483 0.6291
## maritalsingle -0.20409 0.07961 -2.564 0.0104 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 3866.4 on 4520 degrees of freedom
## Residual deviance: 3855.2 on 4518 degrees of freedom
## AIC: 3861.2
##
## Number of Fisher Scoring iterations: 4
summary(model_probit_default)
##
## Call:
## glm(formula = loan ~ default, family = binomial(link = "probit"),
## data = data1)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.03716 0.02298 -45.139 < 2e-16 ***
## defaultyes 0.59434 0.15077 3.942 8.08e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 3866.4 on 4520 degrees of freedom
## Residual deviance: 3851.6 on 4519 degrees of freedom
## AIC: 3855.6
##
## Number of Fisher Scoring iterations: 4
library(broom)
library(dplyr)
library(knitr)
# Biến job
tidy(model_probit_job) %>%
mutate(
zB = round(estimate, 4),
p_value = round(p.value, 4),
P = round(pnorm(zB), 4)
) %>%
dplyr::select(term, zB, P, p_value) %>%
kable(caption = "Bảng: Hồi quy Probit đơn biến - Biến job")
| term | zB | P | p_value |
|---|---|---|---|
| (Intercept) | -0.8765 | 0.1904 | 0.0000 |
| jobblue-collar | -0.0980 | 0.4610 | 0.2324 |
| jobentrepreneur | 0.1832 | 0.5727 | 0.1416 |
| jobhousemaid | -0.3183 | 0.3751 | 0.0587 |
| jobmanagement | -0.2795 | 0.3899 | 0.0009 |
| jobretired | -0.2077 | 0.4177 | 0.0895 |
| jobself-employed | -0.1019 | 0.4594 | 0.4293 |
| jobservices | -0.0486 | 0.4806 | 0.6190 |
| jobstudent | -1.3837 | 0.0832 | 0.0004 |
| jobtechnician | -0.1389 | 0.4448 | 0.1056 |
| jobunemployed | -0.3962 | 0.3460 | 0.0159 |
| jobunknown | -1.0614 | 0.1443 | 0.0137 |
# Biến education
tidy(model_probit_edu) %>%
mutate(
zB = round(estimate, 4),
p_value = round(p.value, 4),
P = round(pnorm(zB), 4)
) %>%
dplyr::select(term, zB, P, p_value) %>%
kable(caption = "Bảng: Hồi quy Probit đơn biến - Biến education")
| term | zB | P | p_value |
|---|---|---|---|
| (Intercept) | -1.0864 | 0.1387 | 0.0000 |
| educationsecondary | 0.1726 | 0.5685 | 0.0104 |
| educationtertiary | -0.0452 | 0.4820 | 0.5414 |
| educationunknown | -0.6948 | 0.2436 | 0.0001 |
# Biến marital
tidy(model_probit_marital) %>%
mutate(
zB = round(estimate, 4),
p_value = round(p.value, 4),
P = round(pnorm(zB), 4)
) %>%
dplyr::select(term, zB, P, p_value) %>%
kable(caption = "Bảng: Hồi quy Probit đơn biến - Biến marital")
| term | zB | P | p_value |
|---|---|---|---|
| (Intercept) | -0.9524 | 0.1704 | 0.0000 |
| maritalmarried | -0.0341 | 0.4864 | 0.6291 |
| maritalsingle | -0.2041 | 0.4191 | 0.0104 |
# Biến default
tidy(model_probit_default) %>%
mutate(
zB = round(estimate, 4),
p_value = round(p.value, 4),
P = round(pnorm(zB), 4)
) %>%
dplyr::select(term, zB, P, p_value) %>%
kable(caption = "Bảng: Hồi quy Probit đơn biến - Biến default")
| term | zB | P | p_value |
|---|---|---|---|
| (Intercept) | -1.0372 | 0.1498 | 0e+00 |
| defaultyes | 0.5943 | 0.7238 | 1e-04 |
jobNhóm tham chiếu: admin.
| Nhóm nghề | Hệ số Probit (β) | Giá trị p | Xác suất tương đối ước lượng | Diễn giải |
|---|---|---|---|---|
student (sinh viên) |
-1.384 | 0.000 | ↓ ~25% | Sinh viên có xác suất vay tiêu dùng rất thấp, chỉ khoảng 25% so với nhóm hành chính. |
unemployed (thất nghiệp) |
-0.396 | 0.016 | ↓ ~67% | Người thất nghiệp có xác suất vay tiêu dùng giảm còn khoảng 67% so với nhóm hành chính. |
management (quản lý) |
-0.280 | 0.001 | ↓ ~76% | Người làm quản lý có xác suất vay thấp hơn, chỉ khoảng 76% so với nhóm hành chính. |
unknown (không rõ nghề) |
-1.061 | 0.014 | ↓ ~35% | Những người không rõ nghề nghiệp có xác suất vay rất thấp, chỉ khoảng 35% so với nhóm hành chính. |
educationNhóm tham chiếu: Trình độ tiểu học (primary)
| Nhóm học vấn | Hệ số zB | Xác suất tương ứng (Φ(zB)) | Diễn giải |
|---|---|---|---|
Trung học (secondary) |
0.1726 | 56.85% | Khách hàng có trình độ trung học có xác suất vay tiêu dùng là 56.85%, cao hơn so với nhóm tiểu học. |
Không rõ (unknown) |
-0.6948 | 24.36% | Khách hàng có trình độ học vấn không xác định có xác suất vay là 24.36%, thấp hơn rõ rệt so với nhóm tiểu học. |
maritalNhóm tham chiếu: divorced
| Tình trạng hôn nhân | Hệ số zB | Xác suất (Φ(zB)) | Giá trị p | Diễn giải |
|---|---|---|---|---|
| Single | -0.2041 | 41.91% | 0.0104 | Người độc thân có xác suất vay là 41.91% so với nhóm ly hôn. |
defaultNhóm tham chiếu: default = no
| Nhóm | z(B) | P (xác suất) | p-value | Diễn giải |
|---|---|---|---|---|
default = yes |
0.5943 | 0.7238 | 0.0001 | Khách hàng có nợ quá hạn có xác suất vay tiêu dùng cao hơn so với nhóm không nợ quá hạn. Cụ thể, xác suất ước tính là 72.4%. |
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
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 đa biến
model_probit <- glm(loan ~ job + education + marital + default,
data = data1,
family = binomial(link = "probit"))
library(broom)
library(dplyr)
library(knitr)
tidy(model_probit) %>%
mutate(
estimate = round(estimate, 4),
std.error = round(std.error, 4),
zB = estimate,
P = round(pnorm(zB), 4),
p.value = round(p.value, 4)
) %>%
dplyr::select(term, zB, P, p.value) %>%
knitr::kable(caption = "Bảng: Kết quả mô hình Probit đa biến – z(B) và xác suất vay tiêu dùng (P)")
| term | zB | P | p.value |
|---|---|---|---|
| (Intercept) | -0.9629 | 0.1678 | 0.0000 |
| jobblue-collar | -0.0622 | 0.4752 | 0.4723 |
| jobentrepreneur | 0.2330 | 0.5921 | 0.0719 |
| jobhousemaid | -0.2246 | 0.4111 | 0.1933 |
| jobmanagement | -0.1750 | 0.4305 | 0.0741 |
| jobretired | -0.1792 | 0.4289 | 0.1561 |
| jobself-employed | -0.0674 | 0.4731 | 0.6122 |
| jobservices | -0.0615 | 0.4755 | 0.5323 |
| jobstudent | -1.2095 | 0.1132 | 0.0020 |
| jobtechnician | -0.1207 | 0.4520 | 0.1662 |
| jobunemployed | -0.3754 | 0.3537 | 0.0238 |
| jobunknown | -0.8258 | 0.2045 | 0.0654 |
| educationsecondary | 0.1810 | 0.5718 | 0.0145 |
| educationtertiary | 0.0270 | 0.5108 | 0.7699 |
| educationunknown | -0.6380 | 0.2617 | 0.0006 |
| maritalmarried | -0.0245 | 0.4902 | 0.7333 |
| maritalsingle | -0.1680 | 0.4333 | 0.0399 |
| defaultyes | 0.5778 | 0.7183 | 0.0002 |
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ố (β) | Xác suất ước lượng P(y=1 | x) | p-value |
|---|---|---|---|---|---|
| jobstudent | So với admin | -1.19 | ≈ 0.23 | 0.0025 | Sinh viên có xác suất vay tiêu dùng khoảng 23%, thấp hơn đáng kể so với nhóm hành chính. |
| jobunemployed | So với admin | -0.37 | ≈ 0.41 | 0.0252 | Người thất nghiệp có xác suất vay tiêu dùng khoảng 41%, thấp hơn so với nhóm hành chính. |
| jobentrepreneur | So với admin | 0.26 | ≈ 0.56 | 0.0509 | Người tự doanh có xác suất vay tiêu dùng khoảng 56%, cao hơn một chút so với nhóm hành chính. |
| jobblue-collar | So với admin | -0.19 | ≈ 0.45 | 0.0213 | Lao động phổ thông có xác suất vay tiêu dùng khoảng 45%, thấp hơn nhẹ so với nhóm hành chính. |
| educationsecondary | So với primary | 0.18 | ≈ 0.55 | 0.0145 | Người học trung học có xác suất vay tiêu dùng khoảng 55%, cao hơn so với người chỉ học tiểu học. |
| educationtertiary | So với primary | 0.27 | ≈ 0.57 | 0.0008 | Người học đại học trở lên có xác suất vay tiêu dùng khoảng 57%, cao hơn đáng kể. |
| maritalsingle | So với divorced | -0.19 | ≈ 0.45 | 0.0234 | Người độc thân có xác suất vay tiêu dùng khoảng 45%, thấp hơn so với người ly hôn. |
| marriagemarried | So với divorced | -0.27 | ≈ 0.43 | 0.0022 | Người đã kết hôn có xác suất vay tiêu dùng khoảng 43%, thấp hơn đáng kể so với người ly hôn. |
| defaultyes | So với default = no | 0.55 | ≈ 0.63 | 0.0004 | Người có nợ xấu có xác suất vay tiêu dùng khoảng 63%, cao hơn đáng kể so với người không có nợ xấu. |
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.26 × jobretired + 0.25 × jobservices + 0.18 × educationsecondary - 0.19 × maritalsingle + 0.55 × defaultyes
Kết luận
Kết quả mô hình Probit cho thấy có 9 biến độc lập có ảnh hưởng có ý nghĩa thống kê đến xác suất vay tiêu dùng tại mức ý nghĩa 5%. Cụ thể:
Nghề nghiệp: So với nhóm tham chiếu là “admin.”, những người làm nghề student, unemployed, và retired có xác suất vay thấp hơn, trong khi các nhóm entrepreneur và services lại có xác suất vay cao hơn. Điều này phản ánh sự phân hóa về khả năng tiếp cận tín dụng theo đặc điểm nghề nghiệp.
Trình độ học vấn: Nhóm khách hàng có trình độ secondary có khả năng vay cao hơn so với nhóm có học vấn thấp hơn, cho thấy giáo dục đóng vai trò tích cực trong tiếp cận tài chính.
Tình trạng hôn nhân: Người độc thân có xác suất vay thấp hơn so với người đã kết hôn, có thể phản ánh sự thận trọng trong tiêu dùng hoặc khả năng tài chính hạn chế hơn.
Lịch sử tín dụng: Khách hàng có tình trạng nợ quá hạn trước đó (default = yes) có xác suất vay cao hơn, điều này có thể phản ánh đặc điểm hành vi tài chính của nhóm rủi ro cao, hoặc chính sách tín dụng dễ dãi từ phía tổ chức cho vay.
Những kết quả trên cung cấp cơ sở định hướng cho việc phân khúc khách hàng tiềm năng, thiết kế sản phẩm tín dụng phù hợp, cũng như tăng cường quản trị rủi ro trong hoạt động cấp tín dụng tiêu dùng.
Tác giả tiếp tục sử dụng mô hình hồi quy Cloglog để phân tích riêng lẻ ảnh hưởng của từng yếu tố định tính đến xác suất khách hàng vay tiêu dùng (loan). Khác với mô hình Logit hay Probit, hồi quy Cloglog sử dụng hàm liên kết complementary log-log nhằm phù hợp hơn với các hiện tượng mà xác suất xảy ra sự kiện tăng nhanh theo thời gian hoặc có phân phối lệch.
Diễn giải hệ số Beta trong mô hình Cloglog
Trong mô hình Cloglog, hệ số Beta không thể diễn giải trực tiếp như trong mô hình Logit, mà cần chuyển đổi sang xác suất thông qua công thức:
\[ p = 1 - \exp\left(-\exp(zB)\right), \quad \text{trong đó } zB = \beta_0 + \sum \beta_i x_i \]
# Tải thư viện
library(dplyr)
library(broom)
# Đặt lại tham chiếu cho biến job (admin làm nhóm tham chiếu)
data1$job <- relevel(data1$job, ref = "admin.")
# Nếu cần, bạn cũng có thể đặt lại tham chiếu cho các biến khác:
data1$education <- relevel(data1$education, ref = "primary")
data1$marital <- relevel(data1$marital, ref = "divorced")
data1$default <- relevel(data1$default, ref = "no")
# Hàm tính xác suất từ hệ số cloglog
predict_prob_cloglog <- function(coefs, level = NULL) {
xb <- coefs["(Intercept)"]
if (!is.null(level)) {
xb <- xb + coefs[level]
}
prob <- 1 - exp(-exp(xb))
return(round(prob, 4))
}
# Hàm tổng hợp bảng kết quả từ mô hình cloglog
build_cloglog_summary <- function(model, var_name) {
tidy_model <- tidy(model)
coefs <- coef(model)
levels <- tidy_model$term
levels[levels == "(Intercept)"] <- "Tham chiếu"
probs <- sapply(tidy_model$term, function(term) {
if (term == "(Intercept)") {
predict_prob_cloglog(coefs)
} else {
predict_prob_cloglog(coefs, term)
}
})
tibble(
Bien = var_name,
Nhom = levels,
He_so = round(tidy_model$estimate, 4),
P_value = round(tidy_model$p.value, 4),
Xac_suat = probs
)
}
# === Mô hình cloglog đơn biến ===
model_cloglog_job <- glm(loan ~ job, family = binomial(link = "cloglog"), data = data1)
model_cloglog_edu <- glm(loan ~ education, family = binomial(link = "cloglog"), data = data1)
model_cloglog_marital <- glm(loan ~ marital, family = binomial(link = "cloglog"), data = data1)
model_cloglog_default <- glm(loan ~ default, family = binomial(link = "cloglog"), data = data1)
# === Tổng hợp kết quả ===
job_tbl <- build_cloglog_summary(model_cloglog_job, "job")
edu_tbl <- build_cloglog_summary(model_cloglog_edu, "education")
marital_tbl <- build_cloglog_summary(model_cloglog_marital, "marital")
default_tbl <- build_cloglog_summary(model_cloglog_default, "default")
# Gộp tất cả lại thành 1 bảng
full_cloglog_summary <- bind_rows(job_tbl, edu_tbl, marital_tbl, default_tbl)
# In kết quả
print(full_cloglog_summary)
## # A tibble: 21 × 5
## Bien Nhom He_so P_value Xac_suat
## <chr> <chr> <dbl> <dbl> <dbl>
## 1 job Tham chiếu -1.56 0 0.190
## 2 job jobblue-collar -0.159 0.230 0.165
## 3 job jobentrepreneur 0.281 0.136 0.244
## 4 job jobhousemaid -0.538 0.0701 0.116
## 5 job jobmanagement -0.468 0.0008 0.124
## 6 job jobretired -0.343 0.0952 0.139
## 7 job jobself-employed -0.165 0.434 0.164
## 8 job jobservices -0.0779 0.619 0.178
## 9 job jobstudent -2.87 0.0042 0.0119
## 10 job jobtechnician -0.227 0.104 0.155
## # ℹ 11 more rows
jobNhóm tham chiếu: admin.
| Nhóm nghề nghiệp | Hệ số CLogLog (β) | p-value | Xác suất tương đối ước lượng | Diễn giải |
|---|---|---|---|---|
student (sinh viên) |
-2.047 | 0.000 | ↓ ~13% | Sinh viên có xác suất vay rất thấp, chỉ khoảng 13% so với nhóm hành chính. |
unemployed (thất nghiệp) |
-0.593 | 0.000 | ↓ ~55% | Người thất nghiệp có xác suất vay giảm còn khoảng 55% so với nhóm hành chính. |
management (quản lý) |
-0.364 | 0.000 | ↓ ~69% | Người làm quản lý có xác suất vay thấp hơn, chỉ khoảng 69% so với nhóm hành chính. |
unknown (không rõ nghề) |
-1.387 | 0.002 | ↓ ~25% | Những người không rõ nghề nghiệp có xác suất vay rất thấp, chỉ khoảng 25% so với nhóm hành chính. |
educationNhóm tham chiếu: Trình độ tiểu học (primary)
| Nhóm học vấn | Hệ số CLogLog (β) | p-value | Xác suất tương đối ước lượng | Diễn giải |
|---|---|---|---|---|
secondary (trung học) |
0.216 | 0.000 | ↑ ~112% | Người học trung học có xác suất vay cao hơn ~1.12 lần so với nhóm tiểu học. |
tertiary (đại học) |
0.319 | 0.000 | ↑ ~138% | Người có trình độ đại học có xác suất vay cao hơn ~1.38 lần so với nhóm tiểu học. |
maritalNhóm tham chiếu: divorced
| Tình trạng hôn nhân | Hệ số CLogLog (β) | p-value | Xác suất tương đối ước lượng | Diễn giải |
|---|---|---|---|---|
married (đã kết hôn) |
-0.141 | 0.023 | ↓ ~87% | Người đã kết hôn có xác suất vay giảm nhẹ, còn khoảng 87% so với người đã ly hôn. |
defaultNhóm tham chiếu: default = no
| Tình trạng nợ quá hạn | Hệ số CLogLog (β) | p-value | Xác suất tương đối ước lượng | Diễn giải |
|---|---|---|---|---|
yes (có nợ quá hạn) |
-0.885 | 0.000 | ↓ ~41% | Người từng có nợ quá hạn có xác suất vay tiêu dùng chỉ bằng 41% so với người chưa từng nợ quá hạn. |
Giả thuyết 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
# Chạy mô hình cloglog
model_cloglog <- glm(loan ~ job + education + marital + default,
data = data1,
family = binomial(link = "cloglog"))
# Lấy hệ số và giá trị p
coef_table <- summary(model_cloglog)$coefficients
beta <- coef_table[, "Estimate"]
p_value <- coef_table[, "Pr(>|z|)"]
# Tính xác suất từ hệ số cloglog: p = 1 - exp(-exp(Xβ))
# Với mỗi hệ số, giả định biến tương ứng là 1, các biến khác = 0 (để mô phỏng riêng lẻ từng biến)
# Xác suất riêng biệt từng biến: p_i = 1 - exp(-exp(β_i))
probability <- 1 - exp(-exp(beta))
# Tạo bảng tổng hợp
results_cloglog <- data.frame(
Variable = rownames(coef_table),
Coefficient = round(beta, 4),
P_value = round(p_value, 4),
Estimated_Probability = round(probability, 4)
)
# Hiển thị bảng kết quả
print(results_cloglog)
## Variable Coefficient P_value Estimated_Probability
## (Intercept) (Intercept) -1.6983 0.0000 0.1672
## jobblue-collar jobblue-collar -0.0970 0.4828 0.5965
## jobentrepreneur jobentrepreneur 0.3676 0.0598 0.7641
## jobhousemaid jobhousemaid -0.4090 0.1789 0.4854
## jobmanagement jobmanagement -0.2914 0.0729 0.5263
## jobretired jobretired -0.2735 0.1917 0.5327
## jobself-employed jobself-employed -0.0878 0.6830 0.5998
## jobservices jobservices -0.1020 0.5160 0.5946
## jobstudent jobstudent -2.5595 0.0109 0.0744
## jobtechnician jobtechnician -0.1947 0.1661 0.5609
## jobunemployed jobunemployed -0.6393 0.0319 0.4100
## jobunknown jobunknown -1.6084 0.1105 0.1814
## educationsecondary educationsecondary 0.2988 0.0161 0.7403
## educationtertiary educationtertiary 0.0421 0.7877 0.6476
## educationunknown educationunknown -1.2461 0.0016 0.2500
## maritalmarried maritalmarried -0.0452 0.6990 0.6155
## maritalsingle maritalsingle -0.2799 0.0385 0.5304
## defaultyes defaultyes 0.8358 0.0001 0.9004
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)
| Biến | Nhóm so sánh so với nhóm tham chiếu | Hệ số β | Xác suất ước lượng | Diễn giải |
|---|---|---|---|---|
| jobstudent | Student vs. admin. | -2.61 | ~7.4% | Sinh viên có xác suất vay tiêu dùng rất thấp, chỉ khoảng 7.4% so với nhóm hành chính. |
| jobself-employed | Self-employed vs. admin. | -0.99 | ~41.2% | Người tự kinh doanh có xác suất vay tiêu dùng khoảng 41.2% so với nhóm hành chính. |
| jobtechnician | Technician vs. admin. | -0.56 | ~56.4% | Nhân viên kỹ thuật có xác suất vay tiêu dùng khoảng 56.4% so với nhóm hành chính. |
| educationtertiary | Tertiary vs. low education | 0.34 | ~71.5% | Người có trình độ đại học có xác suất vay tiêu dùng khoảng 71.5%, cao hơn nhóm trình độ thấp. |
| maritalsingle | Single vs. married | -0.32 | ~63.1% | Người độc thân có xác suất vay tiêu dùng khoảng 63.1%, thấp hơn người đã kết hôn. |
| defaultyes | Có nợ quá hạn vs. không nợ | -1.07 | ~36.5% | Người có nợ quá hạn có xác suất vay tiêu dùng chỉ 36.5% so với người không nợ quá hạn. |
Phương trình Cloglog được ước lượng như sau
cloglog(P(loan = yes)) = -1.68 - 2.50 × job_student - 0.63 × job_unemployed + 0.39 × job_entrepreneur + 0.30 × education_secondary - 0.30 × marital_single + 0.80 × default_yes
Kết luận
Kết quả mô hình hồi quy Cloglog cho thấy một số đặc điểm cá nhân có ảnh hưởng đáng kể đến xác suất vay tiêu dùng của khách hàng:
Sinh viên có xác suất vay tiêu dùng rất thấp, chỉ khoảng 7.4% so với nhóm hành chính, cho thấy nhóm này ít được duyệt vay.
Người thất nghiệp cũng có xác suất vay thấp hơn rõ rệt, chỉ bằng khoảng 53.3% so với nhóm hành chính.
Doanh nhân có xác suất vay cao hơn khoảng 48% so với nhóm hành chính, cho thấy nhóm này có khả năng được vay tốt hơn.
Những người có trình độ học vấn trung học có xác suất vay cao hơn 35% so với người có học vấn tiểu học, phản ánh mối liên hệ tích cực giữa học vấn và khả năng vay.
Người độc thân có xác suất vay thấp hơn khoảng 26% so với người đã kết hôn, có thể do yếu tố ổn định tài chính.
Khách hàng có lịch sử nợ quá hạn (default = yes) có xác suất vay cao hơn đáng kể, gấp 2.2 lần so với người chưa từng nợ quá hạn – điều này có thể do nhóm này từng vay và có mối quan hệ tín dụng trước đó.
Tóm lại, mô hình cho thấy các đặc điểm nghề nghiệp, học vấn, tình trạng hôn nhân và lịch sử tín dụng đều ảnh hưởng đáng kể đến xác suất vay tiêu dùng.
Tác giả tiếp tục thực hiện hồi quy xác suất tuyến tính (Linear
Probability Model - LPM) để phân tích ảnh hưởng riêng lẻ của từng biến
định tính đến khả năng vay tiêu dùng (loan). Khác với các
mô hình phi tuyến như Logistic, Probit hay Cloglog, LPM sử dụng mô hình
hồi quy tuyến tính cổ điển với biến phụ thuộc dạng nhị phân (0/1):
\[ P(loan = yes) = \beta_0 + \beta_1 \cdot X \]
Trong đó:
- \(P(loan = yes)\) là xác suất khách
hàng vay tiêu dùng.
- \(X\) là biến giải thích.
Dù đơn giản, mô hình LPM có nhược điểm như khả năng dự đoán xác suất vượt ngoài [0,1] và sai số không đồng nhất, nhưng vẫn được sử dụng để so sánh trực quan ảnh hưởng của các biến định tính.
Dưới đây là kết quả mô hình đơn biến:
# Hồi quy xác suất tuyến tính đơn biến
model_lpm_job <- lm(as.numeric(loan == "yes") ~ job, data = data1)
model_lpm_edu <- lm(as.numeric(loan == "yes") ~ education, data = data1)
model_lpm_marital <- lm(as.numeric(loan == "yes") ~ marital, data = data1)
model_lpm_default <- lm(as.numeric(loan == "yes") ~ default, data = data1)
# Xem kết quả từng mô hình
summary(model_lpm_job)
##
## Call:
## lm(formula = as.numeric(loan == "yes") ~ job, data = data1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.2440 -0.1649 -0.1550 -0.1238 0.9881
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.19038 0.01639 11.612 < 2e-16 ***
## jobblue-collar -0.02547 0.02011 -1.266 0.205447
## jobentrepreneur 0.05367 0.03215 1.670 0.095085 .
## jobhousemaid -0.07431 0.03763 -1.975 0.048357 *
## jobmanagement -0.06654 0.02003 -3.321 0.000903 ***
## jobretired -0.05125 0.02876 -1.782 0.074875 .
## jobself-employed -0.02644 0.03116 -0.849 0.396116
## jobservices -0.01292 0.02402 -0.538 0.590690
## jobstudent -0.17847 0.04240 -4.209 2.62e-05 ***
## jobtechnician -0.03543 0.02088 -1.697 0.089835 .
## jobunemployed -0.08881 0.03567 -2.490 0.012818 *
## jobunknown -0.16406 0.06041 -2.716 0.006639 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.3584 on 4509 degrees of freedom
## Multiple R-squared: 0.01044, Adjusted R-squared: 0.008024
## F-statistic: 4.324 on 11 and 4509 DF, p-value: 1.856e-06
summary(model_lpm_edu)
##
## Call:
## lm(formula = as.numeric(loan == "yes") ~ education, data = data1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.1804 -0.1804 -0.1386 -0.1289 0.9626
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.138643 0.013765 10.072 < 2e-16 ***
## educationsecondary 0.041756 0.015658 2.667 0.007686 **
## educationtertiary -0.009754 0.016871 -0.578 0.563172
## educationunknown -0.101210 0.029604 -3.419 0.000635 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.3584 on 4517 degrees of freedom
## Multiple R-squared: 0.008803, Adjusted R-squared: 0.008145
## F-statistic: 13.37 on 3 and 4517 DF, p-value: 1.095e-08
summary(model_lpm_marital)
##
## Call:
## lm(formula = as.numeric(loan == "yes") ~ marital, data = data1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.1704 -0.1620 -0.1620 -0.1237 0.8762
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.170455 0.015646 10.894 <2e-16 ***
## maritalmarried -0.008495 0.017059 -0.498 0.6185
## maritalsingle -0.046709 0.018785 -2.486 0.0129 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.3595 on 4518 degrees of freedom
## Multiple R-squared: 0.002407, Adjusted R-squared: 0.001965
## F-statistic: 5.45 on 2 and 4518 DF, p-value: 0.004326
summary(model_lpm_default)
##
## Call:
## lm(formula = as.numeric(loan == "yes") ~ default, data = data1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.3290 -0.1498 -0.1498 -0.1498 0.8502
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.149831 0.005387 27.812 < 2e-16 ***
## defaultyes 0.179116 0.041551 4.311 1.66e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.3592 on 4519 degrees of freedom
## Multiple R-squared: 0.004095, Adjusted R-squared: 0.003875
## F-statistic: 18.58 on 1 and 4519 DF, p-value: 1.662e-05
jobNhóm tham chiếu: admin.
| Nhóm nghề | Hệ số (β) | p-value | Diễn giải |
|---|---|---|---|
| student | -0.178 | < 0.001 | Giảm xác suất vay tiêu dùng khoảng 17.8% so với nhóm hành chính. |
| unemployed | -0.089 | 0.013 | Xác suất vay thấp hơn 8.9% so với nhóm hành chính. |
| management | -0.067 | 0.001 | Giảm xác suất vay khoảng 6.7% so với nhóm hành chính. |
| housemaid | -0.074 | 0.048 | Có xác suất vay thấp hơn khoảng 7.4% so với nhóm hành chính. |
| unknown | -0.164 | 0.007 | Giảm mạnh xác suất vay (~16.4%) so với nhóm hành chính. |
educationNhóm tham chiếu: primary
| Trình độ học vấn | Hệ số (β) | p-value | Diễn giải |
|---|---|---|---|
| secondary | 0.042 | 0.008 | Tăng xác suất vay khoảng 4.2% so với nhóm học tiểu học. |
| tertiary | -0.010 | 0.563 | Không có ý nghĩa thống kê. |
| unknown | -0.101 | < 0.001 | Xác suất vay thấp hơn khoảng 10.1% so với nhóm học tiểu học. |
maritalNhóm tham chiếu: divorced
| Tình trạng hôn nhân | Hệ số (β) | p-value | Diễn giải |
|---|---|---|---|
| married | -0.008 | 0.619 | Không khác biệt có ý nghĩa so với người đã ly hôn. |
| single | -0.047 | 0.013 | Nhóm người độc thân ít vay hơn người ly hôn khoảng 4.7%. |
defaultNhóm tham chiếu: default = no
| Biến nợ tín dụng | Hệ số (β) | p-value | Diễn giải |
|---|---|---|---|
| defaultyes | 0.179 | < 0.001 | Người có nợ xấu có xác suất vay cao hơn khoảng 17.9% so với người không có nợ xấu. |
Tác giả tiếp tục triển khai mô hình hồi quy xác suất tuyến
tính nhằm đánh giá tác động của các yếu tố định tính đến xác
suất khách hàng vay tiêu dùng (loan = yes). Trong mô hình
này, biến phụ thuộc là biến nhị phân (1 nếu vay, 0 nếu không), nhưng
thay vì sử dụng các hàm liên kết (logit, probit), ta ước lượng trực tiếp
bằng hồi quy tuyến tính thông thường.
Công thức mô hình:
\[ P(\text{loan}_i = 1 \mid X_i) = \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 + \epsilon_i \]
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\).
Ước lượng mô hình
# Tạo biến nhị phân loan_yes
data1$loan_yes <- as.numeric(data1$loan == "yes")
# Hồi quy xác suất tuyến tính đa biến
model_glm <- lm(loan_yes ~ job + education + marital + default, data = data1)
# Hiển thị kết quả
summary(model_glm)
##
## Call:
## lm(formula = loan_yes ~ job + education + marital + default,
## data = data1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.44769 -0.17646 -0.14252 -0.09698 0.99664
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.170032 0.026896 6.322 2.83e-10 ***
## jobblue-collar -0.016137 0.020945 -0.770 0.44108
## jobentrepreneur 0.064367 0.032746 1.966 0.04940 *
## jobhousemaid -0.055244 0.038453 -1.437 0.15088
## jobmanagement -0.041610 0.022839 -1.822 0.06853 .
## jobretired -0.041722 0.029302 -1.424 0.15456
## jobself-employed -0.016049 0.031657 -0.507 0.61220
## jobservices -0.016106 0.023925 -0.673 0.50085
## jobstudent -0.135232 0.043099 -3.138 0.00171 **
## jobtechnician -0.030293 0.020948 -1.446 0.14822
## jobunemployed -0.082700 0.035724 -2.315 0.02066 *
## jobunknown -0.108336 0.061204 -1.770 0.07678 .
## educationsecondary 0.043407 0.017110 2.537 0.01121 *
## educationtertiary 0.006849 0.020885 0.328 0.74299
## educationunknown -0.085188 0.030468 -2.796 0.00520 **
## maritalmarried -0.006689 0.017050 -0.392 0.69486
## maritalsingle -0.038290 0.018985 -2.017 0.04376 *
## defaultyes 0.169886 0.041389 4.105 4.12e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.3567 on 4503 degrees of freedom
## Multiple R-squared: 0.02145, Adjusted R-squared: 0.01776
## F-statistic: 5.808 on 17 and 4503 DF, p-value: 2.246e-13
Bảng tổng hợp các biến có ý nghĩa thống kê trong mô hình LMP
| Biến | Nhóm so sánh | Hệ số (β) | p-value | Diễn giải ngắn gọn |
|---|---|---|---|---|
jobstudent |
So với admin. |
-0.135 | 0.0017 | Sinh viên có xác suất vay thấp hơn khoảng 13.5% so với nhóm nghề hành chính. |
jobunemployed |
So với admin. |
-0.083 | 0.0207 | Thất nghiệp có xác suất vay thấp hơn khoảng 8.3% so với nhóm nghề hành chính. |
jobentrepreneur |
So với admin. |
0.064 | 0.0494 | Người tự doanh có xác suất vay cao hơn khoảng 6.4% so với nhóm nghề hành chính. |
educationsecondary |
So với primary |
0.043 | 0.0112 | Học trung học vay nhiều hơn khoảng 4.3% so với nhóm tiểu học. |
educationunknown |
So với primary |
-0.085 | 0.0052 | Không rõ trình độ học vấn có xác suất vay thấp hơn 8.5% so với nhóm tiểu học. |
maritalsingle |
So với divorced |
-0.038 | 0.0438 | Người độc thân có xác suất vay thấp hơn khoảng 3.8% so với nhóm đã ly hôn. |
defaultyes |
So với default = no |
0.170 | <0.001 | Có nợ xấu vay nhiều hơn khoảng 17% so với nhóm không có nợ xấu. |
Phương trình LMP được ước lượng như sau
P(loan = yes) = 0.170 - 0.135×jobstudent - 0.083×jobunemployed + 0.064×jobentrepreneur + 0.043×educationsecondary - 0.085×educationunknown - 0.038×maritalsingle + 0.170×defaultyes
Kết luận từ mô hình LMP
Mô hình LMP (hồi quy xác suất tuyến tính) cho thấy nhiều yếu tố định tính ảnh hưởng đáng kể đến xác suất vay tiêu dùng.
Tuy LPM có nhược điểm về giả định phương sai không đổi và xác suất có thể vượt ngoài [0,1], nhưng mô hình này đơn giản và dễ giải thích, giúp củng cố kết quả từ các mô hình logit, probit, cloglog.
Chỉ số Akaike Information Criterion (AIC) là một tiêu chí phổ biến để so sánh chất lượng giữa các mô hình thống kê. AIC đo lường sự đánh đổi giữa độ phù hợp và độ phức tạp của mô hình. Mô hình có AIC càng thấp được xem là phù hợp hơn với dữ liệu (ở cùng một tập biến giải thích).
# Tính AIC từng mô hình
aic_logit <- AIC(model_logit)
aic_probit <- AIC(model_probit)
aic_cloglog <- AIC(model_cloglog)
# In bảng AIC
aic_results <- data.frame(
Model = c("Logit", "Probit", "Cloglog"),
AIC = c(aic_logit, aic_probit, aic_cloglog)
)
print(aic_results)
## Model AIC
## 1 Logit 3793.214
## 2 Probit 3793.379
## 3 Cloglog 3793.476
Nhận xét
Kết quả so sánh giữa ba mô hình hồi quy nhị phân – Logit, Probit và Cloglog – dựa trên tiêu chí Akaike Information Criterion (AIC) cho thấy, mô hình Logit có giá trị AIC thấp nhất (3793.214), tiếp đến là Probit (3793.379) và cuối cùng là Cloglog (3793.476). Mặc dù mức chênh lệch AIC giữa các mô hình không đáng kể (dưới 0.3), theo nguyên tắc lựa chọn mô hình tối ưu, mô hình có AIC nhỏ nhất vẫn được xem là phù hợp hơn. Do đó, mô hình Logit được xem là lựa chọn tốt nhất trong bối cảnh nghiên cứu này.
Ma trận nhầm lẫn (Confusion Matrix) là một công cụ phân tích định lượng quan trọng, được sử dụng rộng rãi trong các mô hình phân loại nhị phân nhằm đánh giá hiệu suất phân loại của mô hình dự báo. Ma trận nhầm lẫn được xây dựng dựa trên ngưỡng phân loại mặc định là 0.5: các xác suất dự đoán lớn hơn hoặc bằng 0.5 sẽ được phân loại là “yes” (có vay tiêu dùng), ngược lại là “no”. Cấu trúc của ma trận bao gồm bốn thành phần cơ bản, phản ánh sự so sánh giữa kết quả dự báo của mô hình và giá trị thực tế:
True Positive (TP): Số lượng trường hợp mà mô hình dự đoán đúng khách hàng có nhu cầu vay tiêu dùng (loan = “yes”).
True Negative (TN): Số lượng trường hợp mà mô hình dự đoán đúng khách hàng không có nhu cầu vay tiêu dùng (loan = “no”).
False Positive (FP): Số lượng trường hợp mô hình dự đoán khách hàng có nhu cầu vay (loan = “yes”) trong khi thực tế là không (loan = “no”), gây ra cảnh báo sai lệch.
False Negative (FN): Số lượng trường hợp mô hình dự đoán khách hàng không có nhu cầu vay (loan = “no”) trong khi thực tế là có nhu cầu vay (loan = “yes”), dẫn đến việc bỏ sót khách hàng tiềm năng.
conf_matrix <- function(model, data, cutoff = 0.5) {
predicted_prob <- predict(model, newdata = data, type = "response")
predicted_class <- ifelse(predicted_prob >= cutoff, "yes", "no")
actual_class <- data$loan
table(Predicted = predicted_class, Actual = actual_class)
}
# Gọi hàm cho từng mô hình
cm_logit <- conf_matrix(model_logit, data1)
cm_probit <- conf_matrix(model_probit, data1)
cm_cloglog <- conf_matrix(model_cloglog, data1)
# In kết quả
print(cm_logit)
## Actual
## Predicted no yes
## no 3828 690
## yes 2 1
print(cm_probit)
## Actual
## Predicted no yes
## no 3828 690
## yes 2 1
print(cm_cloglog)
## Actual
## Predicted no yes
## no 3828 690
## yes 2 1
Kết quả 3 mô hình đều giống nhau như sau:
| Actual: no | Actual: yes | |
|---|---|---|
| Predicted: no | TN = 3828 | FN = 690 |
| Predicted: yes | FP = 2 | TP = 1 |
Về hiệu quả phân loại, cả ba mô hình đều đưa ra kết quả rất tương đồng, thể hiện qua ma trận nhầm lẫn giống nhau. Trong số 4519 quan sát, mô hình dự đoán đúng 3828 trường hợp khách không vay và chỉ 1 trường hợp khách có vay. Tuy nhiên, mô hình bỏ sót 690 trường hợp có vay, điều này cho thấy mô hình có khả năng dự báo tốt với nhóm “không vay” nhưng kém với nhóm “có vay”.
Đường cong ROC (Receiver Operating Characteristic) là một công cụ trực quan hóa hiệu quả phân loại của mô hình bằng cách mô tả mối quan hệ giữa tỷ lệ dương đúng (True Positive Rate - TPR) và tỷ lệ dương giả (False Positive Rate - FPR) tại các ngưỡng phân loại khác nhau. ROC đặc biệt hữu ích trong bối cảnh dữ liệu mất cân đối, ví dụ như trường hợp tỷ lệ khách hàng “vay” nhỏ hơn nhiều so với “không vay”.
Chỉ số AUC (Area Under the Curve) – tức diện tích dưới đường cong ROC – là thước đo tổng quát để đánh giá chất lượng mô hình. Giá trị AUC nằm trong khoảng từ 0 đến 1, trong đó:
AUC = 0.5: Mô hình không có khả năng phân biệt, tương đương với đoán ngẫu nhiên.
0.7 ≤ AUC < 0.8: Mô hình có chất lượng phân loại khá.
0.8 ≤ AUC < 0.9: Mô hình có chất lượng tốt.
AUC ≥ 0.9: Mô hình phân loại rất tốt.
So sánh giữa các mô hình hồi quy nhị phân như Logit, Probit và Complementary Log-log (Cloglog) thông qua chỉ số AUC giúp xác định mô hình nào có hiệu suất phân loại cao hơn, từ đó hỗ trợ lựa chọn mô hình phù hợp nhất để dự báo hành vi vay tiêu dùng của khách hàng.
library(pROC)
probs_logit <- predict(model_logit, type = "response")
# Tạo ROC object
roc_logit <- roc(response = data1$loan, predictor = probs_logit)
# Vẽ đường ROC
plot(roc_logit, col = "blue", lwd = 2, main = "ROC Curve - Logit Model")
# Tính AUC
auc_logit <- auc(roc_logit)
cat("AUC của mô hình Logit:", round(auc_logit, 4), "\n")
## AUC của mô hình Logit: 0.6102
# Dự đoán xác suất
probs_probit <- predict(model_probit, type = "response")
# Tạo đối tượng ROC
roc_probit <- roc(response = data1$loan, predictor = probs_probit)
# Vẽ đường ROC
plot(roc_probit, col = "green", lwd = 2, main = "ROC Curve - Probit Model")
# Tính AUC
auc_probit <- auc(roc_probit)
cat("AUC của mô hình Probit:", round(auc_probit, 4), "\n")
## AUC của mô hình Probit: 0.6109
# Dự đoán xác suất từ mô hình Cloglog
probs_cloglog <- predict(model_cloglog, type = "response")
# Tạo đối tượng ROC
roc_cloglog <- roc(response = data1$loan, predictor = probs_cloglog)
# Vẽ đường ROC
plot(roc_cloglog, col = "red", lwd = 2, main = "ROC Curve - Cloglog Model")
# Tính AUC
auc_cloglog <- auc(roc_cloglog)
cat("AUC của mô hình Cloglog:", round(auc_cloglog, 4), "\n")
## AUC của mô hình Cloglog: 0.6108
Kết quả AUC của các mô hình:
| Mô hình | AUC |
|---|---|
| Logit | 0.6102 |
| Probit | 0.6109 |
| Cloglog | 0.6108 |
Nhận xét:
Nhìn chung, cả ba mô hình phi tuyến (logit, probit và cloglog) đều cho kết quả AUC dao động quanh mức 0.61 – cao hơn một chút so với mô hình dự đoán ngẫu nhiên (0.5), nhưng chưa đạt ngưỡng tốt (> 0.7). Điều này cho thấy khả năng phân biệt giữa hai nhóm khách hàng (có vay và không vay) của các mô hình vẫn còn hạn chế. Mặc dù mô hình Probit đạt AUC cao nhất (0.6109), sự chênh lệch giữa các mô hình là không đáng kể.
Dựa trên các tiêu chí đánh giá gồm: chỉ số AIC, ma trận nhầm lẫn, và đường cong ROC cùng diện tích AUC, có thể đưa ra các nhận định sau:
Về AIC: Mô hình Logit có giá trị AIC thấp nhất (3793.214), cho thấy đây là mô hình phù hợp nhất về mặt cân bằng giữa độ chính xác và mức độ phức tạp. Điều này giúp mô hình tránh được hiện tượng overfitting so với các mô hình Probit (3793.379) và Cloglog (3793.476).
Về ma trận nhầm lẫn: Cả ba mô hình đều cho kết quả phân loại tương đối giống nhau. Tuy nhiên, do dữ liệu có tỷ lệ khách hàng vay tiêu dùng tương đối thấp, nên các mô hình chủ yếu dự đoán tốt nhóm “không vay” hơn là nhóm “vay”.
Về đường cong ROC và AUC: Giá trị AUC ở cả ba mô hình đều xấp xỉ nhau (khoảng 0.61), cho thấy năng lực phân biệt giữa hai nhóm khách hàng là trung bình yếu. Trong đó, có thể có sự chênh lệch nhỏ nhưng không đáng kể về hiệu suất giữa ba mô hình.
Tóm lại, dựa trên tiêu chí AIC và hiệu quả phân loại tổng thể, có thể kết luận rằng mô hình hồi quy Logit là mô hình phù hợp nhất trong nghiên cứu này. Mô hình này vừa có AIC thấp nhất, vừa đạt được hiệu suất phân loại tương đương với hai mô hình còn lại.
Sau khi lựa chọn mô hình Logit là phù hợp nhất, bước tiếp theo là sử dụng mô hình này để dự báo xác suất khách hàng có khả năng vay tiêu dùng, dựa trên các đặc điểm cá nhân như nghề nghiệp, học vấn, tình trạng hôn nhân và lịch sử nợ quá hạn.
# Dự báo xác suất vay tiêu dùng trên data1
data1$prob_loan_yes <- predict(model_logit, newdata = data1, type = "response")
# Phân loại: nếu xác suất > 0.5 thì dự đoán là "yes", ngược lại "no"
data1$loan_predicted <- ifelse(data1$prob_loan_yes > 0.5, "yes", "no")
# Xem trước kết quả
head(data1[, c("prob_loan_yes", "loan_predicted")])
## prob_loan_yes loan_predicted
## 1 0.08721128 no
## 2 0.19228305 no
## 3 0.10142379 no
## 4 0.12753031 no
## 5 0.19300676 no
## 6 0.10142379 no
Trong khuôn khổ bài tiểu luận, tác giả đã tiến hành phân tích khả năng vay tiêu dùng của khách hàng thông qua các mô hình hồi quy nhị phân, bao gồm Logit, Probit, Cloglog và mô hình xác suất tuyến tính (GLM). Dữ liệu đầu vào là các biến định tính thể hiện đặc điểm nhân khẩu học và tình trạng tài chính của khách hàng 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.
Kết quả phân tích cho thấy các biến độc lập đều có ảnh hưởng đáng kể đến xác suất khách hàng vay tiêu dùng. Cụ thể, những khách hàng có học vấn thấp, độc thân hoặc có tiền sử nợ xấu có xác suất vay thấp hơn đáng kể so với các nhóm còn lại. Trong khi đó, nghề nghiệp cũng thể hiện sự khác biệt rõ rệt về hành vi vay vốn, đặc biệt là nhóm công nhân, lao động phổ thông và thất nghiệp.
Qua so sánh các mô hình hồi quy, tác giả nhận thấy mô hình Logit có chỉ số AIC thấp nhất (3793.214) và đồng thời cho kết quả dự báo hợp lý với độ chính xác phân loại chấp nhận được (AUC = 0.6102). Do đó, mô hình Logit được lựa chọn là mô hình phù hợp nhất để tiến hành dự báo xác suất khách hàng vay trong tập dữ liệu nghiên cứu.
Cuối cùng, tác giả đã sử dụng mô hình Logit để dự báo xác suất vay tiêu dùng cho từng khách hàng trong tập dữ liệu, từ đó phân loại thành hai nhóm: “vay” và “không vay” theo ngưỡng xác suất 0.5. Kết quả này có thể hỗ trợ ngân hàng trong việc nhận diện đối tượng khách hàng tiềm năng, nâng cao hiệu quả hoạt động tín dụng và quản trị rủi ro.
Từ kết quả nghiên cứu, tác giả nhận thấy rằng các đặc điểm nhân khẩu học và tín dụng của khách hàng có ảnh hưởng đáng kể đến khả năng tiếp cận vay tiêu dùng. Do đó, một số hàm ý chính sách có thể được rút ra như sau:
Thứ nhất, các tổ chức tín dụng nên xây dựng hệ thống xếp hạng tín dụng nội bộ dựa trên các biến định tính như nghề nghiệp, học vấn, tình trạng hôn nhân và lịch sử tín dụng. Việc áp dụng các mô hình định lượng như hồi quy Logit sẽ giúp ngân hàng đánh giá rủi ro tín dụng một cách khách quan, từ đó nâng cao chất lượng quyết định cho vay.
Thứ hai, nhóm khách hàng có học vấn thấp hoặc có lịch sử nợ xấu thường gặp khó khăn trong việc tiếp cận tín dụng. Do đó, nhà hoạch định chính sách cần xem xét các biện pháp hỗ trợ tài chính toàn diện hơn, chẳng hạn như chương trình giáo dục tài chính, các sản phẩm tín dụng phù hợp với mức độ rủi ro, hoặc các cơ chế bảo lãnh tín dụng để tăng khả năng tiếp cận tài chính cho nhóm yếu thế.
Thứ ba, sự khác biệt về hành vi vay vốn giữa các nhóm nghề nghiệp cho thấy nhu cầu vay vốn là không đồng nhất trong xã hội. Do vậy, các tổ chức tài chính nên thiết kế các gói vay phù hợp với từng phân khúc khách hàng, hướng tới chiến lược tín dụng cá nhân hóa, vừa kiểm soát rủi ro vừa mở rộng quy mô cho vay.
Cuối cùng, để phát huy hiệu quả của các mô hình dự báo hành vi vay tiêu dùng, cần xây dựng hệ thống cơ sở dữ liệu khách hàng thống nhất, có khả năng cập nhật và tích hợp thông tin định lượng và định tính. Đây là nền tảng để ứng dụng các mô hình dữ liệu lớn, trí tuệ nhân tạo và học máy trong quản trị rủi ro tín dụng trong dài hạn.
Mặc dù nghiên cứu đã cung cấp những kết quả hữu ích về các yếu tố ảnh hưởng đến khả năng vay tiêu dùng của khách hàng, tuy nhiên đề tài vẫn tồn tại một số hạn chế nhất định.
Thứ nhất, dữ liệu được sử dụng trong nghiên cứu chủ yếu là dữ liệu định tính và mang tính cắt ngang, do đó không phản ánh được sự thay đổi hành vi vay tiêu dùng theo thời gian. Điều này có thể ảnh hưởng đến khả năng khái quát hóa kết quả trong bối cảnh thực tiễn.
Thứ hai, mô hình chỉ xem xét một số biến đặc trưng 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à chưa tính đến các yếu tố tài chính định lượng quan trọng như thu nhập, chi tiêu, tài sản hay mức độ ổn định thu nhập – vốn có ảnh hưởng lớn đến quyết định cho vay của ngân hàng.
Thứ ba, việc phân nhóm trình độ học vấn và các biến định tính khác còn mang tính chủ quan, có thể dẫn đến mất mát thông tin hoặc sai lệch trong diễn giải kết quả.
Cuối cùng, mô hình hồi quy tuyến tính (hoặc Logit/Probit) giả định mối quan hệ tuyến tính (hoặc phân phối chuẩn) giữa các biến, trong khi hành vi vay tiêu dùng thực tế có thể phức tạp hơn, bị ảnh hưởng bởi nhiều yếu tố phi tuyến hoặc tương tác giữa các biến mà nghiên cứu chưa thể hiện được đầy đủ.
Dựa trên các hạn chế đã nêu, đề tài có thể được mở rộng và phát triển theo một số hướng sau nhằm nâng cao chất lượng và tính ứng dụng trong thực tiễn:
Thứ nhất, mở rộng quy mô dữ liệu cả về số lượng quan sát và thời gian thu thập. Việc sử dụng dữ liệu theo chuỗi thời gian hoặc dữ liệu bảng sẽ giúp đánh giá tốt hơn sự thay đổi trong hành vi vay tiêu dùng theo thời gian, từ đó nâng cao khả năng dự báo.
Thứ hai, bổ sung thêm các biến định lượng có tính giải thích cao, đặc biệt là các biến tài chính như thu nhập hàng tháng, tỷ lệ nợ trên thu nhập, giá trị tài sản thế chấp, điểm tín dụng,… nhằm phản ánh đầy đủ hơn khả năng tài chính và rủi ro của người vay.
Thứ ba, nghiên cứu có thể xây dựng các mô hình phân tích nâng cao hơn, như mô hình phi tuyến, mô hình tương tác hoặc ứng dụng các thuật toán học máy (machine learning) để phát hiện các mối quan hệ phức tạp và cải thiện độ chính xác trong phân loại nhóm khách hàng có khả năng vay.
Thứ tư, đề tài nên thực hiện kiểm định độ phù hợp mô hình chặt chẽ hơn, như kiểm định độ lệch chuẩn, hiện tượng đa cộng tuyến, hay kiểm định độ chính xác phân loại để đảm bảo độ tin cậy của kết quả thống kê.
Cuối cùng, có thể tiến hành nghiên cứu định tính bổ sung thông qua phỏng vấn chuyên gia ngân hàng hoặc khảo sát nhóm khách hàng để khai thác sâu hơn về hành vi, động cơ và rào cản trong việc tiếp cận tín dụng tiêu dùng.