1 Pendahuluan

Berikut adalah data mengenai telemarketing dari sebuah bank di Portugal. Pada LBB P4DS ini, kita dapat belajar cara membuat report/laporan menggunakan R Markdown yang akan dipublish ke rpubs.com.

2 Membaca dan Extract Data

Kita akan menganalisis data bank.csv yang terdapat pada folder data. Kita menggunakan fungsi read.csv() untuk membaca file CSV ke R, lalu simpanlah ke sebuah object dengan nama bank.

# code here
bank <- read.csv("data/bank.csv", sep = ";")
bank

3 Inspeksi Data

# code here
head(bank)
# code here
tail(bank)
# code here
dim(bank)
#> [1] 45211    17

Terdapat 45.211 baris dan 17 kolom.

# code here
names(bank)
#>  [1] "age"       "job"       "marital"   "education" "default"   "balance"  
#>  [7] "housing"   "loan"      "contact"   "day"       "month"     "duration" 
#> [13] "campaign"  "pdays"     "previous"  "poutcome"  "y"

Deskripsi kolom di atas adalah sebagai berikut:

  • age = Usia
  • job = Pekerjaan
  • marital = Status kawin
  • education = Pendidikan
  • default = Apakah mempunyai kredit yang default
  • balance = Balance
  • housing = Apakah mempunyai KPR
  • loan = Apakah mempunyai pinjaman
  • contact = Jenis komunikasi yang digunakan
  • day = Tanggal kontak terakhir
  • month = Bulan kontak terakhir
  • duration = Durasi kontak terakhir (dalam detik)
  • campaign = Jumlah kontak yang dilakukan termasuk kontak terakhir
  • pdays = Jumlah hari berlalu setelah kontak terakhir
  • previous = Jumlah kontak yang dilakukan sebelumnya
  • poutcome = hasil sebelumnya
  • y = Apakah sudah menggunakan deposito berjangka

4 Data Cleansing

4.1 Explicit Coercion

Explicit Coercion adalah proses mengubah tipe data ke dalam tipe data yang tepat.

# cek kembali struktur data bank
str(bank)
#> 'data.frame':    45211 obs. of  17 variables:
#>  $ age      : int  58 44 33 47 33 35 28 42 58 43 ...
#>  $ job      : chr  "management" "technician" "entrepreneur" "blue-collar" ...
#>  $ marital  : chr  "married" "single" "married" "married" ...
#>  $ education: chr  "tertiary" "secondary" "secondary" "unknown" ...
#>  $ default  : chr  "no" "no" "no" "no" ...
#>  $ balance  : int  2143 29 2 1506 1 231 447 2 121 593 ...
#>  $ housing  : chr  "yes" "yes" "yes" "yes" ...
#>  $ loan     : chr  "no" "no" "yes" "no" ...
#>  $ contact  : chr  "unknown" "unknown" "unknown" "unknown" ...
#>  $ day      : int  5 5 5 5 5 5 5 5 5 5 ...
#>  $ month    : chr  "may" "may" "may" "may" ...
#>  $ duration : int  261 151 76 92 198 139 217 380 50 55 ...
#>  $ campaign : int  1 1 1 1 1 1 1 1 1 1 ...
#>  $ pdays    : int  -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ...
#>  $ previous : int  0 0 0 0 0 0 0 0 0 0 ...
#>  $ poutcome : chr  "unknown" "unknown" "unknown" "unknown" ...
#>  $ y        : chr  "no" "no" "no" "no" ...

Kita perlu mengubah tipe kolom job, marital, education, default, housing, loan, poutcome, dan y menjadi tipe factor.

# explicit coercion
bank$job <- as.factor(bank$job)
bank$marital <- as.factor(bank$marital)
bank$education <- as.factor(bank$education)
bank$default <- as.factor(bank$default)
bank$housing <- as.factor(bank$housing)
bank$loan <- as.factor(bank$loan)
bank$poutcome <- as.factor(bank$poutcome)
bank$y <- as.factor(bank$y)
str(bank)
#> 'data.frame':    45211 obs. of  17 variables:
#>  $ age      : int  58 44 33 47 33 35 28 42 58 43 ...
#>  $ job      : Factor w/ 12 levels "admin.","blue-collar",..: 5 10 3 2 12 5 5 3 6 10 ...
#>  $ marital  : Factor w/ 3 levels "divorced","married",..: 2 3 2 2 3 2 3 1 2 3 ...
#>  $ education: Factor w/ 4 levels "primary","secondary",..: 3 2 2 4 4 3 3 3 1 2 ...
#>  $ default  : Factor w/ 2 levels "no","yes": 1 1 1 1 1 1 1 2 1 1 ...
#>  $ balance  : int  2143 29 2 1506 1 231 447 2 121 593 ...
#>  $ housing  : Factor w/ 2 levels "no","yes": 2 2 2 2 1 2 2 2 2 2 ...
#>  $ loan     : Factor w/ 2 levels "no","yes": 1 1 2 1 1 1 2 1 1 1 ...
#>  $ contact  : chr  "unknown" "unknown" "unknown" "unknown" ...
#>  $ day      : int  5 5 5 5 5 5 5 5 5 5 ...
#>  $ month    : chr  "may" "may" "may" "may" ...
#>  $ duration : int  261 151 76 92 198 139 217 380 50 55 ...
#>  $ campaign : int  1 1 1 1 1 1 1 1 1 1 ...
#>  $ pdays    : int  -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ...
#>  $ previous : int  0 0 0 0 0 0 0 0 0 0 ...
#>  $ poutcome : Factor w/ 4 levels "failure","other",..: 4 4 4 4 4 4 4 4 4 4 ...
#>  $ y        : Factor w/ 2 levels "no","yes": 1 1 1 1 1 1 1 1 1 1 ...

4.2 Check Missing Value

anyNA(bank)
#> [1] FALSE

5 Descriptive Statistics

Rata- rata durasi percakapan adalah 4 menit.

mean(bank$duration) / 60
#> [1] 4.302718

Terdapat 2 orang yang sukses mendapat pinjaman padahal mempunyai kredit default

table(bank$default, bank$poutcome == "success")
#>      
#>       FALSE  TRUE
#>   no  42887  1509
#>   yes   813     2

Pemohon kredit mayoritas dari jenjang pendidikan secondary dan tertiary

table(bank$education, bank$poutcome)
#>            
#>             failure other success unknown
#>   primary       643   244     133    5831
#>   secondary    2589   987     675   18951
#>   tertiary     1492   544     622   10643
#>   unknown       177    65      81    1534

Pemohon kredit mayoritas dari status menikah 60%

prop.table(table(bank$marital))
#> 
#>  divorced   married    single 
#> 0.1151711 0.6019332 0.2828958

Pengangguran dan Pensiunan mempunyai durasi percakapan paling tinggi pada telemarketing.

result_duration <- aggregate(x = duration ~ job,
          data = bank,
          FUN = mean)
result_duration[order(result_duration$duration, decreasing = T),]

6 Inferential Statistics

Dari data telemarketing(bank), berapa peluang (proporsi) calon peminjam dengan status single untuk mendapatkan pinjaman ?

prop.table(table(bank$marital))
#> 
#>  divorced   married    single 
#> 0.1151711 0.6019332 0.2828958

Peluang peminjam status single untuk mendapatkan pinjaman adalah sebesar 0.2828

7 Referensi