Cấu trúc của bộ dữ liệu
ccp <- read.csv("D:/BAI TAP/PTDLDT/Customer-Churn-Prediction.csv", header = TRUE)
str(ccp)
## 'data.frame': 7043 obs. of 12 variables:
## $ customerID : chr "7590-VHVEG" "5575-GNVDE" "3668-QPYBK" "7795-CFOCW" ...
## $ gender : chr "Female" "Male" "Male" "Male" ...
## $ Dependents : chr "No" "No" "No" "No" ...
## $ tenure : int 1 34 2 45 2 8 22 10 28 62 ...
## $ PhoneService : chr "No" "Yes" "Yes" "No" ...
## $ InternetService : chr "DSL" "DSL" "DSL" "DSL" ...
## $ Contract : chr "Month-to-month" "One year" "Month-to-month" "One year" ...
## $ PaperlessBilling: chr "Yes" "No" "Yes" "No" ...
## $ PaymentMethod : chr "Electronic check" "Mailed check" "Mailed check" "Bank transfer (automatic)" ...
## $ MonthlyCharges : num 29.9 57 53.9 42.3 70.7 ...
## $ TotalCharges : num 29.9 1889.5 108.2 1840.8 151.7 ...
## $ Churn : chr "No" "No" "Yes" "No" ...
Customer-Churn-Prediction.csv là bộ dữ liệu khảo sát
quyết định dừng sử dụng dịch vụ của khách hàng. Bộ dữ liệu này bao gồm
12 biến và 7043 quan sát.
customerID: Mã khách hànggender: Giới tính (bao gồm Male và Female)Dependents: Độc lập kinh tế (No và Yes)tenure: Số tháng đã gắn bó với dịch vụPhoneService: Dịch vụ điện thoại (No và Yes)InternetService: Loại dịch vụ internet (DSL, Fiber
optic và No)Contract: Hạn hợp đồng (Ngắn hạn: Month-to-month; Dài
hạn: One year, Two year)PaperlessBilling: Hóa đơn điện tử (No và Yes)PaymentMethod: Phương thức thanh toán (Tự động: Bank
transfer, Credit card; Thủ công: Electronic check, Mailed check)MonthlyCharges: Số tiền trả hàng thángTotalCharges: Tổng số tiền đã trảChurn: Dừng sử dụng dịch vụ (No và Yes)Kiểm tra dữ liệu bị thiếu
sum(is.na(ccp))
## [1] 11
ccp <- na.omit(ccp)
Kết quả cho thấy bộ dữ liệu này không có giá trị nào bị thiếu và đã sẵn sàng để thực hiện các thao tác tính toán và ước lượng.
library(tidyr)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
# Chuyển hạn hợp đồng thành dài hạn và ngắn hạn
ccp$Contracttype <- ifelse(ccp$Contract == "Month-to-month", "Shortterm", "Longterm")
# Chuyển phương thức thanh toán thành tự động và thủ công
ccp$PaymentMethod <- ifelse(ccp$PaymentMethod %in% c("Mailed check","Electronic check"), "Manual", "Automatic")
# Chuyển tất cả các biến về "factor"
ccp <- ccp %>% mutate(across(c(gender,Dependents,PhoneService,InternetService,Contract,PaperlessBilling,PaymentMethod,Churn,Contracttype), as.factor))
Trong hàm glm, việc chuyển các biến về factor là một
công cụ đơn giản mà hiệu quả do việc các biến thuộc phân loại này sẽ
được glm tự động mã hóa thành biến giả mà không cần phải
tác thêm bất cứ bước nào, điều này khiến việc phân tích dữ liệu trở nên
đỡ rắc rối hơn. Ngoài ra, việc đưa các biến về factor còn giúp hạn chế
lỗi trong quá trình ước lượng các mô hình hồi quy.
ccp$Churn <- relevel(ccp$Churn, ref = "Yes")
levels(ccp$Churn)
## [1] "Yes" "No"
Khi đặt mức ưu tiên của biến phụ thuộc Churn thành Yes,
khi đó glm sẽ mặc định rằng ChurnYes là biến phụ thuộc,
nghĩa là tỷ lệ các khách hàng quyết định ngưng sử dụng dịch vụ.
logit1 <- glm(Churn ~ Dependents + tenure + PhoneService + InternetService + Contracttype + PaperlessBilling + PaymentMethod + MonthlyCharges + TotalCharges, data = ccp, family = binomial(link = "logit"))
summary(logit1)
##
## Call:
## glm(formula = Churn ~ Dependents + tenure + PhoneService + InternetService +
## Contracttype + PaperlessBilling + PaymentMethod + MonthlyCharges +
## TotalCharges, family = binomial(link = "logit"), data = ccp)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 1.349e+00 2.346e-01 5.750 8.91e-09 ***
## DependentsYes 2.332e-01 7.940e-02 2.937 0.003317 **
## tenure 5.560e-02 5.916e-03 9.399 < 2e-16 ***
## PhoneServiceYes 7.514e-01 1.438e-01 5.227 1.72e-07 ***
## InternetServiceFiber optic -9.724e-01 1.317e-01 -7.382 1.56e-13 ***
## InternetServiceNo 5.244e-01 1.857e-01 2.823 0.004758 **
## ContracttypeShortterm -1.013e+00 1.010e-01 -10.030 < 2e-16 ***
## PaperlessBillingYes -4.354e-01 7.304e-02 -5.961 2.50e-09 ***
## PaymentMethodManual -3.073e-01 7.174e-02 -4.284 1.84e-05 ***
## MonthlyCharges -5.533e-03 3.975e-03 -1.392 0.163891
## TotalCharges -2.538e-04 6.717e-05 -3.778 0.000158 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 8143.4 on 7031 degrees of freedom
## Residual deviance: 5969.6 on 7021 degrees of freedom
## AIC: 5991.6
##
## Number of Fisher Scoring iterations: 6
Bên trên là kết quả hồi quy logistic của biến phụ thuộc ChurnYes. Trong đó ta có thể thấy được:
DependentsYes với hệ số hồi quy là 0.2332 và có ý
nghĩa thống kê ở mức ý nghĩa rất cao là 1% cho thấy khách hàng không độc
lập tài chính (DependentsYes) có log-odds (log của tỷ
lệ giữa khách hàng chọn ngưng sử dụng dịch vụ và khách hàng chọn tiếp
tục sử dụng dịch vụ) ngừng dịch vụ cao hơn 0.2332 so với khách hàng độc
lập tài chính (DependentsNo)
tenure với hệ số hồi quy là 0.05566 và có ý nghĩa
thống kê ở mức cao 0% cho thấy với mỗi tháng gắn bó thêm, log-odds ngừng
dịch vụ tăng 0.0556.
PhoneServiceYes với hệ số hồi quy là 0.7514 và có ý
nghĩa thống kê ở mức ý nghĩa 0% cho thấy khách hàng có đăng ký dịch vụ
điện thoại có log-odds ngừng dịch vụ cao hơn 0.7514 so với khách hàng
không đăng ký dịch vụ điện thoại.
InternetServiceFiber optic với hệ số hồi quy là
-0.9724 và có ý nghĩa thống kê ở mức ý nghĩa 0% cho thấy khách hàng sử
dụng Fiber optic có log-odds ngừng dịch vụ thấp hơn 0.9724 so với khách
hàng sử dụng dịch vụ DSL (InternetServiceDSL).
InternetServiceNo với hệ số hồi quy là 0.5244 và có
ý nghĩa thống kê ở mức ý nghĩa 1% cho thấy rằng khách hàng không có dịch
vụ internet có log-odds ngừng dịch vụ cao hơn 0.5244 so với khách hàng
sử dụng dịch vụ DSL (InternetServiceDSL).
ContractShortterm với hệ số hồi quy là -1.013 và có
ý nghĩa thống kê ở mức ý nghĩa 0% cho thấy khách hàng với hợp đồng ngắn
hạn có log-odds ngừng dịch vụ thấp hơn 1.013 so với khách hàng có hợp
đồng dài hạn là ContractLongterm.
PaperlessBillingYes với hệ số hồi quy là -0.4354 và
có ý nghĩa thống kê ở mức 0% cho thấy khách hàng không sử dụng hóa đơn
điện tử có log-odds ngừng dịch vụ thấp hơn 0.4354 so với khách hàng sử
dụng hóa đơn điện tử.
PaymentMethodManual với hệ số hồi quy là -0.3073 và
có ý nghĩa thống kê ở mức ý nghĩa 0% cho thấy được khách hàng sử dụng
phương thức thanh toán thủ công (Electronic check,
Mailed check) có log-odds ngừng dịch vụ thấp hơn 0.3073
so với khách hàng sử dụng phương thức thanh toán tự động.
(PaymentMethodAutomatic).
MonthlyCharges với hệ số hồi quy là -0.005533 cho
thấy với mỗi đơn vị tăng của phí hàng tháng, log-odds ngừng dịch vụ giảm
0.05533. Tuy nhiên giá trị này không có ý nghĩa thống kê đến biến
ChurnYes. Điều này cho thấy không có bằng chứng đủ mạnh
để kết luận nó có tác động riêng lẻ đáng kể đến
ChurnYes khi các biến khác đã được đưa vào mô
hình.
TotalCharges -0.0002538 và có ý nghĩa thống kê ở mức
0% cho thấy với mỗi đơn vị tăng của tổng phí, log-odds ngừng dịch vụ
giảm 0.0002538.
Hệ số chặn (Intercept) với giá trị là 1.349 và có ý nghĩa thống kê ở mức ý nghĩa 0% cho thấy log-odds của ChurnYes là 1.349 khi tất cả các biến giải thích khác bằng 0 hoặc ở mức tham chiếu của chúng.
# Giả sử đây là thông tin của một khách hàng bất kỳ
newcustomer1 <- data.frame(
gender = "Female",
Dependents = "No",
tenure = 2,
PhoneService = "Yes",
InternetService = "Fiber optic",
Contract = "Month-to-month",
PaperlessBilling = "No",
PaymentMethod = "Manual",
MonthlyCharges = 22.3,
TotalCharges = 22.3,
Contracttype = "Shortterm")
# Tính xác suất khách hàng đó ngưng sử dụng dịch vụ
predict(logit1, newdata = newcustomer1, type = "response")
## 1
## 0.4477365
Giả sử rằng một khách hàng có thông tin như sau:
Vậy khi đó, ta có thể dự đoán được xác suất dừng sử dụng dịch vụ của khách hàng đó theo hồi quy logistic là khoảng 44.77365%.
probit1 <- glm(Churn ~ Dependents + tenure + PhoneService + InternetService + Contracttype + PaperlessBilling + PaymentMethod + MonthlyCharges + TotalCharges, data = ccp, family = binomial(link = "probit"))
summary(probit1)
##
## Call:
## glm(formula = Churn ~ Dependents + tenure + PhoneService + InternetService +
## Contracttype + PaperlessBilling + PaymentMethod + MonthlyCharges +
## TotalCharges, family = binomial(link = "probit"), data = ccp)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 8.744e-01 1.361e-01 6.426 1.31e-10 ***
## DependentsYes 1.383e-01 4.501e-02 3.072 0.00213 **
## tenure 2.499e-02 3.040e-03 8.221 < 2e-16 ***
## PhoneServiceYes 4.197e-01 8.266e-02 5.078 3.82e-07 ***
## InternetServiceFiber optic -5.620e-01 7.567e-02 -7.427 1.11e-13 ***
## InternetServiceNo 2.647e-01 1.060e-01 2.497 0.01251 *
## ContracttypeShortterm -5.459e-01 5.494e-02 -9.937 < 2e-16 ***
## PaperlessBillingYes -2.455e-01 4.198e-02 -5.849 4.95e-09 ***
## PaymentMethodManual -1.761e-01 4.126e-02 -4.267 1.98e-05 ***
## MonthlyCharges -4.819e-03 2.324e-03 -2.074 0.03812 *
## TotalCharges -6.325e-05 3.527e-05 -1.793 0.07290 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 8143.4 on 7031 degrees of freedom
## Residual deviance: 5989.7 on 7021 degrees of freedom
## AIC: 6011.7
##
## Number of Fisher Scoring iterations: 6
Bên trên là kết quả hồi quy probit của biến phụ thuộc ChurnYes (Khả năng khách hàng ngưng sử dụng dịch vụ). Trong đó ta có thể thấy được:
DependentsYes với hệ số hồi quy là 0.1383 và có ý
nghĩa thống kê ở mức ý nghĩa ở mức 1% cho thấy khách hàng không độc lập
tài chính (DependentsYes) có khả năng ngừng dịch vụ cao
hơn 0.1383 lần so với khách hàng độc lập tài chính
(DependentsNo)
tenure với hệ số hồi quy là 0.2499 và có ý nghĩa
thống kê ở mức cao 0% cho thấy với mỗi tháng gắn bó thêm, khả năng ngừng
dịch vụ tăng 0.0556.
PhoneServiceYes với hệ số hồi quy là 0.4197 và có ý
nghĩa thống kê ở mức ý nghĩa 0% cho thấy khách hàng có đăng ký dịch vụ
điện thoại có khả năng ngừng dịch vụ cao hơn 0.4197 lần so với khách
hàng không đăng ký dịch vụ điện thoại.
InternetServiceFiber optic với hệ số hồi quy là
-0.562 và có ý nghĩa thống kê ở mức ý nghĩa 0% cho thấy khách hàng sử
dụng Fiber optic có khả năng ngừng dịch vụ thấp hơn 0.9724 so với khách
hàng sử dụng dịch vụ DSL (InternetServiceDSL).
InternetServiceNo với hệ số hồi quy là 0.2647 và có
ý nghĩa thống kê ở mức ý nghĩa 5% cho thấy rằng khách hàng không có dịch
vụ internet có khả năng ngừng dịch vụ cao hơn 0.2647 so với khách hàng
sử dụng dịch vụ DSL (InternetServiceDSL).
ContractShortterm với hệ số hồi quy là -0.5459 và có
ý nghĩa thống kê ở mức ý nghĩa 0% cho thấy khách hàng với hợp đồng ngắn
hạn có khả năng ngừng dịch vụ thấp hơn 0.5459 lần so với khách hàng có
hợp đồng dài hạn là ContractLongterm.
PaperlessBillingYes với hệ số hồi quy là -0.2455 và
có ý nghĩa thống kê ở mức 0% cho thấy khách hàng không sử dụng hóa đơn
điện tử có khả năng ngừng dịch vụ thấp hơn 0.2455 lần so với khách hàng
sử dụng hóa đơn điện tử.
PaymentMethodManual với hệ số hồi quy là -0.1761 và
có ý nghĩa thống kê ở mức ý nghĩa 0% cho thấy được khách hàng sử dụng
phương thức thanh toán thủ công (Electronic check,
Mailed check) có khả năng ngừng dịch vụ thấp hơn 0.1761
so với khách hàng sử dụng phương thức thanh toán tự động.
(PaymentMethodAutomatic).
MonthlyCharges với hệ số hồi quy là -0.004819 và có
ý nghĩa thống kê ở mức ý nghĩa 5% cho thấy với mỗi đơn vị tăng của phí
hàng tháng, khả năng ngừng dịch vụ giảm 0.004819.
TotalCharges -0.00006325 và có ý nghĩa thống kê ở
mức 10% cho thấy với mỗi đơn vị tăng của tổng phí, khả năng ngừng dịch
vụ giảm0.00006325 lần.
Hệ số chặn (Intercept) với giá trị là 0.8744 và có ý nghĩa thống kê ở mức ý nghĩa 0% cho thấy khả năng một khách hàng dừng dịch vụ (ChurnYes) cao hơn 0.8744 lần so với chọn không tiếp tục dịch vụ khi tất cả các biến giải thích khác bằng 0 hoặc ở mức tham chiếu của chúng.
# Giả sử đây là thông tin của một khách hàng bất kỳ
newcustomer <- data.frame(
gender = "Female",
Dependents = "No",
tenure = 2,
PhoneService = "Yes",
InternetService = "Fiber optic",
Contract = "Shortterm",
PaperlessBilling = "No",
PaymentMethod = "Manual",
MonthlyCharges = 22.3,
TotalCharges = 22.3,
Contracttype = "Shortterm")
# Tính xác suất khách hàng đó ngưng sử dụng dịch vụ
predict(probit1, newdata = newcustomer, type = "response")
## 1
## 0.4805878
Giả sử rằng một khách hàng có thông tin như sau:
Vậy khi đó, ta có thể dự đoán được xác suất dừng sử dụng dịch vụ của khách hàng đó theo hồi quy probit là khoảng 48.05878%
cloglog1 <- glm(Churn ~ Dependents + tenure + PhoneService + InternetService + Contracttype + PaperlessBilling + PaymentMethod + MonthlyCharges + TotalCharges, data = ccp, family = binomial(link = "cloglog"))
summary(cloglog1)
##
## Call:
## glm(formula = Churn ~ Dependents + tenure + PhoneService + InternetService +
## Contracttype + PaperlessBilling + PaymentMethod + MonthlyCharges +
## TotalCharges, family = binomial(link = "cloglog"), data = ccp)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 6.343e-01 1.314e-01 4.828 1.38e-06 ***
## DependentsYes 1.275e-01 4.002e-02 3.186 0.00144 **
## tenure 1.383e-02 2.385e-03 5.798 6.72e-09 ***
## PhoneServiceYes 3.289e-01 7.636e-02 4.307 1.65e-05 ***
## InternetServiceFiber optic -5.317e-01 7.185e-02 -7.400 1.37e-13 ***
## InternetServiceNo 1.911e-01 9.959e-02 1.919 0.05505 .
## ContracttypeShortterm -4.571e-01 4.696e-02 -9.732 < 2e-16 ***
## PaperlessBillingYes -2.060e-01 3.856e-02 -5.342 9.17e-08 ***
## PaymentMethodManual -1.535e-01 3.794e-02 -4.046 5.20e-05 ***
## MonthlyCharges -7.043e-03 2.339e-03 -3.011 0.00260 **
## TotalCharges 5.242e-05 2.946e-05 1.779 0.07525 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 8143.4 on 7031 degrees of freedom
## Residual deviance: 6052.4 on 7021 degrees of freedom
## AIC: 6074.4
##
## Number of Fisher Scoring iterations: 7
Bên trên là kết quả của hồi quy cloglog với biến phụ thuộc là ChurnYes. Kết quả hồi quy như sau:
DependentsYes với hệ số hồi quy là 0.1275 và có ý
nghĩa thống kê ở mức ý nghĩa 5% cho thấy khi các yếu tố khách không đổi,
khách hàng độc lập tài chính có tỷ lệ dừng dịch vụ cao hơn khách hàng
không độc lập tài chính 0.1275 lần.
tenure với hệ số hồi quy là 0.01383 và có ý nghĩa
thống kê ở mức ý nghĩa 0% cho thấy rằng với mỗi tháng gắn bó thêm với
dịch vụ, xác suất ngừng dịch vụ tăng lên 0.01383 lần.
PhoneServiceYes với hệ số hồi quy là 0.3289 và có ý
nghĩa thống kê ở mức ý nghĩa 0% cho thấy rằng trong điều kiện các yếu tố
khác không đổi, việc đăng ký dịch vụ điện thoại khiến xác suất ngừng
dịch vụ tăng 0.3289 lần so với không đăng ký.
InternetServiceFiber optic với hệ số hồi quy là
-0.5137 và có ý nghĩa thống kê ở mức ý nghĩa 0% cho thấy rằng trong điều
kiện các yếu tố khách không đổi, khách hàng sử dụng Fiber optic có xác
suất ngừng dịch vụ giảm 0.5137 lần so với khách hàng dùng DSL
InternetServiceNo với hệ số hồi quy là 0.1911 và có
ý nghĩa thống kê ở mức ý nghĩa 10% cho thấy rằng trong điều kiện các yếu
tố khác không đổi, khách hàng chọn không đăng ký dịch vụ Internet có xác
suất ngừng dịch vụ tăng 0.1911 lần so với khách hàng dùng DSL.
ContractLongterm với hệ số hồi quy là 0.4571 và có ý
nghĩa thống kê ở mức ý nghĩa 0% cho thấy rằng trong điều kiện các yếu tố
khác không đổi, khách hàng chọn hợp đồng dài hạn có xác suất ngừng dịch
vụ tăng 0.4571 lần so với khách hàng chọn hợp đồng ngắn hạn
PaperlessBillingYes với hệ số hồi quy là -0.206 và
có ý nghĩa thống kê ở mức ý nghĩa 0% cho thấy trong điều kiện các yếu tố
khác không đổi, khách hàng chọn hóa đơn điện tử có xác suất ngừng dịch
vụ giảm 0.206 lần so với khách hàng không chọn hóa đơn điện tử.
PaymentMethodManual với hệ số hồi quy là -0.1535 và
có ý nghĩa thống kê ở mức ý nghĩa 0%, cho thấy trong điều kiện các yếu
tố khác không đổi thì khách hàng chọn phương thức thanh toán thủ công có
xác suất ngừng dịch vụ thấp hơn các khách hàng chọn thanh toán tự động
là 0.1535 lần.
MonthlyCharges với hệ số hồi quy là -0.007043 và có
ý nghĩa thống kê ở mức ý nghĩa 1% cho thấy được với mỗi đơn vị tăng
trong phí hàng tháng, xác suất dừng dịch vụ giảm xuống 0.007043
lần.
TotalCharges với hệ số hồi quy là 0.00005242 và có ý
nghĩa thống kê ở mức ý nghĩa 10% cho thấy rằng với mỗi đơn vị tăng trong
tổng phí đã thanh toán, xác suất dừng dịch vụ tăng lên 0.0005242
lần.
# Giả sử đây là thông tin của một khách hàng bất kỳ
newcustomer <- data.frame(
gender = "Female",
Dependents = "No",
tenure = 2,
PhoneService = "Yes",
InternetService = "Fiber optic",
Contract = "Shortterm",
PaperlessBilling = "No",
PaymentMethod = "Manual",
MonthlyCharges = 22.3,
TotalCharges = 22.3,
Contracttype = "Shortterm")
# Tính xác suất khách hàng đó ngưng sử dụng dịch vụ
predict(cloglog1, newdata = newcustomer, type = "response")
## 1
## 0.5206988
Giả sử rằng một khách hàng có thông tin như sau:
Vậy khi đó, ta có thể dự đoán được xác suất dừng sử dụng dịch vụ của khách hàng đó theo hồi quy cloglog là khoảng 52.07%
# tạo một biến độc lập khác
ccp$Contract1 <- ifelse(ccp$Contract == "Two year", "two", "nottwo")
ccp$Contract1 <- as.factor(ccp$Contract1) # chuyển về factor để hồi quy
ccp$Contract1 <- relevel(ccp$Contract1, ref = "two")
ccp$Contract2 <- ifelse(ccp$Contract == "One year", "one", "not one")
ccp$Contract2 <- as.factor(ccp$Contract2) # chuyển về factor để hồi quy
ccp$Contract2 <- relevel(ccp$Contract2, ref = "one")
Hồi quy probit cho:
Contract1
ab <- glm(Contract1 ~ Dependents + InternetService + PaymentMethod + MonthlyCharges, data = ccp, family = binomial(link = "probit"))
summary(ab)
##
## Call:
## glm(formula = Contract1 ~ Dependents + InternetService + PaymentMethod +
## MonthlyCharges, family = binomial(link = "probit"), data = ccp)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 3.513914 0.127310 27.601 <2e-16 ***
## DependentsYes -0.389308 0.039237 -9.922 <2e-16 ***
## InternetServiceFiber optic 2.043344 0.078685 25.969 <2e-16 ***
## InternetServiceNo -2.461781 0.093071 -26.451 <2e-16 ***
## PaymentMethodManual 0.643435 0.038351 16.778 <2e-16 ***
## MonthlyCharges -0.048570 0.001867 -26.018 <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: 7744.2 on 7031 degrees of freedom
## Residual deviance: 5761.5 on 7026 degrees of freedom
## AIC: 5773.5
##
## Number of Fisher Scoring iterations: 6
Contract2:
ac <- glm(Contract2 ~ Dependents + InternetService + PaymentMethod + MonthlyCharges, data = ccp, family = binomial(link = "probit"))
summary(ac)
##
## Call:
## glm(formula = Contract2 ~ Dependents + InternetService + PaymentMethod +
## MonthlyCharges, family = binomial(link = "probit"), data = ccp)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 1.668434 0.095698 17.434 < 2e-16 ***
## DependentsYes -0.115496 0.037471 -3.082 0.00205 **
## InternetServiceFiber optic 0.764346 0.062168 12.295 < 2e-16 ***
## InternetServiceNo -0.662982 0.072408 -9.156 < 2e-16 ***
## PaymentMethodManual 0.197665 0.035359 5.590 2.27e-08 ***
## MonthlyCharges -0.016875 0.001423 -11.861 < 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: 7215.8 on 7031 degrees of freedom
## Residual deviance: 6942.5 on 7026 degrees of freedom
## AIC: 6954.5
##
## Number of Fisher Scoring iterations: 5
levels(ccp$Contract) # vậy "Month-to-month" là tham chiếu
## [1] "Month-to-month" "One year" "Two year"
library(nnet)
## Warning: package 'nnet' was built under R version 4.5.1
model <- multinom(Contract ~ Dependents + InternetService + PaymentMethod + MonthlyCharges, data = ccp)
## # weights: 21 (12 variable)
## initial value 7725.441614
## iter 10 value 6040.857414
## iter 20 value 5472.371122
## final value 5472.370995
## converged
summary(model)
## Call:
## multinom(formula = Contract ~ Dependents + InternetService +
## PaymentMethod + MonthlyCharges, data = ccp)
##
## Coefficients:
## (Intercept) DependentsYes InternetServiceFiber optic InternetServiceNo
## One year -4.386198 0.6172139 -3.197897 2.925246
## Two year -7.705071 0.9594237 -5.184083 5.824691
## PaymentMethodManual MonthlyCharges
## One year -0.929749 0.07128421
## Two year -1.513802 0.12276599
##
## Std. Errors:
## (Intercept) DependentsYes InternetServiceFiber optic InternetServiceNo
## One year 0.2007025 0.07344436 0.1452377 0.1492763
## Two year 0.2708270 0.07712228 0.1748812 0.1960447
## PaymentMethodManual MonthlyCharges
## One year 0.06828864 0.003252151
## Two year 0.07517898 0.004104006
##
## Residual Deviance: 10944.74
## AIC: 10968.74
kiểm tra ý nghĩa thống kê
co <- summary(model)$coefficients
se <- summary(model)$standard.errors
aaa <- abs(co/se)
format.pval(2 * (1 - pnorm(aaa)), digits = 10, eps = .Machine$double.eps)
## [1] "< 2.220446e-16" "< 2.220446e-16" "< 2.220446e-16" "< 2.220446e-16"
## [5] "< 2.220446e-16" "< 2.220446e-16" "< 2.220446e-16" "< 2.220446e-16"
## [9] "< 2.220446e-16" "< 2.220446e-16" "< 2.220446e-16" "< 2.220446e-16"