拍拍贷业务数据探索分析-基于R语言

=======================================================

1.前言

根据百度百科和官网:拍拍贷成立于2007年6月,公司全称为“上海拍拍贷金融信息服务有限公司”,总部位于国际金融中心上海,是中国第一家网络信用借贷平台(P2P)。拍拍贷是国内第一家由工商部门特批,获得“金融信息服务”经营范围许可,得到政府认可的互联网金融平台。它主要提供一个借、贷的中介平台,撮合出借人、投资人双方达成交易。2017年于美国纽交所成功上市,11年来累计用户数过8000万,累计成交金额过1300亿,累计为用户赚取过48亿。

本项目通过研究拍拍贷2015-01-01到2017-01-30的所有信用标的10%样本,探索其中的一些规律,并对借款金额、利率、信用评级等进行初步研究。本项目只研究LC数据集。

#2 加载探索分析需要的包及数据

根据项目需要,加载ggplot2、knitr、dplyr、scales、memisc和gridExtra包。

library(ggplot2)
library(knitr)
library(dplyr)
library(scales)
library(memisc)
library(gridExtra)

加载数据(使用拍拍贷的LC数据集,注意这里需要指定编码,使用fileEncoding=‘UTF-8’,不然会出现乱码或列标签与内容对不上)

setwd('E:/udacity/udacity data/R/project/a')
lc<-read.csv('LC.csv',fileEncoding ='UTF-8')

3 观察数据的基本情况

summary(lc)

结论:

lc表主要是与借款人相关的资料,共有21列,328553条数据;借款金额为100-500000万元,借款期限为1-24期,借款利率为7%-24%(法定最高借款利率),借款人年龄主要分布在18-65岁之间,借款性别中男女比约为1.9:1,与网上经常看到的各种相关新闻不太一致;多数借款人未经过认证;最大借款次数高达649次,最大借款累计金额高达740万,最大逾期达60期。

4 准备工作

4.1 数据类型及处理

观察lc表数据类型,只有整型、浮点数和factor变量三种,其中有以下问题需要处理:

4.1.1 日期需要进行分组

str(lc)
lc$year<-format(as.Date(lc$借款成功日期),'%y')
lc$month<-format(as.Date(lc$借款成功日期),'%m')
lc$day<-format(as.Date(lc$借款成功日期),'%d')

4.1.2 新建认证条数列统计认证成功的总数

成功认证赋值为1,未成功认证赋值为0,最大认证条数为6,最低认证条数为0;然后将认证条数列更改为factor类型以便后面统计。

lc$认证条数 <- (lc$手机认证=='成功认证') + (lc$户口认证=='成功认证') + 
  (lc$视频认证=='成功认证') + (lc$学历认证=='成功认证') + 
  (lc$征信认证=='成功认证') + (lc$淘宝认证=='成功认证')

lc$认证条数<-factor(lc$认证条数,levels=c(0:6),
                labels=c('0','1','2','3','4','5','6'))
str(lc)

4.1.3 划分年龄段

根据经验按照22/27/32/37/42/47/52/57划分年龄段

lc$年龄段<-cut(lc$年龄,breaks=c(17,22,27,32,37,42,47,52,57),include.lowest=T)

5 单变量探索

5.1 借款金额

探究借款金额的分布,选用频率直方图;为尽量探究一般行为,找出大众规律,使用geom_vline找出95%置信区间的范围,后面多采用类似方法。

qplot(x=借款金额,data=lc,binwidth=0.01,ylab=('计量值'),fill=I('#F97420'))+
  scale_x_log10(breaks=c(0,100,500,1000,5000,9000,50000,200000,500000))+
  scale_y_sqrt()+
  geom_vline(xintercept =quantile(lc$借款金额,probs=0.975,na.rm=T),
             linetype='dashed',color='blue')+ 
  geom_vline(xintercept =quantile(lc$借款金额,probs=0.025,na.rm=T),
             linetype='dashed',color='blue')
  

结论:95%置信区间的借款金额集中在500至9000元之间。根据拍拍贷最新官网信息,借款额度不能低于1000元。这其中出现的1000元以下的借款可能是因为2017年以前的规定不一样。另外,人们的借款金额更多为1000的整数倍,这与常识相符。

5.2借款期限

观察借款期限的分布,选用频率直方图

qplot(x=借款期限,data=lc,binwidth=1)+
  scale_x_continuous(lim=c(1,25),breaks=seq(1,25,2))

结论:借款期限绝大多数为12个月、6个月,另外还有少量为9个月,其他的借款期很少。

5.3 借款利率

观察借款利率的分布,选用频率直方图

qplot(x=借款利率,data=lc,binwidth=0.2)+
  scale_x_continuous(lim=c(5,25),breaks=seq(5,25,1))

结论:借款利率主要分布在16-24%之间,主要为20%和22%。符合网贷公司高利率的印象。

5.4 借款人的年龄分布

探究借款人的年龄分布,选用频率直方图,主要是观察95%置信区间的分布

qplot(x=年龄,data=lc,binwidth=1)+
  scale_x_continuous(lim=c(16,66),breaks=seq(16,66,2))+
  geom_vline(xintercept =quantile(lc$年龄,probs=0.975,na.rm=T),
             linetype='dashed',color='blue')+ 
  geom_vline(xintercept =quantile(lc$年龄,probs=0.025,na.rm=T),
             linetype='dashed',color='blue')

结论:借款人的年龄分布在18-56岁之间,95%置信区间的人在20-46岁之间。

5.5 性别

观察性别的分布,选用条形图。

qplot(x=性别,data=lc)

结论:借款人中男性约为女性的2倍,说明男性更经常从拍拍贷借钱。

5.6 初始评级

观察初始评级的分布,选用条形图。

qplot(x=初始评级,data=lc)

结论:初始评级中C和D最多,F很少。

5.7 认证方式

先创建6个认证方式的条形图,再使用grid.arrage方法并列显示。

lc_phone<-ggplot(aes(x=手机认证),data=lc)+geom_bar()
lc_account<-ggplot(aes(x=户口认证),data=lc)+geom_bar()
lc_vedio<-ggplot(aes(x=视频认证),data=lc)+geom_bar()
lc_education<-ggplot(aes(x=学历认证),data=lc)+geom_bar()
lc_credit<-ggplot(aes(x=征信认证),data=lc)+geom_bar()
lc_taobao<-ggplot(aes(x=淘宝认证),data=lc)+geom_bar()
grid.arrange(lc_phone,lc_account,lc_vedio,lc_education,
             lc_credit,lc_taobao,ncol=2)

另外还需要观察下认证条数的分布情况,选用条形图。

summary(lc$认证条数)
ggplot(aes(x=认证条数),data=lc,bins=10)+geom_bar()

结论:通过手机认证和学历认证的借款人相对较多,多数借款人只通过最多两种认证,一种认证也未通过的约占40%。

5.8 历史成功借款次数

选用频率直方图,选用借款次数>=1的数据;为长尾数据,y轴坐标间隔设置为sqrt;置信区间选95%。

summary(lc$历史成功借款次数)
ggplot(aes(x=历史成功借款次数),data=subset(lc,历史成功借款次数>=1))+
  geom_histogram(binwidth=1)+
  scale_x_continuous(lim=c(0,50),breaks=seq(0,50,2))+
  scale_y_sqrt()+
  geom_vline(xintercept =quantile(lc$历史成功借款次数,probs=0.975,na.rm=T),
             linetype='dashed',color='blue')
  

结论:95%置信区间的历史成功借款次数为1-7次。

5.9 历史成功借款金额

为方便统计,选用历史成功借款金额>=100的数据,选用频率直方图,置信区间95%,x轴坐标间隔设置为log10。

summary(lc$历史成功借款金额)
ggplot(aes(x=历史成功借款金额),data=subset(lc,历史成功借款金额>100))+
  geom_histogram(binwidth=0.05)+
  scale_x_log10(breaks=c(100,1000,10000,30000,100000,1000000,7500000))+
  geom_vline(xintercept =quantile(lc$历史成功借款金额,probs=0.95,na.rm=T),
             linetype='dashed',color='blue')

结论:95%置信区间的借款金额为100-30000元,

5.10 总待还本金

选用频率直方图,选择总待还本金>=100的数据,置信区间95%。

summary(lc$总待还本金)
ggplot(aes(x=总待还本金),data=subset(lc,总待还本金>=100))+
  geom_histogram(binwidth=0.05)+
  scale_x_log10(breaks=c(100,1000,10000,30000,100000,1000000,1200000))+
  geom_vline(xintercept =quantile(lc$历史成功借款金额,probs=0.95,na.rm=T),
             linetype='dashed',color='blue')

结论:95%置信区间的总待还本金在100-30000元之间。

5.11 历史正常还款期数

选用频率直方图,选择历史正常还款期数>=1。

summary(lc$历史正常还款期数)
ggplot(aes(x=历史正常还款期数),data=subset(lc,历史正常还款期数>=1))+
  geom_histogram(binwidth=0.1)+
  scale_x_log10()

结论:历史正常还款期数呈现正态分布,无异常特征。

5.12 历史逾期还款期数

重点计算历史逾期还款期数超过12期的比例;选用频率直方图,y轴数据间隔设置为sqrt。

summary(lc$历史逾期还款期数)
sum(lc$历史逾期还款期数==0)
sum(lc$历史逾期还款期数<=12&lc$历史逾期还款期数>=1)
sum(lc$历史逾期还款期数>12)
ggplot(aes(x=历史逾期还款期数),data=subset(lc,历史逾期还款期数>=1))+
  geom_histogram(binwidth=1)+
  scale_x_continuous(lim=c(0,60),breaks=seq(0,60,2))+
  scale_y_sqrt()

结论:大部分人能按期还款,历史逾期还款期数超过12期的只有1049人,占比约0.32%。

5.13 借款日期

先画出按年、月、日的借款金额的分布,再用grid.arrange方法合并显示。

lc_year<-qplot(x=year,data=lc)
lc_month<-qplot(x=month,data=lc)
lc_day<-qplot(x=day,data=lc)
grid.arrange(lc_year,lc_month,lc_day,ncol=1)

结论:在2016年1月和8-12月借款成功的人较多。

单变量分析结论汇总:

拍拍贷LC数据集共有21列,328553条数据,根据对单变量的观察,得出以下结论:
1.95%置信区间的借款金额集中在500至9000元之间。根据拍拍贷最新官网信息,借款额度不能低于1000元。这其中出现的1000元以下的借款可能是因为2017年以前的规定不一样。另外,人们的借款金额更多为1000的整数倍,这与常识相符。
2.借款期限绝大多数为12个月、6个月,另外还有少量为9个月,其他的借款期很少。 
3.借款利率主要分布在16-24%之间,主要为20%和22%。符合网贷公司高利率的印象。
4.借款人的年龄分布在18-56岁之间,95%置信区间的人在20-46岁之间。
5.借款人中男性约为女性的2倍,说明男性更经常从拍拍贷借钱。
6.初始评级中C和D最多,F很少。
7.通过手机认证和学历认证的借款人相对较多,多数借款人只通过最多两种认证,一种认证也未通过的约占40%。
8.95%置信区间的历史成功借款次数为1-7次。
9.95%置信区间的借款金额为100-30000元,
10.95%置信区间的总待还本金在100-30000元之间。
11.历史正常还款期数呈现正态分布,无异常特征。
12.大部分人能按期还款,历史逾期还款期数超过12期的只有1049人,占比约0.32%。
13.在2016年1月和8-12月借款成功的人较多。

6 双变量探索

通过以上对单变量的探索后,拟研究以下几个问题:
1.影响借款利率的因素有哪些,例如借款金额、借款期限、借款类型、初始评级、历史逾期期数、总待还本金、认证条数等的关系;
2.初始评级与认证条数的关系;
3.借款金额与初始评级、年龄、历史成功借款金额、总待还本金、历史还款逾期数的关系。

6.1 影响借款利率的因素

6.1.1 借款利率与借款金额的关系

先测算两者相关系数;选用散点图,虚化,同时为了观察两者的关系,添加趋势线。

cor.test(lc$借款金额,lc$借款利率,method='pearson')  
ggplot(aes(x=借款金额,y=借款利率),data=lc)+
  geom_jitter(alpha=0.05)+
  scale_x_log10()+
  geom_smooth()

结论:随着借款金额增加,借款利率下降,特别是借款金额超过1万元时下降更快。

6.1.2 借款利率与借款期限

先测算两者相关系数;选用散点图,虚化,并添加趋势线。

cor.test(lc$借款期限,lc$借款利率,method='pearson')  
ggplot(aes(x=借款期限,y=借款利率),data=lc)+
  geom_jitter(alpha=0.05)+
  scale_x_continuous(lim=c(1,24),breaks=seq(1,24,1))+
  geom_smooth()

结论,借款期限与借款利率无明显关系。

6.1.3 借款类型与借款利率的关系

选用箱线图能最直观的反映两者关系

ggplot(aes(x=借款类型,y=借款利率),data=lc)+
  geom_boxplot()

结论:APP闪电、普通和其他的贷款利率相对较高,电商的贷款利率相对较低。

6.1.4 初始评级与借款利率

选用箱线图。

ggplot(aes(x=初始评级,y=借款利率),data=lc)+
  geom_boxplot()

结论:初始评级越高借款利率越低,初始评级为E和F的借款利率接近24%。

6.1.5 借款利率与历史逾期

选用散点图,虚化,添加趋势线。

cor.test(lc$历史逾期还款期数,lc$借款利率,method='pearson')  
ggplot(aes(x=历史逾期还款期数,y=借款利率),data=lc)+
  geom_jitter(alpha=0.05)+
  scale_x_continuous(lim=c(1,60),breaks=seq(1,60,2))+
  scale_y_continuous(lim=c(10,24),breaks=seq(10,24,1))+
  geom_smooth()

结论:借款利率与历史逾期还款期数无明显关系。

6.1.6 借款利率与总待还本金

选用散点图,虚化,添加趋势线。

cor.test(lc$总待还本金,lc$借款利率,method='pearson')  
ggplot(aes(x=总待还本金,y=借款利率),data=lc)+
  geom_jitter(alpha=0.05)+
  scale_x_log10(breaks=c(100,1000,10000,100000,1000000))+
  scale_y_continuous(lim=c(10,24),breaks=seq(10,24,1))+
  geom_smooth()

结论:当总待还本金超过1万时,借款利率随总待还本金增加而下降。

6.2 初始评级与认证条数的关系

这里选用条形图,并且根据认证条数的不同进行着色,以方便观察。

ggplot(aes(x=初始评级),data=lc)+
  geom_bar(aes(fill=认证条数),position='fill')+
  scale_fill_brewer(palette ='green')

结论:认证条数与初始评级没有明显关系。

6.3 借款金额

6.3.1 借款金额与初始评级

选用箱线图,重点观察高额借款的变化趋势。

ggplot(aes(x=初始评级,y=借款金额),data=lc)+
  geom_boxplot()+
  scale_y_log10()

结论:初始评级越高,能借到的最大额度越高。

6.3.2 借款金额与年龄段的关系

选用箱线图,重点观察最大借款额、下四分位的位置和四分位间距。

ggplot(aes(x=年龄段,y=借款金额),data=lc)+
  geom_boxplot()+
  scale_y_log10()

结论:17-22岁的借款人借款金额四分位间距相对较小,27岁以上借款人的借款金额四分位间距无明显差异,22-27岁借款人的借款金额四分位间距居中。

6.3.3 借款金额与历史成功借款金额

选用散点图,虚化,添加趋势线,可以看到很明显的变化趋势。

ggplot(aes(x=历史成功借款金额,y=借款金额),data=subset(lc,历史成功借款金额>0))+
  geom_jitter(alpha=0.1)+
  scale_x_log10()+
  scale_y_log10()+
  geom_smooth()

结论:借款金额随着历史成功借款金额增加而增加,尤其是历史成功借款金额超过1万元后增幅更快,说明借款人的借款额度会越来越大。

6.3.4 借款金额与总待还本金

选用散点图,虚化,添加趋势线。

ggplot(aes(x=总待还本金,y=借款金额),data=subset(lc,总待还本金>0))+
  geom_jitter(alpha=0.1)+
  scale_x_log10(breaks=c(0,100,1000,5000,10000,100000,1000000))+
  scale_y_log10()+
  geom_smooth()

结论:借款金额随着总待还本金增加而增加,说明借款越多,需要还的越多。

6.3.5 借款金额与历史逾期数

选用散点图,虚化,添加趋势线。

ggplot(aes(x=历史逾期还款期数,y=借款金额),data=subset(lc,历史逾期还款期数>0))+
  geom_jitter(alpha=0.1)+
  scale_x_continuous(lim=c(0,60),breaks=seq(0,60,3))+
  scale_y_log10()+
  geom_smooth()

结论:借款金额与历史逾期数没有明显关系。

6.3.6 借款金额与认证条数

选用箱线图,重点观察下四分位位置和四分位间距。

ggplot(aes(x=认证条数,y=借款金额),data=lc)+
  geom_boxplot()+
  scale_y_log10()

发现认证条数越高,能够借到的最低额度越高。是否对于较大额度的借款,需要的认证条数更多呢?再选用频率直方图,进一步观察较高借款额(这里理解为超过10万元)的分布。

ggplot(aes(x=借款金额),data=subset(lc,借款金额>=100000),bins=45)+
  geom_histogram()+
  facet_wrap(~认证条数,nrow=4)+
  scale_x_continuous(lim=c(50000,550000),breaks=seq(50000,550000,100000))

结论:0认证一般可以借低于25万的借款;对于想要大额借款的人来说,应该通过2-4种认证。两件有趣的事情:0认证的人中有13人借到了50万元;通过6种认证的人借款额几乎都低于10万。

双变量分析结论汇总:

 1.随着借款金额、总待还本金增加,借款利率下降,特别是借款金额超过1万元时下降更快。
 2.APP闪电、普通和其他的借款利率相对较高,电商的借款利率相对较低。
 3.初始评级越高借款利率越低,初始评级为E和F的借款利率接近24%。
 4.认证条数与初始评级没有明显关系。
 5.初始评级越高,能借到的最大额度越高。 
 6.17-22岁的借款人借款金额四分位间距相对较小,27岁以上借款人的借款金额四分位间距无明显差异,22-27岁借款人的借款金额四分位间距居中。
 7.借款金额随着历史成功借款金额增加而增加,尤其是历史成功借款金额超过1万元后增幅更快,说明借款人的借款额度会越来越大。
 8.借款金额随着总待还本金增加而增加,说明借款越多,需要还的越多。
 9.0认证一般可以借低于25万的借款;对于想要大额借款的人来说,应该通过2-4种认证。两件有趣的事情:0认证的人中有13人借到了50万元;通过6种认证的人借款额几乎都低于10万。

7.多变量探索

拟探索问题:
1.借款金额、利率和初始评级的关系;
2.借款金额与借款利率、借款类型的关系;
3.借款利率与初始评级和认证条数的关系;
4.借款利率、金额、性别与年龄段的关系。

7.1 借款金额、利率与初始评级

选用jitter散点图,横坐标为利率,纵坐标为金额,color为初始评级,评级越高颜色越深。

ggplot(aes(x=借款利率,y=借款金额,color=初始评级),data=lc)+
  geom_jitter()+
  scale_y_log10()+
  scale_color_brewer(palette = 'red',direction=-1)

结论:初始评级越高,借款利率越低,能够借到的最大金额也越高;借款金额越高(可能是大客户),借款利率越低。

7.2 借款金额与借款利率、借款类型

选用散点图,x轴为借款利率,y轴为借口金额,color选择借款类型,这里是分类非定序变量,选择不同的颜色更能突出差别。

ggplot(aes(x=借款利率,y=借款金额),data=lc)+
  geom_point(aes(color=借款类型))+
  scale_y_log10()

结论:app闪电的借款金额较低、借款利率高;电商的借款金额较高、借款利率较低;普通和其他的借款金额和利率分布无明显特征。

7.3 借款金额、利率和认证条数

选用jitter散点图,横坐标为利率,纵坐标为金额,color为认证条数,条数越多颜色越深。

ggplot(aes(x=借款利率,y=借款金额),data=lc)+
  geom_jitter(aes(color=认证条数))+
  scale_y_log10()+
  scale_color_brewer(palette = 'red')

结论:认证条数多的借款金额更大,但是认证条数与利率没有明显关系。

7.4 借款金额与利率、性别、年龄段的关系

选用jitter散点图,横坐标为利率,纵坐标为金额,color为年龄段,年龄越小越多颜色越深;由于还有第四个变量性别,这里采用分面显示。

ggplot(aes(x=借款利率,y=借款金额,color=年龄段),data=lc)+
  geom_jitter()+
  scale_y_log10()+
  scale_color_brewer(direction = -1)+
  theme_dark()+
  facet_wrap(~性别,nrow=4)

结论:性别与借款利率无明显关系;男性借款总数明显多于女性,且女性借款额度整体低于男性;年龄在27-42岁的借款金额更大;借款金额大的借款利更低;总体来看,年龄在27-42的应该为拍拍贷的优质用户。

结论汇总:

1.初始评级越高,借款利率越低;借款金额越高(可能是大客户),借款利率越低。
2.app闪电的借款金额较低、借款利率高;电商的借款金额较高、借款利率较低;普通和其他的借款金额和利率分布无明显特征。
3.认证条数多的借款金额更大,但是认证条数与利率没有明显关系。
4.性别与借款利率无明显关系;男性借款总数明显多于女性,且女性借款额度整体低于男性;年龄在27-42岁的借款金额更大;借款金额大的借款利更低;总体来看,年龄在27-42的应该为拍拍贷的优质用户。

8 拟合因子,验证相关性

m1 <- lm(I(借款利率) ~ I(初始评级), data =subset(lc,借款金额>0))
m2 <- update(m1, ~ . + 借款金额)
m3 <- update(m2, ~ . + 借款期限)
m4 <- update(m3, ~ . + 借款类型)
mtable(m1, m2, m3, m4)

结论:借款利率与初始评级和借款类型的相关性最高

9.图形展示

9.1 借款金额分布图

qplot(x=借款金额,data=lc,binwidth=0.01,xlab=('借款金额(元)'),
          ylab=('计量值'),fill=I('#F97420'))+
  scale_x_log10(breaks=c(0,100,500,1000,5000,9000,50000,200000,500000))+
  scale_y_sqrt()+
  geom_vline(xintercept =quantile(lc$借款金额,probs=0.975,na.rm=T),
             linetype='dashed',color='blue')+ 
  geom_vline(xintercept =quantile(lc$借款金额,probs=0.025,na.rm=T),
             linetype='dashed',color='blue')+
  ggtitle('借款金额频率分布图直方图')

结论:95%置信区间的借款金额集中在500至9000元之间。

9.2 借款金额与认证条数

ggplot(aes(x=初始评级,y=借款金额,ylab=('借款金额(元)')),data=lc)+
  geom_boxplot()+
  scale_y_log10()+
  ggtitle('借款金额-初始评级箱线图')

结论;初始评级越高借款利率越低,初始评级为E和F的借款利率接近24%。

9.3 借款金额、利率与初始评级

ggplot(aes(x=借款利率,y=借款金额),xlab=('借款利率(%)'),ylab=('借款金额(元)'),data=lc)+
  geom_point(aes(color=初始评级))+
  scale_y_log10()+
  ggtitle('不同初始评级下的借款金额-借款利率图')

结论:初始评级越高,借款利率越低;借款金额越高(可能是大客户),借款利率越低。


总结与反思

本项目利用拍拍贷LC数据集中的各个变量,探究了单因素、双因素和多因素的相互关系,并创建了预测贷款利率的线性模型。
本项目主要目的是研究影响贷款金额、贷款利率的因素,围绕这两个关键因素进行各种分析,并最终根据数据成功得出了一些大众化的结论,例如初始评级越高,借款金额越高(可能是大客户),借款利率越低;app闪电的借款金额较低、借款利率高;电商的借款金额较高、借款利率较低;认证条数多的可借款金额更大等。
本项目分析中遇到的挫折主要是很多结论与常识不太相符,例如认证条数与借款利率没有明显关系;男性的借款数量两倍于女性,这与经常看到的新闻不一样;另外很多0认证的借款人能借到50万元巨款等。这些都需要进一步探究。
本项目接下来还可以对是否首标与贷款金额和贷款利率、贷款日期与贷款金额和利率等作进一步探究。

你可能感兴趣的:(数据分析)