利用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))
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值