logo

Studi Kasus : German Credit Data

German Credit Data bersumber dari UCI Repository of Machine Learning Databases tersedia untuk umum di disini. Dataset ini mengklasifikasikan orang-orang yang dijelaskan oleh serangkaian atribut atau peubah penjelas sebagai risiko kredit baik atau buruk. Terdapat 700 sampel yang tergolong risiko kredit baik dan 300 sampel tergolong risiko kredit macet. Terdapat 20 peubah penjelas yang diukur dalam German Credit Data, termasuk 7 peubah penjelas numerik dan 13 peubah penjelas kategorik. Atribut-atribut tersebut merupakan faktor risiko yang digunakan untuk membedakan antara kelompok berisiko tinggi dan kelompok berisiko rendah (Chen, 2018).

Deskripsi Peubah pada Dataset
Nama Variabel Tipe Variabel Deskripsi
Creditability Kategorik Status Kredit
Account Balance Kategorik Rekening Koran
Duration of Credit (month) Numerik Durasi Kredit
Payment Status of Previous Credit Kategorik Riwayat Kredit
Purpose Kategorik Tujuan Kredit
Credit Amount Numerik Jumlah Kredit
Value Savings/Stocks Kategorik Rekening Tabungan/Obligasi
Length of current employment Kategorik Lama Bekerja
Instalment per cent Numerik Tingkat angsuran dalam persentase pendapatan yang dapat disisihkan
Sex & Marital Status Kategorik Jenis Kelamin dan Status
Guarantors Kategorik Debitur Lain
Duration in Current address Numerik Lama tinggal di alamat sekarang
Most valuable available asset Kategorik Properti atau Aset Paling Berharga
Age (years) Numerik Usia
Concurrent Credits Kategorik Cicilan Lainnya
Type of apartment Kategorik Jenis tempat tinggal
No of Credits at this Bank Numerik Jumlah Kredit yang ada di Bank ini
Occupation Kategorik Pekerjaan
No of dependents Numerik Jumlah tanggungan
Telephone Kategorik Langganan Telepon
Foreign Worker Kategorik Status Pekerja Asing

Preparation

Sebelum melakukan analisis lebih lanjut perlu dilakukan pemanggilan packages dan data. Dimana packages yang akan digunakan adalah car, ResourceSelection, pscldan aod. Untuk import data akan menggunakan read.csv, data akan diimport dari link berikut

library(aod)
library(car)
## Loading required package: carData
library(pscl)
## Classes and Methods for R developed in the
## Political Science Computational Laboratory
## Department of Political Science
## Stanford University
## Simon Jackman
## hurdle and zeroinfl functions by Achim Zeileis
library(ResourceSelection)
## ResourceSelection 0.3-5   2019-07-22
german_credit<-read.csv("https://online.stat.psu.edu/stat857/sites/onlinecourses.science.psu.edu.stat857/files/german_credit/index.csv")
german_credit=german_credit[,c(1,2,3,6,7,8,9,10,12,14,15,17,18,4)]
head(german_credit,n=7)

Pre-processing Data

Sebelum data diproses menggunakan teknik data mining, data mentah perlu dipersiapkan terlebih dahulu. Pre-processing data merupakan proses yang dilakukan untuk meningkatkan kualitas data mentah, sehingga dapat meningkatkan akurasi serta efisiensi untuk proses data mining selanjutnya. Apabila input data berkualitas, maka akan menghasilkan analisis data yang berkualitas (Han dkk., 2012).

Pada pre-processing data ini dilakukan partisi pada dataset menjadi dua yaitu data latih dan data uji. Data latih merupakan data yang digunakan untuk membangun model sedangkan data uji digunakan untuk menguji model yang telah didapatkan. Adapun persentase partisi yang digunakan adalah 80% untuk data latih dan 20% untuk data uji.

Ilustrasi Partisi Data

set.seed(998)
kelas0<-subset(german_credit,german_credit$Creditability==0)
kelas1<-subset(german_credit,german_credit$Creditability==1)
k0_p<-sample(1:nrow(kelas0), size = round(0.8*nrow(kelas0)), replace=FALSE)
k1_p<-sample(1:nrow(kelas1), size = round(0.8*nrow(kelas1)), replace=FALSE)
latih<-rbind(kelas0[k0_p,],kelas1[k1_p,])
uji<-rbind(kelas0[-k0_p,],kelas1[-k1_p,])
f_data_asli<-as.vector(table(german_credit$Creditability))
f_data_latih<-as.vector(table(latih$Creditability))
f_data_uji<-as.vector(table(uji$Creditability))
nama_data<-c("Data Asli","Data Latih","Data Uji")
partisi_data<-data.frame(nama_data,rbind(f_data_asli,f_data_latih,f_data_uji))
rownames(partisi_data)<-NULL
colnames(partisi_data)<-c("Data","Kelas_0","Kelas_1")
partisi_data

Sebelum melakukan pemodelan terlebih dahulu dilakukan pengubahan tipe variabel pada variabel kategorik ke factor.

cat_var=c(2,5,6,8,11,13,14)
for (i in cat_var){
 latih[,i]<-as.factor(latih[,i])
 uji[,i]<-as.factor(uji[,i])
}

Analisis Regresi Logistik Biner

Sifat peubah data memiliki dua kriteria yaitu data kontinu dan data diskret, maka penanganan atau pendekatan yang dilakukan terhadap masing-masing kumpulan data akan berlainan. Pendekatan untuk variabel respons yang merupakan variabel kualitatif (dichotomy atau binary) dapat digunakan analisis regresi logistik. Regresi logistik biner adalah suatu model yang menggambarkan hubungan antara beberapa peubah penjelas dengan sebuah peubah respons biner (Sari, 2018).

Model Regresi Logistik Biner

Berikut adalah model awal regresi logistik biner. Model ini akan dilakukan pengujian asumsi yaitu Uji Multikolinieritas dan Uji Signifikasi Parameter yaitu Uji Serentak dengan Ratio Likelihood dan Uji Parsial dengan Uji Wald.

modelA<-glm(Creditability~.,data=latih,family="binomial")
summary(modelA)
## 
## Call:
## glm(formula = Creditability ~ ., family = "binomial", data = latih)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -2.7563  -0.7833   0.4095   0.7562   2.0970  
## 
## Coefficients:
##                                      Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                        -6.345e-01  1.098e+00  -0.578 0.563503    
## Account.Balance2                    4.673e-01  2.281e-01   2.049 0.040509 *  
## Account.Balance3                    9.288e-01  4.007e-01   2.318 0.020436 *  
## Account.Balance4                    1.919e+00  2.498e-01   7.683 1.55e-14 ***
## Duration.of.Credit..month.         -1.980e-02  9.722e-03  -2.037 0.041650 *  
## Credit.Amount                      -1.364e-04  4.583e-05  -2.977 0.002912 ** 
## Value.Savings.Stocks2               9.107e-02  3.157e-01   0.288 0.773000    
## Value.Savings.Stocks3               2.019e-01  4.489e-01   0.450 0.652873    
## Value.Savings.Stocks4               1.647e+00  5.870e-01   2.806 0.005009 ** 
## Value.Savings.Stocks5               8.373e-01  2.740e-01   3.056 0.002243 ** 
## Length.of.current.employment2      -1.788e-01  4.609e-01  -0.388 0.698039    
## Length.of.current.employment3      -1.138e-01  4.393e-01  -0.259 0.795541    
## Length.of.current.employment4       5.649e-01  4.716e-01   1.198 0.231033    
## Length.of.current.employment5      -3.578e-02  4.442e-01  -0.081 0.935789    
## Instalment.per.cent                -3.316e-01  9.403e-02  -3.526 0.000421 ***
## Sex...Marital.Status2               3.360e-01  4.042e-01   0.831 0.405820    
## Sex...Marital.Status3               9.064e-01  3.962e-01   2.288 0.022147 *  
## Sex...Marital.Status4               6.401e-01  4.805e-01   1.332 0.182761    
## Duration.in.Current.address        -1.060e-02  8.825e-02  -0.120 0.904375    
## Age..years.                         1.322e-02  9.420e-03   1.403 0.160485    
## Concurrent.Credits2                 1.508e-01  4.531e-01   0.333 0.739326    
## Concurrent.Credits3                 4.318e-01  2.614e-01   1.652 0.098536 .  
## No.of.Credits.at.this.Bank         -2.111e-01  2.120e-01  -0.996 0.319354    
## Occupation2                         5.756e-01  7.361e-01   0.782 0.434243    
## Occupation3                         4.169e-01  7.117e-01   0.586 0.558000    
## Occupation4                         6.389e-01  7.110e-01   0.899 0.368871    
## Payment.Status.of.Previous.Credit1 -1.384e-01  6.088e-01  -0.227 0.820139    
## Payment.Status.of.Previous.Credit2  6.967e-01  4.944e-01   1.409 0.158840    
## Payment.Status.of.Previous.Credit3  8.273e-01  5.495e-01   1.505 0.132223    
## Payment.Status.of.Previous.Credit4  1.226e+00  5.031e-01   2.436 0.014855 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 977.38  on 799  degrees of freedom
## Residual deviance: 757.22  on 770  degrees of freedom
## AIC: 817.22
## 
## Number of Fisher Scoring iterations: 5

Kewajaran Asumsi

Uji Multikolinieritas

Multikolinearitas adalah keadaan dimana terdapat hubungan yang linier antar beberapa atau semua peubah bebas. Suatu model dikatakan baik apabila tidak mengandung multikolinearitas. Model yang tidak mengandung multikolinearitas memiliki nilai Variance Inflation Factor (VIF) < 10. Nilai VIF > 10 mengindikasikan terdapat multikolinearitas pada peubah penjelas (Myers, 1990).

vif(modelA)
##                                       GVIF Df GVIF^(1/(2*Df))
## Account.Balance                   1.296684  3        1.044253
## Duration.of.Credit..month.        1.788627  1        1.337396
## Credit.Amount                     2.294223  1        1.514669
## Value.Savings.Stocks              1.316471  4        1.034967
## Length.of.current.employment      2.234035  4        1.105697
## Instalment.per.cent               1.312784  1        1.145768
## Sex...Marital.Status              1.329195  3        1.048572
## Duration.in.Current.address       1.229594  1        1.108871
## Age..years.                       1.366883  1        1.169138
## Concurrent.Credits                1.353966  2        1.078703
## No.of.Credits.at.this.Bank        1.754086  1        1.324419
## Occupation                        1.931043  3        1.115917
## Payment.Status.of.Previous.Credit 2.257578  4        1.107147

Berdasarkan output diatas dapat dilihat bahwa semua peubah penjelas tidak ada yang memiliki nilai VIF lebih dari 10 sehingga dapat disimpulkan bahwa belum cukup untuk membuktikan bahwa terjadi multikolinieritas pada model.

Uji Serentak

Pengujian serentak dilakukan untuk memeriksa signifikansi koefisien β secara keseluruhan (Hosmer & Lemeshow, 2000) dengan hipotesis sebagai berikut.

  • \(H_{0}\) : \(\beta_{1}\) = \(\beta_{2}\) =…= \(\beta_{p}\)= 0
  • \(H_{1}\) : minimal ada satu \(\beta_{j}\neq0\); j = 1,2,…,p

Keputusan tolak \(H_{0}\) jika \(G^2\) > \(\chi_{(13,0.05)}\)

pR2(modelA)
## fitting null model for pseudo-r2
##          llh      llhNull           G2     McFadden         r2ML         r2CU 
## -378.6105618 -488.6914416  220.1617597    0.2252564    0.2405814    0.3411149
cat('Nilai Chi Square Tabel :',qchisq(0.05,13))
## Nilai Chi Square Tabel : 5.891864

Berdasarkan hasil output tersebut dapat dilihat bahwa nilai \(G^2 > \chi^2_{13,0.05}\) sehingga dapat diambil keputusan untuk menolak \(H_{0}\) yang artinya dapat kita yakini bahwa terdapat minimal satu peubah penjelas yang signifikan terhadap peubah respon.

Uji Parsial

Pengujian secara parsial dilakukan untuk mengetahui signifikansi setiap parameter terhadap variabel respon. Pengujian signifikansi parameter menggunakan uji Wald (Hosmer & Lemeshow, 2000) dengan hipotesis sebagai berikut.

  • \(H_{0}\) : \(\beta_{j}=0\)
  • \(H_{1}\) : \(\beta_{j}\neq0\); j = 1,2,3,…,p

Keputusan tolak \(H_{0}\) jika p=value < 0.05

sX1<-as.vector(wald.test(b=coef(modelA),Sigma=vcov(modelA),Terms = 2:4)$result[[1]][-2])
sX2<-as.vector(wald.test(b=coef(modelA),Sigma=vcov(modelA),Terms = 5)$result[[1]][-2])
sX3<-as.vector(wald.test(b=coef(modelA),Sigma=vcov(modelA),Terms = 6)$result[[1]][-2])
sX4<-as.vector(wald.test(b=coef(modelA),Sigma=vcov(modelA),Terms = 7:10)$result[[1]][-2])
sX5<-as.vector(wald.test(b=coef(modelA),Sigma=vcov(modelA),Terms = 11:14)$result[[1]][-2])
sX6<-as.vector(wald.test(b=coef(modelA),Sigma=vcov(modelA),Terms = 15)$result[[1]][-2])
sX7<-as.vector(wald.test(b=coef(modelA),Sigma=vcov(modelA),Terms = 16:18)$result[[1]][-2])
sX8<-as.vector(wald.test(b=coef(modelA),Sigma=vcov(modelA),Terms = 19)$result[[1]][-2])
sX9<-as.vector(wald.test(b=coef(modelA),Sigma=vcov(modelA),Terms = 20)$result[[1]][-2])
sX10<-as.vector(wald.test(b=coef(modelA),Sigma=vcov(modelA),Terms = 21:22)$result[[1]][-2])
sX11<-as.vector(wald.test(b=coef(modelA),Sigma=vcov(modelA),Terms = 23)$result[[1]][-2])
sX12<-as.vector(wald.test(b=coef(modelA),Sigma=vcov(modelA),Terms = 24:26)$result[[1]][-2])
sX13<-as.vector(wald.test(b=coef(modelA),Sigma=vcov(modelA),Terms = 27:30)$result[[1]][-2])
latih_ny=latih[,-1]
uji_wald<-cbind(as.vector(colnames(latih_ny)),as.data.frame(rbind(sX1,sX2,sX3,sX4,sX5,sX6,sX7,sX8,sX9,sX10,sX11,sX12,sX13)))
rownames(uji_wald)<-NULL
colnames(uji_wald)<-c("Variabel","Chi-Square","p-value")
uji_wald$Keputusan=ifelse(uji_wald$`p-value`<0.05,"Signifikan","Tidak Signifikan")
uji_wald

Berdasarkan hasil output diatas dapat dilihat peubah penjelas seperti Account Balance, Duration Credit, Payment Status, Purpose, Credit Amount, Value Savings, Instalment Percent dan Sex Marital Status dapat kita yakini berpengaruh signifikan terhadap peubah respon Credibiality karena p-value < 0.05.

Model Akhir Regresi Logistik

signifikan<-subset(uji_wald,uji_wald$Keputusan=="Signifikan")
var_model_signifikan=c(as.vector(colnames(latih))[1],as.vector(signifikan$Variabel))
var_model_signifikan[-1]
## [1] "Account.Balance"                   "Duration.of.Credit..month."       
## [3] "Credit.Amount"                     "Value.Savings.Stocks"             
## [5] "Instalment.per.cent"               "Sex...Marital.Status"             
## [7] "Payment.Status.of.Previous.Credit"
latih_baru<-latih[,var_model_signifikan]
modelB<-glm(Creditability~.,data=latih_baru,family="binomial")
summary(modelB)
## 
## Call:
## glm(formula = Creditability ~ ., family = "binomial", data = latih_baru)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -2.7266  -0.8392   0.4280   0.7731   2.1519  
## 
## Coefficients:
##                                      Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                         7.001e-02  6.682e-01   0.105 0.916555    
## Account.Balance2                    4.619e-01  2.228e-01   2.073 0.038145 *  
## Account.Balance3                    9.412e-01  3.883e-01   2.424 0.015350 *  
## Account.Balance4                    1.884e+00  2.438e-01   7.725 1.12e-14 ***
## Duration.of.Credit..month.         -2.008e-02  9.473e-03  -2.120 0.034011 *  
## Credit.Amount                      -1.201e-04  4.295e-05  -2.796 0.005175 ** 
## Value.Savings.Stocks2               1.485e-01  3.100e-01   0.479 0.631936    
## Value.Savings.Stocks3               2.131e-01  4.356e-01   0.489 0.624742    
## Value.Savings.Stocks4               1.521e+00  5.710e-01   2.665 0.007710 ** 
## Value.Savings.Stocks5               8.460e-01  2.679e-01   3.158 0.001591 ** 
## Instalment.per.cent                -3.057e-01  9.172e-02  -3.333 0.000859 ***
## Sex...Marital.Status2               2.251e-01  3.910e-01   0.576 0.564820    
## Sex...Marital.Status3               9.048e-01  3.857e-01   2.346 0.018979 *  
## Sex...Marital.Status4               5.263e-01  4.679e-01   1.125 0.260649    
## Payment.Status.of.Previous.Credit1 -6.688e-02  5.766e-01  -0.116 0.907671    
## Payment.Status.of.Previous.Credit2  9.574e-01  4.747e-01   2.017 0.043692 *  
## Payment.Status.of.Previous.Credit3  9.434e-01  5.403e-01   1.746 0.080819 .  
## Payment.Status.of.Previous.Credit4  1.376e+00  4.923e-01   2.796 0.005181 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 977.38  on 799  degrees of freedom
## Residual deviance: 771.71  on 782  degrees of freedom
## AIC: 807.71
## 
## Number of Fisher Scoring iterations: 5

Berdasarkan output diatas didapatkan penduga parameter regresi logistiknya sebagai berikut.

\(\beta_{0}=0.0700059302\), \(\beta_{1(2)}=0.4618935228\), \(\beta_{1(3)}=0.9412124251\), \(\beta_{1(4)}=1.8836661232\), \(\beta_{2}=-0.0200823167\), \(\beta_{3}=-0.0001200941\), \(\beta_{4(2)}=0.1484952756\), \(\beta_{4(3)}=0.2130693431\), \(\beta_{4(4)}= 1.5214490532\), \(\beta_{4(5)}=0.8460062992\), \(\beta_{5}=-0.3057100235\), \(\beta_{6(2)}=0.2251231259\), \(\beta_{6(3)}=-0.0668760400\), \(\beta_{6(4)}=0.5263145374\), \(\beta_{7(1)}=-0.0668760400\), \(\beta_{7(2)}=0.9574444309\), \(\beta_{7(3)}=0.9433966870\) dan \(\beta_{7(4)}=1.3761422824\)

Berdasarkan penduga parameter didapatkan model regresi logistik dan persamaan regresi logistiknya sebagai berikut.

Model Regresi Logistik

\(p(x)=\frac{exp(\beta_{0}+\beta_{1}AccountBalance_{(2)}+...+\beta_{7}PaymentStatus_{(4)})}{1+exp(\beta_{0}+\beta_{1}AccountBalance_{(2)}+...+\beta_{7}PaymentStatus_{(4)})}\)

Persamaan Regresi Logistik

\(\hat{p}(x)=\frac{e^(0.0700059302+0.4618935228AccountBalance_{(2)}+...+1.3761422824PaymentStatus_{(4)})}{1+e^(0.0700059302+0.4618935228AccountBalance_{(2)}+...+1.3761422824PaymentStatus_{(4)})}\)

Uji Kesesuaian Model

Pengujian ini dilakukan untuk menguji apakah model yang dihasilkan berdasarkan regresi logistik multivariat/serentak sudah layak. Pengujian ini menggunakan statistik uji Hosmer dan Lemeshow (Hosmer & Lemeshow, 2000) dengan hipotesis yang digunakan sebagai berikut.

  • \(H_{0}\) : Model sesuai (tidak terdapat perbedaan yang signifikan antara hasil pengamatan dengan kemungkinan hasil prediksi model)
  • \(H_{1}\) : Model tidak sesuai (terdapat perbedaan yang signifikan antara hasil pengamatan dengan kemungkinan hasil prediksi model)

Keputusan Tolak \(H_{0}\) jika \(\hat{C}\) < \(\chi^2_{(10-2,0.05)}\)

hoslem.test(latih$Creditability, fitted(modelB), g=10)
## 
##  Hosmer and Lemeshow goodness of fit (GOF) test
## 
## data:  latih$Creditability, fitted(modelB)
## X-squared = 2.4331, df = 8, p-value = 0.9648
cat('Nilai Chi Square Tabel :',qchisq(0.05,10-2))
## Nilai Chi Square Tabel : 2.732637

Berdasarkan output diatas dapat kita lihat nilai \(\hat{C}>\chi^2_{10-2,0.05}\) atau terima \(H_{0}\) sehingga dapat kita yakini bahwa model akhir yang kita dapatkan sudah sesuai atau tidak terdapat perbedaan yang signifikan antara hasil pengamatan dengan kemungkinan hasil prediksi model.

Odd Ratio

Interpretasi koefisien untuk model regresi logistik dapat dilakukan dengan menggunakan nilai odds ratio. Odds sendiri dapat diartikan sebagai rasio peluang kejadian sukses dengan kejadian tidak sukses dari peubah respon. Odds ratio mengindikasikan seberapa besar kemungkinan munculnya kejadian sukses pada suatu kelompok dibandingkan kelompok lainnya (Hosmer & Lemeshow, 2000).

oddrasio=exp(cbind(OR=coef(modelB),confint(modelB)))
## Waiting for profiling to be done...
oddrasio_c=cbind(Koefisien_B=coef(modelB),oddrasio)
oddrasio_c
##                                      Koefisien_B        OR     2.5 %     97.5 %
## (Intercept)                         0.0700059302 1.0725145 0.2859116  3.9577660
## Account.Balance2                    0.4618935228 1.5870763 1.0269854  2.4619134
## Account.Balance3                    0.9412124251 2.5630871 1.2289703  5.6983697
## Account.Balance4                    1.8836661232 6.5775749 4.1147485 10.7216318
## Duration.of.Credit..month.         -0.0200823167 0.9801180 0.9619755  0.9984622
## Credit.Amount                      -0.0001200941 0.9998799 0.9997944  0.9999632
## Value.Savings.Stocks2               0.1484952756 1.1600873 0.6380287  2.1598686
## Value.Savings.Stocks3               0.2130693431 1.2374705 0.5464926  3.0624197
## Value.Savings.Stocks4               1.5214490532 4.5788554 1.6569688 16.3631015
## Value.Savings.Stocks5               0.8460062992 2.3303216 1.3952156  4.0010749
## Instalment.per.cent                -0.3057100235 0.7366002 0.6138180  0.8798471
## Sex...Marital.Status2               0.2251231259 1.2524769 0.5770213  2.6899881
## Sex...Marital.Status3               0.9048444744 2.4715475 1.1523799  5.2616715
## Sex...Marital.Status4               0.5263145374 1.6926825 0.6764012  4.2609374
## Payment.Status.of.Previous.Credit1 -0.0668760400 0.9353111 0.3042733  2.9496647
## Payment.Status.of.Previous.Credit2  0.9574444309 2.6050306 1.0473214  6.8266323
## Payment.Status.of.Previous.Credit3  0.9433966870 2.5686917 0.9079990  7.6289012
## Payment.Status.of.Previous.Credit4  1.3761422824 3.9595971 1.5374590 10.7213133

Berdasarkan output odd ratio dapat dijelaskan sebagai berikut:

Account Balance

Berdasarkan koefisien regresi yang diperoleh pada peubah AccountBalance didapatkan nilai koefisien yang positif yang menandakan setiap peningkatan nilai dari AccountBalance akan menyebabkan meningkatknya peluang seseorang mengalami kredit macet. Dari koefisien odd rasio dapat dilihat bahwa kategori ke 4 yaitu tidak memiliki rekening memiliki kecenderungan untuk mengalami kredit macet dibandingkan kategori satu yaitu memiliki rekening koran namun tidak memiliki saldo (0 DM). Pada kategori ke 4 memiliki nilai odd ratio tertinggi dibandingkan kategori lainnya yaitu 6,58 yang artinya kecenderungan untuk mengalami kredit macet dibandingkan kategori satu yaitu sebesar 6,58 kali. Pada selang kepercayaan 95%, nilai ini bisa berubah peningkatannya diantara 4,11 sampai 10,72 kali.

Duration

Berdasarkan koefisien regresi yang diperoleh pada peubah Duration didapatkan nilai koefisien yang negatif yang menandakan setiap peningkatan nilai dari Duration akan menyebabkan menurunnya peluang seseorang mengalami kredit macet. Yang artinya semakin tinggi durasi (bulan) seseorang dalam melakukan pembayaran tagihan kredit maka akan menurunkan peluang seseorang mengalami kredit macet. Pada koefisien odd rasio yaitu 0,98 yang artinya setiap peningkatan nilai pada durasi akan menyebabkan peningkatan peluang seseorang untuk tidak mengalami kredit macet yaitu sebesar 0,98 kali. Pada selang kepercayaan 95%, nilai ini bisa berubah peningkatannya diantara 0,96 sampai 0,99 kali.

Credit Amount

Berdasarkan koefisien regresi yang diperoleh pada peubah Credit Amount didapatkan nilai koefisien yang negatif yang menandakan setiap peningkatan nilai dari Credit.Amount akan menyebabkan menurunnya peluang seseorang mengalami kredit macet. Yang artinya semakin tinggi jumlah kredit yang diambil seseorang maka akan menurunkan peluang seseorang mengalami kredit macet. Pada koefisien odd rasio yaitu 0,99 yang artinya setiap peningkatan nilai pada jumlah kredit akan menyebabkan peningkatan peluang seseorang untuk tidak mengalami kredit macet yaitu sebesar 0,99 kali. Pada selang kepercayaan 95%, nilai ini bisa berubah peningkatannya diantara 0.9997 sampai 0.9999 kali.

Value Saving

Berdasarkan koefisien regresi yang diperoleh pada peubah Value Saving didapatkan nilai koefisien yang positif yang menandakan setiap peningkatan nilai dari Value Saving akan menyebabkan meningkatknya peluang seseorang mengalami kredit macet. Dari koefisien odd rasio dapat dilihat bahwa kategori ke 4 yaitu memiliki saldo rekening lebih dari 1000 DM memiliki kecenderungan untuk mengalami kredit macet dibandingkan kategori satu yaitu memiliki saldo rekening dibawah 100 DM. Pada kategori ke 4 memiliki nilai odd ratio tertinggi dibandingkan kategori lainnya yaitu 4,57 yang artinya kecenderungan untuk mengalami kredit macet dibandingkan kategori satu yaitu sebesar 4,57 kali. Pada selang kepercayaan 95%, nilai ini bisa berubah peningkatannya diantara 1,65 sampai 16,36 kali.

Instalment Percent

Berdasarkan koefisien regresi yang diperoleh pada peubah Instalment Percent didapatkan nilai koefisien yang negatif yang menandakan setiap peningkatan nilai dari Instalment Percent akan menyebabkan menurunnya peluang seseorang mengalami kredit macet. Yang artinya semakin tinggi persentase angsuran maka akan menurunkan peluang seseorang mengalami kredit macet. Pada koefisien odd rasio yaitu 0,78 yang artinya setiap peningkatan nilai pada persentase angsuran akan menyebabkan peningkatan peluang seseorang untuk tidak mengalami kredit macet yaitu sebesar 0,73 kali. Pada selang kepercayaan 95%, nilai ini bisa berubah peningkatannya diantara 0,61 sampai 0,87 kali.

Sex Marital Status

Berdasarkan koefisien regresi yang diperoleh pada peubah Sex Marital Status didapatkan nilai koefisien yang positif yang menandakan setiap peningkatan nilai dari Sex Marital Status akan menyebabkan meningkatknya peluang seseorang mengalami kredit macet. Dari koefisien odd rasio dapat dilihat bahwa kategori ke 3 yaitu laki-laki yang belum menikah memiliki kecenderungan untuk mengalami kredit macet dibandingkan kategori satu yaitu laki-laki yang sudah bercerai. Pada kategori ke 3 memiliki nilai odd ratio tertinggi dibandingkan kategori lainnya yaitu 2,47 yang artinya kecenderungan untuk mengalami kredit macet dibandingkan kategori satu yaitu sebesar 2,47 kali. Pada selang kepercayaan 95%, nilai ini bisa berubah peningkatannya diantara 1,15 sampai 5,26 kali.

Payment Status

Payment Status Kategori 1 : all credits at this bank paid back duly

Berdasarkan koefisien regresi yang diperoleh pada peubah Payment Status kategori all credits at this bank paid back duly didapatkan nilai koefisien yang negatif yang menandakan setiap peningkatan nilai dari Payment Status kategori all credits at this bank paid back duly akan menyebabkan meningkatknya peluang seseorang tidak mengalami kredit macet. Atau bisa dijelaskan bahwa seseorang yang memiliki riwayat kredit yang membayar semua kredit di bank ini dibayar kembali sebagaimana mestinya memiliki kecenderungan untuk tidak mengalami kredit macet. Pada kategori ini memiliki nilai odd ratio yaitu 0,93 yang artinya kecenderungan untuk tidak mengalami kredit macet dibandingkan kategori tidak ada kredit yang diambil / semua kredit dibayar kembali sebagaimana mestinya sebesar 0,93 kali. Pada selang kepercayaan 95%, nilai ini bisa berubah peningkatannya diantara 0,30 sampai 2,95 kali.

Payment Status Kategori 4 : critical account/ other credits existing (not at this bank)

Berdasarkan koefisien regresi yang diperoleh pada peubah Payment Status kategori critical account/ other credits existing (not at this bank) didapatkan nilai koefisien yang positif yang menandakan setiap peningkatan nilai dari Payment Status kategori critical account/ other credits existing (not at this bank) akan menyebabkan meningkatknya peluang seseorang mengalami kredit macet. Atau bisa dijelaskan bahwa seseorang yang memiliki riwayat kredit yang memiliki rekening penting/ kredit lain yang ada (tidak di bank ini) memiliki kecenderungan untuk mengalami kredit macet. Pada kategori ini memiliki nilai odd ratio yaitu 3,96 yang artinya kecenderungan untuk mengalami kredit macet dibandingkan kategori tidak ada kredit yang diambil / semua kredit dibayar kembali sebagaimana mestinya sebesar 3,96 kali. Pada selang kepercayaan 95%, nilai ini bisa berubah peningkatannya diantara 1,53 sampai 10,72 kali.

Performa Klasifikasi

Evaluasi terhadap model klasifikasi dilakukan dengan membuat tabel klasifikasi antara kelas sebenarnya dengan kelas hasil prediksi dari model klasifikasi. Tabel klasifikasi ini biasa disebut dengan Confusion Matrix.

Confusion matrix dapat diartikan sebagai suatu alat yang memiliki fungsi untuk melakukan analisis apakah classifier tersebut baik dalam mengenali tuple dari kelas yang berbeda. Nilai dari True-Positive (TP) dan True-Negative (TN) memberikan informasi ketika classifier dalam melakukan klasifikasi data bernilai benar, sedangkan False-Positive (FP) dan False-Negative (FN) memberikan informasi ketika classifier salah dalam melakukan klasifikasi data (Han dan Kamber, 2011).

Pada performa klasifikasi akan dihitung akurasi, spesifisitas, sensitivitas dan AUC. Akurasi merupakan persentase classifier benar melakukan prediksi. Sensitivitas merupakan Persentase data positif yang diprediksi sebagai positif. Dan Spesifisitas merupakan Persentase data negatif diprediksi sebagai negatif (Faisal dan Nugrahadi, 2019).Sedangkan AUC adalah kinerja dari model klasifikasi.

\(Akurasi=\frac{TN+TP}{TN+TP+FN+FP}100\%\)

\(Sensitivitas=\frac{TP}{TP+FN}100\%\)

\(Spesifisitas=\frac{TN}{TN+FP}100\%\)

\(AUC=\frac{(100+Sensitivitas)-(100-Spesifisitas)}{2}\)

Kinerja Klasifikasi berdasarkan AUC

Data Latih

pdata=predict(modelB,newdata=latih,type="response")
y_prediksi<-ifelse(pdata<0.6,0,1)
y_aktual<-latih$Creditability
klf=table(y_aktual,y_prediksi)
accuracy=(klf[1,1]+klf[2,2])/sum(klf)*100
sensitivity= klf[2,2]/sum(klf[2,])*100
specificity= klf[1,1]/sum(klf[1,])*100 
fprate=klf[2,1]/(klf[2,1]+klf[1,1])*100
AUC=(100+sensitivity-fprate)/2 
performa=data.frame(accuracy,sensitivity,specificity,AUC)
klf
##         y_prediksi
## y_aktual   0   1
##        0 149  91
##        1 104 456

Berdasarkan output confusion matrix diatas dapat dilihat bahwa kemampuan prediksi dari model yang didapatkan untuk memprediksi kelas 0 atau kelas dengan pembayaran kredit yang baik dapat diprediksi tepat sebanyak 149 dari total 240 sedangkan untuk kelas 1 atau pembayaran kredit yang macet atau kurang baik diprediksi tepat sebanyak 456 dari total 560.

performa

Berdasarkan hasil performa klasifikasi yang dihitung berdasarkan confusion matrix didapatkan ketepatan prediksi menggunakan model regresi logistik biner (Akurasi) sebesar 75,6% sedangkan ketepatan prediksi untuk kelas 1 atau pembayaran kredit yang macet (Sensitivitas) adalah 81,43% dan ketepatan prediksi untuk kelas 0 atau pembayaran kredit yang baik (Spesifisitas) adalah 62,08%. Artinya dari model klasifikasi memiliki kemampuan prediksi yang baik pada kelas pembayaran kredit yang macet namun belum cukup baik untuk memprediksi kelas pembayaran kredit yang baik. Dan dapat dilihat dari nilai AUC sebesar 70,16% yang menandakan kinerja dari model klasifikasi yang didapatkan cukup baik.

Data Uji

pdata=predict(modelB,newdata=uji,type="response")
y_prediksi<-ifelse(pdata<0.6,0,1)
y_aktual<-uji$Creditability
klf=table(y_aktual,y_prediksi)
accuracy=(klf[1,1]+klf[2,2])/sum(klf)*100
sensitivity= klf[2,2]/sum(klf[2,])*100
specificity= klf[1,1]/sum(klf[1,])*100 
fprate=klf[2,1]/(klf[2,1]+klf[1,1])*100
AUC=(100+sensitivity-fprate)/2 
performa=data.frame(accuracy,sensitivity,specificity,AUC)
klf
##         y_prediksi
## y_aktual   0   1
##        0  36  24
##        1  23 117

Berdasarkan output confusion matrix diatas dapat dilihat bahwa kemampuan prediksi dari model yang didapatkan untuk memprediksi kelas 0 atau kelas dengan pembayaran kredit yang baik dapat diprediksi tepat sebanyak 36 dari total 60 sedangkan untuk kelas 1 atau pembayaran kredit yang macet atau kurang baik diprediksi tepat sebanyak 117 dari total 140.

performa

Berdasarkan hasil performa klasifikasi yang dihitung berdasarkan confusion matrix didapatkan ketepatan prediksi menggunakan model regresi logistik biner (Akurasi) sebesar 76,5% sedangkan ketepatan prediksi untuk kelas 1 atau pembayaran kredit yang macet (Sensitivitas) adalah 83,57% dan ketepatan prediksi untuk kelas 0 atau pembayaran kredit yang baik (Spesifisitas) adalah 60%. Artinya dari model klasifikasi memiliki kemampuan prediksi yang baik pada kelas pembayaran kredit yang macet namun belum cukup baik untuk memprediksi kelas pembayaran kredit yang baik. Dan dapat dilihat dari nilai AUC sebesar 71,78% yang menandakan kinerja dari model klasifikasi yang didapatkan cukup baik.

Kesimpulan

  • Berdasarkan uji wald Variabel yang kita yakini berpengaruh terhadap seseorang akan menunggak kredit adalah Jumlah Saldo Rekening Koran, Durasi Kredit, Jumlah Kredit, Rekening Tabungan, Persentase Angsuran, Jenis Kelamin dan Status dan Riwayat Kredit.

  • Persamaan regresi logistik biner yang didapatkan adalah :

\(\hat{p}(x)=\frac{e^(0.0700059302+0.4618935228AccountBalance_{(2)}+...+1.3761422824PaymentStatus_{(4)})}{1+e^(0.0700059302+0.4618935228AccountBalance_{(2)}+...+1.3761422824PaymentStatus_{(4)})}\)

  • Berdasarkan hasil performa klasifikasi yang dihitung berdasarkan confusion matrix didapatkan ketepatan prediksi menggunakan model regresi logistik biner (Akurasi) sebesar 76,5% sedangkan ketepatan prediksi untuk kelas 1 atau pembayaran kredit yang macet (Sensitivitas) adalah 83,57% dan ketepatan prediksi untuk kelas 0 atau pembayaran kredit yang baik (Spesifisitas) adalah 60%. Artinya dari model klasifikasi memiliki kemampuan prediksi yang baik pada kelas pembayaran kredit yang macet namun belum cukup baik untuk memprediksi kelas pembayaran kredit yang baik. Dan dapat dilihat dari nilai AUC sebesar 71,78% yang menandakan kinerja dari model klasifikasi yang didapatkan cukup baik.

Daftar Pustaka

  • Chen, Z. (2018). The application of tree-based model to unbalanced German credit data analysis. In MATEC Web of Conferences (Vol. 232, p. 01005). EDP Sciences.
  • Faisal, M. R., dan Nugrahadi, D. T. 2019. Belajar Data Science: Klasifikasi dengan Bahasa Pemrograman R. Banjarbaru. Scripta Cendekia.
  • Han, J. dan M. Kamber. 2011. Data Mining: Concepts and Techniques . Tutorial. Morgan Kaufman Publisher. San Francisco
  • Han, J., Kamber, M., & Pei, J. 2012. Data Mining Concepts and Techniques 3rd Edition. USA: Morgan Kaufmann.
  • Hosmer, D.W., and Lemeshow, S. 2000. Applied Logistic Regression 2nd Edition. John Willey and Son Inc. New York.
  • Myers, R.H. 1990. Classical and Modern Regression with Application. PWS-KENT Publishing Company. Boston.
  • Sari, Lina Afifah Anggita. 2018. Pendugaan Parameter Model Regresi Logistik dengan Maximum Likelihood dan Ridge Logistic Estimator [Skripsi]. Bogor. Institut Pertanian Bogor, Fakultas Matematika dan Ilmu Pengetahuan Alam.