Thị trường viễn thông và dịch vụ công nghệ là một trong những nhóm ngành đi đầu trong sự phát triển hóa của đất nước. Tuy nhiên việc phát triển mạnh cũng sẽ đi kèm với những sự cạnh tranh mặc định thông qua sự cạnh tranh khốc liệt khi tốc độ tăng trưởng người dùng mới chững lại và thị trường dần trở nên bão hòa.Trong bối cảnh đó, việc xây dựng và tạo lập khách hàng mới và tiềm năng là vô cùng khó khăn cho các doanh nghiệp viễn thông vì nó sẽ đòi hỏi chi phí marketing khá cao. Tuy nhiên một cách luôn đảm bảo để doanh nghiệp luôn hoạt động đó là việc xây dựng uy tín của khách hàng hiện tại. Các doanh nghiệp ngày càng nhận thấy tầm quan trọng của việc giữ chân khách hàng hiện tại, những người không chỉ tạo ra dòng doanh thu ổn định mà còn có khả năng lan tỏa giá trị thương hiệu thông qua hành vi giới thiệu tích cực. Theo nhiều nghiên cứu, chi phí để thu hút một khách hàng mới thường cao gấp 5 đến 10 lần so với việc duy trì một khách hàng hiện tại, chính vì lẽ đó việc phân tích các yếu tố ảnh hưởng đến quyết định rời bỏ dịch vụ của khách hàng hiện tại trở nên đặc biệt quan trọng đối với mỗi doanh nghiệp dịch vụ viễn thông. Do vậy, việc nghiên cứu đề tài “ các yếu tố ảnh hưởng đến quyết định rời bỏ dịch vụ của khách hàng ” là cơ sở để nhìn nhận và từ đó xây dựng các chính sách chăm sóc, giữ chân khách hàng hiệu quả và phù hợp hơn cho các doanh nghiệp.
Mục tiêu tổng quát
Nghiên cứu nhằm xác định và lượng hóa mức độ tác động của các yếu tố liên quan đến dịch vụ, hợp đồng và đặc điểm khách hàng đối với quyết định rời bỏ dịch vụ (churn). Trên cơ sở đó, đề tài hướng đến việc xây dựng mô hình dự báo khả năng rời bỏ của khách hàng và đề xuất các giải pháp phù hợp nhằm hỗ trợ doanh nghiệp trong việc giữ chân khách hàng hiệu quả.
Mục tiêu cụ thể
Phân tích và mô tả từng biến trong bộ dữ liệu rồi từ đó phân tích các biến phụ thuộc sâu vào hành vi quyết định rời bỏ dịch vụ viễn thông của khách hàng.
Xây dựng các mô hình đã học Logistic, Probit, Cloglog…để dự báo khả năng rời bỏ của khách hàng; đồng thời đánh giá hiệu quả của mô hình thông qua các chỉ tiêu thống kê như độ chính xác (accuracy)…
Đưa ra các đề xuất chiến lược kinh doanh dựa trên kết quả mô hình, nhằm giúp doanh nghiệp giảm thiểu tỷ lệ khách hàng rời bỏ và nâng cao chất lượng dịch vụ.
Đối tượng nghiên cứu
Đối tượng nghiên cứu chính trong đề tài là biến định tính Hành vi rời bỏ dịch vụ (Churn) của khách hàng với các biến độc lập kèm theo như gender (giới tính), SeniorCitizen ( người cao tuổi), married ( tình trạng hôn nhân), phoneService (sử dụng dịch điện thoại), internetservice (loại dịch vụ internet), supportservice (hỗ trợ các dịch vụ), contract (hợp đồng đăng kí sử dụng), paymentmethod (phương thức thanh toán).
Phạm vi nghiên cứu
Bộ dữ liệu nghiên cứu bao gồm 7043 quan sát và 9 biến sau khi đã được chọn lọc để phân tích, mỗi biến đại diện cho các thông tin liên quan đến dịch vụ viễn thông và đặc điểm khách hàng.
Bài tiểu luận sử dụng phương pháp nghiên cứu thống kê để phân tích Hành vi rời bỏ dịch vụ (Churn) của khách hàng dựa trên các biến ảnh hưởng thông qua các công cụ thống kê mô tả (bảng tần số, biểu đồ, các chỉ số đo lường) và từ đó sử dụng các mô hình hồi quy logit, probit, cloglog để đánh giá hiệu suất mô hình.
Phân phối Bernoulli là mô hình xác suất nền tảng cho các biến ngẫu nhiên rời rạc chỉ nhận hai giá trị. Một thí nghiệm Bernoulli là một quá trình ngẫu nhiên có kết cục được phân loại vào một trong hai nhóm đối lập nhau, quy ước là “thành công” và “thất bại”.
Một biến ngẫu nhiên Bernoulli \(X\) được định nghĩa bằng cách gán giá trị số cho các kết quả của thí nghiệm. Theo quy ước:
\(X=1\) nếu kết quả là “thành công”.
\(X=0\) nếu kết quả là “thất bại”.
Phân phối xác suất của \(X\) được đặc trưng hoàn toàn bởi một tham số duy nhất \(p\), là xác suất xảy ra “thành công”, với \(0 \le p \le 1\). Do đó: * \(P(X=1) = p\) * \(P(X=0) = 1-p\)
Hai xác suất này có thể được biểu diễn một cách súc tích thông qua Hàm khối lượng xác suất (Probability Mass Function - PMF): \[ f(k; p) = P(X = k) = p^k (1-p)^{1-k} \quad \text{với } k \in \{0, 1\} \] Công thức này cung cấp một cách tổng quát để tính xác suất cho cả hai kết quả, là nền tảng cho việc xây dựng hàm hợp lý (likelihood function) trong các mô hình thống kê.
Phân phối Nhị thức là một mô hình xác suất rời rạc, được ứng dụng để mô tả số lần xuất hiện của một sự kiện cụ thể trong một số lượng thử nghiệm cố định.
Một biến ngẫu nhiên \(X\) được gọi là tuân theo phân phối Nhị thức, ký hiệu \(X \sim B(n, p)\), nếu nó là tổng số “thành công” thu được từ việc lặp lại n lần một thí nghiệm Bernoulli độc lập. Mỗi thử nghiệm này phải có cùng một xác suất thành công là p.
Hàm khối lượng xác suất (PMF) của phân phối Nhị thức, dùng để tính xác suất có được chính xác k lần thành công, được định nghĩa bởi công thức:
\[ P(X = k) = \frac{n!}{k!(n-k)!} p^k (1-p)^{n-k}, \quad \text{với } k \in \{0, 1, ..., n\} \]
Ước lượng hợp lý cực đại (MLE) là một phương pháp thống kê nhằm tìm giá trị tham số \(\theta\) sao cho xác suất xảy ra của tập dữ liệu quan sát là lớn nhất, dựa trên hàm phân phối xác suất giả định.
Hàm Hợp lý (Likelihood Function):
Cho một mẫu ngẫu nhiên \(x_1, x_2, \dots, x_n\) từ một phân phối có hàm xác suất (hoặc mật độ) \(f(x|\theta)\), hàm hợp lý \(L(\theta | \mathbf{x})\) được định nghĩa là xác suất đồng thời của việc quan sát được mẫu dữ liệu đó, được xem như một hàm của tham số \(\theta\):
\[ L(\theta | \mathbf{x}) = \prod_{i=1}^{n} f(x_i | \theta) \]
Hàm Hợp lý Logarit (Log-Likelihood Function): Để thuận tiện cho việc tìm điểm cực đại, người ta thường sử dụng logarit của hàm hợp lý. Việc cực đại hóa hàm hợp lý tương đương với việc cực đại hóa hàm hợp lý logarit:
\[ \ell(\theta | \mathbf{x}) = \log(L(\theta | \mathbf{x})) = \sum_{i=1}^{n} \log(f(x_i | \theta)) \] Ước lượng MLE: Ước lượng hợp lý cực đại của \(\theta\), ký hiệu là \(\hat{\theta}_{MLE}\), là giá trị làm tối đa hóa hàm hợp lý (hoặc hàm hợp lý logarit). Giá trị này thường được tìm bằng cách giải phương trình đạo hàm của hàm hợp lý logarit theo tham số bằng không.
GLM ( Generalized Linear Model ) là một mô hình hồi quy mở rộng từ hồi quy tuyến tính truyền thống, cho phép mô hình hóa nhiều loại biến phụ thuộc: nhị phân, đếm, liên tục dương,…
GLM gồm 3 thành phần chính:
Thành phần Ngẫu nhiên (Random Component):
Thành phần này chỉ định phân phối xác suất cho biến phụ thuộc \(Y\), với điều kiện các biến độc lập đã cho. Phân phối này phải thuộc họ phân phối mũ (exponential family), bao gồm nhiều phân phối quen thuộc như Normal, Binomial, Poisson, Gamma, v.v. Thành phần này xác định cấu trúc phương sai của \(Y\).
Thành phần Hệ thống (Systematic Component):
Đây là một tổ hợp tuyến tính của các biến độc lập và ký hiệu là \(\eta\) (eta). \[ \eta = \beta_0 + \beta_1X_1 + \dots + \beta_kX_k \] Thành phần này giống hệt như vế phải của một mô hình hồi quy OLS thông thường.
Hàm liên kết (Link Function):
Là một hàm \(g(\cdot)\) kết nối giá
trị kỳ vọng của biến phụ thuộc, \(\mu =
E(Y)\), với thành phần hệ thống \(\eta\). \[
g(\mu) = \eta = \beta_0 + \beta_1X_1 + \dots + \beta_kX_k \]
Ví dụ tình huống:
Giả sử bạn muốn dự đoán xác suất một khách hàng mua sản phẩm (Yes = 1,
No = 0) dựa trên số lần họ truy cập website (visits) và số
email quảng cáo đã nhận (emails).
Ta xây dựng một mô hình GLM như sau:
Biến phụ thuộc: customer_response (0 hoặc 1)
Biến độc lập: visits, emails
Phân phối của Y: Bernoulli
Hàm liên kết: logit
Thành phần Hệ thống (Systematic Component) \[ \eta = \beta_0 + \beta_1 \cdot visits + \beta_2 \cdot emails \]
Thành phần Ngẫu nhiên (Random Component) Biến
purchase tuân theo phân phối Bernoulli, thuộc họ phân phối
hàm mũ.
Hàm Liên kết (Link Function) Sử dụng hàm logit:
\[
g(\mu) = \log\left( \frac{\mu}{1 - \mu} \right)
\]
với \(\mu = E[Y] = \text{xác suất mua
hàng}\)
Hàm liên kết (logit)
Hàm logistic sử dụng logit – log của odds (tỷ số xác suất), được định nghĩa như sau:
\[ \text{logit}(p_i) = \log\left(\frac{p_i}{1 - p_i} \right) \] Trong đó: \[ p_i = \frac{1}{1 + e^{-\eta_i}} = \frac{e^{\eta_i}}{1 + e^{\eta_i}} \] Log-likelihood của mô hình logistic với dữ liệu nhị phân
\[ \ell(\beta) = \sum_{i=1}^{n} \left[ y_i \log(p_i) + (1 - y_i) \log(1 - p_i) \right] \] Diễn giải
Hàm liên kết (probit)
Hàm probit sử dụng hàm phân phối tích lũy chuẩn chuẩn hóa \(\Phi\) làm nghịch đảo của liên kết:
\[ \Phi^{-1}(p_i) = \eta_i = X_i \beta \] Với:
\(\Phi\) là hàm phân phối tích lũy chuẩn chuẩn hóa:
\[ \Phi(z) = \int_{-\infty}^{z} \frac{1}{\sqrt{2\pi}} \exp\left(-\frac{t^2}{2}\right) dt \] Hàm xác suất
\[ p_i = \Phi(\eta_i) = \Phi(X_i \beta) \] Hàm Log-Likelihood
\[ \ell(\beta) = \sum_{i=1}^{n} \left[ y_i \log(\Phi(X_i \beta)) + (1 - y_i) \log(1 - \Phi(X_i \beta)) \right] \]
Trong phân tích hồi quy nhị phân, ngoài mô hình logit và probit, ta còn có mô hình cloglog thích hợp khi xác suất xảy ra sự kiện gần 0 hoặc gần 1 không đối xứng.Mô hình cloglog sử dụng hàm liên kết:
\[ g(p) = \log(-\log(1 - p)) \] trong đó \(p = P(Y = 1 | X)\) là xác suất của biến phụ thuộc nhị phân.
Khi đó, mô hình tuyến tính tổng quát có dạng:
\[ \log(-\log(1 - p)) = \beta_0 + \beta_1 X_1 + \dots + \beta_k X_k \] Ngược lại, ta có:
\[ p = 1 - \exp(-\exp(\beta_0 + \beta_1 X_1 + \dots + \beta_k X_k)) \] So sánh cụ thể giữa các mô hình: Logit - Probit - Cloglog
| Đặc điểm | Logit | Probit | Cloglog |
|---|---|---|---|
| Hàm liên kết (link) | \(\log\left(\frac{p}{1 - p}\right)\) | \(\Phi^{-1}(p)\) | \(\log(-\log(1 - p))\) |
| Phân phối nền tảng | Logistic | Chuẩn (normal) | Gumbel (phân phối cực trị) |
| Đối xứng của hàm liên kết | Có | Có | Không |
| Cách ước lượng | Ước lượng tối đa xác suất (MLE) | Ước lượng tối đa xác suất (MLE) | Ước lượng tối đa xác suất (MLE) |
| Ý nghĩa thực tiễn | Biến đổi log-odds | Biến đổi sang điểm z chuẩn hóa | Biến đổi log(-log(1-p)) tương ứng với rủi ro tích lũy |
| Tính chất hàm liên kết | Đối xứng quanh \(p=0.5\) | Đối xứng quanh \(p=0.5\) | Không đối xứng, dốc nhanh khi p gần 0 hoặc 1 |
| Ưu điểm | Dễ hiểu, phổ biến, tính toán nhanh | Dựa trên giả định phân phối chuẩn | Phù hợp với dữ liệu có xác suất lệch hoặc sự kiện hiếm |
| Nhược điểm | Không phù hợp nếu xác suất lệch | Tính toán có thể phức tạp hơn | Ít phổ biến, khó diễn giải trực tiếp hệ số |
Ma trận nhầm lẫn là một công cụ phổ biến để đánh giá hiệu quả của các mô hình phân loại, đặc biệt trong bài toán phân loại nhị phân. Ma trận này biểu diễn số lượng dự đoán đúng và sai của mô hình theo từng loại nhãn.
| Dự đoán: Positive (P) | Dự đoán: Negative (N) | |
|---|---|---|
| Thực tế: Positive (P) | True Positive (TP) | False Negative (FN) |
| Thực tế: Negative (N) | False Positive (FP) | True Negative (TN) |
Trong đó:
Giải thích các chỉ số dùng trong MTNL
Accuracy (Độ chính xác): Tỷ lệ dự đoán đúng trên tổng số
mẫu
\[
\text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN}
\]
Precision (Độ chính xác dương): Tỷ lệ dự đoán Positive
đúng trên tổng số dự đoán Positive
\[
\text{Precision} = \frac{TP}{TP + FP}
\]
Recall (Độ nhạy, Sensitivity): Tỷ lệ dự đoán Positive
đúng trên tổng số mẫu thực tế Positive
\[
\text{Recall} = \frac{TP}{TP + FN}
\]
F1-score: Trung bình điều hòa của Precision và
Recall
\[
F1 = 2 \times \frac{\text{Precision} \times
\text{Recall}}{\text{Precision} + \text{Recall}}
\]
Tập dữ liệu được sử dụng trong phân tích này nhằm khảo sát biến phụ thuộc Hành vi rời bỏ dịch vụ (Churn) của khách hàng trong lĩnh vực viễn thông. Dữ liệu được thu thập từ Thư viện Dữ liệu UCI sau khi đã được chọn lọc bao gồm thông tin chi tiết về các khách hàng cá nhân, lịch sử đăng ký và sử dụng dịch vụ của họ. Bộ dữ liệu bao gồm 7043 quan sát và 9 biến được xét. Cụ thể được trình bày như sau:
Thông tin nhân khẩu học:
gender: Giới tính của khách hàng
(Female/Male)
SeniorCitizen: Khách hàng có phải là người cao tuổi
hay không (Yes/No)
married: Tình trạng hôn nhân (Yes/No)
Thông tin về dịch vụ đã đăng ký:
PhoneService: Khách hàng có sử dụng dịch vụ điện
thoại hay không (Yes/No).
InternetService: Loại dịch vụ Internet mà khách hàng
sử dụng (DSL, FIBER).
SupportService: Khách hàng được dịch vụ hỗ trợ kỹ
thuật hay không (Yes/No).
Thông tin tài khoản và hợp đồng:
Contract: Loại hợp đồng khách hàng đăng ký (short time/
long time).PaymentMethod: Phương thức thanh toán mà khách hàng sử
dụng (cash/bank).Biến mục tiêu của nghiên cứu là Churn.
Dựa trên tập dữ liệu này, nghiên cứu sẽ tiến hành phân tích để tìm ra
các yếu tố có tác động mạnh mẽ nhất đến quyết định Churn
của khách hàng. Toàn bộ các biến trong bài tiểu luận được trình bày sẽ
thuộc dạng biến định tính hoặc nhị phân, đây là ưu điểm trong phân tích
dữ liệu định tính.
df <- read.csv("C:/Users/Admin/Documents/PHÂN TÍCH DỮ LIỆU ĐỊNH TÍNH/data churn.csv", stringsAsFactors = FALSE)
Đây là bước hiển thị cấu trúc của bộ dữ liệu và xem sơ qua về một vài dòng đầu và cuối tiêu biểu của bộ dữ liệu
str(df)
## 'data.frame': 7043 obs. of 9 variables:
## $ gender : chr "Female" "Male" "Male" "Male" ...
## $ SeniorCitizen : chr "No" "No" "No" "No" ...
## $ married : chr "Yes" "No" "No" "No" ...
## $ PhoneService : chr "No" "Yes" "Yes" "No" ...
## $ InternetService: chr "DSL" "DSL" "DSL" "DSL" ...
## $ SupportService : chr "No" "No" "No" "Yes" ...
## $ Contract : chr "short time " "long time " "short time " "long time " ...
## $ PaymentMethod : chr "cash " "cash " "cash " "bank " ...
## $ Churn : chr "No" "No" "Yes" "No" ...
head(df)
## gender SeniorCitizen married PhoneService InternetService SupportService
## 1 Female No Yes No DSL No
## 2 Male No No Yes DSL No
## 3 Male No No Yes DSL No
## 4 Male No No No DSL Yes
## 5 Female No No Yes FIBER No
## 6 Female No No Yes FIBER No
## Contract PaymentMethod Churn
## 1 short time cash No
## 2 long time cash No
## 3 short time cash Yes
## 4 long time bank No
## 5 short time cash Yes
## 6 short time cash Yes
tail(df)
## gender SeniorCitizen married PhoneService InternetService SupportService
## 7038 Female No No Yes DSL No
## 7039 Male No Yes Yes DSL Yes
## 7040 Female No Yes Yes FIBER No
## 7041 Female No Yes No DSL No
## 7042 Male Yes Yes Yes FIBER No
## 7043 Male No No Yes FIBER Yes
## Contract PaymentMethod Churn
## 7038 long time bank No
## 7039 long time cash No
## 7040 long time bank No
## 7041 short time cash No
## 7042 short time cash Yes
## 7043 long time bank No
Bước kiểm tra giá trị còn thiếu
Để tránh sai lệch trong quá trình phân tích, ta sẽ kiểm tra xem bộ dữ liệu có chứa giá trị thiếu (NA) hay không.
colSums(is.na(df))
## gender SeniorCitizen married PhoneService InternetService
## 0 0 0 0 0
## SupportService Contract PaymentMethod Churn
## 0 0 0 0
Ý nghĩa: Qua kết quả kiểm tra có thể thấy trong 9 cột gender, Senior, married, phoneService, InternetService, SupportService, Contract, Paymentmethod, Churn đều không có giá trị bị thiếu, đồng thời điều này có phản ánh rằng bộ dữ liệu đã được xử lý và làm sạch để phù hợp cho phân tích.
Chuyển các biến về dạng factor
Việc chuyển đổi về dạng factor sẽ thông báo cho R rằng một cột dữ liệu cụ thể nên được coi là một biến định tính, chứ không phải là một chuỗi ký tự (character) hay một con số (numeric) đơn thuần.
df$gender <- as.factor(df$gender)
df$SeniorCitizen <- as.factor(df$SeniorCitizen)
df$married <- as.factor(df$married)
df$PhoneService <- as.factor(df$PhoneService)
df$InternetService <- as.factor(df$InternetService)
df$SupportService <- as.factor(df$SupportService)
df$Contract <- as.factor(df$Contract)
df$PaymentMethod <- as.factor(df$PaymentMethod)
df$Churn <- as.factor(df$Churn)
str(df)
## 'data.frame': 7043 obs. of 9 variables:
## $ gender : Factor w/ 2 levels "Female","Male": 1 2 2 2 1 1 2 1 1 2 ...
## $ SeniorCitizen : Factor w/ 2 levels "No","Yes": 1 1 1 1 1 1 1 1 1 1 ...
## $ married : Factor w/ 2 levels "No","Yes": 2 1 1 1 1 1 1 1 2 1 ...
## $ PhoneService : Factor w/ 2 levels "No","Yes": 1 2 2 1 2 2 2 1 2 2 ...
## $ InternetService: Factor w/ 2 levels "DSL","FIBER": 1 1 1 1 2 2 2 1 2 1 ...
## $ SupportService : Factor w/ 2 levels "No","Yes": 1 1 1 2 1 1 1 1 2 1 ...
## $ Contract : Factor w/ 2 levels "long time ","short time ": 2 1 2 1 2 2 2 2 2 1 ...
## $ PaymentMethod : Factor w/ 2 levels "bank ","cash ": 2 2 2 1 2 2 1 2 2 1 ...
## $ Churn : Factor w/ 2 levels "No","Yes": 1 1 2 1 2 2 1 1 2 1 ...
ChurnBiến Churn là biến biểu thị việc khách hàng có rời bỏ
dịch vụ hay không.Đây là biến được xét làm mục tiêu trong bài với hai
trạng thái là Yes (khách hàng đã rời bỏ dịch vụ), No (khách hàng vẫn sử
dụng dịch vụ)
Thống kê tần số và tần suất biến Churn
table_churn <- table(df$Churn)
table_churn
##
## No Yes
## 5174 1869
prop_churn <- prop.table(table_churn)
round(100 * prop_churn, 2)
##
## No Yes
## 73.46 26.54
**Biểu đồ cột và tròn thể hiện trực quan hóa:
barplot(table_churn,
main = "Hành vi rời bỏ dịch vụ viễn thông ",
col = c("lightblue", "salmon"),
xlab = "Churn",
ylab = "Tần số")
pie(table_churn,
main = "Hành vi rời bỏ dịch vụ viễn thông",
col = c("lightblue", "salmon"),
labels = paste(names(table_churn),
" (", round(100 * prop_churn, 1), "%)", sep = ""))
Kết quả mô tả cho thấy trong tổng số 7043 khách hàng quan sát được thì có:
Số người vẫn đang sử dụng dịch vụ (No) gồm 5174 người chiếm 73.5% trong tổng thể
Số người rời bỏ dịch vụ (Yes) gồm 1869 người chiếm 26.5% trong tổng thể
Điều này cho thấy rằng phần lớn khách hàng vẫn duy trì sử dụng dịch vụ, tuy nhiên tỷ lệ rời bỏ hơn 1/4 trong tổng thể vẫn là một con số không mong muốn trong chính sách kinh doanh của mỗi doanh nghiệp. Biểu đồ trục quan hóa cũng cho thấy rõ sự chênh lệch rõ rệt giữa hai nhóm khách hàng “rời bỏ” và “ở lại” thể hiện rằng rủi ro mất khách hàng là hiện hữu.
genderBiến gender là biến phân loại giới tính của khách hàng
được khảo sát. Biến này có hai mức giá trị: “Male” đại diện cho khách
hàng nam và “Female” đại diện cho khách hàng nữ.
Thống kê tần số và tần suất cho biến gender
table_gender <- table(df$gender)
table_gender
##
## Female Male
## 3488 3555
prop_gender <- prop.table(table_gender)
round(100 * prop_gender, 2)
##
## Female Male
## 49.52 50.48
Biểu đồ thể hiện trực quan hóa sự phân bổ giới tính và tỷ trọng của mỗi giới tính trong tổng thể
barplot(table_gender,
main = "Phân loại giới tính",
col = rainbow(length(table_gender)),
xlab = "Giới tính",
ylab = "Tần số")
pie(table_gender,
main = "Phân loại giới tính",
col = rainbow(length(table_gender)),
labels = paste(names(table_gender), "(", round(100 * prop_gender, 1), "%)", sep = ""))
Kết quả cho thấy tỷ lệ khách hàng Nam và Nữ trong bộ dữ liệu khá cân bằng không có sự chênh lệch quá lớn khi sử dụng dịch vụ viễn thông
Có 3488 người thuộc nhóm Female và khách hàng sử dụng viễn thông là nữ chiếm 49.52% trong bộ dữ liệu
Có 3555 người thuộc nhóm Male và khách hàng sử dụng viễn thông là nam chiếm 50.48% trong bộ dữ liệu
SeniorCitizenBiến SeniorCitizen là biến phản ánh việc khách hàng có
thuộc nhóm người cao tuổi hay không. Biến này được mã hóa với hai mức No
(khách hàng không phải người cao tuổi) và Yes (khách hàng thuộc nhóm
người cao tuổi)
Thống kê bảng tần số và tần suất
table_senior <- table(df$SeniorCitizen)
table_senior
##
## No Yes
## 5901 1142
prop_senior <- prop.table(table_senior)
round(100 * prop_senior, 2)
##
## No Yes
## 83.79 16.21
Biểu đồ cột và tròn cho biến SeniorCityzen
barplot(table_senior,
main = "Nhóm người cao tuổi",
col = c("lightgreen", "darkgreen"),
xlab = "Khách hàng là người cao tuổi",
ylab = "Tần số")
pie(table_senior,
main = "Nhóm người cao tuổi",
col = c("lightgreen", "darkgreen"),
labels = paste(names(table_senior),
" (", round(100 * prop_senior, 1), "%)", sep = ""))
Qua kết quả mô tả cho thấy:
Khách hàng thuộc nhóm người cao tuổi chỉ chiếm 16.2% tương đương với 1142 người.
Khách hàng không thuộc nhóm người cao tuổi chiếm đa số 83.8% tương đương với 5901 người.
Điều này phản ánh rằng tập khách hàng của công ty phần lớn nằm ở nhóm trung niên hoặc trẻ tuổi, những đối tượng có xu hướng sử dụng dịch vụ Internet, điện thoại và công nghệ nhiều hơn. Biểu đồ tròn và cột cũng thể hiện trực quan hóa sự chênh lệch rõ rệt giữa hai mức đối tượng.
marriedBiến married là biến phản ánh tình trạng hôn nhân của
khách hàng. Biến này được mã hóa dưới dạng chuỗi với hai giá trị “Yes”
(khách hàng đã kết hôn) và “No” ( khách hàng chưa kết hôn)
Thống kê mô tả tần só và tần suất biến married
table_married <- table(df$married)
table_married
##
## No Yes
## 3641 3402
prop_married <- prop.table(table_married)
round(100 * prop_married, 2)
##
## No Yes
## 51.7 48.3
Qua kết quả mô tả cho thấy:
Tình trạng khách hàng đã kết hôn chiếm 48.3%, tương ứng với 3402 người.
Tình trạng khách hàng chưa kết hôn chiếm 51.7%, tương ứng với 3641 người.
Điều này cho thấy tỷ lệ giữa hai nhóm khách hàng về tình trạng hôn nhân là tương đối cân bằng, không có sự chênh lệch lớn như một số biến nhân khẩu học khác, nghĩa là dịch vụ của công ty được sử dụng kể cả khi khách hàng có gia đình hoặc chưa
Biểu đồ cột và tròn cho biến married
barplot(table_married,
main = "Tình trạng hôn nhân",
col = c("lightblue", "orange"),
xlab = "Tình trạng hôn nhân",
ylab = "Tần số")
pie(table_married,
main = "Tình trạng hôn nhân",
col = c("lightblue", "orange"),
labels = paste(names(table_married),
" (", round(100 * prop_married, 1), "%)", sep = ""))
PhoneServiceBiến PhoneService là biến phản ánh khách hàng có sử dụng
dịch vụ điện thoại với hai mức mã hóa Yes ( khách hàng có sử dụng dịch
vụ điện thoại) và No (khách hàng không sử dụng dịch vụ điện thoại)
Thống kê mô tả biến PhoneService
table_phone <- table(df$PhoneService)
table_phone
##
## No Yes
## 682 6361
prop_phone <- prop.table(table_phone)
round(100 * prop_phone, 2)
##
## No Yes
## 9.68 90.32
Kết quả mô tả cho thấy:
Có 6361 khách hàng tướng ứng với 90.32% của tổng thể là sử dụng dịch vụ điện thoại.
Chỉ có 682 khách hàng chiếm tướng ứng với 9.68% là không sử dụng dịch vụ điện thoại.
Như vậy, phần lớn khách hàng lựa chọn sử dụng dịch vụ điện thoại cố định,ngược lại tỷ lệ khách hàng không sử dụng dịch vụ này khá thấp (chưa tới 10%), điều này cho thấy nhóm khách hàng không sử dụng dịch vụ điện thoại sẽ là những nhóm đối tượng ít liên lạc hoặc trong nhóm tuổi người cao tuổi không có nhu cầu liên lạc nhiều.
Biểu đồ cột và tròn cho biến
barplot(table_phone,
main = "Sử dụng dịch vụ điện thoại",
col = c("lightpink", "steelblue"),
xlab = "PhoneService",
ylab = "Tần số")
pie(table_phone,
main = "Sử dụng dịch vụ điện thoại ",
col = c("lightpink", "steelblue"),
labels = paste(names(table_phone),
" (", round(100 * prop_phone, 1), "%)", sep = ""))
InternetServiceBiến InternetService là biến phản ánh loại dịch vụ
Internet mà khách hàng sử dụng gồm DSL(sử dụng đường dây điện thoại cố
định) thường dùng cho nhu cầu cơ bản và FIBER ( sợi quang học) dùng cho
yêu cầu hiện đại hơn với tốc độ truyền dẫn ổn định và cao.
Thống kê tần số và tần suất biến
table_internet <- table(df$InternetService)
table_internet
##
## DSL FIBER
## 3947 3096
prop_internet <- prop.table(table_internet)
round(100 * prop_internet, 2)
##
## DSL FIBER
## 56.04 43.96
Biểu đồ cột và tròn cho biến
barplot(table_internet,
main = "Dịch vụ Internet",
col = c("skyblue", "orange", "gray"),
xlab = "Loại dịch vụ Internet",
ylab = "Tần số")
pie(table_internet,
main = "Dịch vụ Internet",
col = c("skyblue", "orange", "gray"),
labels = paste(names(table_internet),
" (", round(100 * prop_internet, 1), "%)", sep = ""))
Kết quả mô tả cho thấy cũng có chênh lệch nhẹ giữa hai nhóm, phản ánh sự khác biệt mức độ tiếp cận công nghệ hoặc nhu cầu sử dụng khách hàng khi sử dụng internet:
Có 3947 khách hàng tương ứng với 56.04% là đang sử dụng dịch vụ Internet DSL một loại hình truyền thống với tốc độ trung bình, đáp ứng nhu cầu cơ bản của khách hàng
Có 3096 khách hàng tương ứng 43.96% là sử dụng dịch vụ Internet cáp quang (Fiber optic) một loại hình internet với tốc độ cao và ổn định, sử dụng mượn mà cho khách hàng có nhu cầu sử dụng internet nhiều
SupportServiceBiến SupportService là biến phản ánh việc khách hàng có
được dịch vụ hỗ trợ kỹ thuật, chăm sóc khách hàng do công ty cung cấp
hay không với hai mức ý nghĩa Yes ( khách hàng có được dịch vụ hỗ trợ)
và No (khách hàng không được dịch vụ hỗ trợ)
Thống kê mô tả biến
table_support <- table(df$SupportService)
table_support
##
## No Yes
## 4999 2044
prop_support <- prop.table(table_support)
round(100 * prop_support, 2)
##
## No Yes
## 70.98 29.02
Kết quả mô tả cho thấy:
Có 2044 khách hàng tương ứng 29.02% là có được sử dụng dịch vụ hỗ trợ.
Có 4999 khách hàng tương ứng 70.98% là không được sử dụng dịch vụ hỗ trợ.
Như vậy có thể thấy chỉ khoảng gần 1/3 khách hàng là được sử dụng dịch vụ hỗ trợ từ công ty viễn thông, phần lớn là không được sử dụng hoặc không có nhu cầu sử dụng, tuy nhiên đây cũng là việc đánh giá sự hài lòng của khách hàng thông qua công tác chăm sóc dịch vụ sử dụng tại công ty viễn thông.
Biểu đồ cho biến
barplot(table_support,
main = "Dịch vụ hỗ trợ khách hàng",
col = c("lightblue", "lightgreen"),
xlab = "Được sử dụng dịch vụ hỗ trợ",
ylab = "Tần số")
pie(table_support,
main = "Dịch vụ hỗ trợ khách hàng",
col = c("lightblue", "lightgreen"),
labels = paste(names(table_support),
" (", round(100 * prop_support, 1), "%)", sep = ""))
ContractBiến Contract thể hiện loại hợp đồng dịch vụ mà khách
hàng đăng kí sử dụng gồm “short time” (hợp đồng ngắn hạn) và “long time”
(hợp đồng dài hạn)
Thống kê mô tả biến
table_contract <- table(df$Contract)
table_contract
##
## long time short time
## 3168 3875
prop_contract <- prop.table(table_contract)
round(100 * prop_contract, 2)
##
## long time short time
## 44.98 55.02
Biểu đồ trực quan hóa
barplot(table_contract,
main = "Loại hợp đồng đăng kí",
col = c("darkorange", "skyblue"),
xlab = "Loại hợp đồng",
ylab = "Tần số")
pie(table_contract,
main = " Loại hợp đồng đăng kí",
col = c("darkorange", "skyblue"),
labels = paste(names(table_contract),
" (", round(100 * prop_contract, 1), "%)", sep = ""))
Kết quả mô tả cho thấy phần lớn khách hàng trong tập dữ liệu có xu hướng lựa chọn hợp đồng ngắn hạn:
Có 3875 khách hàng tương ứng chiếm 55.02%, đang sử dụng hợp đồng ngắn hạn (short time)
Có 3168 khách hàng tương ứng chiếm 44.98%, sử dụng hợp đồng dài hạn (long time)
Tỷ lệ chênh lệch giữa hai nhóm hợp đồng không cao tuy nhiên hợp đồng ngắn hạn vẫn được lựa chọn nhiều hơn, có thể là do nhu cầu sử dụng để trải nghiệm hoặc cũng có thể để khách hàng trải nghiệm xem xét trong lựa chọn công ty viễn thông phù hợp.
PaymentMethodBiến PaymentMethod thể hiện phương thức thanh toán mà
khách hàng đang sử dụng như trả bằng tiền mặt ( cash) hoặc hình thức
chuyển khoản ( bank)
Thống kê mô tả biến
table_payment <- table(df$PaymentMethod)
table_payment
##
## bank cash
## 3066 3977
prop_payment <- prop.table(table_payment)
round(100 * prop_payment, 2)
##
## bank cash
## 43.53 56.47
Kết quả mô tả cho thấy phần lớn khách hàng vẫn lựa chọn hình thức thanh toán truyền thống bằng tiền mặt, tuy nhiên việc thanh toán bằng tiền mặt hay chuyển khoản ngân hàng cũng không chênh lẹch quá lớn cho thấy rằng việc thanh toán nào của khách hàng cũng được đáp ứng, cụ thể như sau:
Có 3977 khách hàng sử dụng phương thức thanh toán tiền mặt (cash) chiếm 56.47%,
Có 3066 khách hàng sử dụng phương thức thanh toán qua ngân hàng (bank) chiếm 43.53%
Biểu đồ trực quan cho biến
barplot(table_payment,
main = "Phương thức thanh toán",
col = c("lightcoral", "lightblue"),
xlab = "Phương thức",
ylab = "Tần số")
pie(table_payment,
main = "Phương thức thanh toán",
col = c("lightcoral", "lightblue"),
labels = paste(names(table_payment),
" (", round(100 * prop_payment, 1), "%)", sep = ""))
ChurnKiểm định Chi-bình phương về tính độc lập là một kiểm định giả thuyết
thống kê được sử dụng để xác định xem có mối quan hệ hay sự liên quan có
ý nghĩa thống kê giữa hai biến hay không. Trong phân tích này ta sẽ đi
kiểm tra các biến độc lập gender,
SeniorCitizen, married,
PhoneService, InternetService,
SupportService, Contract,
PaymentMethod có ảnh hưởng đến hành vi rời bỏ dịch vụ viễn
thông Churn của khách hàng không ?
\[ \chi^2 = \sum \frac{(O_{ij} - E_{ij})^2}{E_{ij}} \]
Trong đó:
Giả thuyết kiểm định:
Kết quả kết luận dựa vào p-value:
Kiểm định biến Churn và biến gender
Giả thuyết kiểm định:
chisq.test(table(df$Churn, df$gender))
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: table(df$Churn, df$gender)
## X-squared = 0.48408, df = 1, p-value = 0.4866
Kết quả p-value = 0.4866 > 0.05, ta không bác bỏ H0 → Không có bằng chứng thống kê để kết luận rằng giới tính có liên quan đến hành vi rời bỏ dịch vụ.
Kiểm định biến Churn và biến SeniorCitizen
Giả thuyết kiểm định:
chisq.test(table(df$Churn, df$SeniorCitizen))
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: table(df$Churn, df$SeniorCitizen)
## X-squared = 159.43, df = 1, p-value < 2.2e-16
Kết quả p-value < 2.2e-16 < 0.05, ta bác bỏ H0 → kết luận rằng nhóm tuổi cao có ảnh hưởng đến hành vi rời bỏ dịch vụ viễn thông
Kiểm định biến Churn và biến married
Giả thuyết kiểm định:
chisq.test(table(df$Churn, df$married))
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: table(df$Churn, df$married)
## X-squared = 158.73, df = 1, p-value < 2.2e-16
Kết quả p-value < 2.2e-16 < 0.05, ta bác bỏ H0 → kết luận rằng tình trạng hôn nhân khách hàng có ảnh hưởng đến hành vi rời bỏ dịch vụ viễn thông.
Kiểm định biến Churn và biến PhoneService
Giả thuyết kiểm định:
chisq.test(table(df$Churn, df$PhoneService))
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: table(df$Churn, df$PhoneService)
## X-squared = 0.91503, df = 1, p-value = 0.3388
Kết quả p-value = 0.3388 > 0.05, ta không bác bỏ H0 → Không có bằng chứng thống kê để kết luận rằng việc khách hàng có đăng kí sử dụng điện thoại có liên quan đến hành vi rời bỏ dịch vụ viễn thông.
Kiểm định biến Churn và biến InternetService
Giả thuyết kiểm định:
chisq.test(table(df$Churn, df$InternetService))
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: table(df$Churn, df$InternetService)
## X-squared = 666.81, df = 1, p-value < 2.2e-16
Kết quả p-value < 2.2e-16 < 0.05, ta bác bỏ H0 → kết luận rằng việc khách hàng sử dụng loại internet nào sẽ có ảnh hưởng đến hành vi rời bỏ dịch vụ viễn thông.
Kiểm định biến Churn và SupportService
Giả thuyết kiểm định:
chisq.test(table(df$Churn, df$SupportService))
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: table(df$Churn, df$SupportService)
## X-squared = 190.17, df = 1, p-value < 2.2e-16
Kết quả p-value < 2.2e-16 < 0.05, ta bác bỏ H0 → kết luận rằng việc khách hàng được sử dụng dịch vụ hỗ trợ từ công ty hay không sẽ có ảnh hưởng đến hành vi rời bỏ dịch vụ viễn thông.
Kiểm định biến Churn và Contract
Giả thuyết kiểm định:
chisq.test(table(df$Churn, df$Contract))
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: table(df$Churn, df$Contract)
## X-squared = 1154, df = 1, p-value < 2.2e-16
Kết quả p-value < 2.2e-16 < 0.05, ta bác bỏ H0 → kết luận rằng việc khách hàng đăng kí loại hợp đồng dài hạn hay ngắn hạn sẽ có ảnh hưởng đến hành vi rời bỏ dịch vụ viễn thông.
Kiểm định biến Churn và biến PaymentMethod
Giả thuyết kiểm định:
chisq.test(table(df$Churn, df$PaymentMethod))
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: table(df$Churn, df$PaymentMethod)
## X-squared = 309.35, df = 1, p-value < 2.2e-16
Kết quả p-value < 2.2e-16 < 0.05, ta bác bỏ H0 → kết luận rằng hình thức thanh toán của khách hàng sẽ có ảnh hưởng đến hành vi rời bỏ dịch vụ viễn thông.
Nhận xét: Sau khi kiểm định Chi bình phương giữa các biến
độc lập với biến phụ thuộc Churn thì có biến SeniorCitizen,
married, InternetService, SupportService, Contract, PaymentMethod đều có
liên quan hành vi rời bỏ dịch vụ của khách hàng.
Như ở phần 3.3 đã phân tích rằng có 6 biến độc lập sẽ có mối quan hệ đến hành vi rời bỏ dịch vụ của khách hàng, tuy nhiên theo sự chọn lọc phù hợp thưc tế, trong bài nghiên cứu em chỉ phân tích các biến có mặt ý nghĩa ảnh hưởng như biến nhóm người cao tuổi sẽ ảnh hưởng như thế nào đến việc rời bỏ dịch vụ (SeniorCitizen),biến khách hàng có nhận được dịch vụ hỗ trợ ảnh hưởng như thế nào đến việc rời bỏ dịch vụ (SupportService), đây được coi là hai biến tiêu biểu mà em muốn đề sâu trong việc mô tả hai biến này ảnh hưởng còn các biến phụ thuộc còn lại có thể chưa giải thích nhiều về việc khách hàng rời bỏ dịch vụ
Tạo bảng tần số chéo
table_senior <- table(df$Churn, df$SeniorCitizen)
table_senior
##
## No Yes
## No 4508 666
## Yes 1393 476
round(prop.table(table_senior, margin = 1) * 100, 2)
##
## No Yes
## No 87.13 12.87
## Yes 74.53 25.47
Nhận xét
Dữ liệu trong bảng chéo được giải thích như sau : hàng
đại diện cho biến Churn (Hành vi Rời bỏ) và cột đại diện
cho biến SeniorCitizen (Tình trạng có phải là người cao tuổi hay
không).Trong nhóm khách hàng không rời bỏ dịch vụ, phần lớn là người
không cao tuổi, chiếm 87.13% (4508/5174), trong khi chỉ có 12.87%
(666/5174) là người cao tuổi.Ngược lại, trong nhóm khách hàng đã rời bỏ
dịch vụ, tỷ lệ người cao tuổi tăng lên đáng kể, chiếm 25.47% (476/1869),
so với 74.53% (1393/1869) là người không cao tuổi. Từ đó cho thấy tỷ lệ
khách hàng cao tuổi rời bỏ dịch vụ (25.47%) cao hơn đáng kể so với nhóm
không rời bỏ dịch vụ (12.87%), cho thấy người cao tuổi có xu hướng rời
bỏ dịch vụ nhiều hơn
Biểu đồ thể hiện mối quan hệ giữa hai biến
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
ggplot(df, aes(x = factor(SeniorCitizen), fill = Churn)) +
geom_bar(position = "dodge") +
labs(
x = "SeniorCitizen",
y = "Số lượng khách hàng",
fill = "Churn",
title = "Hành vi rời bỏ dựa vào nhóm cao tuổi"
) +
theme_minimal()
Xét thêm về RR và OR giữa hai biến
library(epitools)
mat_senior_correct <- matrix(c(4508, 1393, 666, 476),
nrow = 2,
byrow = TRUE,
dimnames = list(
SeniorCitizen = c("Không phải người cao tuổi", "Là người cao tuổi"),
Churn = c("No", "Yes")
))
print(mat_senior_correct)
## Churn
## SeniorCitizen No Yes
## Không phải người cao tuổi 4508 1393
## Là người cao tuổi 666 476
rr_senior <- riskratio(mat_senior_correct)
rr_senior$measure
## risk ratio with 95% C.I.
## SeniorCitizen estimate lower upper
## Không phải người cao tuổi 1.000000 NA NA
## Là người cao tuổi 1.765694 1.625802 1.917622
or_senior <- oddsratio(mat_senior_correct)
or_senior$measure
## odds ratio with 95% C.I.
## SeniorCitizen estimate lower upper
## Không phải người cao tuổi 1.000000 NA NA
## Là người cao tuổi 2.312753 2.026 2.638846
Nhận xét
Biến tham chiếu ở đây là nhóm khách hàng “Không phải người cao tuổi” (SeniorCitizen = No)
Sau khi tính toán Relative Risk (RR) và Odds Ratio (OR) để so sánh xác suất và khả năng rời bỏ dịch vụ (Churn) theo nhóm tuổi, kết quả cho thấy cả RR và OR đều lớn hơn 1. Điều đó có nghĩa là khách hàng là người cao tuổi có xu hướng rời bỏ dịch vụ nhiều hơn nhóm khách hàng không phải người cao tuổi.
Kết quả nguy cơ tương đối (RR) là 1.765694 , tức là xác suất rời bỏ dịch vụ của nhóm khách hàng cao tuổi cao gấp 1.77 lần so với nhóm khách hàng không phải người cao tuổi. Hay nói cách khác, nguy cơ một khách hàng cao tuổi rời bỏ dịch vụ cao hơn 76.57% so với một khách hàng không phải là người cao tuổi. Với khoảng tin cậy 95%, chúng ta tin tưởng rằng nguy cơ một khách hàng cao tuổi rời bỏ dịch vụ sẽ cao hơn từ 1.63 đến 1.92 lần so với một khách hàng không phải là người cao tuổi.
Kết quả tỷ số chênh (OR) là 2.312753, nghĩa là odds rời bỏ dịch vụ của nhóm khách hàng cao tuổi cao gấp 2.31 lần so với nhóm khách hàng không phải người cao tuổi.
Tạo bảng tần số chéo
table_service <- table(df$Churn, df$SupportService)
table_service
##
## No Yes
## No 3440 1734
## Yes 1559 310
round(prop.table(table_service, margin = 1) * 100, 2)
##
## No Yes
## No 66.49 33.51
## Yes 83.41 16.59
Nhận xét
Dữ liệu trong bảng chéo được giải thích như sau : hàng
đại diện cho biến Churn (Hành vi Rời bỏ) và cột đại diện
cho biến SupportService (Khách hàng có được sử dụng dịch vụ hỗ
trợ).Trong nhóm khách hàng không rời bỏ dịch vụ, phần lớn là những người
không sử dụng dịch vụ hỗ trợ, chiếm 66.49% (3440/5174), trong khi chỉ
33.51% (1734/5174) là những người có sử dụng hỗ trợ.Ngược lại, trong
nhóm khách hàng đã rời bỏ dịch vụ, tỷ lệ không được hỗ trợ chiếm đến
83.41% (1559/1869) so với tỷ lệ 16.59% (310/1869) là những người được hỗ
trợ. Từ đó có thể thấy rằng tỷ lệ khách hàng rời bỏ dịch vụ ở nhóm không
có hỗ trợ cao hơn rất đáng kể so với nhóm có hỗ trợ song cho thấy rằng
việc được cung cấp dịch vụ hỗ trợ kỹ thuật có thể góp phần làm giảm hành
vi rời bỏ dịch vụ của khách hàng.
Biểu đồ thể hiện mối quan hệ giữa hai biến
library(ggplot2)
ggplot(df, aes(x = factor(SupportService), fill = Churn)) +
geom_bar(position = "dodge") +
labs(
x = "SupportService",
y = "Số lượng khách hàng",
fill = "Churn",
title = "Hành vi rời bỏ dựa vào dịch vụ hỗ trợ"
) +
theme_minimal()
Xét thêm về RR và OR giữa hai biến
library(epitools)
mat_service_correct <- matrix(c(3440, 1559, 1734, 310),
nrow = 2,
byrow = TRUE,
dimnames = list(
SupportService = c("Không được sử dụng dịch vụ", "Được sử dụng dịch vụ"),
Churn = c("No", "Yes")
))
print(mat_service_correct)
## Churn
## SupportService No Yes
## Không được sử dụng dịch vụ 3440 1559
## Được sử dụng dịch vụ 1734 310
rr_service <- riskratio(mat_service_correct)
rr_service$measure
## risk ratio with 95% C.I.
## SupportService estimate lower upper
## Không được sử dụng dịch vụ 1.0000000 NA NA
## Được sử dụng dịch vụ 0.4863152 0.4354443 0.543129
or_service <- oddsratio(mat_service_correct)
or_service$measure
## odds ratio with 95% C.I.
## SupportService estimate lower upper
## Không được sử dụng dịch vụ 1.0000000 NA NA
## Được sử dụng dịch vụ 0.3946925 0.3443954 0.4510793
Nhận xét
Biến tham chiếu ở đây là nhóm khách hàng “Không hỗ trợ” (SupportService = “No”)
Kết quả nguy cơ tương đối (RR) là 0.4863 tức là xác suất rời bỏ dịch vụ của nhóm khách hàng được hỗ trợ chỉ bằng 48.63% so với nhóm khách hàng không được hỗ trợ hay nói cách khác nguy cơ rời bỏ dịch vụ của nhóm khách hàng được hỗ trợ giảm gần một nửa (48.63%) so với nhóm khách hàng không được hỗ trợ.
Kết quả tỷ số chênh (OR) là 0.3947, nghĩa là odds rời bỏ dịch vụ của nhóm được hỗ trợ chỉ bằng khoảng 39.47% so với nhóm không được hỗ trợ.
Từ đó có thể thấy cả hai chỉ số đều nhỏ hơn 1 và khoảng tin cậy 95% của chúng đều không chứa 1. Điều này chứng minh rằng khi khách hàng được hỗ trợ dịch vụ sẽ ít rời bỏ dịch vụ viễn thông đang dùng hơn so với khách hàng không được hỡ trợ.
Để có cái nhìn toàn diện về tác động đồng thời của các yếu tố lên
hành vi rời bỏ, chúng ta xây dựng một mô hình hồi quy logistic đầy đủ.
Mô hình này bao gồm tất cả các biến độc lập định tính đã được xem xét:
SeniorCitizen, married,
InternetService, SupportService,
Contract, và PaymentMethod.
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 rời bỏ dịch vụ (Churn). Cụ thể, mô
hình có dạng:
\[ \log\left(\frac{p}{1 - p}\right) = \beta_0 + \beta_1 \cdot \text{SeniorCitizen} + \beta_2 \cdot \text{married} + \beta_3 \cdot \text{InternetService} + \beta_4 \cdot \text{SupportService} + \beta_5 \cdot \text{Contract} + \beta_6 \cdot \text{PaymentMethod} \] Trong đó, các hệ số \(\beta\) được ước lượng bằng phương pháp Hợp lý Cực đại (Maximum Likelihood Estimation). Ý nghĩa thống kê của mỗi biến sẽ được đánh giá thông qua giá trị p-value tương ứng với hệ số của nó, với mức ý nghĩa thông thường là 5% (\(\alpha = 0.05\)).
df$Churn_numeric <- ifelse(df$Churn == "Yes", 1, 0)
factor_vars <- c("SeniorCitizen", "married", "InternetService",
"SupportService", "Contract", "PaymentMethod")
for (var in factor_vars) {
df[[var]] <- as.factor(df[[var]])
}
model_logit <- glm(Churn_numeric ~ SeniorCitizen + married + InternetService +
SupportService + Contract + PaymentMethod,
data = df,
family = binomial(link = "logit"))
summary(model_logit)
##
## Call:
## glm(formula = Churn_numeric ~ SeniorCitizen + married + InternetService +
## SupportService + Contract + PaymentMethod, family = binomial(link = "logit"),
## data = df)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -3.05909 0.09939 -30.778 < 2e-16 ***
## SeniorCitizenYes 0.28854 0.07867 3.668 0.000245 ***
## marriedYes -0.30801 0.06532 -4.715 2.42e-06 ***
## InternetServiceFIBER 1.18449 0.06506 18.205 < 2e-16 ***
## SupportServiceYes -0.33085 0.07923 -4.176 2.97e-05 ***
## Contractshort time 1.81641 0.08466 21.454 < 2e-16 ***
## PaymentMethodcash 0.51743 0.06833 7.572 3.67e-14 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 8150.1 on 7042 degrees of freedom
## Residual deviance: 6352.9 on 7036 degrees of freedom
## AIC: 6366.9
##
## Number of Fisher Scoring iterations: 5
Nhận xét kết quả ước lượng mô hình
Dựa trên kết quả từ bảng trên, phương trình hồi quy logistic ước lượng cụ thể có dạng như sau:
\[ \log\left(\frac{p}{1-p}\right) = -3.06 + 0.29 \cdot \text{SeniorCitizen} - 0.31 \cdot \text{married} + 1.18 \cdot \text{InternetService} - 0.33 \cdot \text{SupportService} + 1.82 \cdot \text{Contract} + 0.52 \cdot \text{PaymentMethod} \] Nhận xét cụ thể từng biến
Hệ số của SeniorCitizen (\(\hat{\beta}_1 = 0.28854\)): Hệ số
này dương và cho thấy khi các yếu tố khác không đổi, một khách hàng là
người cao tuổi có khả năng (log-odds) rời bỏ dịch vụ
viễn thông cao hơn so với một khách hàng không phải người cao
tuổi.
Hệ số của married (\(\hat{\beta}_2 = -0.30801\)): Hệ số
âm và cho thấy khi các yếu tố khác không đổi, một khách hàng đã kết hôn
có khả năng rời bỏ dịch vụ viễn thông thấp hơn so với một khách hàng
chưa kết hôn.
Hệ số của InternetService (\(\hat{\beta}_3 = 1.18449\)): Hệ số
dương và điều này chỉ ra rằng, khi các yếu tố khác không đổi, việc sử
dụng dịch vụ Internet Cáp quang (FIBER) làm tăng mạnh khả năng khách
hàng rời bỏ dịch vụ viễn thông so với việc sử dụng dịch vụ DSL.
Hệ số của SupportService (\(\hat{\beta}_4 = -0.33085\)): Hệ số
âm và điều này cho thấy, khi các yếu tố khác không đổi, khách hàng có
đăng ký và được sử dụng dịch vụ hỗ trợ kỹ thuật tại công ty sẽ có khả
năng rời bỏ thấp hơn so với những người không được sử dụng dịch vụ hỗ
trợ.
Hệ số của Contract (\(\hat{\beta}_5 = 1.81641\)): Hệ số
dương lớn nhất trong mô hình và điều này khẳng định rằng, khi các yếu tố
khác không đổi, khách hàng sử dụng hợp đồng ngắn hạn có khả năng rời bỏ
dịch vụ viễn thông cao hơn rất nhiều so với khách hàng sử dụng hợp đồng
dài hạn.
Hệ số của PaymentMethod (\(\hat{\beta}_6 = 0.51743\)): Hệ số
dương và cho thấy rằng khi các yếu tố khác không đổi, khách hàng thanh
toán bằng tiền mặt có khả năng rời bỏ dịch vụ viễn thông tại công ty cao
hơn so với khách hàng thanh toán qua ngân hàng.
-> Tất cả các biến được đưa vào mô hình đều là những yếu tố dự báo có ý nghĩa thống kê ( đều bé hơn mức 0.05) đối với hành vi rời bỏ dịch vụ viễn thông của khách hàng. Trong đó Sự chênh lệch lớn giữa Null deviance (8150.1) và Residual deviance (6352.9) khẳng định rằng mô hình tổng thể là có ý nghĩa thống kê, nghĩa là các biến độc lập mà chúng ta đưa vào có tác động thực sự đến khả năng rời bỏ của khách hàng.
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 rời bỏ dịch vụ (Churn = Yes) dựa trên các biến độc
lập: SeniorCitizen (tình trạng cao tuổi),
married (tình trạng hôn nhân), InternetService
(dịch vụ Internet), SupportService (dịch vụ hỗ trợ),
Contract (loại hợp đồng), và PaymentMethod
(phương thức thanh toán).
Mô hình có dạng:
\[ P(\text{Churn}_i = 1 \mid \mathbf{X}_i) = \Phi(\beta_0 + \beta_1 \cdot \text{SeniorCitizen}_i + \beta_2 \cdot \text{married}_i + \dots + \beta_k \cdot X_{ki}) \] Trong đó:
\(p\) là xác suất dự báo một
khách hàng sẽ rời bỏ dịch vụ (Churn = Yes)
\(\Phi^{-1}(p)\) là giá trị Probit, đại diện cho giá trị z-score tương ứng với xác suất \(p\).
Các biến SeniorCitizen, married,… là
các biến giả (0/1) so với nhóm tham chiếu của chúng.
model_probit <- glm(Churn_numeric ~ SeniorCitizen + married + InternetService +
SupportService + Contract + PaymentMethod,
data = df,
family = binomial(link = "probit"))
summary(model_probit)
##
## Call:
## glm(formula = Churn_numeric ~ SeniorCitizen + married + InternetService +
## SupportService + Contract + PaymentMethod, family = binomial(link = "probit"),
## data = df)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.75340 0.05264 -33.310 < 2e-16 ***
## SeniorCitizenYes 0.17777 0.04675 3.803 0.000143 ***
## marriedYes -0.17803 0.03787 -4.701 2.59e-06 ***
## InternetServiceFIBER 0.69674 0.03759 18.535 < 2e-16 ***
## SupportServiceYes -0.17221 0.04467 -3.855 0.000116 ***
## Contractshort time 1.01845 0.04474 22.765 < 2e-16 ***
## PaymentMethodcash 0.29314 0.03925 7.469 8.10e-14 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 8150.1 on 7042 degrees of freedom
## Residual deviance: 6353.9 on 7036 degrees of freedom
## AIC: 6367.9
##
## Number of Fisher Scoring iterations: 5
Nhận xét
Dựa trên kết quả phân tích phương trình hồi quy Probit ước lượng với các hệ số cụ thể có dạng như sau:
\[ \Phi^{-1}(p) = -1.753 + 0.178 \cdot \text{SeniorCitizen} - 0.178 \cdot \text{married} + 0.697 \cdot \text{InternetService} - 0.172 \cdot \text{SupportService} + 1.018 \cdot \text{Contract} + 0.293 \cdot \text{PaymentMethod} \]
Ta có thể thấy Mô hình Probit đã củng cố các kết luận rút ra từ mô
hình Logit. Nó xác nhận rằng các yếu tố như
hợp đồng ngắn hạn, sử dụng Internet Cáp quang, là người cao tuổi, và thanh toán bằng tiền mặt
làm tăng khả năng rời bỏ, trong khi việc
đã kết hôn và có dịch vụ hỗ trợ làm giảm khả năng rời bỏ
thông qua dấu của các hệ số dấu(+/-). Có thể thấy dấu(+/-) trong mô hình
probit hoàn toàn trùng khớp với mô hình Logit. Đồng thời tất cả các biến
được đưa vào mô hình đều là những yếu tố dự báo có ý nghĩa thống kê (
đều bé hơn mức 0.01) đối với hành vi rời bỏ dịch vụ viễn thông của khách
hàng
Mô hình CLogLog sử dụng hàm liên kết Complementary Log-Log để mô hình hóa xác suất rời bỏ dịch vụ. Xác suất một khách hàng rời bỏ dịch vụ được tính bằng công thức:
\[ p_i = P(Y_i = 1) = 1 - \exp(-\exp(X_i\beta)) \]
Từ đó, mô hình CLogLog với đầy đủ các biến độc lập có dạng: \[ \log(-\log(1 - p_i)) = \beta_0 + \beta_1 \cdot \text{SeniorCitizen} + \beta_2 \cdot \text{married} + \beta_3 \cdot \text{InternetService} + \beta_4 \cdot \text{SupportService} + \beta_5 \cdot \text{Contract} + \beta_6 \cdot \text{PaymentMethod} \] Trong đó:
\(p\) là xác suất dự báo một
khách hàng sẽ rời bỏ dịch vụ (Churn = Yes).
\(\log(-\log(1 - p))\) là giá trị trên thang đo CLogLog.
Các biến SeniorCitizen, married,… là
các biến giả (0/1) so với nhóm tham chiếu của chúng.
model_cloglog <- glm(Churn_numeric ~ SeniorCitizen + married + InternetService +
SupportService + Contract + PaymentMethod,
data = df,
family = binomial(link = "cloglog"))
# Xem kết quả tóm tắt chi tiết của mô hình
summary(model_cloglog)
##
## Call:
## glm(formula = Churn_numeric ~ SeniorCitizen + married + InternetService +
## SupportService + Contract + PaymentMethod, family = binomial(link = "cloglog"),
## data = df)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -2.96764 0.08717 -34.043 < 2e-16 ***
## SeniorCitizenYes 0.19281 0.05670 3.401 0.000672 ***
## marriedYes -0.23437 0.05046 -4.645 3.40e-06 ***
## InternetServiceFIBER 0.93529 0.05265 17.764 < 2e-16 ***
## SupportServiceYes -0.28857 0.06534 -4.417 1.00e-05 ***
## Contractshort time 1.60348 0.07777 20.618 < 2e-16 ***
## PaymentMethodcash 0.40876 0.05482 7.457 8.88e-14 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 8150.1 on 7042 degrees of freedom
## Residual deviance: 6359.4 on 7036 degrees of freedom
## AIC: 6373.4
##
## Number of Fisher Scoring iterations: 5
Nhận xét
Dựa trên kết quả từ mô hình CLogLog, phương trình ước lượng mô tả mối quan hệ giữa các biến độc lập và xác suất rời bỏ dịch vụ có dạng như sau:
\[ \log(-\log(1 - p)) = -2.968 + 0.193 \cdot \text{SeniorCitizen} - 0.234 \cdot \text{married} + 0.935 \cdot \text{InternetService} - 0.289 \cdot \text{SupportService} + 1.603 \cdot \text{Contract} + 0.409 \cdot \text{PaymentMethod} \]
Mô hình CLogLog, mặc dù dựa trên một giả định khác về sự đối xứng của xác suất, vẫn đi đến những kết luận tương tự như mô hình Logit và Probit về các yếu tố ảnh hưởng đến hành vi rời bỏ, nghĩa là dấu (+/-) của tất cả các hệ số trong mô hình CLogLog vẫn hoàn toàn tương đồng với mô hình Logit và Probit. Tất cả các biến độc lập đều có p-value rất nhỏ (nhỏ hơn 0.001), cho thấy chúng đều là những yếu tố dự báo có ý nghĩa thống kê cao trong cả ba mô hình. Điều này làm khẳng định thêm về chiều hướng tác động của từng biến, các yếu tố làm tăng và giảm khả năng rời bỏ vẫn giữ nguyên.
Sau khi hồi quy ba mô hình Logit, Probit và CLogLog, bước cuối cùng em sẽ đánh giá hiệu suất của cả ba mô hình. Quá trình này em sẽ thực hiện qua ba bước chính: Đầu tiên, mô hình được dùng để dự đoán xác suất rời bỏ dịch vụ của từng khách hàng bằng hàm predict() với tùy chọn type = “response”. Tiếp theo, các xác suất này được chuyển thành nhãn phân loại (0 = ‘Ở lại’, 1 = ‘Rời bỏ’) dựa trên ngưỡng quyết định 0.5, nếu xác suất ≥ 0.5 thì được phân loại là rời bỏ. Cuối cùng, là tính độ chính xác của mô hình.
df$pred_logit <- predict(model_logit, type = "response")
df$pred_probit <- predict(model_probit, type = "response")
df$pred_cloglog <- predict(model_cloglog, type = "response")
df$pred_class_logit <- ifelse(df$pred_logit >= 0.5, 1, 0)
df$pred_class_probit <- ifelse(df$pred_probit >= 0.5, 1, 0)
df$pred_class_cloglog <- ifelse(df$pred_cloglog >= 0.5, 1, 0)
acc_logit <- mean(df$pred_class_logit == df$Churn_numeric)
acc_probit <- mean(df$pred_class_probit == df$Churn_numeric)
acc_cloglog <- mean(df$pred_class_cloglog == df$Churn_numeric)
c("Accuracy - Logistic" = acc_logit,
"Accuracy - Probit" = acc_probit,
"Accuracy - CLogLog" = acc_cloglog)
## Accuracy - Logistic Accuracy - Probit Accuracy - CLogLog
## 0.7748119 0.7748119 0.7748119
Nhận xét kết quả thu được
Sau khi áp dụng cả ba mô hình vào bộ dữ liệu Churn, ta
thu được kết quả phân loại với độ chính xác (Accuracy) như sau:
-> Kết quả đánh giá cho thấy cả ba mô hình đều đạt được độ chính xác rất cao và tương đồng (khoảng 77.5%). Điều này một lần nữa khẳng định rằng, đối với bộ dữ liệu này, việc lựa chọn giữa Logit, Probit hay CLogLog không tạo ra sự khác biệt đáng kể về mặt hiệu suất dự báo tổng thể. Đồng thời, khi so sánh chỉ số AIC của ba mô hình (Logit: 6366.9, Probit: 6367.9, CLogLog: 6373.4), chúng ta thấy rằng các giá trị này không chênh lệch nhau một cách đáng kể.Mô hình Logit có chỉ số AIC thấp nhất, cho thấy nó là mô hình có độ phù hợp tốt nhất về mặt lý thuyết.
Nghiên cứu được thực hiện với mục tiêu xác định các yếu tố chính ảnh
hưởng đến hành vi rời bỏ dịch vụ (Churn) của khách hàng
viễn thông thông qua 8 biến độc lập.Bằng cách sử dụng các phương pháp
thống kê mô tả, phân tích hai biến và xây dựng mô hình hồi quy logistic,
probit, clolog đa biến, nghiên cứu đã đi đến các kết quả chính như
sau:
Các yếu tố làm tăng đáng kể khả năng rời bỏ dịch vụ bao gồm: việc
khách hàng sử dụng hợp đồng ngắn hạn (Contract),
sử dụng dịch vụ Internet Cáp quang FIBER
(InternetService), là người cao tuổi
(SeniorCitizen), và thanh toán bằng tiền mặt
(PaymentMethod).
Các yếu tố có tác dụng làm giảm nguy cơ rời bỏ bao gồm: việc
khách hàng đã kết hôn (married) và đăng ký
dịch vụ hỗ trợ kỹ thuật(SupportService).
Từ các kết quả nghiên cứu, có thể rút ra kết luận rằng hành vi rời bỏ dịch vụ của khách hàng không phải là một hiện tượng ngẫu nhiên mà là kết quả của sự tác động tổng hợp từ nhiều yếu tố liên quan đến hợp đồng, dịch vụ và đặc điểm nhân khẩu học. Có thể nói để một công ty viến thông có thể giữ chân khách hàng được hay không thì các điều kiện công ty đáp ứng là chưa đủ mà nó còn đòi hỏi về mặt nhu cầu mà khách hàng lựa chọn.
Bộ dữ liệu được sử dụng chỉ được lấy từ một công ty trong ngành viễn thông, đây còn là bộ dữ liệu chéo không phản ánh được sự thay đổi trong hành vi của khách hàng theo thời gian. Ngoài ra, dữ liệu còn thiếu các biến quan trọng khác có thể ảnh hưởng đến quyết định rời bỏ như mức độ hài lòng, số lần khiếu nại, hay thông tin về đối thủ cạnh tranh.
Nghiên cứu chỉ tập trung vào các mô hình hồi quy nhị phân truyền thống được sử dụng trong dữ liệu định tính, chưa đi đào sâu các mô hình cụ thể hơn để có được những mô hình tối ưu nhất.
Đề tài chưa đánh giá được hết toàn bộ dịch vụ viễn thông toàn quốc vì các biến trong mô hình chỉ được xét ở hai mức phạm trù cơ bản, bộ dữ liệu toàn bộ được xét là dữ liệu định tính nên chưa xuất hiện biến định lượng nên chưa đánh giá được toàn bộ
Chiến lược về Hợp đồng và Cam kết: Do hợp đồng ngắn hạn là yếu tố rủi ro lớn nhất, công ty nên tập trung vào việc chuyển đổi nhóm khách hàng này sang các hợp đồng dài hạn hơn. Các chương trình khuyến mãi theo chu kỳ (ví dụ: giảm giá sau 6 tháng, nâng cấp miễn phí sau 1 năm) có thể được triển khai để tăng giá trị cảm nhận và khuyến khích sự cam kết lâu dài.
Rà soát và Tối ưu hóa Dịch vụ Cốt lõi: Tỷ lệ rời bỏ cao ở nhóm khách hàng sử dụng Internet Cáp quang là một tín hiệu cảnh báo. Doanh nghiệp cần tiến hành điều tra sâu hơn về nguyên nhân: liệu có phải do vấn đề kỹ thuật (độ ổn định), giá cả (kém cạnh tranh), hay do quy trình lắp đặt và hỗ trợ ban đầu chưa tốt? Việc tối ưu hóa chất lượng dịch vụ cốt lõi này là cực kỳ cấp thiết.
Phân khúc và Chăm sóc Khách hàng Chủ động: Mô hình đã chỉ ra các phân khúc có rủi ro cao (người cao tuổi) và các yếu tố bảo vệ (có dịch vụ hỗ trợ) vì vậy doanh nghiệp nên thiết kế các gói cước và kênh giao tiếp đơn giản, dễ sử dụng hơn cho nhóm khách hàng cao tuổi. Đồng thời chủ động quảng bá và thậm chí cung cấp các gói hỗ trợ kỹ thuật cơ bản miễn phí như một phần của dịch vụ, thay vì coi nó là một tùy chọn trả phí. Điều này không chỉ giải quyết vấn đề kỹ thuật mà còn thể hiện sự quan tâm, giúp tăng cường mối quan hệ với khách hàng.