1 Thông tin cơ bản liên quan đến bộ dữ liệu

1.1 Số biến, số quan sát

library(readxl)
df <- read_excel("Customer_Churn_dataset_for_Life_Insurance_Industry.xlsx")
dim(df)
## [1] 200000     12

1.2 Tên các biến

names(df)
##  [1] "Index"                "Customer Name"        "Customer_Address"    
##  [4] "Company Name"         "Claim Reason"         "Data confidentiality"
##  [7] "Claim Amount"         "Category Premium"     "Premium/Amount Ratio"
## [10] "Claim Request output" "BMI"                  "Churn"

1.3 Thống kê tổng quát

summary(df)
##      Index        Customer Name      Customer_Address   Company Name      
##  Min.   :     0   Length:200000      Length:200000      Length:200000     
##  1st Qu.: 50000   Class :character   Class :character   Class :character  
##  Median :100000   Mode  :character   Mode  :character   Mode  :character  
##  Mean   :100000                                                           
##  3rd Qu.:149999                                                           
##  Max.   :199999                                                           
##  Claim Reason       Data confidentiality  Claim Amount  Category Premium
##  Length:200000      Length:200000        Min.   :   1   Min.   :  399   
##  Class :character   Class :character     1st Qu.: 245   1st Qu.: 1875   
##  Mode  :character   Mode  :character     Median :1390   Median :14390   
##                                          Mean   :1120   Mean   : 8964   
##                                          3rd Qu.:1844   3rd Qu.:14390   
##                                          Max.   :2299   Max.   :14390   
##  Premium/Amount Ratio Claim Request output      BMI           Churn          
##  Length:200000        Length:200000        Min.   :18.00   Length:200000     
##  Class :character     Class :character     1st Qu.:20.00   Class :character  
##  Mode  :character     Mode  :character     Median :23.00   Mode  :character  
##                                            Mean   :23.01                     
##                                            3rd Qu.:26.00                     
##                                            Max.   :28.00

1.4 Kiểm tra dữ liệu bị thiếu

colSums(is.na(df))
##                Index        Customer Name     Customer_Address 
##                    0                    0                    0 
##         Company Name         Claim Reason Data confidentiality 
##                    0                    0                    0 
##         Claim Amount     Category Premium Premium/Amount Ratio 
##                    0                    0                    0 
## Claim Request output                  BMI                Churn 
##                    0                    0                    0

1.5 Kiểm tra trùng lặp

sum(duplicated(df))
## [1] 0

1.6 Ý nghĩa các biến

library(knitr)
variable_meaning <- data.frame(
  Variable = c(
    "Index",
    "Customer_Name",
    "Customer_Address",
    "Company_Name",
    "Claim_Reason",
    "Data_confidentiality",
    "Claim_Amount",
    "Category_Premium",
    "Premium_Amount_Ratio",
    "Claim_Request_output",
    "BMI",
    "Churn"
  ),
  Meaning = c(
    "Số thứ tự của khách hàng trong bộ dữ liệu",
    "Tên khách hàng",
    "Địa chỉ khách hàng",
    "Tên công ty bảo hiểm quản lý hợp đồng",
    "Lý do khách hàng yêu cầu bồi thường",
    "Mức độ bảo mật dữ liệu của khách hàng",
    "Số tiền khách hàng yêu cầu bồi thường",
    "Mức phí bảo hiểm của khách hàng",
    "Tỷ lệ giữa phí bảo hiểm và số tiền yêu cầu bồi thường",
    "Kết quả xử lý yêu cầu bồi thường ",
    "Chỉ số khối cơ thể",
    "Khách hàng có rời công ty bảo hiểm hay không"
  )
)
variable_meaning

2 Phân tổ các biến

2.1 Với biến định lượng

summary(df$'Claim Amount')
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##       1     245    1390    1120    1844    2299
summary(df$BMI)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   18.00   20.00   23.00   23.01   26.00   28.00
summary(df$`Category Premium`)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     399    1875   14390    8964   14390   14390
summary(df$`Premium/Amount Ratio`)
##    Length     Class      Mode 
##    200000 character character

2.2 Với biến định tính

table(df$'Claim Reason')
## 
## Medical   Other   Phone  Travel 
##  109863   30187   30016   29934
table(df$Churn)
## 
##     No    Yes 
##  72728 127272
table(df$`Data confidentiality`)
## 
##     High      Low   Medium Very low 
##   109863    29934    30016    30187
table(df$`Claim Request output`)
## 
##     No    Yes 
## 192994   7006
table(df$Churn)
## 
##     No    Yes 
##  72728 127272

3 Phân tích

3.1 Data confidentiality

Đếm tần suất các giá trị của biến

data <- table(df$`Data confidentiality`)
data 
## 
##     High      Low   Medium Very low 
##   109863    29934    30016    30187

Tính tỷ lệ phần trăm

datap <- prop.table(data) * 100
datap 
## 
##     High      Low   Medium Very low 
##  54.9315  14.9670  15.0080  15.0935

Ghép thành bảng kết quả

bang_tansuat_DataConfidentiality <- data.frame(
  Muc_do_bao_mat = names(data),
  Tan_suat = as.numeric(data),
  Ty_le = round(as.numeric(datap), 2)
)
bang_tansuat_DataConfidentiality

3.2 Category Premium

Tạo bảng tần suất

cate <- table(df$`Category Premium`)
cate 
## 
##    399   1875   4794  14390 
##  30187  30016  29934 109863

Tính tỷ lệ phần trăm

catep <- prop.table(cate) * 100
catep 
## 
##     399    1875    4794   14390 
## 15.0935 15.0080 14.9670 54.9315

Ghép thành bảng kết quả

bang_tansuat_CategoryPremium <- data.frame(
  Nhom_Phi_Bao_Hiem = names(cate),
  Tan_suat = as.numeric(cate),
  Ty_le = round(as.numeric(catep), 2)
)
bang_tansuat_CategoryPremium