File ini merupakan handson TSA dari kelas B. Mohon di koreksi jika ada kesalahan.

Dalam file ini akan berisikan 3 BAB sesuai rules dari tutor, yaitu :

1. Tahap Explorasi data

2. Tahap Modeling

3. Tahap Ide Bisnis

*************** SUPERVISED LEARNING ***************

Regards,

ALBANI

Package yang di guanakan :

library(readr)
library(tidyverse)
library(scales)
library(ggcorrplot)
library(corrplot)
library(lmtest)
library(car)
library(MASS)
library(dplyr)
library(ggplot2)
library(skimr)
library(gridExtra)
library(rpart)
library(rpart.plot)

1. EXPLORATION

Data yang di gunakan adalah Telko_Churn_Sample yang sudah di sediakan tutor di Google Drive.

Untuk penjelasan tentang data silahkan klik di sini

a. DATA PREPARATION

##   MSISDN  los voice_rev voice_trx voice_mou voice_dou sms_rev sms_trx sms_dou
## 1  31441  534      5860        57       251         7    3465      16       5
## 2  31944  589         0         0         0         0       0       0       0
## 3  82538 1223      3744         6         5         2    2475      13       5
##   broadband_rev broadband_usg broadband_dou voice_package_rev voice_package_trx
## 1         35000      1713.203             6             34200                 8
## 2             0         0.000             0              8350                 2
## 3             0         0.000             0              8200                 2
##   voice_package_dou churn
## 1                 6     0
## 2                 2     1
## 3                 2     0

b. DATA CLEANING

Tahap ini di lakukan untuk memastikan kebersihan data dari missing value dan data duplicate.

  • Missing Value
anyNA(Telko_Churn_Sample)
## [1] FALSE
  • Duplicate Data
Telko_Churn_Sample[duplicated(Telko_Churn_Sample) | duplicated(Telko_Churn_Sample, fromLast = T), ]
##  [1] MSISDN            los               voice_rev         voice_trx        
##  [5] voice_mou         voice_dou         sms_rev           sms_trx          
##  [9] sms_dou           broadband_rev     broadband_usg     broadband_dou    
## [13] voice_package_rev voice_package_trx voice_package_dou churn            
## <0 rows> (or 0-length row.names)

Interpretasi : Dari hasil out put di atas, terlihat cukup jelas bahwa data yang akan kita analisis bisa di lanjutkan. data bersih dari Missing Value dan Data Duplicate.

  • check data types

Tahap ini adalah melakuakan pengecekan type data. apakah sudah sesuai dengan type yang seharusnya. atau ada data kategori namun terbaca sebagai str atau type lainnya.

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
glimpse(Telko_Churn_Sample)
## Rows: 5,000
## Columns: 16
## $ MSISDN            <int> 31441, 31944, 82538, 86957, 27618, 96313, 21363, 858…
## $ los               <int> 534, 589, 1223, 1221, 60, 188, 255, 594, 3190, 357, …
## $ voice_rev         <dbl> 5860.00, 0.00, 3744.00, 231.00, 12073.00, 3829.00, 3…
## $ voice_trx         <int> 57, 0, 6, 52, 36, 7, 8, 1, 0, 37, 0, 16, 14, 27, 2, …
## $ voice_mou         <int> 251, 0, 5, 188, 588, 261, 207, 0, 0, 67, 0, 51, 16, …
## $ voice_dou         <int> 7, 0, 2, 6, 6, 3, 4, 1, 0, 7, 0, 3, 6, 6, 2, 2, 7, 5…
## $ sms_rev           <int> 3465, 0, 2475, 0, 2100, 0, 20430, 0, 1505, 2150, 0, …
## $ sms_trx           <int> 16, 0, 13, 2, 20, 0, 97, 0, 7, 16, 0, 13, 37, 43, 6,…
## $ sms_dou           <int> 5, 0, 5, 2, 5, 0, 7, 0, 4, 6, 0, 5, 7, 6, 2, 0, 7, 6…
## $ broadband_rev     <dbl> 35000, 0, 0, 0, 0, 0, 0, 9000, 0, 0, 0, 0, 0, 0, 288…
## $ broadband_usg     <dbl> 1.713203e+03, 0.000000e+00, 0.000000e+00, 3.416926e+…
## $ broadband_dou     <int> 6, 0, 0, 7, 0, 0, 0, 7, 0, 7, 0, 0, 0, 0, 2, 0, 0, 1…
## $ voice_package_rev <int> 34200, 8350, 8200, 7950, 26600, 4550, 15800, 17900, …
## $ voice_package_trx <int> 8, 2, 2, 2, 6, 1, 4, 4, 4, 2, 2, 6, 4, 8, 1, 2, 4, 1…
## $ voice_package_dou <int> 6, 2, 2, 2, 5, 1, 4, 2, 4, 2, 1, 5, 4, 6, 1, 2, 4, 1…
## $ churn             <int> 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1…
library(skimr)
n_unique(Telko_Churn_Sample$churn)
## [1] 2

Data di atas terlihat bahwa ada 2 valiarble yang salah dalam penggunaan type data. yaitu MSISDN dan churn (terlihat hanya ada 2 jenis data ini menjadi dasar untuk memastikan bahwa type data tersebut adalah kategorik bukan integer).

MSISDN memiliki type int harusnnya adalah char churn memiliki type int harusnya type yang benar adalah kategorik factor

  • change the data type

selanjutnya mengubah type data tersebut

churn

## 'data.frame':    5000 obs. of  16 variables:
##  $ MSISDN           : int  31441 31944 82538 86957 27618 96313 21363 85847 56880 83060 ...
##  $ los              : int  534 589 1223 1221 60 188 255 594 3190 357 ...
##  $ voice_rev        : num  5860 0 3744 231 12073 ...
##  $ voice_trx        : int  57 0 6 52 36 7 8 1 0 37 ...
##  $ voice_mou        : int  251 0 5 188 588 261 207 0 0 67 ...
##  $ voice_dou        : int  7 0 2 6 6 3 4 1 0 7 ...
##  $ sms_rev          : int  3465 0 2475 0 2100 0 20430 0 1505 2150 ...
##  $ sms_trx          : int  16 0 13 2 20 0 97 0 7 16 ...
##  $ sms_dou          : int  5 0 5 2 5 0 7 0 4 6 ...
##  $ broadband_rev    : num  35000 0 0 0 0 0 0 9000 0 0 ...
##  $ broadband_usg    : num  1713 0 0 342 0 ...
##  $ broadband_dou    : int  6 0 0 7 0 0 0 7 0 7 ...
##  $ voice_package_rev: int  34200 8350 8200 7950 26600 4550 15800 17900 16650 8700 ...
##  $ voice_package_trx: int  8 2 2 2 6 1 4 4 4 2 ...
##  $ voice_package_dou: int  6 2 2 2 5 1 4 2 4 2 ...
##  $ churn            : Factor w/ 2 levels "Tidak berlangganan",..: 2 1 2 2 1 2 2 2 2 2 ...

Perlu di perhatikan No adalah tidak berlanggan kembali dan yes masih berlangganan

MSISDN

telco_churn$MSISDN <- as.character(telco_churn$MSISDN)

Data bersih yang siap kita gunakan adalah :

## Rows: 5,000
## Columns: 16
## $ MSISDN            <chr> "31441", "31944", "82538", "86957", "27618", "96313"…
## $ los               <int> 534, 589, 1223, 1221, 60, 188, 255, 594, 3190, 357, …
## $ voice_rev         <dbl> 5860.00, 0.00, 3744.00, 231.00, 12073.00, 3829.00, 3…
## $ voice_trx         <int> 57, 0, 6, 52, 36, 7, 8, 1, 0, 37, 0, 16, 14, 27, 2, …
## $ voice_mou         <int> 251, 0, 5, 188, 588, 261, 207, 0, 0, 67, 0, 51, 16, …
## $ voice_dou         <int> 7, 0, 2, 6, 6, 3, 4, 1, 0, 7, 0, 3, 6, 6, 2, 2, 7, 5…
## $ sms_rev           <int> 3465, 0, 2475, 0, 2100, 0, 20430, 0, 1505, 2150, 0, …
## $ sms_trx           <int> 16, 0, 13, 2, 20, 0, 97, 0, 7, 16, 0, 13, 37, 43, 6,…
## $ sms_dou           <int> 5, 0, 5, 2, 5, 0, 7, 0, 4, 6, 0, 5, 7, 6, 2, 0, 7, 6…
## $ broadband_rev     <dbl> 35000, 0, 0, 0, 0, 0, 0, 9000, 0, 0, 0, 0, 0, 0, 288…
## $ broadband_usg     <dbl> 1.713203e+03, 0.000000e+00, 0.000000e+00, 3.416926e+…
## $ broadband_dou     <int> 6, 0, 0, 7, 0, 0, 0, 7, 0, 7, 0, 0, 0, 0, 2, 0, 0, 1…
## $ voice_package_rev <int> 34200, 8350, 8200, 7950, 26600, 4550, 15800, 17900, …
## $ voice_package_trx <int> 8, 2, 2, 2, 6, 1, 4, 4, 4, 2, 2, 6, 4, 8, 1, 2, 4, 1…
## $ voice_package_dou <int> 6, 2, 2, 2, 5, 1, 4, 2, 4, 2, 1, 5, 4, 6, 1, 2, 4, 1…
## $ churn             <fct> Berlangganan, Tidak berlangganan, Berlangganan, Berl…

c. DATA EXPLORATION

CHURN

Jumlah Berlangnan dan Tidak berlanganan

## [1] "3315   1685"

  • Interpretasi 1

Dari data di atas terlihat bahwa data terdiri dari data Churn Berlangannan dan tidak berlangganan. di mana berjumlah 3315 & 1685.

  • Interpretasi 2

Data yang di analisis di dominasi oleh Customer yang masih berlangganan.

LOS (Lamanya menjadi customer)

  • Interpertasi 1

Customer dengan waktu berlanganan terlama merupakan customer yang masih aktif. sedangkan Customer tidak berlanganan merupakan waktu tercepat. namun jika di lihat seksama, datanya tidak terlalu berbeda secara signifikan.

  • Interpretasi 2

kemungkinan Customer ini mendapat trust isue mengenai pengenalan awal, sehingga menjadi penyebap tidak berlanganan / dengan waktu yang sangat cepat lalu berhenti berlangganan.

voice_trx & sms_trx & voice_package_trx

  • Interpretasi 1

Tranasksi Voice_package (Penggunaan paket telfon), itu paling sedikit dalam rata-rata jumlah transaksinya. kemngkinan adalah sms TRX dan Voice trx memliki data bias sehingga terjadi outlier.

Terlihat bahwa memang ke 2 data tersebut terdapat outlier.

  • Interpretasi 2

Dapat di asumsikan bahwa customer dalam melakukan bisnisnya banyak menggunakan SMS di bandingkan dengan telephon.

SUMMARY OF REVENUE FROM DATA

##    voice_rev         sms_rev      broadband_rev    voice_package_rev
##  Min.   :     0   Min.   :    0   Min.   :     0   Min.   :    0    
##  1st Qu.:   435   1st Qu.:  415   1st Qu.:     0   1st Qu.: 4350    
##  Median :  3664   Median : 1980   Median :     0   Median : 8200    
##  Mean   :  7962   Mean   : 4551   Mean   :  3952   Mean   :12065    
##  3rd Qu.:  9955   3rd Qu.: 5746   3rd Qu.:     0   3rd Qu.:16475    
##  Max.   :397101   Max.   :72430   Max.   :424720   Max.   :88000

  • Interpretasi 1

Dari data di atas kita bisa bisa menyimpulkan dari penghasilan terbesar berada pada Penghasilan dari paket telepon dalam sebulan terakhir. dan penghasilan terkecil berada pada Penghasilan dari jasa paket data (broadband) dalam sebulan terakhir

  • interpretasi 2

terlihat bahwa data Voice_package_trx tidak berbanding lurus degan voice_package_rev, jumlah transksinya paling sedikit, mengapa penghasilannya paling besar? Disini hipotesis saya adalah kemungkinan harga dari voice_package_rev ini cukup mahal. atau harganya lebih besar dari pada sms dan data lainnya.

CORELATION PLOT

## corrplot 0.92 loaded
##                      los voice_rev voice_trx voice_mou voice_dou sms_rev
## los                1.000     0.127     0.111    -0.062     0.221   0.066
## voice_rev          0.127     1.000     0.352     0.167     0.444   0.256
## voice_trx          0.111     0.352     1.000     0.579     0.614   0.303
## voice_mou         -0.062     0.167     0.579     1.000     0.403   0.191
## voice_dou          0.221     0.444     0.614     0.403     1.000   0.314
## sms_rev            0.066     0.256     0.303     0.191     0.314   1.000
## sms_trx           -0.042     0.119     0.190     0.146     0.165   0.674
## sms_dou            0.191     0.260     0.428     0.294     0.613   0.582
## broadband_rev     -0.042     0.097     0.002     0.013     0.069   0.043
## broadband_usg     -0.037     0.074    -0.029    -0.001     0.030  -0.004
## broadband_dou     -0.072     0.060    -0.017     0.013     0.058   0.050
## voice_package_rev  0.053     0.158     0.502     0.398     0.383   0.203
## voice_package_trx  0.068     0.124     0.491     0.383     0.382   0.205
## voice_package_dou  0.091     0.133     0.471     0.337     0.416   0.204
##                   sms_trx sms_dou broadband_rev broadband_usg broadband_dou
## los                -0.042   0.191        -0.042        -0.037        -0.072
## voice_rev           0.119   0.260         0.097         0.074         0.060
## voice_trx           0.190   0.428         0.002        -0.029        -0.017
## voice_mou           0.146   0.294         0.013        -0.001         0.013
## voice_dou           0.165   0.613         0.069         0.030         0.058
## sms_rev             0.674   0.582         0.043        -0.004         0.050
## sms_trx             1.000   0.388         0.041        -0.001         0.069
## sms_dou             0.388   1.000         0.066         0.028         0.095
## broadband_rev       0.041   0.066         1.000         0.605         0.479
## broadband_usg      -0.001   0.028         0.605         1.000         0.486
## broadband_dou       0.069   0.095         0.479         0.486         1.000
## voice_package_rev   0.140   0.280         0.023         0.011         0.020
## voice_package_trx   0.143   0.302         0.007        -0.008         0.016
## voice_package_dou   0.135   0.321         0.016        -0.001         0.018
##                   voice_package_rev voice_package_trx voice_package_dou
## los                           0.053             0.068             0.091
## voice_rev                     0.158             0.124             0.133
## voice_trx                     0.502             0.491             0.471
## voice_mou                     0.398             0.383             0.337
## voice_dou                     0.383             0.382             0.416
## sms_rev                       0.203             0.205             0.204
## sms_trx                       0.140             0.143             0.135
## sms_dou                       0.280             0.302             0.321
## broadband_rev                 0.023             0.007             0.016
## broadband_usg                 0.011            -0.008            -0.001
## broadband_dou                 0.020             0.016             0.018
## voice_package_rev             1.000             0.930             0.895
## voice_package_trx             0.930             1.000             0.920
## voice_package_dou             0.895             0.920             1.000
## [1] "menghitung nilai matrix"

  • Interpretasi 1

Terdapat hubungan korelasi yang sagat tinggi dalam beberapa variable, di tandai dengan warna yang lebih gelap / angka yang mendekati 1.

  • Interpreatsi 2

Terdapat Multicoliniaritas pada variable voice_package, jadi harus di lakukan prosess mengatasi hal tersebut.

2. MODELING

Dalam BAB ini akan mencoba membuat Regresi liniear sederhana, Regresi liniar berganda, Regresi logistik & CART.

library(corrplot)
library(lmtest)
library(car)
library(MASS)
library(dplyr)
library(ggplot2)
## 'data.frame':    5000 obs. of  16 variables:
##  $ MSISDN           : chr  "31441" "31944" "82538" "86957" ...
##  $ los              : int  534 589 1223 1221 60 188 255 594 3190 357 ...
##  $ voice_rev        : num  5860 0 3744 231 12073 ...
##  $ voice_trx        : int  57 0 6 52 36 7 8 1 0 37 ...
##  $ voice_mou        : int  251 0 5 188 588 261 207 0 0 67 ...
##  $ voice_dou        : int  7 0 2 6 6 3 4 1 0 7 ...
##  $ sms_rev          : int  3465 0 2475 0 2100 0 20430 0 1505 2150 ...
##  $ sms_trx          : int  16 0 13 2 20 0 97 0 7 16 ...
##  $ sms_dou          : int  5 0 5 2 5 0 7 0 4 6 ...
##  $ broadband_rev    : num  35000 0 0 0 0 0 0 9000 0 0 ...
##  $ broadband_usg    : num  1713 0 0 342 0 ...
##  $ broadband_dou    : int  6 0 0 7 0 0 0 7 0 7 ...
##  $ voice_package_rev: int  34200 8350 8200 7950 26600 4550 15800 17900 16650 8700 ...
##  $ voice_package_trx: int  8 2 2 2 6 1 4 4 4 2 ...
##  $ voice_package_dou: int  6 2 2 2 5 1 4 2 4 2 ...
##  $ churn            : Factor w/ 2 levels "Tidak berlangganan",..: 2 1 2 2 1 2 2 2 2 2 ...

a. Regresi Linier Sederhana

Disini saya ingin melihat apakah ada pengaruh antara Lamanya menjadi customer (los) dengan Penghasilan dari jasa voice (voice_rev)

mmodel Regresi linier sederhana

## 
## Call:
## lm(formula = voice_rev ~ los, data = telco_churn)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -11544  -6406  -4216   2078 385750 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 5745.8823   313.1983  18.346   <2e-16 ***
## los            1.8103     0.1999   9.057   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 13830 on 4998 degrees of freedom
## Multiple R-squared:  0.01615,    Adjusted R-squared:  0.01595 
## F-statistic: 82.03 on 1 and 4998 DF,  p-value: < 2.2e-16

Secara keselurahan dari data di atas adalah untuk memprediksi los berdasarkan voice_rev, Namun R-squared sangat rendah hanya 1.6% saja. menunjukan bahwa hanya menjelaskan sebagian kecil variasi dalam los.

hal ini juga sejalan dengan matriks korelasi pada sub-Bab Eksplorasi, hanya memiliki nilai 0.05.

  • Plot garis regresi

hasil prediksi dalam model ini adalah apakah ios atau lama berlangganan dapat menjelaskan sebarapa banyak voice_rev atau penghasilan dari jasa telephon. ternayata hasil regresi ini tidak cukup valid. Bisa digunakan varaible lain untuk mengujinya. dengan kata lain kemungkinan besar asumsi-asumsi model linear tidak terpenuhi.

  • Residual
## 
##  Shapiro-Wilk normality test
## 
## data:  res
## W = 0.54495, p-value < 2.2e-16

Berdasarkan hasil uji Shapiro-Wilk ini, Anda dapat menyimpulkan bahwa sampel data res tidak terdistribusi secara normal. Data yang tidak terdistribusi secara normal mungkin memiliki dampak pada pemilihan dan interpretasi analisis statistik yang Anda lakukan.

  • CONTOH PENGUJIAN REGRESI

Tujuan lain dari membangun suatu model untuk melakukan prediksi

tess_baru <- data.frame("los" = c(5000, 6000))
pred_reglin_sederhana <- predict(data_reg1, tess_baru)
t(pred_reglin_sederhana)
##             1        2
## [1,] 14797.29 16607.57

ini adalah contoh hasil prediksi los dalam regresi linier sederhana.

b. Regresi linier berganda

Karena hasil \(R^2\) tidak begitu tinggi, maka indikasi perlu di lakukan penambahan variable lain agar dapat menjelaskan keragaman variable Y lebih baik.

##   voice_package_rev voice_package_trx voice_package_dou  los
## 1             34200                 8                 6  534
## 2              8350                 2                 2  589
## 3              8200                 2                 2 1223
## 4              7950                 2                 2 1221
## 5             26600                 6                 5   60
## 6              4550                 1                 1  188
## 
## Call:
## lm(formula = voice_package_rev ~ ., data = data_mul1)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -58255  -1055    565   1048  47721 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       -501.49200  118.28943  -4.240 2.28e-05 ***
## voice_package_trx 2698.95830   50.05507  53.920  < 2e-16 ***
## voice_package_dou 1592.19855   76.84336  20.720  < 2e-16 ***
## los                 -0.20663    0.05802  -3.562 0.000372 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3994 on 4996 degrees of freedom
## Multiple R-squared:  0.875,  Adjusted R-squared:  0.8749 
## F-statistic: 1.165e+04 on 3 and 4996 DF,  p-value: < 2.2e-16

Koefisien-koefisien yang signifikan secara statistik dapat digunakan untuk menganalisis hubungan antara variabel-variabel ini.

  • Memeriksa multi koliniaritas
car::vif(reg_mul1)
## voice_package_trx voice_package_dou               los 
##          6.493809          6.518009          1.010069

variabel voice_package_trx dan voice_package_dou memiliki VIF yang cukup tinggi, yaitu di atas 5, yang mengindikasikan adanya multikolinearitas yang signifikan antara kedua variabel tersebut. Multikolinearitas dapat menyulitkan dalam interpretasi model dan memengaruhi stabilitas estimasi koefisien.

untuk menjalanakan model yang lebih baik maka, salah 1 dari ke-2 variable tersebut akan di eliminasi. sehingga :

##   voice_package_rev voice_package_trx  los
## 1             34200                 8  534
## 2              8350                 2  589
## 3              8200                 2 1223
## 4              7950                 2 1221
## 5             26600                 6   60
## 6              4550                 1  188
## 
## Call:
## lm(formula = voice_package_rev ~ ., data = data_mul2)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -72616  -1348    287   1394  47335 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)        518.49495  112.07470   4.626 3.82e-06 ***
## voice_package_trx 3652.50330   20.51486 178.042  < 2e-16 ***
## los                 -0.11876    0.06029  -1.970   0.0489 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4162 on 4997 degrees of freedom
## Multiple R-squared:  0.8642, Adjusted R-squared:  0.8642 
## F-statistic: 1.59e+04 on 2 and 4997 DF,  p-value: < 2.2e-16

Dengan model yang baru maka akan kita lakukan prediksi dengan data baru berikut :

tess_baru2 <- data.frame("los" = c(5000, 6000),
                         "voice_package_trx" = c(50, 29)
                         )
pred_reglin_sederhana2 <- predict(data_reg1, tess_baru)
pred_reglin_sederhana2
##        1        2 
## 14797.29 16607.57

Terlihat bahwa prediksi data baru terhadap voice_package_rev adalah sebesar Rp. 14.797 dan Rp. 16.607

c. Regresi Logistik

  • Partisi / Spliting data
indeks <- sample(1:nrow(telco_churn), size = 0.7 * nrow(telco_churn))
# partisi 70%
train70 <- telco_churn[indeks, 2:16] # berisi 70%
test30 <- telco_churn[-indeks, 2:16] # berisi 30%

REGLOG BINER

reglog1 <- glm(churn ~ ., family = binomial, data=train70)
summary(reglog1)
## 
## Call:
## glm(formula = churn ~ ., family = binomial, data = train70)
## 
## Coefficients:
##                     Estimate Std. Error z value Pr(>|z|)    
## (Intercept)       -1.685e+00  1.107e-01 -15.218  < 2e-16 ***
## los                1.558e-04  4.616e-05   3.376 0.000736 ***
## voice_rev         -2.630e-05  4.167e-06  -6.310 2.78e-10 ***
## voice_trx          2.425e-02  4.151e-03   5.841 5.18e-09 ***
## voice_mou          2.659e-03  5.724e-04   4.646 3.38e-06 ***
## voice_dou          1.212e-01  2.961e-02   4.095 4.22e-05 ***
## sms_rev           -1.303e-05  9.877e-06  -1.320 0.186972    
## sms_trx            6.119e-06  6.661e-04   0.009 0.992670    
## sms_dou            1.034e-01  2.491e-02   4.151 3.30e-05 ***
## broadband_rev     -6.382e-08  3.127e-06  -0.020 0.983719    
## broadband_usg     -1.444e-04  1.273e-04  -1.134 0.256860    
## broadband_dou      2.098e-02  2.226e-02   0.943 0.345935    
## voice_package_rev -1.043e-05  1.415e-05  -0.737 0.461268    
## voice_package_trx -4.920e-02  6.326e-02  -0.778 0.436770    
## voice_package_dou  5.354e-01  8.769e-02   6.105 1.03e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 4492.5  on 3499  degrees of freedom
## Residual deviance: 3399.2  on 3485  degrees of freedom
## AIC: 3429.2
## 
## Number of Fisher Scoring iterations: 6

setelah di lihat pada hasil output di atas terlihat beberapa variable yang sangat memiliki tingkat data yang cukup signifikansi yaitu di tandai dengan variable ***. selanjutnya adalah melakukan final model Regresi logistik.

Reglog_final <- glm( formula =  churn ~ los + voice_dou + sms_dou + voice_package_dou + voice_rev + voice_mou + voice_trx, 
                    family = binomial, 
                    data = train70)
summary(Reglog_final)
## 
## Call:
## glm(formula = churn ~ los + voice_dou + sms_dou + voice_package_dou + 
##     voice_rev + voice_mou + voice_trx, family = binomial, data = train70)
## 
## Coefficients:
##                     Estimate Std. Error z value Pr(>|z|)    
## (Intercept)       -1.652e+00  1.083e-01 -15.257  < 2e-16 ***
## los                1.615e-04  4.551e-05   3.549 0.000386 ***
## voice_dou          1.277e-01  2.932e-02   4.356 1.32e-05 ***
## sms_dou            8.442e-02  2.014e-02   4.192 2.77e-05 ***
## voice_package_dou  4.231e-01  3.478e-02  12.165  < 2e-16 ***
## voice_rev         -2.766e-05  4.074e-06  -6.789 1.13e-11 ***
## voice_mou          2.644e-03  5.708e-04   4.632 3.63e-06 ***
## voice_trx          2.417e-02  4.143e-03   5.833 5.43e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 4492.5  on 3499  degrees of freedom
## Residual deviance: 3405.1  on 3492  degrees of freedom
## AIC: 3421.1
## 
## Number of Fisher Scoring iterations: 6

Kesimpulan utama adalah bahwa beberapa variabel independen, seperti voice_package_dou, voice_rev, dan voice_trx, memiliki pengaruh yang signifikan dalam memprediksi apakah pelanggan akan meninggalkan layanan (churn).

d. CART

## n= 3500 
## 
## node), split, n, loss, yval, (yprob)
##       * denotes terminal node
## 
##  1) root 3500 1194 Berlangganan (0.3411429 0.6588571)  
##    2) voice_mou< 15.5 1203  453 Tidak berlangganan (0.6234414 0.3765586)  
##      4) voice_package_dou< 1.5 738  213 Tidak berlangganan (0.7113821 0.2886179) *
##      5) voice_package_dou>=1.5 465  225 Berlangganan (0.4838710 0.5161290)  
##       10) sms_trx< 0.5 171   60 Tidak berlangganan (0.6491228 0.3508772) *
##       11) sms_trx>=0.5 294  114 Berlangganan (0.3877551 0.6122449) *
##    3) voice_mou>=15.5 2297  444 Berlangganan (0.1932956 0.8067044) *
library(rpart.plot)
rpart.plot(model.cart2)

Kesimpulan dari pohon keputusan ini adalah bahwa model menggunakan fitur-fitur seperti “voice_trx”, “voice_package_rev”, “voice_mou”, dan “los” untuk membuat prediksi apakah seseorang akan berlangganan atau tidak berlangganan layanan.

3. IDE BISNIS

Berikut adalah beberapa masukan atas kendala di atas poin utamanya adalah mengurangi churn atau customer yang berhenti berlangganan.

  1. kemungkinan terdapat persaingan antar kompotitor sehingga customer berhenti berlangganan, maka di butuhkan teknik marketing agar menarik kembali minat mantan customer dan menjaga Customer yang masih berlangganan.

  2. Peningkatan layanan membuat diskon sehingga customer mendapatkan beberapa keuntungan lebih dari sisi sms, voice & package.

  3. Memberikan program seperti Customer prioritas yang masih berlangganan. untuk menjaga Customer.

  4. pada analisis CART yang menyebapkan persentasi Customer berhenti berlangganan, sebaikan di evaluasi agar meningkatkan peluan customer tidak berhenti berlangganan.

Demikian, mohon untuk di koreksi jika ada kesalahan dan kekeliruan

untuk masukan boleh melalui :

Gmail :

Regards,

ALBANI