Anda di halaman 1dari 10

List Code Project Analisa Klasifikasi Pinjaman untuk Sektor UMKM

Membaca Data External.................................................................................................................................................... 2


Membaca Data .................................................................................................................................................................. 2
Membaca Data 2 ............................................................................................................................................................... 2
Membaca Data 3 ............................................................................................................................................................... 3
Konversi Data .................................................................................................................................................................... 3
Pemilihan data kategori .................................................................................................................................................... 3
Apa yang dapat kamu simpulkan? .................................................................................................................................... 4
Pendahuluan ..................................................................................................................................................................... 5
Pendahuluan 2 .................................................................................................................................................................. 6
Training Data ..................................................................................................................................................................... 6
Pemodelan/Modelling ...................................................................................................................................................... 7
Subbab Kode
#set library
library(ggplot2)
library(RColorBrewer)

data = read.csv("project.csv")
Membaca
> #set library
Data External > library(ggplot2)

> library(RColorBrewer)

> data = read.csv("project.csv")


head(data)
colnames(data)
> head(data)
X NAMA_NASABAH NOMOR_KONTRAK DOMISILI KARAKTER
1 0 YOLI SEPINA NAINGGOLAN 0 MASIH TETAP KOOPERATIF
2 1 ERWIN NASUTION 1 MASIH TETAP TIDAK KOOPERATIF
3 2 HUSIN 2 MASIH TETAP TIDAK KOOPERATIF
4 3 HARITSYAH 3 PINDAH PERMANEN KOOPERATIF
5 4 HARIRI PANGGABEAN 4 MASIH TETAP TIDAK KOOPERATIF
6 5 JHON PREDDY HUTABARAT 5 MASIH TETAP KOOPERATIF
PROFESI KONDISI_USAHA KONDISI_JAMINAN STATUS PRODUK PYD
1 IBU RUMAH TANGGA 2 Baik 2 3 30000000
2 NELAYAN 3 Rusak 8 3 10000000
3 LAINNYA 3 Baik 8 3 60000000
4 PNS 1 Rusak 7 3 90000000
5 WIRAUSAHA / PEDAGANG 1 Baik 8 3 150000000
6 WIRAUSAHA / PEDAGANG 1 Baik 7 3 40000000
TENOR OSL KEWAJIBAN KOLEKTIBILITAS COUNT_SURVEY
1 24 28750000 4896841 DALAM PENGAWASAN KHUSUS 1
2 12 2040693 0 MACET 1
Membaca 3 24 0 0 MACET 1
Data 4 18 0 0 MACET 1
5 18 19844807 0 MACET 1
6 36 27298726 2208516 DALAM PENGAWASAN KHUSUS 1
REKOMENDASI_TINDAK_LANJUT
1 Angsuran Biasa
2 Penarikan
3 Penarikan
4 Angsuran Biasa
5 Penarikan
6 Restrukturisasi

> colnames(data)
[1] "X" "NAMA_NASABAH"
[3] "NOMOR_KONTRAK" "DOMISILI"
[5] "KARAKTER" "PROFESI"
[7] "KONDISI_USAHA" "KONDISI_JAMINAN"
[9] "STATUS" "PRODUK"
[11] "PYD" "TENOR"
[13] "OSL" "KEWAJIBAN"
[15] "KOLEKTIBILITAS" "COUNT_SURVEY"
[17] "REKOMENDASI_TINDAK_LANJUT"
summary(data$OSL)
Membaca
#colnames(data)
Data 2 str(data)
Subbab Kode
> summary(data$OSL)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0 3999950 8687350 26562373 32082900 440932336

> #colnames(data)
> str(data)
'data.frame': 1000 obs. of 17 variables:
$ X : int 0 1 2 3 4 5 6 7 8 9 ...
$ NAMA_NASABAH : chr "YOLI SEPINA NAINGGOLAN" "ERWIN NASUTION"
"HUSIN" "HARITSYAH" ...
$ NOMOR_KONTRAK : int 0 1 2 3 4 5 6 7 8 9 ...
$ DOMISILI : chr "MASIH TETAP" "MASIH TETAP" "MASIH TETAP"
"PINDAH PERMANEN" ...
$ KARAKTER : chr "KOOPERATIF" "TIDAK KOOPERATIF" "TIDAK
KOOPERATIF" "KOOPERATIF" ...
$ PROFESI : chr "IBU RUMAH TANGGA" "NELAYAN" "LAINNYA"
"PNS" ...
$ KONDISI_USAHA : int 2 3 3 1 1 1 3 2 2 3 ...
$ KONDISI_JAMINAN : chr "Baik" "Rusak" "Baik" "Rusak" ...
$ STATUS : int 2 8 8 7 8 7 7 7 7 3 ...
$ PRODUK : int 3 3 3 3 3 3 3 3 3 3 ...
$ PYD : int 30000000 10000000 60000000 90000000
150000000 40000000 60000000 7500000 45000000 50000000 ...
$ TENOR : int 24 12 24 18 18 36 36 4 24 36 ...
$ OSL : int 28750000 2040693 0 0 19844807 27298726
19999200 7500000 45000000 6944100 ...
$ KEWAJIBAN : int 4896841 0 0 0 0 2208516 6946592 0 0
7730984 ...
$ KOLEKTIBILITAS : chr "DALAM PENGAWASAN KHUSUS" "MACET" "MACET"
"MACET" ...
$ COUNT_SURVEY : int 1 1 1 1 1 1 2 2 1 1 ...
$ REKOMENDASI_TINDAK_LANJUT: chr "Angsuran Biasa" "Penarikan" "Penarikan"
"Angsuran Biasa" ...
data_reduce = data[-c(1,2)]
Membaca
Data 3 > data_reduce = data[-c(1,2)]

data_reduce[, 8:11] = sapply(data_reduce[, 8:11], as.numeric)


Konversi Data
> data_reduce[, 8:11] = sapply(data_reduce[, 8:11], as.numeric)

data_kategorik =
data_reduce[,c("KONDISI_USAHA","KONDISI_JAMINAN","REKOMENDASI_TINDAK_LANJUT")]
chisq.test(data_kategorik$KONDISI_JAMINAN, data_kategorik$KONDISI_USAHA)
par(mfrow=c(2,2))
data_reduce$REKOMENDASI_TINDAK_LANJUT =
as.factor(data_reduce$REKOMENDASI_TINDAK_LANJUT)
> chisq.test(data_kategorik$KONDISI_JAMINAN, data_kategorik$KONDISI_USAHA)

Pemilihan data Pearson's Chi-squared test


kategori
data: data_kategorik$KONDISI_JAMINAN and data_kategorik$KONDISI_USAHA
X-squared = 18.181, df = 6, p-value = 0.005796

> par(mfrow=c(2,2))

> data_reduce$REKOMENDASI_TINDAK_LANJUT =
as.factor(data_reduce$REKOMENDASI_TINDAK_LANJUT)
Subbab Kode
library(corrplot)
M = cor(data_reduce[,8:11])
corrplot(M, type="upper", order="hclust")

corrplot(M,
method='number',
type="lower")

Apa yang corr = round(cor(M), 1)


dapat kamu ggcorrplot(corr, hc.order = TRUE,
simpulkan? type = "lower",
lab = TRUE,
lab_size = 3,
method="circle",
colors = c("tomato2","white","springgreen3"),
title="Correlogram of Data Nasabah",
ggtheme=theme_bw)
cor(M, use="complete.obs", method="kendall")
corrplot(M, method="ellipse")
Subbab Kode

colnames(data_reduce)
data_select =
data_reduce[,c("KARAKTER","KONDISI_USAHA","KONDISI_JAMINAN","STATUS","KEWAJIBAN
Pendahuluan ","OSL","KOLEKTIBILITAS","REKOMENDASI_TINDAK_LANJUT")]

data_non_na = na.omit(data_select)
Subbab Kode
> colnames(data_reduce)
[1] "NOMOR_KONTRAK" "DOMISILI"
[3] "KARAKTER" "PROFESI"
[5] "KONDISI_USAHA" "KONDISI_JAMINAN"
[7] "STATUS" "PRODUK"
[9] "PYD" "TENOR"
[11] "OSL" "KEWAJIBAN"
[13] "KOLEKTIBILITAS" "COUNT_SURVEY"
[15] "REKOMENDASI_TINDAK_LANJUT"

> data_select =
+
data_reduce[,c("KARAKTER","KONDISI_USAHA","KONDISI_JAMINAN","STATUS","KEWAJIBAN
","OSL","KOLEKTIBILITAS","REKOMENDASI_TINDAK_LANJUT")]

> data_non_na = na.omit(data_select)


data_select_new = data_select
data_select_new$KEWAJIBAN = scale(data_select_new$KEWAJIBAN)[,1]
data_select_new$OSL = scale(data_select_new$OSL)[,1]
data_select_new$KEWAJIBAN = cut(data_select_new$KEWAJIBAN, breaks = c(-
0.354107,5,15,30))
data_select_new$KEWAJIBAN = as.factor(data_select_new$KEWAJIBAN)
data_select_new$OSL = cut(data_select_new$OSL, breaks = c(-0.60383,3,10,15))
data_select_new$OSL = as.factor(data_select_new$OSL)
data_select_new = na.omit(data_select_new)
> data_select_new = data_select

> data_select_new$KEWAJIBAN = scale(data_select_new$KEWAJIBAN)[,1]


Pendahuluan 2
> data_select_new$OSL = scale(data_select_new$OSL)[,1]

> data_select_new$KEWAJIBAN = cut(data_select_new$KEWAJIBAN, breaks = c(-


0.354107,5,15,30))

> data_select_new$KEWAJIBAN = as.factor(data_select_new$KEWAJIBAN)

> data_select_new$OSL = cut(data_select_new$OSL, breaks = c(-0.60383,3,10,15))

> data_select_new$OSL = as.factor(data_select_new$OSL)

> data_select_new = na.omit(data_select_new)


library(caret)

index = createDataPartition(data_select_new$REKOMENDASI_TINDAK_LANJUT, p = .95,


list = FALSE)

train = data_select_new[index,]
test = data_select_new[-index,]
Training Data > library(caret)

> index = createDataPartition(data_select_new$REKOMENDASI_TINDAK_LANJUT, p


= .95, list = FALSE)

> train = data_select_new[index,]

> test = data_select_new[-index,]


Subbab Kode
train2=train
train2$REKOMENDASI_TINDAK_LANJUT = relevel(train2$REKOMENDASI_TINDAK_LANJUT,
ref="Angsuran Biasa")
require(nnet)
multinom_model = multinom(REKOMENDASI_TINDAK_LANJUT ~ ., data = train2)

summary(multinom_model)
exp(coef(multinom_model))
head(round(fitted(multinom_model),2))
train2$ClassPredicted = predict(multinom_model, newdata = train2, "class")

train_prob = predict(multinom_model, newdata = train2, "probs")


Pemodelan/M df = train_prob
odelling df$max = apply(df,1,max)
train2$score = df$max
test_prob = predict(multinom_model, newdata = test, "probs")
df2 = test_prob
df2$max= apply(df2,1,max)

# Building classification table


tab_train = table(train2$REKOMENDASI_TINDAK_LANJUT, train2$ClassPredicted)
round((sum(diag(tab_train))/sum(tab_train))*100,4)
test$ClassPredicted = predict(multinom_model, newdata = test, "class")
test$score = df2$max
tab_test = table(test$REKOMENDASI_TINDAK_LANJUT, test$ClassPredicted)
round((sum(diag(tab_test))/sum(tab_test))*100,4)
> train2=train

> train2$REKOMENDASI_TINDAK_LANJUT = relevel(train2$REKOMENDASI_TINDAK_LANJUT,


ref="Angsuran Biasa")

> require(nnet)

> multinom_model = multinom(REKOMENDASI_TINDAK_LANJUT ~ ., data = train2)


# weights: 64 (45 variable)
initial value 1319.752232
iter 10 value 736.932554
iter 20 value 617.007990
iter 30 value 612.874132
iter 40 value 612.627062
iter 50 value 612.623395
iter 60 value 612.623031
iter 60 value 612.623026
iter 60 value 612.623026
final value 612.623026
converged

> summary(multinom_model)
Call:
multinom(formula = REKOMENDASI_TINDAK_LANJUT ~ ., data = train2)

Coefficients:
(Intercept) KARAKTERTIDAK KOOPERATIF KONDISI_USAHA
Diskon Pelunasan -3.324257 1.891718 -0.7383018
Penarikan -7.251101 3.916988 0.6791476
Restrukturisasi -4.173932 -2.135538 0.9961923
KONDISI_JAMINANHilang KONDISI_JAMINANPindah Tangan
Diskon Pelunasan -22.6176453 -24.9113561
Penarikan 0.7461125 0.2961668
Restrukturisasi 0.5024383 -13.2427492
KONDISI_JAMINANRusak STATUS KEWAJIBAN(5,15]
Diskon Pelunasan -23.6135378 0.1083507 0
Penarikan -1.1669910 0.1247397 0
Restrukturisasi 0.1430118 0.3273114 0
KEWAJIBAN(15,30] OSL(3,10] OSL(10,15]
Diskon Pelunasan -3.571247 2.9537695 0
Penarikan 0.942512 -22.0680565 0
Restrukturisasi 24.843835 0.3507391 0
KOLEKTIBILITASDIRAGUKAN KOLEKTIBILITASKURANG LANCAR
Diskon Pelunasan 2.7448985 0.2678781
Penarikan 4.2241086 0.8638934
Restrukturisasi -0.2650776 -0.1955865
KOLEKTIBILITASLANCAR KOLEKTIBILITASMACET
Diskon Pelunasan 0.1152006 0.5904995
Penarikan -27.4208540 1.5800785
Restrukturisasi 0.8538697 -3.3199930

Std. Errors:
(Intercept) KARAKTERTIDAK KOOPERATIF KONDISI_USAHA
Diskon Pelunasan 0.4286027 NaN NaN
Penarikan 1.0503544 NaN 0.8998869
Restrukturisasi NaN NaN 0.7659660
KONDISI_JAMINANHilang KONDISI_JAMINANPindah Tangan
Diskon Pelunasan 0.08120852 NaN
Penarikan NaN NaN
Restrukturisasi NaN 3.660919e-06
KONDISI_JAMINANRusak STATUS KEWAJIBAN(5,15] KEWAJIBAN(15,30]
Diskon Pelunasan 0.466017002 NaN NaN NaN
Penarikan 0.883358164 NaN NaN 1.263938
Restrukturisasi 0.004955741 NaN 8.147288e-20 NaN
OSL(3,10] OSL(10,15] KOLEKTIBILITASDIRAGUKAN
Subbab Kode
Diskon Pelunasan 0.3245671 NaN 0.6319447
Penarikan 1.0508316 NaN NaN
Restrukturisasi 0.2874094 NaN NaN
KOLEKTIBILITASKURANG LANCAR KOLEKTIBILITASLANCAR
Diskon Pelunasan 0.9680766 NaN
Penarikan 1.1676764 1.4194791
Restrukturisasi 0.1607224 0.1195614
KOLEKTIBILITASMACET
Diskon Pelunasan 0.1129287
Penarikan 1.0126723
Restrukturisasi NaN

Residual Deviance: 1225.246


AIC: 1303.246

> exp(coef(multinom_model))
(Intercept) KARAKTERTIDAK KOOPERATIF KONDISI_USAHA
Diskon Pelunasan 0.0359992493 6.630750 0.4779248
Penarikan 0.0007093927 50.248881 1.9721959
Restrukturisasi 0.0153916206 0.118181 2.7079510
KONDISI_JAMINANHilang KONDISI_JAMINANPindah Tangan
Diskon Pelunasan 1.504116e-10 1.517524e-11
Penarikan 2.108786e+00 1.344694e+00
Restrukturisasi 1.652746e+00 1.773157e-06
KONDISI_JAMINANRusak STATUS KEWAJIBAN(5,15] KEWAJIBAN(15,30]
Diskon Pelunasan 5.556110e-11 1.114439 1 2.812077e-02
Penarikan 3.113022e-01 1.132854 1 2.566420e+00
Restrukturisasi 1.153743e+00 1.387233 1 6.159430e+10
OSL(3,10] OSL(10,15] KOLEKTIBILITASDIRAGUKAN
Diskon Pelunasan 1.917811e+01 1 15.5630337
Penarikan 2.605943e-10 1 68.3135791
Restrukturisasi 1.420117e+00 1 0.7671464
KOLEKTIBILITASKURANG LANCAR KOLEKTIBILITASLANCAR
Diskon Pelunasan 1.3071878 1.122098e+00
Penarikan 2.3723793 1.233884e-12
Restrukturisasi 0.8223522 2.348718e+00
KOLEKTIBILITASMACET
Diskon Pelunasan 1.80488967
Penarikan 4.85533700
Restrukturisasi 0.03615309

> head(round(fitted(multinom_model),2))
Angsuran Biasa Diskon Pelunasan Penarikan Restrukturisasi
2 0.47 0.00 0.52 0.01
3 0.21 0.02 0.76 0.00
4 0.98 0.00 0.00 0.02
5 0.41 0.20 0.38 0.00
6 0.69 0.03 0.00 0.28
7 0.25 0.00 0.00 0.75

> train2$ClassPredicted = predict(multinom_model, newdata = train2, "class")

> train_prob = predict(multinom_model, newdata = train2, "probs")

> df = train_prob

> df$max = apply(df,1,max)

> train2$score = df$max

> test_prob = predict(multinom_model, newdata = test, "probs")

> df2 = test_prob


Subbab Kode
> df2$max= apply(df2,1,max)

> # Building classification table


> tab_train = table(train2$REKOMENDASI_TINDAK_LANJUT, train2$ClassPredicted)

> round((sum(diag(tab_train))/sum(tab_train))*100,4)
[1] 68.3824

> test$ClassPredicted = predict(multinom_model, newdata = test, "class")

> test$score = df2$max

> tab_test = table(test$REKOMENDASI_TINDAK_LANJUT, test$ClassPredicted)

> round((sum(diag(tab_test))/sum(tab_test))*100,4)
[1] 70.8333

Anda mungkin juga menyukai