当前位置:   article > 正文

利用R语言对贷款客户作风险评估_r语言信贷分析

r语言信贷分析

利用R语言对贷款客户作风险评估(上)——数据分析

前言

风险控制能力越来越成为互联网金融行业的隐形门槛,为风控人员提供显著地风险评估依据变得非常重要。本文以银行客户的信用卡信息为案例数据,对数据进行分析为信贷管理的风控人员提供风险评估依据。本文做以下几方面的工作:

  1. 处理原始数据,进行数据探索
  2. 好坏客户为因变量,处理不平衡数据的二分类问题
  3. 将逾期还款次数作为新的因变量做零膨胀回归问题,旨在为信贷管理的风控人员提供风险评估依据

一、数据分析

数据来源

本文采用的案例数据来自UCI机器学习数据库,为台湾某银行信用卡客户信息表。该数据一共有30000个观测样本,23个自变量,1个二元目标变量,无缺失值。

数据处理

部分数据需要进行预处理,因为婚姻状况本身只有三种:1=married;2=single; 3=others,而在原数据中却出现了数据值为0的婚姻状况。同样的,在 教育程度的变量中,1=graduate school ; 2=university ; 3=high school ; 4=others ,但也出现的意义不明的值,我们需要将这些值以及others统统转换成unkown 。具体的变量情况如表1.1:

数据探索

对数据进行一个基本 面的分析,查看数据变量的分布情况,以便更好地理解数据。首先,通过图1.1的分布可以看到:使用信用卡的单身人数多于已婚人士;使用信用卡的本科学历最多;女性使用者大于男性。
从因变量的分布可以看出好客户远多于坏客户;将年龄按好坏客户分成两组数据, 用KS检验来看这两组数据是否有显著性差异,结果P值小于0.05,说明两组数据的分布差异不显著。同样的方法也可验证信用卡额度在好坏客户之间没有显著性差异。

R语言代码如下:

rm(list=ls(all=TRUE))
card=read.csv("card2.csv")

card$sex<-as.factor(card$sex)
card$mar<-as.factor(card$mar)
card$edu<-as.factor(card$edu)
card$pre<-as.factor(card$pre)
card$a<-as.factor(card$a)
card$b<-as.factor(card$b)
card$c<-as.factor(card$c)
card$d<-as.factor(card$d)
card$e<-as.factor(card$e)
card$f<-as.factor(card$f)
summary(card) #计算数据的主要描述统计量

library(ggplot2)
library(plyr)
library(dplyr)
library(Rmisc)
#因子类型变量
bar1<-ggplot(card)+geom_bar(width=1, aes(x=factor(1),fill=card$mar))+  
  coord_polar(theta="y") 
bar2<-ggplot(card)+geom_bar(width=1, aes(x=factor(1),fill=card$sex))+  
  coord_polar(theta="y")
bar3<-ggplot(card)+geom_bar(width=1, aes(x=factor(1),fill=card$edu))+
  coord_polar(theta="y")
bar4<-ggplot(card)+geom_bar(width=1, aes(x=factor(1),fill=card$pre))+
  coord_polar(theta="y")
multiplot(bar1, bar2, bar3,bar4,cols=2)
#数值型变量
box1<-ggplot(card,aes(x=pre,y=age,fill=pre)) +
  geom_boxplot() + 
  theme_bw() +  # 一种ggplot的主题
  labs(x = '好坏客户', y = '年龄') # 设置横纵坐标标签
box2<-ggplot(card,aes(x=pre,y=carde,fill=pre)) +
  geom_boxplot() + 
  theme_bw() +  # 一种ggplot的主题
  labs(x = '好坏客户', y = '信用卡额度') # 设置横纵坐标标签
multiplot(box1,box2,cols=2)

#####KS检验:检验好坏客户在年龄,信用卡额度上是否有显著差异
table(card$pre)
pre0=card[which(card$pre==0),]
pre1=card[which(card$pre==1),]

age0<-pre0$age
age1<-pre1$age
ks.test(age0,age1)#P值小于005,说明两组数据没有显著差异

carde0<-pre0$carde
carde1<-pre1$carde
ks.test(t(carde0),t(carde1))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/746593
推荐阅读
相关标签
  

闽ICP备14008679号