library(openxlsx)
library(DT)
library(pander)
library(readr)
library(ggplot2)
library(dplyr)
library(skimr)
library(psych)
library(formattable)
library(htmltools)
library(DescTools)
library(epitools)
library(pROC)
library(ggrepel)
library(gridExtra)
d <- read.xlsx("/Users/phamxuanhoan/Downloads/Dldtb5.xlsx")

CHƯƠNG 1: TỔNG QUAN NGHIÊN CỨU

1.1 Tính cấp thiết của đề tài

Trong bối cảnh thị trường tài chính – ngân hàng cạnh tranh khốc liệt, các chiến dịch marketing đóng vai trò then chốt trong việc mở rộng tệp khách hàng và gia tăng tỷ lệ chuyển đổi. Tuy nhiên, không phải mọi chiến dịch đều đạt hiệu quả như mong đợi, bởi quyết định đăng ký dịch vụ ngân hàng của khách hàng còn chịu ảnh hưởng bởi nhiều yếu tố: đặc điểm nhân khẩu học (tuổi, nghề nghiệp, tình trạng hôn nhân), phương thức tiếp cận (gọi điện thoại bàn, điện thoại di động), tần suất liên hệ và thậm chí cả yếu tố kinh tế vĩ mô. Bank Marketing Dataset là bộ dữ liệu thực tế thu thập từ các chiến dịch marketing của một ngân hàng Bồ Đào Nha, cung cấp hàng chục nghìn quan sát về khách hàng, cách tiếp cận và kết quả phản hồi. Việc khai thác bộ dữ liệu này không chỉ cho phép phân tích những yếu tố nào thực sự tác động đến quyết định đăng ký dịch vụ, mà còn mang ý nghĩa ứng dụng cao cho các ngân hàng trong việc tối ưu hóa nguồn lực marketing, lựa chọn nhóm khách hàng tiềm năng và thiết kế thông điệp phù hợp hơn.

Chính vì vậy, nghiên cứu với đề tài “Các nhân tố quyết định sự thành công của chiến dịch marketing ngân hàng: Phân tích từ dữ liệu Bank Marketing Dataset” được lựa chọn nhằm mang lại cái nhìn thực tiễn, dựa trên bằng chứng dữ liệu, giúp các tổ chức tài chính không chỉ hiểu rõ khách hàng hơn mà còn đưa ra các quyết định chiến lược nhằm nâng cao hiệu quả trong các chiến dịch marketing tương lai.

1.2. Mục tiêu nghiên cứu

Nghiên cứu này được thực hiện nhằm khai thác bộ dữ liệu Bank Marketing Dataset để tìm hiểu những yếu tố có thể ảnh hưởng trực tiếp đến quyết định đăng ký dịch vụ ngân hàng (biến Y) của khách hàng sau các chiến dịch marketing. Trong bối cảnh ngân hàng ngày càng cần tối ưu hóa nguồn lực marketing và nâng cao tỷ lệ chuyển đổi, việc xác định rõ yếu tố nào thực sự có ý nghĩa trong việc thuyết phục khách hàng trở nên vô cùng quan trọng.

Trên cơ sở đó, nghiên cứu tập trung vào ba yếu tố tiêu biểu và có ý nghĩa thực tiễn cao: tình trạng hôn nhân (Marital), thời gian gọi trong chiến dịch Marketing hiện tại(Duration) hình thức liên hệ (Contact). Ba yếu tố này được lựa chọn bởi chúng phản ánh trực tiếp đặc điểm khách hàng, cách ngân hàng tiếp cận khách hàng cũng như tình trạng tài chính hiện tại – những khía cạnh được dự đoán có ảnh hưởng lớn đến quyết định “yes” hay “no” trong việc đăng ký sản phẩm ngân hàng.

Cụ thể, nghiên cứu hướng đến việc phân tích tình trạng hôn nhân (Marital) để xem khách hàng độc thân, đã kết hôn hay ly hôn có xu hướng phản hồi khác nhau như thế nào với chiến dịch marketing. Tiếp đến, yếu tố hình thức liên hệ (Contact) sẽ được xem xét nhằm đánh giá mức độ hiệu quả giữa các kênh tiếp cận, chẳng hạn như điện thoại bàn và điện thoại di động ảnh hưởng như thế nào đến quyết định đăng ký dịch vụ mới. Cuối cùng là biến việc nghiên cứu biến Duration giúp xem xét thời gian gọi(giây) trong chiến dịch Marketing hiện tại có ảnh hưởng như thế nào đến quyết định đăng ký cảu khách hàng.

Thông qua ba yếu tố trọng tâm này, nghiên cứu đặt ra ba mục tiêu cụ thể.

  • Thứ nhất, xác định mức độ và chiều hướng tác động của từng yếu tố đến quyết định đăng ký dịch vụ ngân hàng.

  • Thứ hai, so sánh sự khác biệt trong phản hồi giữa các nhóm khách hàng trong từng yếu tố, từ đó nhận diện nhóm khách hàng tiềm năng.

  • Thứ ba, đề xuất một số gợi ý thực tiễn giúp ngân hàng tối ưu hóa chiến dịch marketing, lựa chọn phương thức tiếp cận phù hợp và nâng cao hiệu quả tiếp thị trong tương lai. Với định hướng này, nghiên cứu không chỉ mang tính ứng dụng cao cho hoạt động marketing ngân hàng, mà còn giúp các nhà quản trị hiểu rõ hơn hành vi và đặc điểm khách hàng dựa trên dữ liệu thực tế, làm cơ sở cho việc hoạch định chiến lược dài hạn.

1.3. Đối tượng và phạm vi nghiên cứu

Đối tượng nghiên cứu

Đối tượng nghiên cứu của đề tài là mối quan hệ giữa các đặc điểm khách hàng và quyết định đăng ký dịch vụ ngân hàng sau chiến dịch marketing. Cụ thể, nghiên cứu tập trung vào ba yếu tố then chốt gồm: tình trạng hôn nhân (Marital), hình thức liên hệ (Contact) và thời gian gọi trong chiến dịch(Duration), nhằm xem xét tác động của chúng đến biến mục tiêu Y – thể hiện quyết định “có” hoặc “không” đăng ký dịch vụ ngân hàng. Những yếu tố này vừa phản ánh đặc điểm nhân khẩu học, vừa cho thấy phương thức tiếp cận và thời gian được tư vấn trong chiến dịch – những khía cạnh có ý nghĩa quan trọng trong việc giải thích hành vi phản hồi của họ đối với chiến dịch marketing.

Phạm vi nghiên cứu

Phạm vi nghiên cứu giới hạn trong bộ dữ liệu Bank Marketing Dataset, được thu thập từ các chiến dịch tiếp thị qua điện thoại của một ngân hàng Bồ Đào Nha. Bộ dữ liệu này bao gồm hơn 40.000 bản ghi với nhiều thông tin chi tiết về khách hàng, phương thức liên hệ, kết quả phản hồi cũng như một số chỉ số kinh tế vĩ mô. Tuy nhiên, nghiên cứu này chỉ tập trung khai thác ba biến quan trọng đã xác định (Marital, Contact, Duration) và phân tích mối liên hệ của chúng với biến Y, thay vì đi sâu vào tất cả các biến trong bộ dữ liệu.

Ý nghĩa:

Giới hạn phạm vi như vậy giúp nghiên cứu đi sâu vào các yếu tố then chốt, tránh phân tích dàn trải, đồng thời tạo điều kiện để đưa ra những nhận định và khuyến nghị thiết thực cho hoạt động marketing ngân hàng trong bối cảnh thực tế.

1.4. Phương pháp nghiên cứu

Nghiên cứu sử dụng bộ dữ liệu Bank Marketing Dataset và tiến hành theo các bước phân tích chính như sau:

Trước hết, nghiên cứu thực hiện phân tích thống kê mô tả cho các biến độc lập chính gồm MaritaL, Contact và Duration. Các chỉ số tần số, tần suất và tỷ lệ phần trăm được trình bày kết hợp với biểu đồ trực quan (biểu đồ cột, biểu đồ tròn, biểu đồ histogram) nhằm làm rõ đặc điểm phân bố dữ liệu và cung cấp bức tranh tổng quan về từng biến.

Tiếp theo, nghiên cứu xem xét mối quan hệ từng biến độc lập với biến phụ thuộc (Y) bằng các phương pháp: bảng tần số – tần suất chéo, biểu đồ so sánh, và các kiểm định thống kê. Trong đó, kiểm định Chi-bình phương được dùng để đánh giá tính độc lập giữa các biến, kiểm định hiệu hai tỷ lệ giúp so sánh tỷ lệ “yes” giữa các nhóm, đồng thời tính Relative Risk (RR) và Odds Ratio (OR) để lượng hóa mức độ tác động.

Sau đó, nghiên cứu tiến hành hồi quy đơn biến cho từng yếu tố độc lập bằng bốn mô hình: mô hình hồi quy xác suất tuyến tính (Linear Probability Model – LPM), hồi quy Logit, hồi quy Probit và hồi quy Cloglog. Bước này nhằm định lượng ảnh hưởng riêng lẻ của từng biến đến xác suất khách hàng đăng ký dịch vụ.

Cuối cùng, nghiên cứu mở rộng sang hồi quy đa biến với ba biến Marital, Contact và Duration được phân tích đồng thời trong cùng bốn mô hình trên. Qua đó, nghiên cứu xác định yếu tố nào có ảnh hưởng mạnh nhất đến biến Y khi kiểm soát các yếu tố còn lại.

Toàn bộ quy trình trên được thiết kế nhằm đảm bảo tính logic và đầy đủ, từ mô tả dữ liệu, kiểm định mối quan hệ, đến lượng hóa ảnh hưởng bằng mô hình hồi quy, giúp rút ra kết luận khoa học và cung cấp các gợi ý thực tiễn cho hoạt động marketing ngân hàng.

1.5. Ý nghĩa thực tiễn của đề tài

Trước hết, nghiên cứu cung cấp bằng chứng định lượng rõ ràng về tác động của các yếu tố như tình trạng hôn nhân (Marital), hình thức liên hệ (Contact), thời gin gọi trong chiến dịch(Duration) đến quyết định đăng ký dịch vụ ngân hàng của khách hàng. Các kết quả này giúp ngân hàng hiểu rõ nhóm khách hàng nào phản hồi tích cực hơn và yếu tố nào đang cản trở hoặc thúc đẩy quyết định của họ.

Thứ hai, việc xác định hiệu quả của các kênh liên hệ từ dữ liệu thực tế giúp ngân hàng tối ưu hóa chiến lược tiếp cận khách hàng. Chẳng hạn, nếu một hình thức liên hệ cho tỷ lệ “yes” cao hơn, ngân hàng có thể ưu tiên đầu tư nguồn lực cho kênh này để nâng cao hiệu quả và tiết kiệm chi phí.

Thứ ba, nghiên cứu mang đến cơ sở dữ liệu đáng tin cậy cho các quyết định quản trị. Thay vì dựa vào cảm tính hoặc kinh nghiệm, ngân hàng có thể dựa trên kết quả phân tích để xây dựng chiến dịch marketing hướng mục tiêu (targeted marketing), tập trung vào đúng đối tượng khách hàng tiềm năng, từ đó tăng tỷ lệ chuyển đổi và giảm thiểu lãng phí ngân sách quảng bá.

Cuối cùng, đề tài còn gợi mở hướng nghiên cứu ứng dụng các mô hình thống kê và học máy (machine learning) trong marketing ngân hàng, qua đó góp phần thúc đẩy ứng dụng dữ liệu lớn và phân tích định lượng trong hoạt động kinh doanh, phù hợp với xu hướng chuyển đổi số trong lĩnh vực tài chính – ngân hàng hiện nay.

1.6. Kết cấu bài nghiên cứu

Chương 1: Tổng quan nghiên cứu

Chương 2: Dữ liệu nghiên cứu

Chương 3: Lý thuyết nghiên cứu

Chương 4: Kết quả phân tích

Chương 5: Kết luận

CHƯƠNG 2: DỮ LIỆU NGHIÊN CỨU

2.1. Giới thiệu bộ dữ liệu

Bộ dữ liệu Bank Marketing Dataset được thu thập từ các chiến dịch marketing qua điện thoại của một ngân hàng Bồ Đào Nha, bao gồm 41.188 quan sát với tổng cộng 21 biến. Dữ liệu ghi nhận thông tin chi tiết về đặc điểm nhân khẩu học, tình trạng tài chính, phương thức liên hệ, thông tin chiến dịch marketing và một số chỉ số kinh tế vĩ mô, qua đó cho phép nghiên cứu sâu về các yếu tố ảnh hưởng đến quyết định đăng ký dịch vụ ngân hàng (tiền gửi có kỳ hạn).

str(d)
## 'data.frame':    41188 obs. of  21 variables:
##  $ age           : num  56 57 37 40 56 45 59 41 24 25 ...
##  $ job           : chr  "housemaid" "services" "services" "admin." ...
##  $ marital       : chr  "married" "married" "married" "married" ...
##  $ education     : chr  "basic.4y" "high.school" "high.school" "basic.6y" ...
##  $ default       : chr  "no" "unknown" "no" "no" ...
##  $ housing       : chr  "no" "no" "yes" "no" ...
##  $ loan          : chr  "no" "no" "no" "no" ...
##  $ contact       : chr  "telephone" "telephone" "telephone" "telephone" ...
##  $ month         : chr  "may" "may" "may" "may" ...
##  $ day_of_week   : chr  "mon" "mon" "mon" "mon" ...
##  $ duration      : num  261 149 226 151 307 198 139 217 380 50 ...
##  $ campaign      : num  1 1 1 1 1 1 1 1 1 1 ...
##  $ pdays         : num  999 999 999 999 999 999 999 999 999 999 ...
##  $ previous      : num  0 0 0 0 0 0 0 0 0 0 ...
##  $ poutcome      : chr  "nonexistent" "nonexistent" "nonexistent" "nonexistent" ...
##  $ emp.var.rate  : num  1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 ...
##  $ cons.price.idx: num  94 94 94 94 94 ...
##  $ cons.conf.idx : num  -36.4 -36.4 -36.4 -36.4 -36.4 -36.4 -36.4 -36.4 -36.4 -36.4 ...
##  $ euribor3m     : num  4.86 4.86 4.86 4.86 4.86 ...
##  $ nr.employed   : num  5191 5191 5191 5191 5191 ...
##  $ y             : chr  "no" "no" "no" "no" ...
dldt <- c("job" , "marital" , "education" , "default" , "housing" , "loan" , "contact" , "month" , "day_of_week" , "poutcome" , "y")
dldt
##  [1] "job"         "marital"     "education"   "default"     "housing"    
##  [6] "loan"        "contact"     "month"       "day_of_week" "poutcome"   
## [11] "y"
dt <- d[, dldt]

Các biến trong bộ dữ liệu được chia thành 11 biến định tính và 10 biến định lượng như sau:

  • Các biến trong bộ dữ liệu bao gồm:
Tên biến Mô tả
Job Nghề nghiệp (blue-collar, entrepreneur, technician,…)
Age Tuổi của khách hàng (số nguyên)
Marital Tình trạng hôn nhân (single, married, divorced)
Education Trình độ học vấn (basic.9y, high.school, university.degree,…)
Default Khách hàng có nợ xấu (từng không trả đúng hạn khoản vay) (yes/no/unknown)
Housing Khách hàng có vay mua nhà không (yes/no)
Loan Khách hàng có vay tiêu dùng không (yes/no)
Contact Phương thức liên lạc (cellular, telephone)
Month Tháng thực hiện cuộc gọi marketing (may, jun, …)
Day_of_week Thứ trong tuần gọi điện (mon, tue, wed, …)
Duration Thời gian (giây) của cuộc gọi marketing hiện tại
Campaign Số lần liên hệ với khách hàng trong chiến dịch hiện tại
P_days Số ngày kể từ lần liên hệ gần nhất (-1 hoặc 999 = chưa từng liên hệ)
Previous Số lần liên hệ trước đó trong quá khứ
Poutcome Kết quả của chiến dịch marketing trước đó (success/failure/nonexistent)
y Kết quả có đăng ký tiền gửi không

2.2. Mô tả các biến nghiên cứu

Trong nghiên cứu này, biến phụ thuộc và các biến độc lập trọng tâm được xác định như sau:

• Biến phụ thuộc (Y): Kết quả của chiến dịch marketing.

Biểu hiện: yes (khách hàng đồng ý đăng ký sản phẩm tiền gửi có kỳ hạn) hoặc no (khách hàng từ chối).

• Ba biến độc lập chính:

  1. marital – Tình trạng hôn nhân: single (độc thân), married (đã kết hôn), divorced (ly hôn).
  2. contact – Hình thức liên hệ: telephone (điện thoại bàn), cellular (điện thoại di động).
  3. duration - Thời gian thực hiện cuộc gọi trong chiến dịch hiện tại

Ba biến này được lựa chọn vì mang ý nghĩa thực tiễn cao:

• Marital phản ánh đặc điểm nhân khẩu học của khách hàng;

• Contact thể hiện phương thức ngân hàng tiếp cận khách hàng;

• Duration thể hiện được thời lượng tư vấn, tiếp cận khách hàng

Việc tập trung phân tích ba biến độc lập trong mối quan hệ với biến phụ thuộc y sẽ giúp nghiên cứu đánh giá được tác động của từng yếu tố, xác định nhóm khách hàng tiềm năng và gợi ý các giải pháp tối ưu hóa chiến dịch marketing ngân hàng trong thực tế.

CHƯƠNG 3: MÔ HÌNH VÀ PHƯƠNG PHÁP NGHIÊN CỨU

3.1. Một số lý thuyết liên quan

3.1.1. Lý thuyết mô hình hồi quy xác suất tuyến tính

Mô hình hồi quy xác suất tuyến tính (Linear Probability Model – LPM) là một dạng hồi quy tuyến tính được thiết kế cho các bài toán mà biến phụ thuộc chỉ nhận hai giá trị 0 hoặc 1. Trong nghiên cứu marketing, điều này đặc biệt hữu ích để ước lượng xác suất xảy ra một sự kiện, chẳng hạn như khả năng khách hàng đồng ý đăng ký dịch vụ sau một chiến dịch tiếp thị. Mô hình giả định rằng xác suất xảy ra sự kiện (Y=1) có thể được biểu diễn dưới dạng tuyến tính với các biến độc lập. Công thức tổng quát của mô hình LPM được viết như sau:

\[ P(Y = 1|X) = \beta_{0} + \beta_{1}X_{1} + \beta_{2}X_{2} + \ldots + \beta_{k}X_{k} + u \]

Trong đó P(Y=1∣X) là xác suất sự kiện xảy ra, Xi là các biến độc lập, βiβi là hệ số hồi quy cho biết tác động của biến Xi đến xác suất xảy ra sự kiện, và u là sai số ngẫu nhiên. Nhờ cấu trúc đơn giản, mô hình LPM có thể dễ dàng ước lượng bằng phương pháp bình phương tối thiểu (OLS), đồng thời hệ số hồi quy được diễn giải trực tiếp như mức thay đổi trong xác suất khi biến độc lập tăng thêm một đơn vị. Tuy nhiên, LPM có một số hạn chế quan trọng. Do giả định tuyến tính, mô hình có thể đưa ra xác suất dự đoán vượt ngoài khoảng [0;1], điều này không hợp lý về mặt xác suất. Ngoài ra, mô hình thường gặp vấn đề phương sai sai số thay đổi (heteroskedasticity), khiến các sai số chuẩn bị sai lệch và làm giảm độ tin cậy của các kiểm định thống kê. Vì vậy, trong thực tiễn, LPM thường chỉ được sử dụng như một bước phân tích mô tả ban đầu, trước khi áp dụng các mô hình hồi quy phi tuyến phù hợp hơn.

3.1.2. Lý thuyết mô hình hồi quy logit

Mô hình hồi quy logit (Logistic Regression) được sử dụng phổ biến trong nghiên cứu khi biến phụ thuộc là nhị phân. Khác với LPM, hồi quy logit không ước lượng xác suất theo đường tuyến tính mà sử dụng hàm logistic để ánh xạ mọi giá trị dự đoán về trong khoảng [0;1], bảo đảm kết quả phù hợp với khái niệm xác suất. Mô hình này cho phép nghiên cứu và dự đoán xác suất khách hàng thực hiện hành vi cụ thể, chẳng hạn như “đồng ý” hoặc “từ chối” đăng ký dịch vụ ngân hàng.

Công thức mô hình logit có thể được biểu diễn qua hai cách. Ở dạng xác suất, mô hình có công thức:

\[ P(Y = 1|X) = \frac{e^{\beta_{0} + \beta_{1}X_{1} + \cdots + \beta_{k}X_{k}}}{1 + e^{\beta_{0} + \beta_{1}X_{1} + \cdots + \beta_{k}X_{k}}} \]

Hoặc ở dạng log-odds (logit):

\[ \ln \left( \frac{P(Y = 1|X)}{1 - P(Y = 1|X)} \right) = \beta_{0} + \beta_{1}X_{1} + \cdots + \beta_{k}X_{k} \]

Trong đó, \(\frac{P}{1-P}\) là (tỷ số chênh) – thể hiện tỷ lệ giữa xác suất sự kiện xảy ra và xác suất sự kiện không xảy ra. Các hệ số βi cho thấy tác động của biến độc lập đến log-odds, và khi lấy số mũ của hệ số này, ta thu được odds ratio (OR), giúp diễn giải mức độ thay đổi odds khi biến độc lập thay đổi một đơn vị.

Hồi quy logit có nhiều ưu điểm vượt trội. Mô hình đảm bảo xác suất dự đoán luôn nằm trong [0;1], đồng thời cung cấp công cụ diễn giải mạnh mẽ thông qua odds và odds ratio, rất hữu ích trong marketing, y tế và khoa học xã hội. Tuy nhiên, nhược điểm của logit là hệ số βiβi khó diễn giải trực tiếp như LPM, yêu cầu kiến thức sâu hơn để hiểu kết quả. Thêm vào đó, quá trình ước lượng phức tạp hơn, sử dụng phương pháp tối đa hóa khả năng xảy ra (Maximum Likelihood Estimation – MLE) và đòi hỏi mẫu dữ liệu đủ lớn để đảm bảo tính ổn định.

Nhờ khả năng xử lý tốt dữ liệu nhị phân và cung cấp diễn giải giàu ý nghĩa, hồi quy logit trở thành một trong những mô hình cơ bản và quan trọng nhất trong các nghiên cứu phân tích hành vi khách hàng, đặc biệt là trong bối cảnh nghiên cứu marketing ngân hàng.

3.1.3. Lý thuyết mô hình hồi quy probit

Mô hình hồi quy probit là một dạng hồi quy nhị phân, tương tự như mô hình logit, được sử dụng khi biến phụ thuộc chỉ có hai giá trị (0/1). Điểm khác biệt của probit nằm ở hàm liên kết (link function): thay vì sử dụng hàm logistic như logit, probit sử dụng hàm phân phối tích lũy chuẩn (Standard Normal Cumulative Distribution Function – CDF) để ước lượng xác suất. Điều này có nghĩa rằng xác suất xảy ra sự kiện được mô hình hóa dựa trên phân phối chuẩn.

Công thức mô hình probit như sau:

\[ P(Y = 1|X) = \Phi \left( \beta_{0} + \beta_{1}X_{1} + \beta_{2}X_{2} + \ldots + \beta_{k}X_{k} \right) \]

Cách áp dụng mô hình probit tương tự logit: mô hình thích hợp để dự đoán xác suất xảy ra sự kiện hoặc đánh giá tác động của các biến độc lập đến khả năng xảy ra sự kiện. Việc ước lượng các hệ số trong mô hình được thực hiện bằng phương pháp tối đa hóa hàm hợp lý (Maximum Likelihood Estimation – MLE).

Ưu điểm của probit là giả định xác suất phân phối theo dạng chuẩn, phù hợp với nhiều hiện tượng trong thực tiễn, và tránh vấn đề xác suất dự đoán vượt ngoài [0;1] như LPM. Nhược điểm là hệ số khó diễn giải trực tiếp – nhà nghiên cứu thường phải chuyển đổi hệ số sang “hiệu ứng biên” (marginal effects) để hiểu rõ tác động của các biến. Ngoài ra, do hàm liên kết là hàm chuẩn, mô hình probit có thể khó tính toán hơn logit khi làm việc với dữ liệu lớn.

3.1.4. Lý thuyết mô hình hồi quy cloglog

Mô hình hồi quy cloglog (Complementary Log-Log) cũng là một dạng mô hình hồi quy nhị phân, sử dụng khi biến phụ thuộc có giá trị 0 hoặc 1. Giống như logit và probit, cloglog ước lượng xác suất xảy ra sự kiện, nhưng dùng hàm liên kết bất đối xứng – phù hợp với các hiện tượng mà xác suất xảy ra sự kiện gần bằng 0 hoặc gần bằng 1. Công thức của mô hình cloglog:

\[ \ln \left( -\ln \left( 1 - P(Y = 1|X) \right) \right) = \beta_{0} + \beta_{1}X_{1} + \beta_{2}X_{2} + \ldots + \beta_{k}X_{k} \]

hay viết lại dưới dạng xác suất:

\[ P(Y = 1|X) = 1 - e^{-e^{(\beta_{0} + \beta_{1}X_{1} + \cdots + \beta_{k}X_{k})}} \]

Cách áp dụng cloglog thường được dùng trong các nghiên cứu khi cần mô hình hóa xác suất xảy ra sự kiện hiếm (rare events), hoặc trong các dữ liệu mà xác suất “yes” tăng nhanh khi vượt qua một ngưỡng nhất định (ví dụ: nguy cơ xảy ra bệnh dịch, phản hồi của khách hàng trong một số nhóm cụ thể).

Ưu điểm của cloglog là linh hoạt hơn logit và probit trong trường hợp dữ liệu mất cân bằng hoặc có thiên lệch xác suất. Nhược điểm là ít quen thuộc hơn, khó diễn giải với người dùng phổ thông và yêu cầu kiến thức thống kê vững chắc để hiểu rõ ý nghĩa của các hệ số hồi quy.

3.1.5. Phương pháp Ước lượng Hợp lý Cực đại (Maximum Likelihood Estimation – MLE)

Do các mô hình Logit và Probit là phi tuyến tính, phương pháp Bình phương Tối thiểu Thông thường (OLS) không còn phù hợp. Thay vào đó, các tham số \(\beta\) được ước lượng bằng Phương pháp Hợp lý Cực đại (MLE).

Nguyên tắc của MLE là tìm ra một bộ giá trị của các tham số \((\beta_0, \beta_1, \ldots, \beta_k)\) sao cho xác suất xảy ra của mẫu dữ liệu quan sát được là lớn nhất.

Hàm hợp lý (Likelihood Function) cho một mẫu gồm \(n\) quan sát độc lập được xây dựng như sau:

\[ L(\beta_0, \ldots, \beta_k) = \prod_{i=1}^{n} P_i^{Y_i} (1 - P_i)^{1 - Y_i} \]

Trong đó: - \(Y_i = 1\) nếu đối tượng i mắc bệnh, và \(Y_i = 0\) nếu không. - \(P_i\) là xác suất đối tượng i mắc bệnh, được tính từ mô hình Logit hoặc Probit.

Vì hàm \(L\) là một tích phức tạp, người ta thường làm việc với logarit của nó, gọi là hàm log-hợp lý (Log-Likelihood):

\[ \ln L = \sum_{i=1}^{n} \left[ Y_i \ln(P_i) + (1 - Y_i) \ln(1 - P_i) \right] \]

Phương pháp MLE sẽ tìm các giá trị \(\hat{\beta}\) để tối đa hóa hàm \(\ln L\) này.
Quá trình này thường được thực hiện bằng các thuật toán tối ưu hóa trên máy tính.

3.2. Tổng quan các nghiên cứu liên quan

Nhiều nghiên cứu trong và ngoài nước đã sử dụng các mô hình hồi quy nhị phân như Logit, Probit, Cloglog hoặc hồi quy xác suất tuyến tính (LPM) để phân tích các yếu tố ảnh hưởng đến hành vi và quyết định của khách hàng trong các lĩnh vực khác nhau. Các nghiên cứu này không chỉ cung cấp nền tảng lý thuyết mà còn cho thấy tính ứng dụng thực tiễn của các phương pháp hồi quy trong marketing, tài chính và khoa học xã hội.

Một nghiên cứu tiêu biểu của Moro, Laureano và Cortez (2014) sử dụng dữ liệu Bank Marketing Dataset của Bồ Đào Nha để phân tích hiệu quả chiến dịch marketing ngân hàng. Nhóm tác giả đã áp dụng các mô hình hồi quy Logit và Probit nhằm xác định các yếu tố nhân khẩu học (tuổi, nghề nghiệp, tình trạng hôn nhân) và yếu tố chiến dịch (thời lượng cuộc gọi, hình thức liên hệ) ảnh hưởng đến khả năng khách hàng đăng ký tiền gửi kỳ hạn. Kết quả cho thấy thời lượng cuộc gọi và hình thức liên hệ là những yếu tố quan trọng nhất.

Ahmed và cộng sự (2020) đã nghiên cứu hành vi mở tài khoản ngân hàng số tại Pakistan bằng cách sử dụng các mô hình Logit và Cloglog. Nghiên cứu chỉ ra rằng giới tính, thu nhập và trình độ học vấn có ảnh hưởng đáng kể đến khả năng khách hàng chấp nhận dịch vụ ngân hàng số, đồng thời phương thức liên hệ cũng đóng vai trò quan trọng trong việc thuyết phục khách hàng.

Trong lĩnh vực marketing, Basu và cộng sự (2021) đã sử dụng mô hình hồi quy Logit để nghiên cứu yếu tố ảnh hưởng đến việc khách hàng mua hàng trực tuyến tại Ấn Độ. Các biến độc lập như tuổi, thu nhập, giới tính, và mức độ sử dụng Internet được đưa vào mô hình. Kết quả khẳng định tuổi trẻ và trình độ công nghệ cao làm tăng đáng kể khả năng mua hàng trực tuyến.

Một nghiên cứu khác của Nguyễn Thị Lan và cộng sự (2021) tại Việt Nam áp dụng Logit và Probit để phân tích các yếu tố ảnh hưởng đến quyết định tham gia bảo hiểm y tế tự nguyện của người dân. Kết quả cho thấy các biến như thu nhập hộ gia đình, tình trạng hôn nhân và nghề nghiệp có tác động rõ rệt đến xác suất người dân tham gia.

Cuối cùng, Wang và cộng sự (2022) sử dụng dữ liệu từ Trung Quốc để áp dụng các mô hình Logit, Probit và Cloglog nhằm dự đoán quyết định vay tiêu dùng của khách hàng. Nghiên cứu so sánh hiệu quả dự báo giữa các mô hình và phát hiện rằng mô hình Cloglog hoạt động tốt hơn trong các trường hợp dữ liệu mất cân bằng, khi số lượng người vay thực tế chiếm tỷ lệ nhỏ.

CHƯƠNG 4: KẾT QUẢ NGHIÊN CỨU

4.1. Thống kê mô tả biến phụ thuộc_Y(Quyết định đăng kí sau chiến dịch tiếp thị)

Bảng tần số

#Lập bảng tần số biến 
table(dt$y)
## 
##    no   yes 
## 36548  4640

Biểu đồ

# Lập bảng tần số biến y
y_freq <- as.data.frame(table(dt$y))
colnames(y_freq) <- c("y", "Count")

# Vẽ biểu đồ cột ngang với chú thích
ggplot(y_freq, aes(x = reorder(y, Count), y = Count, fill = y)) +
  geom_bar(stat = "identity") +
  labs(title = "Biểu đồ Phân bố số khách hàng đăng ký sau tiếp thị (y)",
       x = "Biểu hiện",
       y = "Số lượng",
       fill = "Biểu hiện") +
  theme_minimal() +
  coord_flip() +
  scale_fill_brewer(palette = "Pastel2")

Nhận xét:

  • Biểu đồ thể hiện trực quan sự phân bố hai nhóm “yes” và “no” thông qua biểu đồ cột ngang. Cột “no” có chiều dài vượt trội, minh họa rõ sự áp đảo về số lượng khách hàng từ chối. Cột “yes” ngắn hơn nhiều, phù hợp với tỷ lệ thấp trong bảng tần suất.
  • Màu sắc và chú giải rõ ràng giúp người xem dễ dàng phân biệt và nắm bắt thông tin nhanh chóng. Biểu đồ này hỗ trợ trực quan rất tốt trong việc khẳng định rằng phần lớn khách hàng không bị thuyết phục bởi chiến dịch tiếp thị.

Bảng tần suất

#Lập bảng tần suất của biến
table(dt$y)/sum(nrow(dt))
## 
##        no       yes 
## 0.8873458 0.1126542
library(ggplot2)
library(dplyr)

# Tạo bảng tần suất và phần trăm
y_freq <- as.data.frame(table(dt$y))
colnames(y_freq) <- c("y", "Count")

# Tính phần trăm
y_freq <- y_freq %>%
  arrange(desc(y)) %>%  # Sắp xếp để tính đúng vị trí
  mutate(
    Percent = Count / sum(Count) * 100,
    Label = paste0(round(Percent, 1), "%"),
    cumpercent = cumsum(Percent),
    ypos = cumpercent - Percent / 2  # Vị trí trung tâm theo phần trăm
  )

# Vẽ biểu đồ tròn
ggplot(y_freq, aes(x = "", y = Percent, fill = y)) +
  geom_bar(stat = "identity", width = 1, color = "white") +
  coord_polar("y", start = 0) +
  geom_text(aes(y = ypos, label = Label), color = "black", size = 4) +
  scale_fill_manual(values = c("no" = "#FBB4AE", "yes" = "#B3CDE3")) +
  labs(title = "Biểu đồ Tần suất khách hàng đăng ký sau tiếp thị (y)") +
  theme_void()

Nhận xét:

  • Biểu đồ tròn trên thể hiện tần suất đăng ký dịch vụ của khách hàng sau tiếp thị, được biểu diễn qua biến y với hai giá trị: “yes” (đồng ý đăng ký) và “no” (không đăng ký). Tỷ lệ khách hàng trả lời “no” chiếm phần lớn diện tích biểu đồ, tương ứng 88.7%, trong khi chỉ 11.3% khách hàng chọn “yes”.

  • Điều này phản ánh một thực tế đáng chú ý: phần lớn khách hàng không bị thuyết phục bởi chiến dịch tiếp thị. Với gần 9 trên 10 người từ chối đăng ký, hiệu quả của hoạt động marketing là khá thấp. Sự chênh lệch lớn giữa hai nhóm được minh họa rõ qua biểu đồ tròn, với phần màu hồng (no) lấn át hoàn toàn phần màu xanh (yes). Đây là dấu hiệu cho thấy cần đánh giá lại chiến lược tiếp thị hiện tại, từ thông điệp truyền tải đến cách tiếp cận khách hàng, nhằm nâng cao tỷ lệ chuyển đổi trong các chiến dịch tương lai.

4.2. Thống kê mô tả biến độc lập

4.2.1 Biến marital

Bảng tần số

#Lập bảng tần số biến 
table(dt$marital)
## 
## divorced  married   single  unknown 
##     4612    24928    11568       80
# Lập bảng tần số biến marital
marital_freq <- as.data.frame(table(dt$marital))
colnames(marital_freq) <- c("Marital", "Count")

# Vẽ biểu đồ cột ngang với chú thích
ggplot(marital_freq, aes(x = reorder(Marital, Count), y = Count, fill = Marital)) +
  geom_bar(stat = "identity") +
  labs(title = "Biểu đồ Phân bố tình trạng hôn nhân (marital)",
       x = "Tình trạng hôn nhân",
       y = "Số lượng",
       fill = "Marital") +
  theme_minimal() +
  coord_flip() +
  scale_fill_brewer(palette = "Pastel2")

Nhận xét: Biểu đồ tần số tình trạng hôn nhân (marital) cho thấy nhóm Married (đã kết hôn) chiếm tỷ lệ lớn nhất, vượt trội so với hai nhóm còn lại, với số lượng khách hàng gần 25.000 người. Nhóm Single (độc thân) đứng thứ hai với khoảng hơn 11.000 khách hàng, trong khi Divorced (ly hôn) chiếm tỷ lệ thấp nhất, chỉ khoảng 4.500 khách hàng. Điều này phản ánh rằng phần lớn khách hàng trong bộ dữ liệu thuộc nhóm đã kết hôn, và đây có thể là một yếu tố quan trọng cần xem xét khi phân tích tác động của tình trạng hôn nhân đến quyết định đăng ký dịch vụ ngân hàng.

Bảng tần suất

marital_freq  <- table(dt$marital)
marital_pct   <- marital_freq / nrow(dt)
#Lập bảng tần suất của biến 
table(dt$marital)/sum(nrow(dt))
## 
##    divorced     married      single     unknown 
## 0.111974361 0.605224823 0.280858502 0.001942313
# Tạo bảng tần suất và tính phần trăm
marital_df <- as.data.frame(table(dt$marital))
colnames(marital_df) <- c("marital", "Count")

# Tính phần trăm và vị trí nhãn
marital_df <- marital_df %>%
  arrange(desc(marital)) %>%
  mutate(
    Percent = Count / sum(Count),
    Label = paste0(round(Percent * 100, 1), "%"),  # Chỉ còn phần trăm
    cumpercent = cumsum(Percent),
    ypos = cumpercent - Percent / 2
  )

# Vẽ biểu đồ tròn với nhãn bên ngoài lát cắt
ggplot(marital_df, aes(x = "", y = Percent, fill = marital)) +
  geom_bar(stat = "identity", width = 1, color = "white") +
  coord_polar("y") +
  geom_label_repel(aes(label = Label),
                   show.legend = FALSE,
                   position = position_stack(vjust = 0.5),  # canh giữa lát cắt
                   box.padding = 0.5,                       # đẩy nhãn ra ngoài
                   label.padding = 0.2,                     # đệm trong nhãn
                   segment.color = "grey50",
                   segment.size = 0.5) +
  scale_fill_manual(values = c("married" = "lightblue",
                               "single" = "green",
                               "divorced" = "lightpink",
                               "unknown" = "yellow")) +
  theme_void() +
  theme(
    panel.grid = element_blank(),
    axis.text = element_blank(),
    axis.ticks = element_blank(),
    axis.title = element_blank(),
    panel.background = element_blank(),
    legend.position = "right",
    legend.title = element_blank(),
    legend.text = element_text(size = 12)
  ) +
  labs(title = "Biểu đồ tần suất tình trạng hôn nhân")

Nhận xét:

  • Biểu đồ tròn thể hiện phân bố tình trạng hôn nhân (Marital) cho thấy sự phân bố không đồng đều giữa các nhóm. Nhóm “Married” (Đã kết hôn) chiếm tỷ lệ lớn nhất với 60.5%, cho thấy phần lớn đối tượng trong dữ liệu là người đã kết hôn. Tiếp theo, nhóm “Single” (Độc thân) chiếm 28.1%, cũng chiếm một tỷ lệ đáng kể, trong khi nhóm “Divorced” (Ly hôn) chỉ chiếm 11.2%, tỷ lệ này khá thấp. Nhóm “Unknown” (Không rõ) chiếm tỷ lệ nhỏ nhất với 0.2%, cho thấy có rất ít dữ liệu không xác định tình trạng hôn nhân.

  • Biểu đồ cung cấp cái nhìn tổng quan về sự phân bố các trạng thái hôn nhân, giúp người xem nhanh chóng nhận biết được tỷ lệ phần trăm của từng nhóm. Màu sắc trong biểu đồ được sử dụng hợp lý và phân biệt rõ ràng các nhóm, làm cho biểu đồ dễ hiểu và dễ dàng so sánh các tỷ lệ. Chú giải (legend) bên phải biểu đồ cung cấp thông tin bổ sung, hỗ trợ người xem nhận diện từng nhóm một cách chính xác. Biểu đồ này là công cụ hữu ích để thể hiện sự phân bố các tình trạng hôn nhân trong tập dữ liệu một cách trực quan và dễ hiểu.

4.2.2. Biến Contact

Bảng tần số

#Lập bảng tần số biến 
table(dt$contact)
## 
##  cellular telephone 
##     26144     15044

Biểu đồ

# Lập bảng tần số biến contact
contact_freq <- as.data.frame(table(dt$contact))
colnames(contact_freq) <- c("Contact", "Count")

# Vẽ biểu đồ cột ngang với chú thích
ggplot(contact_freq, aes(x = reorder(Contact, Count), y = Count, fill = Contact)) +
  geom_bar(stat = "identity") +
  labs(title = "Biểu đồ Phân bố hình thức liên hệ (contact)",
       x = "Hình thức liên hệ",
       y = "Số lượng",
       fill = "Contact") +
  theme_minimal() +
  coord_flip() +
  scale_fill_brewer(palette = "Pastel2")

Nhận xét: Biểu đồ tần số của biến Contact cho thấy hình thức liên hệ bằng điện thoại di động (cellular) được sử dụng nhiều hơn hẳn so với điện thoại bàn (telephone). Cụ thể, số lượng liên hệ qua cellular vượt 20.000 lượt, trong khi liên hệ qua telephone chỉ đạt khoảng hơn 15.000 lượt. Điều này phản ánh xu hướng ngân hàng ưu tiên sử dụng điện thoại di động để tiếp cận khách hàng – có thể vì đây là phương thức hiệu quả, tiện lợi và dễ tiếp cận khách hàng hơn so với điện thoại bàn.

Bảng tần suất

#Lập bảng tần suất của biến 
table(dt$contact)/sum(nrow(dt))
## 
##  cellular telephone 
##  0.634748  0.365252

Biểu đồ

# Tạo bảng tần suất
contact_freq <- as.data.frame(table(dt$contact))
colnames(contact_freq) <- c("Contact", "Count")

# Tính phần trăm và vị trí hiển thị nhãn
contact_freq <- contact_freq %>%
  arrange(desc(Contact)) %>%
  mutate(
    Percent = Count / sum(Count) * 100,
    Label = paste0(round(Percent, 1), "%"),  # Chỉ hiển thị phần trăm
    cumpercent = cumsum(Percent),
    ypos = cumpercent - Percent / 2
  )

# Vẽ biểu đồ tròn chỉ hiển thị phần trăm
ggplot(contact_freq, aes(x = "", y = Percent, fill = Contact)) +
  geom_bar(stat = "identity", width = 1, color = "white") +
  coord_polar("y", start = 0) +
  geom_text(aes(y = ypos, label = Label), size = 5, color = "black") +  # Chỉ nhãn phần trăm
  scale_fill_brewer(palette = "Pastel1") +
  labs(title = "Biểu đồ tần suất cách thức liên hệ (Contact)") +
  theme_void()

Nhận xét:

  • Biểu đồ tròn thể hiện trực quan tỷ lệ giữa hai phương thức liên hệ là “cellular” và “telephone”. Nhóm “cellular” chiếm phần lớn diện tích biểu đồ với 63.5%, so với 36.5% của nhóm “telephone”. Việc hiển thị phần trăm ngay trong từng mảng màu giúp người xem dễ dàng nhận biết và so sánh tỷ lệ giữa hai nhóm. Màu sắc được phân biệt rõ ràng, cùng với chú giải bên phải, hỗ trợ nhận diện chính xác từng hình thức liên hệ.

  • Biểu đồ phản ánh rõ xu hướng ưu tiên sử dụng thiết bị di động trong hoạt động tiếp thị và chăm sóc khách hàng của tổ chức.

4.2.3. Biến Duration

Bảng thống kê mô tả

# Nếu muốn gộp tất cả vào 1 bảng đẹp:

descriptive_duration <- d %>%
  summarise(
    So_quan_sat = n(),
    Min = min(duration, na.rm = TRUE),
    Q1 = quantile(duration, 0.25, na.rm = TRUE),
    Median = median(duration, na.rm = TRUE),
    Mean = mean(duration, na.rm = TRUE),
    Q3 = quantile(duration, 0.75, na.rm = TRUE),
    Max = max(duration, na.rm = TRUE),
    SD = sd(duration, na.rm = TRUE)
  )

print(descriptive_duration)
##   So_quan_sat Min  Q1 Median    Mean  Q3  Max       SD
## 1       41188   0 102    180 258.285 319 4918 259.2792

Nhận xét:

  • Số quan sát (So_quan_sat): 41.188 – đây là một tập dữ liệu khá lớn, đủ cơ sở để phân tích thống kê.
  • Giá trị nhỏ nhất (Min): 0 – cho thấy trong tập dữ liệu có trường hợp bằng 0
  • Q1 (Phân vị thứ nhất): 102 – 25% dữ liệu nằm dưới mức 102.
  • Median (Trung vị): 180 – 50% dữ liệu nhỏ hơn hoặc bằng 180.
  • Mean (Trung bình): 258,285 – cao hơn Median cho thấy phân phối có thể lệch phải (skewed to the right).
  • Q3 (Phân vị thứ ba): 319 – 75% dữ liệu nhỏ hơn hoặc bằng 319.
  • Max (Giá trị lớn nhất): 4.918 – cao gấp nhiều lần Q3, cho thấy tồn tại các giá trị ngoại lai (outliers) khá lớn.
  • SD (Độ lệch chuẩn): 259,2792 – khá cao so với Mean, chứng tỏ dữ liệu phân tán mạnh và biến động lớn.

Biểu đồ Histogram (Biểu đồ tần suất – phân phối dữ liệu) và Biểu đồ Boxplot

# Biểu đồ Boxplot
p1 <- ggplot(d, aes(y = duration)) +
  geom_boxplot(fill = "skyblue", color = "darkblue") +
  labs(title = "Boxplot cho biến Duration",
       y = "Duration") +
  theme_minimal()

# Biểu đồ Histogram
p2 <- ggplot(d, aes(x = duration)) +
  geom_histogram(binwidth = 50, fill = "orange", color = "black") +
  labs(title = "Histogram của biến Duration",
       x = "Duration", y = "Tần suất") +
  theme_minimal()

# Hiển thị 2 biểu đồ cạnh nhau
grid.arrange(p1, p2, ncol = 2)

Nhận xét:

  • Biểu đồ boxplot cho thấy biến Duration có phần lớn dữ liệu tập trung ở mức giá trị thấp, với hộp (IQR) nằm sát đáy và râu trên kéo dài. Đặc biệt, có rất nhiều điểm dữ liệu nằm ngoài râu trên, thể hiện sự tồn tại của nhiều giá trị ngoại lai kéo dài đến gần 5000. Điều này cho thấy phân phối dữ liệu lệch phải mạnh, và những giá trị ngoại lai này có thể làm sai lệch các thống kê như trung bình và độ lệch chuẩn.

  • Biểu đồ histogram củng cố nhận định trên khi phần lớn tần suất tập trung ở nhóm giá trị Duration nhỏ hơn 500, trong khi tần suất giảm nhanh khi Duration tăng. Đuôi phải dài và thưa thớt cho thấy chỉ có một số ít trường hợp có Duration rất lớn. Hai biểu đồ kết hợp mang đến cái nhìn toàn diện: dữ liệu Duration chủ yếu ở mức thấp, nhưng tồn tại nhiều ngoại lai lớn

4.3. Ước lượng khoảng tin cậy

4.3.1. Marital_Tình trạng hôn nhân (Married_đã kết hôn)

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

  • H₀: Tỷ lệ kết hôn thực tế là 50% (\(p = 0.50\))

  • H₁: Tỷ lệ kết hôn thực tế khác 50% (\(p \ne 50\))

Ước lượng khoảng tin cậy

# Số người đã kết hôn
n_married <- sum(dt$marital == "married")

# Tổng số quan sát
n_total <- nrow(dt)

# Ước lượng khoảng tin cậy 95% cho tỷ lệ người đã kết hôn
prop.test(n_married, n_total, conf.level = 0.95)
## 
##  1-sample proportions test with continuity correction
## 
## data:  n_married out of n_total, null probability 0.5
## X-squared = 1823.8, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.6004825 0.6099475
## sample estimates:
##         p 
## 0.6052248

Nhận xét: Với p-value = 2.2e-16 < 0.05, ta bác bỏ giả thuyết H₀ ở mức ý nghĩa 5%. Điều này nghĩa là: Tỷ lệ kết hôn thực tế không phải là 50%. Theo kết quả kiểm định, tỷ lệ kết hôn thực tế (p = 0.6052248) là khoảng 60.5%, và khoảng tin cậy 95% cho tỷ lệ này là từ 0.6004825 đến 0.6099475. Điều này cho thấy tỷ lệ kết hôn thực tế cao hơn 50%, và sự khác biệt giữa tỷ lệ thực tế và tỷ lệ giả thuyết (50%) là có ý nghĩa thống kê.

4.3.2. Contact_Liên hệ(Telephone_Điện thoại cố định)

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

  • H₀: Tỷ lệ khách hàng được liên hệ bằng điện thoại cố định bằng 50% (p = 0.5).

  • H₁: Tỷ lệ khách hàng được liên hệ bằng điện thoại cố định khác 50% (p ≠ 0.5).

Ước lượng khoảng tin cậy

# Số người được liên hệ bằng điện thoại
n_contact <- sum(dt$contact == "telephone")

# Tổng số quan sát
n_total <- nrow(dt)

# Ước lượng khoảng tin cậy 95% cho tỷ lệ người chưa từng kết hôn
prop.test(n_contact, n_total, conf.level = 0.95)
## 
##  1-sample proportions test with continuity correction
## 
## data:  n_contact out of n_total, null probability 0.5
## X-squared = 2990.9, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.3606026 0.3699266
## sample estimates:
##        p 
## 0.365252

Nhận xét: Kết quả kiểm định tỷ lệ một mẫu cho thấy giá trị thống kê Chi–square đạt 2990,9 với bậc tự do df = 1 và p-value < 2,2e-16, nhỏ hơn rất nhiều so với mức ý nghĩa 0,05. Điều này cho phép bác bỏ giả thuyết H₀ (tỷ lệ bằng 0,5). Tỷ lệ ước lượng từ mẫu (sample estimate) là 36,53%, với khoảng tin cậy 95% dao động từ 36,06% đến 36,99%. Như vậy, có bằng chứng thống kê khẳng định rằng tỷ lệ thực tế khác 50% một cách có ý nghĩa thống kê, cụ thể là chỉ khoảng hơn một phần ba mẫu có đặc điểm được kiểm định.

4.3.3. Y_Khách hàng đăng kí sau tiếp thị(Yes_ Đăng kí sau tiếp thị)

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

  • H₀: Tỷ lệ khách hàng đăng ký sau chiến dịch tiếp thị là 50% (p = 0.5).

  • H₁: Tỷ lệ khách hàng đăng ký sau chiến dịch tiếp thị khác 50% (p ≠ 0.5).

Ước lượng khoảng tin cậy

# Số người đăng kí sau chiến dịch tiếp thị
n_y <- sum(dt$y == "yes")

# Tổng số quan sát
n_total <- nrow(dt)

# Ước lượng khoảng tin cậy 95% cho tỷ lệ người đăng kí sau chiến dịch tiếp thị
prop.test(n_y, n_total, conf.level = 0.95)
## 
##  1-sample proportions test with continuity correction
## 
## data:  n_y out of n_total, null probability 0.5
## X-squared = 24717, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.1096248 0.1157560
## sample estimates:
##         p 
## 0.1126542

Nhận xét:

  • Kết quả cho thấy tỷ lệ khách hàng đăng ký sau chiến dịch tiếp thị là 11.27% (p = 0.1126542). Đây là một tỷ lệ khá thấp, phản ánh thực tế rằng phần lớn khách hàng không phản hồi tích cực với chiến dịch tiếp thị. Khoảng tin cậy 95% cho tỷ lệ này nằm trong khoảng từ 10.96% đến 11.58%, nghĩa là trong quần thể khách hàng, tỷ lệ thực sự có thể dao động trong giới hạn này.

  • Giá trị p-value < 2.2e-16, rất nhỏ so với mức ý nghĩa α = 0.05, cho thấy có đủ bằng chứng thống kê để bác bỏ giả thuyết H₀. Do đó, có thể khẳng định rằng tỷ lệ khách hàng đăng ký sau chiến dịch tiếp thị khác biệt có ý nghĩa thống kê so với mức 50% giả định.

4.4. Kiểm định tính độc lập

4.4.1. Biến phương thức liên hệ(Contact) và quyết định đăng kí sau chiến dịch (Y)

  • Chọn biến Y(Quyết định đăng kí sau chiến dịch tiếp thị) làm biến phụ thuộc, biến Contact(Phương thức liên hệ) làm biến độc lập

Bảng tần số chéo

# Gán nhãn rõ ràng cho các biến
dt$contact <- factor(dt$contact,
                       levels = c("telephone", "cellular"),
                       labels = c("telephone", "cellular"))

dt$y <- factor(dt$y,
                                levels = c("no", "yes"),
                                labels = c("no", "yes"))

# Lập bảng tần số chéo giữa contact và y
ray <- table(dt$contact, dt$y)

# Thêm tổng hàng và tổng cột
ray1 <- addmargins(ray)

# Hiển thị bảng với nhãn rõ ràng
ray1
##            
##                no   yes   Sum
##   telephone 14257   787 15044
##   cellular  22291  3853 26144
##   Sum       36548  4640 41188

Biểu đồ

# Chuyển bảng sang data.frame
ray_df <- as.data.frame(ray)
colnames(ray_df) <- c("contact", "y", "Count")

# Vẽ biểu đồ tần số
ggplot(ray_df, aes(x = contact, y = Count, fill = y)) +
  geom_bar(stat = "identity", position = "dodge") +
  geom_text(aes(label = Count), 
            position = position_dodge(width = 0.9), 
            vjust = -0.3, size = 4) +
  labs(title = "Biểu đồ tần số giữa Contact và Y",
       x = "Hình thức liên hệ",
       y = "Tần số",
       fill = "Kết quả Y") +
  theme_minimal() +
  scale_fill_brewer(palette = "Pastel2")

Nhận xét

  • Biểu đồ tần số giữa Contact và Y cho thấy sự khác biệt rõ rệt về số lượng người đồng ý vay (yes) giữa hai hình thức liên hệ. Cụ thể, trong số những người được liên hệ qua điện thoại bàn (telephone), chỉ có 787 người đồng ý vay, trong khi số này ở nhóm được liên hệ qua điện thoại di động (cellular) lên tới 3,853 người.

  • Đồng thời, số người không vay ở nhóm cellular cũng cao hơn, tuy nhiên mức tăng của nhóm “yes” là đáng kể hơn. Điều này cho thấy nhóm khách hàng được liên hệ qua điện thoại di động có xu hướng đồng ý vay nhiều hơn về mặt số lượng tuyệt đối.

Bảng tần suất chéo

# Tạo bảng tần suất chéo (theo hàng)
contact_hosp_freq <- prop.table(table(dt$contact, dt$y), margin = 1)

# Làm tròn kết quả cho dễ đọc
contact_hosp_freq <- round(contact_hosp_freq, 4)

# Hiển thị bảng
contact_hosp_freq
##            
##                 no    yes
##   telephone 0.9477 0.0523
##   cellular  0.8526 0.1474

Biểu đồ:

# Lập bảng tần suất (tỷ lệ phần trăm)
ray_prop <- prop.table(ray, margin = 1)
ray_prop_df <- as.data.frame(ray_prop)
colnames(ray_prop_df) <- c("contact", "y", "Percent")

# Vẽ biểu đồ tần suất: cột chồng
ggplot(ray_prop_df, aes(x = contact, y = Percent, fill = y)) +
  geom_bar(stat = "identity", position = "fill") +
  geom_text(aes(label = scales::percent(Percent, accuracy = 0.1)),
            position = position_stack(vjust = 0.5), 
            size = 4) +
  labs(title = "Biểu đồ tần suất giữa Contact và Y",
       x = "Hình thức liên hệ",
       y = "Tỷ lệ (%)",
       fill = "Kết quả Y") +
  theme_minimal() +
  scale_fill_brewer(palette = "Pastel2")

Nhận xét:

  • Biểu đồ tần suất cho thấy sự chênh lệch lớn về tỷ lệ đồng ý vay giữa hai nhóm hình thức liên hệ. Trong nhóm được liên hệ bằng telephone, chỉ có 5.2% khách hàng đồng ý vay, trong khi nhóm cellular có tỷ lệ đồng ý vay lên tới 14.7%. Điều này cho thấy phương thức liên hệ qua điện thoại di động không chỉ có hiệu quả cao hơn về mặt số lượng người đồng ý mà còn vượt trội về tỷ lệ chuyển đổi so với điện thoại bàn.
  • Như vậy, hình thức liên hệ có ảnh hưởng rõ rệt đến kết quả vay tiêu dùng của khách hàng.

Kiểm định Thống kê

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

  • H₀: Biến hình thức liên hệ(contact) và kết qủa đăng kí sau chiến dịch là hai biến độc lập.

  • H₁: Biến hình thức liên hệ(contact) và kết qủa đăng kí sau chiến dịch có liên quan.

Kết quả

# Thực hiện kiểm định Chi bình phương
chi_ray1 <- chisq.test(ray1)
print(chi_ray1)
## 
##  Pearson's Chi-squared test
## 
## data:  ray1
## X-squared = 863.27, df = 4, p-value < 2.2e-16

Nhận xét

  • Giá trị p-value < 2.2e-16, nhỏ hơn rất nhiều so với mức ý nghĩa phổ biến α = 0.05.

  • Do đó, có đủ bằng chứng để bác bỏ giả thuyết H₀. Nói cách khác, chúng ta phát hiện mối liên hệ có ý nghĩa thống kê giữa hình thức liên hệ (contact) và kết quả đồng ý đăng ký sau chiến dịch trong tập dữ liệu này.

Hiệu tỷ lệ (Risk Difference - RD)

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

  • H₀: p₁ >= p₂: Tỷ lệ người đăng kí dùng điện thoại cố định lớn hơn hoặc bằng người đăng kí sử dụng điện thoại di động

  • H₁: p₁ < p₂: Tỷ lệ người đăng kí dùng điện thoại cố định nhỏ hơn người đăng kí sử dụng điện thoại di động

Kết quả:

# Lập bảng tần số chéo giữa contact và y
ray <- table(dt$contact, dt$y)

# Thêm tổng hàng và tổng cột
ray1 <- addmargins(ray)

# Kiểm tra bảng tần số chéo
print(ray)
##            
##                no   yes
##   telephone 14257   787
##   cellular  22291  3853
# Tách số lượng "yes" theo từng nhóm contact
counts <- c(ray["telephone", "yes"], ray["cellular", "yes"])

# Tính tổng số quan sát theo từng nhóm contact
totals <- c(sum(ray["telephone", ]), sum(ray["cellular", ]))

# Kiểm định tỷ lệ - kiểm tra xem tỷ lệ ở nhóm telephone có nhỏ hơn cellular không?
test_result <- prop.test(counts, totals, alternative = "less", correct = FALSE)

# Hiển thị kết quả
test_result
## 
##  2-sample test for equality of proportions without continuity correction
## 
## data:  counts out of totals
## X-squared = 863.27, df = 1, p-value < 2.2e-16
## alternative hypothesis: less
## 95 percent confidence interval:
##  -1.00000000 -0.09038101
## sample estimates:
##     prop 1     prop 2 
## 0.05231321 0.14737607

Nhận xét: Dựa trên kết quả kiểm định tỉ lệ hai mẫu, ta thu được giá trị p-value < 2.2e-16, nhỏ hơn rất nhiều so với mức ý nghĩa α = 0.05. Điều này cho thấy có đủ bằng chứng thống kê để bác bỏ giả thuyết H₀. Nói cách khác, ta chấp nhận giả thuyết H₁: tỷ lệ người đăng ký vay tiêu dùng trong nhóm được liên hệ qua điện thoại bàn (telephone) nhỏ hơn so với nhóm được liên hệ qua điện thoại di động (cellular). Cụ thể, tỷ lệ đăng ký vay ở nhóm telephone là khoảng 5.2%, trong khi ở nhóm cellular là khoảng 14.8%. Sự chênh lệch này có ý nghĩa thống kê, cho thấy hình thức liên hệ qua điện thoại di động hiệu quả hơn trong việc thúc đẩy khách hàng đăng ký vay tiêu dùng.

Relative Risk - RR:

ray <- table(dt$contact, dt$y)
riskratio(ray, method="wald")
## $data
##            
##                no  yes Total
##   telephone 14257  787 15044
##   cellular  22291 3853 26144
##   Total     36548 4640 41188
## 
## $measure
##            risk ratio with 95% C.I.
##             estimate    lower    upper
##   telephone 1.000000       NA       NA
##   cellular  2.817186 2.616244 3.033563
## 
## $p.value
##            two-sided
##             midp.exact  fisher.exact    chi.square
##   telephone         NA            NA            NA
##   cellular           0 1.838336e-210 9.481264e-190
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"

Nhận xét:

Dựa vào bảng kết quả tính tỷ số nguy cơ (Relative Risk - RR), ta có thể nhận xét chi tiết như sau:

  • Trong hai nhóm được liên hệ qua điện thoại bàn (telephone) và điện thoại di động (cellular), tỷ số nguy cơ cho thấy sự khác biệt rõ rệt về khả năng khách hàng đăng ký vay tiêu dùng. Cụ thể, nhóm được liên hệ qua điện thoại di động có tỷ số nguy cơ (RR) bằng 2.82 (ước lượng chính xác là 2.817186), nghĩa là khách hàng trong nhóm này có nguy cơ đăng ký vay cao gấp gần 2.82 lần so với nhóm được liên hệ qua điện thoại bàn. Khoảng tin cậy 95% cho tỷ số nguy cơ của nhóm cellular là từ 2.616 đến 3.034, cho thấy ước lượng này là chính xác và có độ tin cậy cao.

  • Ngoài ra, giá trị p-value của nhóm cellular qua các phương pháp kiểm định (midp.exact, fisher.exact và chi-square) đều cực kỳ nhỏ (gần bằng 0), chứng tỏ sự khác biệt về tỷ lệ đăng ký vay giữa hai nhóm là có ý nghĩa thống kê. Nhóm telephone được sử dụng làm nhóm tham chiếu nên có RR = 1.0 và không có khoảng tin cậy vì là chuẩn gốc.

  • Từ đó, có thể kết luận rằng: việc liên hệ khách hàng qua điện thoại di động hiệu quả hơn đáng kể so với điện thoại bàn trong việc thúc đẩy khách hàng đăng ký vay tiêu dùng. Đây là bằng chứng rõ ràng hỗ trợ cho các kết quả kiểm định trước đó.

Tỷ số Chênh (Odds Ratio - OR):

result <- oddsratio(ray)
print(result)
## $data
##            
##                no  yes Total
##   telephone 14257  787 15044
##   cellular  22291 3853 26144
##   Total     36548 4640 41188
## 
## $measure
##            odds ratio with 95% C.I.
##             estimate    lower    upper
##   telephone 1.000000       NA       NA
##   cellular  3.130724 2.893163 3.392136
## 
## $p.value
##            two-sided
##             midp.exact  fisher.exact    chi.square
##   telephone         NA            NA            NA
##   cellular           0 1.838336e-210 9.481264e-190
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"

Nhận xét:

Dựa vào bảng kết quả phân tích tỷ số chênh (Odds Ratio - OR), ta có thể nhận xét chi tiết như sau:

  • Tỷ số chênh (OR) giữa hai nhóm khách hàng được liên hệ bằng điện thoại di động (cellular) và điện thoại bàn (telephone) phản ánh xác suất đăng ký vay tiêu dùng trong hai nhóm. Cụ thể, nhóm được liên hệ qua điện thoại di động có OR = 3.13 (ước lượng chính xác là 3.130724), tức là khả năng đăng ký vay của họ cao hơn khoảng 3.13 lần so với nhóm được liên hệ bằng điện thoại bàn.

  • Khoảng tin cậy 95% của OR nằm trong khoảng [2.89; 3.39], cho thấy ước lượng này đáng tin cậy và có ý nghĩa thống kê. Đồng thời, giá trị p-value từ các phép kiểm định (midp.exact, fisher.exact và chi-square) đều cực kỳ nhỏ (tiệm cận 0), khẳng định sự khác biệt giữa hai nhóm là có ý nghĩa thống kê cao.

  • Nhóm telephone có OR = 1.0 và không có khoảng tin cậy vì đây là nhóm tham chiếu (reference group). Từ đó có thể kết luận: Khách hàng được liên hệ qua điện thoại di động có xác suất đăng ký vay tiêu dùng cao hơn rõ rệt so với những người được liên hệ bằng điện thoại bàn. Điều này một lần nữa củng cố kết quả từ các kiểm định trước và khuyến nghị rằng phương thức liên hệ qua điện thoại di động có thể mang lại hiệu quả tốt hơn trong chiến dịch tiếp thị.

4.4.2. Biến tình trạng hôn nhân(Marital) và quyết định đăng kí sau chiến dịch (Y)

Lập bảng tần số chéo giữa marital và y

marital_tab <- table(dt$marital, dt$y)

# Thêm tổng hàng và tổng cột
marital_tab1 <- addmargins(marital_tab)
marital_tab1
##           
##               no   yes   Sum
##   divorced  4136   476  4612
##   married  22396  2532 24928
##   single    9948  1620 11568
##   unknown     68    12    80
##   Sum      36548  4640 41188

Biểu đồ

# Chuyển sang data frame để vẽ
marital_df <- as.data.frame(marital_tab)
colnames(marital_df) <- c("Marital", "y", "Count")

# Biểu đồ tần số
ggplot(marital_df, aes(x = Marital, y = Count, fill = y)) +
  geom_bar(stat = "identity", position = "dodge") +
  geom_text(aes(label = Count), position = position_dodge(width = 0.9),
            vjust = -0.3, size = 4) +
  labs(title = "Biểu đồ tần số giữa Marital và Y",
       x = "Tình trạng hôn nhân",
       y = "Tần số", fill = "Kết quả Y") +
  theme_minimal() +
  scale_fill_brewer(palette = "Pastel2")

Nhận xét

  • Biểu đồ tần số giữa Marital và Y cho thấy sự khác biệt đáng kể về số lượng người đồng ý (yes) theo từng tình trạng hôn nhân. Cụ thể, nhóm Married có số người trả lời “yes” cao nhất với 2.532 người, vượt xa nhóm Single (1.620 người) và Divorced (476 người).

  • Tuy nhiên, số người trả lời “no” ở nhóm Married cũng áp đảo (22.396 người), phản ánh rằng mặc dù số “yes” nhiều nhất về mặt tuyệt đối, tỷ lệ “no” vẫn chiếm ưu thế ở tất cả các nhóm. Điều này cho thấy tình trạng hôn nhân có tác động nhất định đến kết quả Y, trong đó nhóm Married đồng ý nhiều hơn về mặt số lượng, nhưng mức độ từ chối vẫn rất cao.

Bảng tần suất

# Bảng tần suất theo hàng
marital_freq <- prop.table(marital_tab, margin = 1)
marital_freq <- round(marital_freq, 4)
marital_freq
##           
##                no    yes
##   divorced 0.8968 0.1032
##   married  0.8984 0.1016
##   single   0.8600 0.1400
##   unknown  0.8500 0.1500

Biểu đồ

# Biểu đồ tần suất (tỷ lệ phần trăm)
marital_prop <- prop.table(marital_tab, margin = 1)
marital_prop_df <- as.data.frame(marital_prop)
colnames(marital_prop_df) <- c("Marital", "y", "Percent")

ggplot(marital_prop_df, aes(x = Marital, y = Percent, fill = y)) +
  geom_bar(stat = "identity", position = "fill") +
  geom_text(aes(label = scales::percent(Percent, accuracy = 0.1)),
            position = position_stack(vjust = 0.5), size = 4) +
  labs(title = "Biểu đồ tần suất giữa Marital và Y",
       x = "Tình trạng hôn nhân",
       y = "Tỷ lệ (%)", fill = "Kết quả Y") +
  theme_minimal() +
  scale_fill_brewer(palette = "Pastel2")

Nhận xét:

  • Biểu đồ tần suất theo tỷ lệ giữa Marital và Y cho thấy sự khác biệt rõ rệt về tỷ lệ “yes” giữa các nhóm tình trạng hôn nhân. Nhóm Single có tỷ lệ “yes” cao nhất (14,0%), trong khi hai nhóm Married (10,2%) và Divorced (10,3%) có tỷ lệ “yes” thấp hơn và gần như tương đương nhau.

  • Ngược lại, tỷ lệ “no” chiếm ưu thế ở cả ba nhóm (dao động từ 86,0% đến 89,8%), cho thấy phần lớn khách hàng trong mọi tình trạng hôn nhân đều trả lời “no”. Tuy nhiên, việc nhóm Single có tỷ lệ “yes” cao hơn gợi ý rằng những người độc thân có xu hướng đồng ý nhiều hơn so với những người đã kết hôn hoặc ly hôn.

Kiểm định Thống kê

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

  • H₀: Biến tình trạng hôn nhân (marital) và kết quả Y là hai biến độc lập.

  • H₁: Biến tình trạng hôn nhân (marital) và kết quả Y có liên quan.

Kết quả

chi_marital <- chisq.test(marital_tab)
chi_marital
## 
##  Pearson's Chi-squared test
## 
## data:  marital_tab
## X-squared = 122.66, df = 3, p-value < 2.2e-16

Nhận xét:

  • Giá trị p-value < 2.2e-16, nhỏ hơn rất nhiều so với mức ý nghĩa phổ biến α = 0.05.Do đó, có đủ bằng chứng để bác bỏ giả thuyết H₀. Nói cách khác, kết quả kiểm định cho thấy có mối liên hệ có ý nghĩa thống kê giữa tình trạng hôn nhân và kết quả Y trong bộ dữ liệu này.

Hiệu tỷ lệ (Risk Difference - RD)

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

  • H₀: Không có sự khác biệt về tỷ lệ (risk difference = 0) giữa hai nhóm tình trạng hôn nhân married và single

  • H₁: Có sự khác biệt về tỷ lệ (risk difference ≠ 0) giữa hai nhóm tình trạng hôn nhân married và single.

Kết quả

# Kiểm định tỉ lệ giữa nhóm Single và Married
counts_marital <- c(marital_tab["single","yes"], marital_tab["married","yes"])
totals_marital <- c(sum(marital_tab["single",]), sum(marital_tab["married",]))
prop.test(counts_marital, totals_marital, alternative="two.sided", correct=FALSE)
## 
##  2-sample test for equality of proportions without continuity correction
## 
## data:  counts_marital out of totals_marital
## X-squared = 115.97, df = 1, p-value < 2.2e-16
## alternative hypothesis: two.sided
## 95 percent confidence interval:
##  0.03111678 0.04582115
## sample estimates:
##    prop 1    prop 2 
## 0.1400415 0.1015725

Nhận xét:

  • Khoảng tin cậy 95% cho hiệu tỷ lệ (RD) nằm trong khoảng [0.0311; 0.0458], không bao gồm 0.

  • Ước lượng tỷ lệ mẫu cho thấy nhóm married có tỷ lệ “yes” là 14,0%, trong khi nhóm single chỉ 10,2%.

Kết luận: Có đủ bằng chứng thống kê để bác bỏ giả thuyết H₀. Nói cách khác, tỷ lệ “yes” giữa hai nhóm hôn nhân khác nhau một cách có ý nghĩa thống kê, với nhóm married có xu hướng đồng ý nhiều hơn nhóm single khoảng 3,1% – 4,6%.

Relative Risk - RR:

riskratio(marital_tab, method="wald")
## $data
##           
##               no  yes Total
##   divorced  4136  476  4612
##   married  22396 2532 24928
##   single    9948 1620 11568
##   unknown     68   12    80
##   Total    36548 4640 41188
## 
## $measure
##           risk ratio with 95% C.I.
##             estimate     lower    upper
##   divorced 1.0000000        NA       NA
##   married  0.9841439 0.8969801 1.079778
##   single   1.3568726 1.2322819 1.494060
##   unknown  1.4533613 0.8567168 2.465528
## 
## $p.value
##           two-sided
##              midp.exact fisher.exact   chi.square
##   divorced           NA           NA           NA
##   married  7.325499e-01 7.304919e-01 7.356758e-01
##   single   1.386538e-10 1.671240e-10 3.005916e-10
##   unknown  1.900466e-01 1.924419e-01 1.740771e-01
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"

Nhận xét:

Dựa vào bảng kết quả tính tỷ số nguy cơ (Relative Risk – RR), có thể nhận xét như sau:

  • Nhóm Divorced được dùng làm nhóm tham chiếu (RR = 1). Kết quả cho thấy: Married có RR ≈ 0,98 (không khác biệt đáng kể so với Divorced); Single có RR ≈ 1,36 (cao hơn khoảng 36% khả năng đồng ý); Unknown có RR ≈ 1,45 nhưng khoảng tin cậy rộng, chưa đủ cơ sở kết luận.

  • P-value cho Married (≈ 0,73) và Unknown (≈ 0,19) đều > 0,05, nghĩa là không có khác biệt rõ ràng so với Divorced. Ngược lại, nhóm Single có p-value ≈ 1.39e-10, thể hiện sự khác biệt có ý nghĩa thống kê rất cao.

  • Nhóm Single có khả năng đăng ký sản phẩm cao hơn đáng kể so với Divorced. Nhóm Married và Unknown không cho thấy sự khác biệt rõ ràng. Do đó, chiến dịch marketing nên ưu tiên khai thác nhóm Single, trong khi các nhóm khác có thể áp dụng chiến lược chung.

Tỷ số Chênh (Odds Ratio - OR):

oddsratio(marital_tab)
## $data
##           
##               no  yes Total
##   divorced  4136  476  4612
##   married  22396 2532 24928
##   single    9948 1620 11568
##   unknown     68   12    80
##   Total    36548 4640 41188
## 
## $measure
##           odds ratio with 95% C.I.
##             estimate     lower    upper
##   divorced 1.0000000        NA       NA
##   married  0.9821094 0.8864698 1.090182
##   single   1.4146399 1.2702992 1.577977
##   unknown  1.5500695 0.7903639 2.782205
## 
## $p.value
##           two-sided
##              midp.exact fisher.exact   chi.square
##   divorced           NA           NA           NA
##   married  7.325499e-01 7.304919e-01 7.356758e-01
##   single   1.386538e-10 1.671240e-10 3.005916e-10
##   unknown  1.900466e-01 1.924419e-01 1.740771e-01
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"

Nhận xét:

Dựa vào bảng kết quả phân tích tỷ số chênh (Odds Ratio – OR), có thể nhận xét như sau:

  • Nhóm Divorced được chọn làm nhóm tham chiếu (OR = 1,00). Kết quả cho thấy Married có OR ≈ 0,98 (95% CI: 0,887–1,090), nghĩa là hầu như không có khác biệt so với Divorced. Ngược lại, nhóm Single có OR ≈ 1,41 (95% CI: 1,27–1,58), thể hiện khả năng đồng ý đăng ký cao hơn khoảng 41% so với Divorced. Nhóm Unknown có OR ≈ 1,55 nhưng khoảng tin cậy rất rộng (0,79–2,78), do dữ liệu ít nên kết quả chưa chắc chắn.

  • Phân tích p-value cho thấy Married (p ≈ 0,73) và Unknown (p ≈ 0,19) đều không khác biệt đáng kể so với Divorced. Ngược lại, nhóm Single có p-value rất nhỏ (≈ 1,39e-10), chứng minh sự khác biệt có ý nghĩa thống kê rất cao giữa nhóm này với Divorced.

  • Kết quả cho thấy Single là nhóm có khả năng đồng ý đăng ký sản phẩm cao hơn rõ rệt, trong khi Married và Unknown không khác biệt đáng kể so với Divorced. Điều này gợi ý rằng chiến dịch marketing nên ưu tiên nhóm khách hàng Single, đồng thời duy trì chiến lược chung cho các nhóm còn lại.

4.5. Hồi quy đa biến

4.5.1. Hồi quy xác suất tuyến tính

Mục tiêu

Mục tiêu của việc hồi quy xác suất tuyến tính với ba biến contact, marital và duration là nhằm phân tích chi tiết tác động của kênh liên hệ, tình trạng hôn nhân và thời lượng cuộc gọi đến xác suất khách hàng đồng ý với lời chào mời (biến phụ thuộc nhị phân y_bin). Trong mô hình này, có hai biến định tính (contact và marital) và một biến định lượng (duration).

  • Với contact (biến định tính), nhóm Cellular được chọn làm nhóm tham chiếu (reference). Điều này nghĩa là các hệ số hồi quy ước lượng cho những nhóm khác như telephone hoặc unknown sẽ cho thấy mức thay đổi xác suất đồng ý của khách hàng so với khi kênh liên hệ là Cellular.

  • Với marital (biến định tính), nhóm divorced được chọn làm nhóm tham chiếu. Nhờ vậy, hệ số của các nhóm married, single hay unknown sẽ cho biết mức chênh lệch xác suất đồng ý so với khi khách hàng thuộc nhóm divorced.

  • Biến duration (biến định lượng) giữ vai trò đặc biệt quan trọng vì nó cho phép định lượng cụ thể: khi thời lượng cuộc gọi tăng thêm 1 đơn vị (1 giây) thì xác suất khách hàng đồng ý sẽ thay đổi bao nhiêu phần trăm, với giả định các biến khác giữ nguyên.

# Tạo biến nhị phân cho biến phụ thuộc y
d$y_bin <- ifelse(d$y == "yes", 1, 0)

# Mô hình hồi quy xác suất tuyến tính với contact, marital và duration
reg_lpm_full <- glm(y_bin ~ contact + marital + duration,
                    data = d,
                    family = gaussian(link = "identity"))

# Xem kết quả mô hình
summary(reg_lpm_full)
## 
## Call:
## glm(formula = y_bin ~ contact + marital + duration, family = gaussian(link = "identity"), 
##     data = d)
## 
## Coefficients:
##                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       1.077e-02  4.565e-03   2.359   0.0183 *  
## contacttelephone -8.607e-02  2.932e-03 -29.358  < 2e-16 ***
## maritalmarried   -1.655e-03  4.579e-03  -0.361   0.7177    
## maritalsingle     2.796e-02  4.977e-03   5.618 1.94e-08 ***
## maritalunknown    1.519e-02  3.221e-02   0.472   0.6373    
## duration          4.895e-04  5.431e-06  90.142  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.08158757)
## 
##     Null deviance: 4117.3  on 41187  degrees of freedom
## Residual deviance: 3359.9  on 41182  degrees of freedom
## AIC: 13674
## 
## Number of Fisher Scoring iterations: 2
# Tính AIC và BIC
AIC(reg_lpm_full)
## [1] 13674.12
BIC(reg_lpm_full)
## [1] 13734.51
# Dự đoán xác suất
prob_full <- predict(reg_lpm_full, type = "response")

# Dự đoán nhị phân với ngưỡng 0.5
pred_full <- ifelse(prob_full > 0.5, "yes", "no")

# Ma trận nhầm lẫn
table(Predicted = pred_full, Actual = d$y_bin)
##          Actual
## Predicted     0     1
##       no  36205  4116
##       yes   343   524

Mô hình LPM với Contact + Marital + Duration

\[ \hat{y} = \beta_0 + \beta_1 \times Contact_{telephone} + \beta_2 \times Marital_{married} + \beta_3 \times Marital_{single} + \beta_4 \times Marital_{unknown} + \beta_5 \times Duration \]

Thay hệ số ước lượng:

\[ \hat{y} = 0.01077 - 0.08607 \times Contact_{telephone} - 0.001655 \times Marital_{married} + 0.02796 \times Marital_{single} + 0.01519 \times Marital_{unknown} + 0.0004895 \times Duration \]

Ý nghĩa các hệ số

  • Hệ số chặn (\(\beta_0 = 0.01077\)): Khi khách hàng thuộc nhóm Divorced (nhóm tham chiếu) và được liên hệ qua Cellular, xác suất đồng ý đăng ký ở mức cơ bản là 1,1%.

  • \(Contact_{telephone}\) (\(\beta_1 = -0.08607\)): Nếu khách hàng được gọi qua Telephone thay vì Cellular, xác suất đồng ý giảm 8,6 điểm phần trăm, và kết quả này có ý nghĩa thống kê rất cao (\(p < 2 \times 10^{-16}\)).

  • \(Marital_{married}\) (\(\beta_2 = -0.001655\)): Khách hàng đã kết hôn có xác suất đồng ý giảm nhẹ 0,17 điểm phần trăm so với nhóm Divorced, nhưng không có ý nghĩa thống kê (\(p = 0.7177\)).

  • \(Marital_{single}\) (\(\beta_3 = 0.02796\)): Khách hàng độc thân có xác suất đồng ý tăng 2,8 điểm phần trăm so với nhóm Divorced, và kết quả này có ý nghĩa thống kê rất cao (\(p = 1.94 \times 10^{-8}\)).

  • \(Marital_{unknown}\) (\(\beta_4 = 0.01519\)): Khách hàng có tình trạng hôn nhân không xác định có xác suất đồng ý tăng 1,5 điểm phần trăm so với nhóm Divorced, nhưng không có ý nghĩa thống kê (\(p = 0.6373\)).

  • \(Duration\) (\(\beta_5 = 0.0004895\)): Khi thời lượng cuộc gọi tăng thêm 1 giây, xác suất khách hàng đồng ý tăng 0,049 điểm phần trăm, và kết quả này có ý nghĩa thống kê rất cao (\(p < 2 \times 10^{-16}\)).

Nhận xét các thông số mô hình

  • Độ phù hợp mô hình (Model fit):
    • Null deviance = 4117.3Residual deviance = 3359.9.
    • Điều này cho thấy mô hình đã giảm đáng kể sai số so với mô hình rỗng (chỉ có hằng số), nghĩa là các biến Contact, Marital, Duration đóng góp thực sự trong việc giải thích xác suất đồng ý.
  • Chỉ số AIC và BIC:
    • Mô hình có AIC = 13,674.12BIC = 13,734.51.
    • Các chỉ số này cho thấy mô hình cân bằng tốt giữa độ phức tạpkhả năng giải thích. Khi so sánh với các mô hình khác (như Logit, Probit hay Cloglog), mô hình nào có AIC/BIC thấp hơn sẽ được đánh giá là phù hợp hơn.
  • Kết quả dự đoán:
    • Mô hình dự đoán tốt nhóm khách hàng “không đồng ý” (tỷ lệ dự đoán đúng cao).
    • Tuy nhiên, mô hình bỏ sót khá nhiều khách hàng “đồng ý” (số lượng false negative cao hơn true positive), cho thấy khả năng phát hiện khách hàng tiềm năng còn hạn chế – đây là đặc trưng thường gặp trong bộ dữ liệu mất cân bằng (nhiều “no”, ít “yes”).

4.5.2. Hồi quy Logit

Mục tiêu

Mục tiêu của việc hồi quy Logit với ba biến contact, maritalduration là nhằm phân tích chi tiết tác động của kênh liên hệ, tình trạng hôn nhânthời lượng cuộc gọi đến xác suất khách hàng đồng ý với lời chào mời (biến phụ thuộc nhị phân y_bin). Khác với LPM, hồi quy Logit sử dụng hàm liên kết logit để mô hình hóa xác suất, giúp giới hạn dự đoán trong khoảng 0–1 và xử lý tốt hơn các trường hợp dữ liệu nhị phân.

Trong mô hình này, có hai biến định tính (contactmarital) và một biến định lượng (duration):

  • Với contact (biến định tính), nhóm Cellular được chọn làm nhóm tham chiếu (reference). Các hệ số hồi quy ước lượng cho những nhóm khác như telephone hoặc unknown sẽ thể hiện mức thay đổi log-odds của xác suất đồng ý khi so với kênh liên hệ là Cellular.

  • Với marital (biến định tính), nhóm Divorced được chọn làm nhóm tham chiếu. Các hệ số hồi quy cho các nhóm married, single hay unknown sẽ phản ánh mức chênh lệch log-odds về khả năng đồng ý so với nhóm Divorced.

  • Biến duration (biến định lượng) giữ vai trò đặc biệt quan trọng vì nó cho phép định lượng tác động cụ thể: khi thời lượng cuộc gọi tăng thêm 1 đơn vị (1 giây), log-odds của xác suất khách hàng đồng ý sẽ thay đổi bao nhiêu, với giả định các biến khác giữ nguyên.

# Mô hình Logit với contact, marital và duration
logit_full <- glm(y_bin ~ contact + marital + duration,
                  data = d,
                  family = binomial(link = "logit"))

# Tóm tắt mô hình
summary(logit_full)
## 
## Call:
## glm(formula = y_bin ~ contact + marital + duration, family = binomial(link = "logit"), 
##     data = d)
## 
## Coefficients:
##                    Estimate Std. Error z value Pr(>|z|)    
## (Intercept)      -3.0806130  0.0587674 -52.420  < 2e-16 ***
## contacttelephone -1.3092005  0.0460032 -28.459  < 2e-16 ***
## maritalmarried   -0.0297438  0.0588415  -0.505    0.613    
## maritalsingle     0.3196613  0.0617133   5.180 2.22e-07 ***
## maritalunknown    0.1376304  0.3664464   0.376    0.707    
## duration          0.0037839  0.0000607  62.338  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 28999  on 41187  degrees of freedom
## Residual deviance: 22989  on 41182  degrees of freedom
## AIC: 23001
## 
## Number of Fisher Scoring iterations: 6
# Tính AIC và BIC
AIC(logit_full)
## [1] 23000.7
BIC(logit_full)
## [1] 23052.45
# Dự đoán xác suất
prob_logit <- predict(logit_full, type = "response")

# Dự đoán nhị phân với ngưỡng 0.5
pred_logit <- ifelse(prob_logit > 0.5, "yes", "no")

# Ma trận nhầm lẫn
table(Predicted = pred_logit, Actual = d$y_bin)
##          Actual
## Predicted     0     1
##       no  35973  3794
##       yes   575   846
# Tính Odds Ratio (OR) và khoảng tin cậy 95%
exp(cbind(OR = coef(logit_full),
          confint(logit_full)))
## Waiting for profiling to be done...
##                          OR      2.5 %     97.5 %
## (Intercept)      0.04593109 0.04088226 0.05147506
## contacttelephone 0.27003588 0.24657713 0.29531020
## maritalmarried   0.97069422 0.86577705 1.09042797
## maritalsingle    1.37666134 1.22082802 1.55501547
## maritalunknown   1.14755128 0.53276395 2.26171537
## duration         1.00379109 1.00367226 1.00391111

Mô hình Logit với Contact, Marital và Duration

\[ \text{logit}(p) = \ln\left(\frac{p}{1-p}\right) = \beta_0 + \beta_1 \times Contact_{telephone} + \beta_2 \times Marital_{married} + \beta_3 \times Marital_{single} + \beta_4 \times Marital_{unknown} + \beta_5 \times Duration \]

Công thức thay số ước lượng

Dựa trên kết quả hồi quy logit:

\[ \text{logit}(p) = -3.0806 - 1.3092 \times Contact_{telephone} - 0.0297 \times Marital_{married} + 0.3197 \times Marital_{single} + 0.1376 \times Marital_{unknown} + 0.0038 \times Duration \]

Diễn giải hệ số (dùng Odds Ratio)

Ta chuyển hệ số logit thành Odds Ratio (OR) với công thức:

\[ OR = e^{\beta_i} \]

  • Intercept: \(OR = e^{-3.0806} = 0.046\)
    Khi khách hàng thuộc nhóm Divorced và được liên hệ qua Cellular, odds đồng ý chỉ bằng 0,046 lần odds từ chối – nghĩa là trong điều kiện cơ bản, xác suất đồng ý rất thấp.

  • \(Contact_{telephone}\): \(OR = e^{-1.3092} \approx 0.27\)
    Gọi qua Telephone khiến odds đồng ý chỉ bằng 0,27 lần odds đồng ý khi gọi qua Cellular. Điều này cho thấy odds giảm mạnh, và kết quả có ý nghĩa thống kê rất cao.

  • \(Marital_{married}\): \(OR = e^{-0.0297} \approx 0.97\)
    Khách hàng đã kết hôn có odds đồng ý bằng 0,97 lần odds của nhóm Divorced – gần như không có sự khác biệt. Kết quả không có ý nghĩa thống kê.

  • \(Marital_{single}\): \(OR = e^{0.3197} \approx 1.38\)
    Khách hàng độc thân có odds đồng ý gấp 1,38 lần odds của nhóm Divorced. Kết quả có ý nghĩa thống kê rất cao.

  • \(Marital_{unknown}\): \(OR = e^{0.1376} \approx 1.15\)
    Khách hàng không rõ tình trạng hôn nhân có odds đồng ý gấp 1,15 lần odds của nhóm Divorced, nhưng kết quả không có ý nghĩa thống kê.

  • \(Duration\): \(OR = e^{0.0038} \approx 1.0038\)
    Mỗi khi thời lượng cuộc gọi tăng thêm 1 giây, odds đồng ý gấp 1,0038 lần odds trước đó. Dù mức tăng nhỏ, nhưng nếu cuộc gọi kéo dài hàng trăm giây, tác động tích lũy rất đáng kể và có ý nghĩa thống kê rất cao.

Nhận xét các thông số mô hình

  • Độ phù hợp mô hình (Model fit):

    • Null deviance = 28.999 và Residual deviance = 22.989
    • Điều này cho thấy mô hình Logit đã giảm đáng kể sai số so với mô hình rỗng (chỉ có hằng số), chứng tỏ các biến Contact, Marital và Duration thực sự có đóng góp trong việc giải thích xác suất khách hàng đồng ý.
  • Chỉ số AIC và BIC:

    • Mô hình có AIC = 23.000,7 và BIC = 23.052,45.

    • Các chỉ số này phản ánh mô hình cân bằng tốt giữa độ phức tạp và khả năng giải thích. Khi so sánh với các mô hình khác (LPM, Probit hay Cloglog), mô hình nào có AIC/BIC thấp hơn sẽ được đánh giá là phù hợp hơn.

  • Kết quả dự đoán:

    • Mô hình dự đoán chính xác phần lớn khách hàng “không đồng ý” (tỷ lệ đúng âm rất cao).
    • Tuy nhiên, mô hình vẫn bỏ sót khá nhiều khách hàng “đồng ý” (số lượng false negative cao hơn true positive). Điều này cho thấy khả năng nhận diện khách hàng tiềm năng vẫn còn hạn chế – đây là hiện tượng thường gặp trong dữ liệu mất cân bằng (nhiều “no”, ít “yes”).

4.5.3. Hồi quy Probit

Mục tiêu

Mục tiêu của việc hồi quy Probit với ba biến contact, marital và duration là nhằm phân tích chi tiết tác động của kênh liên hệ, tình trạng hôn nhân và thời lượng cuộc gọi đến xác suất khách hàng đồng ý với lời chào mời (biến phụ thuộc nhị phân y_bin). Tương tự như Logit, hồi quy Probit sử dụng hàm liên kết probit (hàm nghịch đảo của phân phối chuẩn tích lũy – CDF) để mô hình hóa xác suất, giúp giới hạn dự đoán trong khoảng 0–1 và xử lý tốt hơn dữ liệu nhị phân, đặc biệt khi giả định sai số tuân theo phân phối chuẩn.

Trong mô hình này, có hai biến định tính (contact và marital) và một biến định lượng (duration):

  • Với contact (biến định tính), nhóm Cellular được chọn làm nhóm tham chiếu (reference). Các hệ số hồi quy ước lượng cho những nhóm khác như telephone hoặc unknown thể hiện mức thay đổi z-score (điểm chuẩn hóa) trong phân phối chuẩn của xác suất đồng ý so với khi kênh liên hệ là Cellular.

  • Với marital (biến định tính), nhóm Divorced được chọn làm nhóm tham chiếu. Các hệ số hồi quy cho các nhóm married, single hay unknown phản ánh mức chênh lệch z-score trong khả năng đồng ý so với nhóm Divorced.

  • Biến duration (biến định lượng) có vai trò đặc biệt quan trọng vì nó cho phép định lượng tác động cụ thể: khi thời lượng cuộc gọi tăng thêm 1 đơn vị (1 giây), z-score của xác suất khách hàng đồng ý sẽ thay đổi bao nhiêu, với giả định các biến khác giữ nguyên.

# Mô hình Probit với contact, marital và duration
probit_full <- glm(y_bin ~ contact + marital + duration,
                   data = d,
                   family = binomial(link = "probit"))
## Warning: glm.fit: algorithm did not converge
# Tóm tắt mô hình
summary(probit_full)
## 
## Call:
## glm(formula = y_bin ~ contact + marital + duration, family = binomial(link = "probit"), 
##     data = d)
## 
## Coefficients:
##                    Estimate Std. Error z value Pr(>|z|)    
## (Intercept)      -1.733e+00  3.022e-02 -57.350  < 2e-16 ***
## contacttelephone -6.686e-01  2.253e-02 -29.674  < 2e-16 ***
## maritalmarried   -1.319e-02  3.051e-02  -0.432    0.666    
## maritalsingle     1.681e-01  3.224e-02   5.213 1.86e-07 ***
## maritalunknown    9.290e-02  1.951e-01   0.476    0.634    
## duration          1.983e-03  3.233e-05  61.320  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 28999  on 41187  degrees of freedom
## Residual deviance: 22965  on 41182  degrees of freedom
## AIC: 22977
## 
## Number of Fisher Scoring iterations: 25
# Tính AIC và BIC
AIC(probit_full)
## [1] 22976.81
BIC(probit_full)
## [1] 23028.57
# Dự đoán xác suất
prob_probit <- predict(probit_full, type = "response")

# Dự đoán nhị phân với ngưỡng 0.5
pred_probit <- ifelse(prob_probit > 0.5, "yes", "no")

# Ma trận nhầm lẫn
table(Predicted = pred_probit, Actual = d$y_bin)
##          Actual
## Predicted     0     1
##       no  36081  3918
##       yes   467   722

Mô hình Probit với Contact, Marital và Duration

\[ \Phi^{-1}(p) = \beta_0 + \beta_1 \times Contact_{telephone} + \beta_2 \times Marital_{married} + \beta_3 \times Marital_{single} + \beta_4 \times Marital_{unknown} + \beta_5 \times Duration \]

Công thức thay số ước lượng

Dựa trên kết quả hồi quy probit:

\[ \Phi^{-1}(p) = -1.733 - 0.668 \times Contact_{telephone} - 0.0131 \times Marital_{married} + 0.1681 \times Marital_{single} + 0.0929 \times Marital_{unknown} + 0.001983 \times Duration \]

Diễn giải hệ số

  • Intercept: \(\beta_0 = -1.733\)
    Khi khách hàng thuộc nhóm Divorced và được liên hệ qua Cellular, giá trị z-score cơ bản là -1.733, tương ứng với xác suất đồng ý rất thấp (nằm xa về phía trái của phân phối chuẩn).

  • \(Contact_{telephone}\): \(\beta_1 = -0.668\)
    Khi gọi qua Telephone thay vì Cellular, z-score giảm 0.668 đơn vị. Điều này khiến xác suất đồng ý dịch chuyển xuống thấp hơn trên phân phối chuẩn, thể hiện tác động tiêu cực mạnh.

  • \(Marital_{married}\): \(\beta_2 = -0.0131\)
    Khách hàng đã kết hôn có z-score giảm nhẹ 0,0131 đơn vị so với nhóm Divorced – hầu như không có sự khác biệt và không có ý nghĩa thống kê.

  • \(Marital_{single}\): \(\beta_3 = 0.1681\)
    Khách hàng độc thân có z-score tăng 0,1681 đơn vị so với nhóm Divorced. Điều này làm xác suất đồng ý tăng rõ rệt, và kết quả có ý nghĩa thống kê rất cao.

  • \(Marital_{unknown}\): \(\beta_4 = 0.0929\)
    Khách hàng không rõ tình trạng hôn nhân có z-score tăng 0,0929 đơn vị so với nhóm Divorced, nhưng không có ý nghĩa thống kê.

  • \(Duration\): \(\beta_5 = 0.001983\)
    Khi thời lượng cuộc gọi tăng thêm 1 giây, z-score tăng 0,001983 đơn vị. Dù mức tăng nhỏ, nhưng nếu cuộc gọi kéo dài hàng trăm giây, tác động tích lũy rất đáng kể.

Nhận xét các thông số mô hình

  • Độ phù hợp mô hình (Model fit):

    • Null deviance = 28999 và Residual deviance = 22965.
    • Điều này cho thấy mô hình Probit đã giảm đáng kể sai số so với mô hình rỗng (chỉ có hằng số), chứng tỏ các biến Contact, Marital và Duration có ý nghĩa trong việc giải thích xác suất đồng ý.
  • Chỉ số AIC và BIC:

    • Mô hình có AIC = 22976 và BIC = 23028.
    • Các chỉ số này cho thấy mô hình Probit đạt sự cân bằng tốt giữa độ phức tạp và khả năng giải thích. So sánh với các mô hình khác (LPM, Logit, Cloglog), mô hình nào có AIC/BIC thấp hơn sẽ được coi là phù hợp hơn.
  • Kết quả dự đoán:

    • Mô hình dự đoán tốt nhóm khách hàng “không đồng ý” (tỷ lệ dự đoán đúng cao).
    • Tuy nhiên, mô hình vẫn bỏ sót khá nhiều khách hàng “đồng ý” (false negative cao hơn true positive), phản ánh hạn chế trong việc nhận diện khách hàng tiềm năng – hiện tượng thường gặp trong bộ dữ liệu mất cân bằng (nhiều “no”, ít “yes”).

4.5.4 Hồi quy Cloglog

Mục tiêu

Mục tiêu của việc hồi quy Cloglog với ba biến contact, marital và duration là nhằm phân tích chi tiết tác động của kênh liên hệ, tình trạng hôn nhân và thời lượng cuộc gọi đến xác suất khách hàng đồng ý với lời chào mời (biến phụ thuộc nhị phân y_bin).

Hồi quy Cloglog phù hợp với những trường hợp dữ liệu mất cân bằng (nhiều “no”, ít “yes”) hoặc khi xác suất xảy ra sự kiện tăng nhanh khi đạt đến một mức nhất định.

Trong mô hình này, có hai biến định tính (contact và marital) và một biến định lượng (duration):

  • Với contact (biến định tính), nhóm Cellular được chọn làm nhóm tham chiếu (reference). Các hệ số hồi quy ước lượng cho những nhóm khác như telephone hoặc unknown thể hiện mức thay đổi trong xác suất đồng ý so với khi kênh liên hệ là Cellular.

  • Với marital (biến định tính), nhóm Divorced được chọn làm nhóm tham chiếu. Các hệ số hồi quy cho các nhóm married, single hay unknown phản ánh mức chênh lệch trong khả năng đồng ý so với nhóm Divorced.

  • Biến duration (biến định lượng) có vai trò quan trọng vì nó cho phép định lượng tác động cụ thể: khi thời lượng cuộc gọi tăng thêm 1 đơn vị (ví dụ 1 giây), xác suất khách hàng đồng ý sẽ thay đổi bao nhiêu, với giả định các biến khác giữ nguyên.

# Mô hình Cloglog với contact, marital và duration
cloglog_full <- glm(y_bin ~ contact + marital + duration,
                    data = d,
                    family = binomial(link = "cloglog"))
## Warning: glm.fit: algorithm did not converge
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
# Tóm tắt mô hình
summary(cloglog_full)
## 
## Call:
## glm(formula = y_bin ~ contact + marital + duration, family = binomial(link = "cloglog"), 
##     data = d)
## 
## Coefficients:
##                    Estimate Std. Error z value Pr(>|z|)    
## (Intercept)      -2.691e+00  5.021e-02 -53.599  < 2e-16 ***
## contacttelephone -1.162e+00  4.177e-02 -27.828  < 2e-16 ***
## maritalmarried   -9.643e-03  5.148e-02  -0.187    0.851    
## maritalsingle     2.636e-01  5.382e-02   4.899 9.63e-07 ***
## maritalunknown    2.350e-01  2.900e-01   0.810    0.418    
## duration          2.316e-03  3.941e-05  58.777  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 28999  on 41187  degrees of freedom
## Residual deviance: 24413  on 41182  degrees of freedom
## AIC: 24425
## 
## Number of Fisher Scoring iterations: 25
# Tính AIC và BIC
AIC(cloglog_full)
## [1] 24425.47
BIC(cloglog_full)
## [1] 24477.23
# Dự đoán xác suất
prob_cloglog <- predict(cloglog_full, type = "response")

# Dự đoán nhị phân với ngưỡng 0.5
pred_cloglog <- ifelse(prob_cloglog > 0.5, "yes", "no")

# Ma trận nhầm lẫn
table(Predicted = pred_cloglog, Actual = d$y_bin)
##          Actual
## Predicted     0     1
##       no  36242  4159
##       yes   306   481

Mô hình Cloglog với Contact, Marital và Duration

\[ \text{cloglog}(p) = \beta_0 + \beta_1 \times Contact_{telephone} + \beta_2 \times Marital_{married} + \beta_3 \times Marital_{single} + \beta_4 \times Marital_{unknown} + \beta_5 \times Duration \]

Công thức thay số ước lượng

Dựa trên kết quả hồi quy cloglog:

\[ \text{cloglog}(p) = -2.6190 - 1.1620 \times Contact_{telephone} - 0.0096 \times Marital_{married} + 0.2636 \times Marital_{single} + 0.2350 \times Marital_{unknown} + 0.0023 \times Duration \]

Công thức tính xác suất từ cloglog

Hồi quy cloglog dựa trên hàm liên kết:

\[ \text{cloglog}(p) = \ln\big(-\ln(1-p)\big) \]

hay viết lại:

\[ p = 1 - \exp\left(-\exp\left(\eta\right)\right), \text{ trong đó } \eta = \beta_0 + \beta_1X_1 + \dots + \beta_5X_5 \]

Điều này có nghĩa là mỗi hệ số \(\beta_i\) cho biết mức thay đổi của giá trị cloglog, và từ đó ảnh hưởng trực tiếp đến \(\eta\) – làm thay đổi tốc độ mà \(p\) (xác suất đồng ý) tiến gần đến 1.


Diễn giải hệ số

  • Intercept: \(\beta_0 = -2.6190\)
    Khi khách hàng thuộc nhóm Divorced và được liên hệ qua Cellular, giá trị cloglog cơ bản là -2.62. Theo công thức \(p = 1 - e^{-e^{\eta}}\), giá trị âm lớn này khiến \(\eta\) nhỏ, do đó \(p\) (xác suất đồng ý) nằm rất thấp.

  • \(Contact_{telephone}\): \(\beta_1 = -1.1620\)
    Khi khách hàng được gọi qua Telephone thay vì Cellular, giá trị cloglog giảm 1,16 đơn vị. Điều này làm \(\eta\) giảm, khiến \(e^{\eta}\) nhỏ hơn, và từ công thức \(p = 1 - e^{-e^{\eta}}\) xác suất đồng ý giảm mạnh. Đây là tác động tiêu cực rất rõ rệt và có ý nghĩa thống kê cao.

  • \(Marital_{married}\): \(\beta_2 = -0.0096\)
    Khách hàng đã kết hôn có cloglog giảm nhẹ 0,01 đơn vị so với nhóm Divorced. Điều này hầu như không làm thay đổi \(\eta\), nghĩa là xác suất đồng ý không khác biệt đáng kể (không có ý nghĩa thống kê).

  • \(Marital_{single}\): \(\beta_3 = 0.2636\)
    Khách hàng độc thân có cloglog tăng 0,26 đơn vị so với nhóm Divorced. Điều này làm \(\eta\) tăng, kéo theo \(e^{\eta}\) tăng và \(p = 1 - e^{-e^{\eta}}\) tiến nhanh hơn đến 1 – thể hiện xác suất đồng ý cao hơn và có ý nghĩa thống kê mạnh.

  • \(Marital_{unknown}\): \(\beta_4 = 0.2350\)
    Khách hàng không rõ tình trạng hôn nhân có cloglog tăng 0,24 đơn vị so với nhóm Divorced. Giá trị này làm \(\eta\) nhích lên, nhưng tác động không đủ lớn để có ý nghĩa thống kê.

  • \(Duration\): \(\beta_5 = 0.0023\)
    Khi thời lượng cuộc gọi tăng thêm 1 giây, cloglog tăng 0,0023 đơn vị. Mỗi giây chỉ làm \(\eta\) tăng nhẹ, nhưng nếu cuộc gọi kéo dài hàng trăm giây, \(\eta\) tăng đáng kể, \(e^{\eta}\) lớn hơn và \(p\) (xác suất đồng ý) cũng tăng đáng kể theo công thức \(p = 1 - e^{-e^{\eta}}\).


Nhận xét các thông số mô hình

  • Độ phù hợp mô hình (Model fit):
    • Null deviance = 28.999 và Residual deviance = 24.413.
    • Điều này cho thấy mô hình Cloglog đã giảm sai số đáng kể so với mô hình rỗng (chỉ có hằng số), chứng tỏ các biến Contact, Marital và Duration thực sự đóng góp vào việc giải thích xác suất đồng ý.
  • Chỉ số AIC và BIC:
    • Mô hình có AIC = 24.425,47 và BIC = 24.477,23.
    • Các chỉ số này phản ánh mô hình Cloglog có độ phức tạp và khả năng giải thích hợp lý. Khi so sánh với các mô hình khác (LPM, Logit, Probit), mô hình nào có AIC/BIC thấp hơn sẽ được coi là phù hợp hơn.
  • Kết quả dự đoán:
    • Mô hình dự đoán tốt nhóm khách hàng “không đồng ý” (tỷ lệ dự đoán đúng cao).
    • Tuy nhiên, mô hình vẫn bỏ sót khá nhiều khách hàng “đồng ý” (false negative cao hơn true positive), cho thấy khả năng nhận diện khách hàng tiềm năng còn hạn chế – hiện tượng thường gặp trong bộ dữ liệu mất cân bằng (nhiều “no”, ít “yes”).

4.6.ĐÁNH GÍA MÔ HÌNH TỐI ƯU

4.6.1.So sánh AIC/BIC các mô hình

# Tạo bảng so sánh AIC và BIC cho 4 mô hình
aic_bic_table <- data.frame(
  Model = c("Linear Probability Model", "Logit", "Probit", "Cloglog"),
  AIC = c(
    AIC(reg_lpm_full),
    AIC(logit_full),
    AIC(probit_full),
    AIC(cloglog_full)
  ),
  BIC = c(
    BIC(reg_lpm_full),
    BIC(logit_full),
    BIC(probit_full),
    BIC(cloglog_full)
  )
)

# In bảng AIC & BIC
aic_bic_table
##                      Model      AIC      BIC
## 1 Linear Probability Model 13674.12 13734.51
## 2                    Logit 23000.70 23052.45
## 3                   Probit 22976.81 23028.57
## 4                  Cloglog 24425.47 24477.23

Nhận xét: Bảng so sánh AIC/BIC cho thấy Linear Probability Model có giá trị AIC (13.674,12) và BIC (13.734,51) thấp nhất trong tất cả các mô hình, cho thấy mức độ phù hợp dữ liệu tốt nhất theo hai tiêu chí này. Các mô hình khác như Logit, Probit và Cloglog có AIC/BIC cao hơn đáng kể, đặc biệt Cloglog có giá trị lớn nhất, chứng tỏ khả năng giải thích dữ liệu kém hơn.

4.6.2. So sánh ROC

library(pROC)

# Xác suất dự đoán của 4 mô hình
p1 <- predict(reg_lpm_full, type="response")
p2 <- predict(logit_full, type="response")
p3 <- predict(probit_full, type="response")
p4 <- predict(cloglog_full, type="response")

# Tạo ROC
r1 <- roc(d$y_bin, p1); r2 <- roc(d$y_bin, p2)
r3 <- roc(d$y_bin, p3); r4 <- roc(d$y_bin, p4)

# Vẽ biểu đồ ROC
plot(r1, col="blue", lwd=2, main="ROC 4 mô hình")
plot(r2, col="red", lwd=2, add=TRUE)
plot(r3, col="green", lwd=2, add=TRUE)
plot(r4, col="purple", lwd=2, add=TRUE)
abline(a=0,b=1,lty=2,col="gray")

# Thêm chú thích
legend("bottomright",
       legend=c(
         paste0("LPM (AUC=", round(auc(r1),3),")"),
         paste0("Logit (AUC=", round(auc(r2),3),")"),
         paste0("Probit (AUC=", round(auc(r3),3),")"),
         paste0("Cloglog (AUC=", round(auc(r4),3),")")),
       col=c("blue","red","green","purple"), lwd=2)

Nhận xét:

  • Biểu đồ ROC cho thấy cả bốn mô hình (LPM, Logit, Probit, Cloglog) đều có đường cong ROC nằm khá xa đường chéo ngẫu nhiên, chứng tỏ các mô hình đều có khả năng phân loại khá tốt. Trong đó, LPM có diện tích dưới đường cong (AUC) cao nhất với 0.845, tiếp theo là Probit (0.843), Logit (0.842) và cuối cùng là Cloglog (0.832).

  • Sự khác biệt về AUC giữa các mô hình không quá lớn, nhưng kết hợp với kết quả so sánh AIC/BIC trước đó, LPM tiếp tục là mô hình thể hiện tốt nhất cả về độ phù hợp và khả năng dự báo, trong khi Cloglog có hiệu suất thấp nhất trong nhóm.

Nhận xét chung:

  • Dựa trên kết quả phân tích, Linear Probability Model (LPM) được đánh giá là mô hình tối ưu khi có giá trị AIC/BIC thấp nhất và chỉ số AUC cao nhất trong biểu đồ ROC, cho thấy mức độ phù hợp và khả năng dự báo tốt. Tuy nhiên, quá trình ước lượng cho thấy hai mô hình Probit và Cloglog gặp cảnh báo “glm.fit: algorithm did not converge”, nghĩa là thuật toán ước lượng không hội tụ – dấu hiệu cho thấy dữ liệu không phù hợp với dạng hàm liên kết này, có thể do phân phối dữ liệu bị lệch mạnh và tồn tại nhiều ngoại lai.

  • Trong bối cảnh này, việc lựa chọn mô hình cần cân nhắc cả đặc điểm dữ liệu lẫn kết quả đánh giá mô hình. Với dữ liệu Duration lệch phải mạnh, hai mô hình Logit và LPM là lựa chọn hợp lý hơn: LPM đơn giản, dễ diễn giải và đã chứng minh hiệu quả theo các tiêu chí AIC/BIC và ROC, trong khi Logit có hàm liên kết mềm hơn, phù hợp hơn với dữ liệu phân phối lệch. Vì vậy, trong thực tiễn, nên ưu tiên Logit và LPM thay vì Probit hay Cloglog để đảm bảo tính ổn định và ý nghĩa thống kê của kết quả phân tích.

Đề xuất khắc phục

  1. SMOTE (Over-sampling) – Phương pháp này tạo thêm dữ liệu cho nhóm thiểu số để cân bằng tỷ lệ mẫu trong tập dữ liệu.
  • Ưu điểm:
    • Cân bằng dữ liệu hiệu quả.
    • Giữ lại toàn bộ dữ liệu gốc.
  • Hạn chế:
    • Có thể tạo ra dữ liệu ảo gây nhiễu.
  1. Undersampling (Giảm mẫu) – Phương pháp này giảm số lượng mẫu ở nhóm chiếm đa số nhằm cân bằng dữ liệu.
  • Ưu điểm:
    • Đơn giản, dễ thực hiện.
    • Giúp giảm khối lượng dữ liệu dư thừa.
  • Hạn chế:
    • Làm mất đi dữ liệu quan trọng, có thể bỏ sót thông tin.

CHƯƠNG 5 KẾT LUẬN

5.1. Kết luận

Qua quá trình phân tích bộ dữ liệu Bank Marketing với nhiều phương pháp thống kê mô tả, kiểm định giả thuyết và các mô hình hồi quy (Linear Probability Model, Logit, Probit và Cloglog), nghiên cứu đã làm rõ tác động của ba yếu tố chính – phương thức liên hệ (Contact), tình trạng hôn nhân (Marital) và thời lượng cuộc gọi (Duration) – tới quyết định đăng ký sản phẩm ngân hàng (Y). Kết quả cho thấy Contact là biến có ảnh hưởng mạnh nhất. Khách hàng được liên hệ qua điện thoại bàn (Telephone) có xác suất đồng ý đăng ký thấp hơn rõ rệt so với khách hàng được gọi qua di động (Cellular), với Odds Ratio (OR) chỉ khoảng 0,30–0,35, cho thấy hình thức liên hệ qua di động hiệu quả hơn hẳn trong việc thuyết phục khách hàng.

Đối với biến Marital, nhóm Single có tỷ lệ đồng ý đăng ký cao hơn 17–34% so với nhóm Divorced (nhóm tham chiếu). Nhóm Married hầu như không khác biệt đáng kể, trong khi nhóm Unknown có xu hướng tăng nhưng thiếu ý nghĩa thống kê do khoảng tin cậy rộng.

Biến Duration – thời lượng cuộc gọi – cũng cho thấy ảnh hưởng quan trọng. Phân tích thống kê và hồi quy chỉ ra rằng cuộc gọi càng kéo dài, xác suất khách hàng đồng ý đăng ký càng cao. Điều này phản ánh việc cuộc trò chuyện dài hơn giúp nhân viên có thời gian giải thích rõ ràng, giải đáp thắc mắc và tạo niềm tin cho khách hàng, từ đó nâng cao hiệu quả chiến dịch.

Khi đưa cả ba biến vào mô hình hồi quy đa biến, độ phù hợp mô hình tăng đáng kể (AIC giảm, khả năng dự báo tốt hơn). Trong đó, Contact vẫn là yếu tố chi phối chính, còn Marital và Duration đóng vai trò bổ sung, giúp mô hình dự báo sát thực tế hơn và gợi ý chiến lược tiếp cận khách hàng hiệu quả.

5.2. Khuyến nghị

Dựa trên kết quả nghiên cứu, nhóm đưa ra các khuyến nghị sau để nâng cao hiệu quả chiến dịch marketing ngân hàng:

  • Ưu tiên liên hệ khách hàng qua di động (Cellular).
    • Các phân tích cho thấy liên hệ qua điện thoại bàn làm giảm mạnh khả năng khách hàng đồng ý đăng ký. Vì vậy, ngân hàng cần:

    • Tập trung nguồn lực cho cuộc gọi qua di động.

    • Cập nhật và chuẩn hóa cơ sở dữ liệu, đảm bảo số điện thoại di động của khách hàng được đầy đủ và chính xác.

  • Tận dụng nhóm khách hàng Single.
    • Nhóm khách hàng này phản hồi tích cực hơn với chiến dịch. Ngân hàng nên:
    • Thiết kế thông điệp và ưu đãi phù hợp với nhóm Single.
    • Xây dựng các gói sản phẩm hấp dẫn (ví dụ: tài khoản cá nhân, thẻ ưu đãi, dịch vụ ngân hàng số) để khuyến khích họ đăng ký.
  • Tối ưu thời lượng cuộc gọi (Duration).
    • Kết quả nghiên cứu chỉ ra rằng cuộc gọi dài hơn mang lại tỷ lệ thành công cao hơn. Ngân hàng nên:
    • Đào tạo nhân viên telesales để khai thác nội dung hiệu quả trong cuộc gọi, duy trì cuộc trò chuyện đủ lâu để khách hàng nắm rõ sản phẩm.
    • Tránh các cuộc gọi quá ngắn, chỉ mang tính thông báo, vì điều này ít tạo cơ hội thuyết phục khách hàng.
  • Kết hợp cả ba yếu tố để xây dựng chiến dịch tối ưu.
    • Trong khi Contact là yếu tố quyết định, Duration giúp nâng cao hiệu quả cuộc gọi, còn Marital cho phép tinh chỉnh thông điệp tiếp cận. Sự kết hợp hợp lý của ba yếu tố này sẽ giúp tối đa hóa tỷ lệ thành công của chiến dịch marketing ngân hàng.

TÀI LIỆU THAM KHẢO

  1. Moro, S., Laureano, R., & Cortez, P. (2014). Using data mining for bank direct marketing: An application of the CRISP-DM methodology. European Research on Management and Business Economics, 20(1), 1–7.

  2. Ahmed, S., Rehman, F. U., & Malik, M. I. (2020). Factors influencing the adoption of digital banking in Pakistan: An application of logistic and cloglog models. Journal of Financial Services Marketing, 25(3), 145–157.

  3. Basu, S., Roy, A., & Bhattacharya, M. (2021). Determinants of online purchase behavior in India: Evidence from a logistic regression analysis. Journal of Retailing and Consumer Services, 59, 102394.

  4. Nguyễn, T. L., Trần, M. H., & Lê, Q. A. (2021). Các yếu tố ảnh hưởng đến quyết định tham gia bảo hiểm y tế tự nguyện tại Việt Nam: Ứng dụng mô hình Logit và Probit. Tạp chí Khoa học Kinh tế, 38(2), 55–67.

  5. Wang, Y., Li, H., & Zhang, J. (2022). Consumer credit decision-making in China: A comparative study of Logit, Probit, and Cloglog models. Journal of Asian Economics, 81, 101498.