R语言-来自拍拍贷的数据探索

案例分析:拍拍贷是中国的一家在线借贷平台,网站撮合了一些有闲钱的人和一些急用钱的人。用户若有贷款需求,可在网站上选择借款金额。

     本项目拟通过该数据集的探索,结合自己的理解进行分析,最终目的的是初步预测贷款的利率和哪些因素有关。

0.加载包

library(ggplot2)
library(gridExtra)
library(utf8)
library(dplyr)
library(tidyr)
library(GGally)
library(RColorBrewer)
library(caret)
library(knitr)
library(scales)
library(memisc)

1.探索数据集

1 lc <- read.csv('LC.csv',fileEncoding = 'utf8')
2 str(lc)
3 summary(lc)

  结论:一共有328553个对象,21个变量

2.选择分析的变量

1. **ListingId**: 列表序号,为列表的唯一键。

2. **借款金额**: 列表成交总金额。

3. **借款期限**: 总的期数(按月计)。

4. **借款利率**: 年化利率(百分数)。

5. **借款成功日期**: 列表成交的日期。都在2015年1月1日以后。

6. **初始评级**: 列表成交时的信用评级。AAA为安全标,AA为赔标,A-F为信用等级。

7. **借款类型**: 分为'应收安全标',‘电商’,‘APP闪电’,‘普通’和‘其他’。

8. **是否首标**: 该标是否为借款人首标。

9. **年龄**: 借款人在该列表借款成功时的年龄。

10. **性别**: 该列表借款人性别。

11. **手机认证**: 该列表借款人手机实名认证是否成功。

12. **户口认证**: 该列表借款人户口认证是否成功。

13. **视频认证**: 该列表借款人视频认证是否成功。

14. **学历认证**: 该列表借款人学历认证是否成功。成功则表示有大专及以上学历。

15. **征信认证**: 该列表借款人征信认证是否成功。成功则表示有人行征信报告。

16. **淘宝认证**: 该列表借款人淘宝认证是否成功。成功则表示为淘宝店主。

17. **历史成功借款次数**: 借款人在该列表成交之前的借款成功次数。

18. **历史成功借款金额**: 借款人在该列表成交之前的借款成功金额。

19. **总待还本金**: 借款人在该列表成交之前待还本金金额。

20. **历史正常还款期数**: 借款人在该列表成交之前的按期还款期数。

21. **历史逾期还款期数**: 借款人在该列表成交之前的逾期还款期数。

3.数据处理

  3.1 日期处理

lc <- separate(lc,借款成功日期,c('year','month','day'),sep='-',remove=F)
lc$year <- factor(lc$year)
lc$month <- factor(lc$month)
lc$day <- factor(lc$day)

  3.2 认证评分(1表示认证成功,0表示未认证成功)

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

  3.3 客户评级

lc$初始评级 <- factor(lc$初始评级,levels=c('F','E','D','C','B','A'),ordered=T)

  3.4 划分首标和非首标

#首标
lc_fb <- subset(lc,是否首标=='')

#非首标
lc_nfb <- subset(lc,是否首标=='')

  3.5 划分年龄阶段

lc$年龄阶段 <- cut(lc$年龄,breaks = c(17,20,25,30,35,40,45,50,56),include.lowest = T)

4.探索数据集

  4.1 单变量分析

    4.11 贷款人年龄

summary(lc$年龄)
ggplot(aes(x=年龄),data=lc)+
  geom_histogram(binwidth = 1)+
  scale_x_continuous(breaks = seq(15,60,1))+
  geom_vline(xintercept = quantile(lc$年龄,probs = 0.95,na.rm = T),linetype='dashed',color='red')+
  geom_vline(xintercept = quantile(lc$年龄,probs = 0.05,na.rm = T),linetype='dashed',color='red')

      结论:95%的借贷人的年龄在21岁到43岁之间

      4.1.2 贷款人性别

summary(lc$性别)
ggplot(aes(x=性别),data=lc)+
  geom_bar()

      结论:借贷人为男性的数量大约是女性的2倍

      4.1.3  借款成功日期

lc_year <- ggplot(aes(x=year),data=lc)+geom_bar()
lc_month <- ggplot(aes(x=month),data=lc)+geom_bar()
lc_day <- ggplot(aes(x=day),data=lc)+geom_bar()
grid.arrange(lc_year,lc_month,lc_day)

      结论:在2016年的1,8,9,10,11,12月份的借款的成功率较高

      4.1.4 验证方式

lc_phone_cret <- ggplot(aes(x=手机认证),data=lc)+geom_bar()
lc_id_cret <- ggplot(aes(x=户口认证),data=lc)+geom_bar()
lc_video_cret <- ggplot(aes(x=视频认证),data=lc)+geom_bar()
lc_dipoma_cret <- ggplot(aes(x=学历认证),data=lc)+geom_bar()
lc_card_cret <- ggplot(aes(x=征信认证),data=lc)+geom_bar()
lc_shop_cret <- ggplot(aes(x=淘宝认证),data=lc)+geom_bar()
grid.arrange(lc_phone_cret,lc_id_cret,lc_video_cret,lc_dipoma_cret,lc_card_cret,lc_shop_cret)

      结论:手机认证和学历认证的认证方式较多,其他认证方式较少

      4.1.5认证评分

ggplot(aes(x=认证评分),data=lc)+
  geom_histogram(binwidth = 1)+
  scale_y_log10()

      结论:6分全部成功认证成功的客户很少,一般的认证评分为1~2分

      4.1.6 借款金额

summary(lc$借款金额)
ggplot(aes(x=借款金额),data=lc)+
  geom_histogram(binwidth = .01)+
  scale_x_log10(breaks = seq(100,30000,1000))+
  scale_y_sqrt()+
  geom_vline(xintercept = quantile(lc$借款金额,probs = 0.95,na.rm = T),linetype='dashed',color='red')+
  geom_vline(xintercept = quantile(lc$借款金额,probs = 0.05,na.rm = T),linetype='dashed',color='red')

      结论:借款金额的分布的95%的置信区间在700元到8000元之间

      4.1.7 借款利率

summary(lc$借款利率)
ggplot(aes(x=借款利率),data=lc)+
  geom_histogram(binwidth = 1)+
  scale_x_continuous(breaks = seq(4,26,1))

      结论:大多数借款的利率在20%或者22%

      4.1.8 借款期限

summary(lc$借款期限)
ggplot(aes(x=借款期限),data=lc)+
  geom_histogram(binwidth = 1)+
  scale_x_continuous(breaks = seq(1,25,1))

      结论:借款期限以短期借款为主,多为6个月或者12个月期限

      4.1.9 历史成功借款次数

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

      结论:95%的借贷人借款的次数少于7次

      4.1.10 历史逾期还款期数

summary(lc$历史逾期还款期数)
ggplot(aes(x=历史逾期还款期数),data=subset(lc,lc$历史逾期还款期数>=1))+
  geom_histogram(binwidth = 1)+
  scale_y_sqrt()

      结论:大部分借贷人未逾期

      4.1.11 历史成功借款金额

quantile(subset(lc$历史成功借款金额,lc$历史成功借款次数>0),probs=c(.5,.75,.9,.95,1))

      结论:95%的非首次借款人的历史成功借款金额不高于32332,75%不高于13082,50%不高于7473。结合历史成功借款次数,一些借款数较高的应该属于多次借款的总和

      4.1.2  初始评级

ggplot(aes(x=初始评级),data=lc)+
  geom_bar()

      结论:大部分用户的初始评级是D,C级别

  单变量分析总结论

数据集来源于拍拍贷的真实业务数据。该数据集是信用标的样本,信用标的成交时间从2015年1月1日至2017年1月30日,一共328553支信用标。
数据集从借款人和投资人两个角度提供的数据来分析借款人的还款情况和资金回收情况


通过探索数据集,发现以下特点:
1.借款金额主要分布在800~12000之间,用户以小额贷款为主

2.大部分用户的初始评级是C或D

3.大部分用户的认证方式以学历认证和手机认证为主

4.平台的借款利率在20%~22%之间

5.借款期限多以半年或1年为主

6.男性借款人数是女性的2倍

7.借款最多的年份是2016年,月份是1,8,9,10,11,12

8.95%非首标借款人的历史逾期还款期数不超过3次

  4.2 双变量分析

    4.2.1 借款利率和初始评级的关系(首标)

ggplot(aes(x=初始评级,y=借款利率),data=lc_fb)+
  geom_boxplot()+
  labs(x='初始评级(首标)',y='借款利率(首标)')

      结论:在首标贷款中,初始评级越高,贷款利率越低

      4.2.2 借款类型和利率的关系(非首标)

jklx_cspj_box_fb <- ggplot(aes(x=借款类型,y=as.numeric(初始评级)),data=lc_fb)+
  geom_boxplot()+
  scale_y_continuous(breaks = seq(1,6,1),labels = c('F','E','D','C','B','A'))+
  labs(x='借款类型(首标)',y='初始评级(首标)')

jklx_jkll_box_fb <- ggplot(aes(x=借款类型,y=借款利率),data=lc_fb)+
  geom_boxplot()+
  labs(x='借款类型(首标)',y='借款利率(首标)')

grid.arrange(jklx_cspj_box_fb,jklx_jkll_box_fb,ncol=1)

      结论:电商用户的初始评级是C,B,所以获得了更低的利率,APP闪电,普通,其他类型的用户的初始评级是D,所以利率比电商高

      4.2.3 初始评级和认证评分的关系

ggplot(aes(x=初始评级),data=lc_fb)+
  geom_bar(aes(fill=as.factor(认证评分)),position = 'fill')+
  scale_fill_brewer(palette = 'green')

      结论:在首标部分,并没有说明认证评分越高,利率越低的趋势

      4.2.4初始评级和贷款利率的关系(非首标)

ggplot(aes(x=初始评级,y=借款利率),data=lc_nfb)+
  geom_boxplot()+
  labs(x='初始评级(非首标)',y='借款利率(非首标)')

 

      结论:在非首标部分借款利率和初始评级有很高的关系

      4.2.5 借款类型和利率的关系(非首标)

jklx_cspj_box_nfb <- ggplot(aes(x=借款类型,y=as.numeric(初始评级)),data=lc_nfb)+
  geom_boxplot()+
  scale_y_continuous(breaks = seq(1,6,1),labels = c('F','E','D','C','B','A'))+
  labs(x='借款类型(非首标)',y='初始评级(非首标)')

jklx_jkll_box_nfb <- ggplot(aes(x=借款类型,y=借款利率),data=lc_nfb)+
  geom_boxplot()+
  labs(x='借款类型(非首标)',y='借款利率(非首标)')

grid.arrange(jklx_cspj_box_nfb,jklx_jkll_box_nfb,ncol=1)

 

      结论:非首标借款下电商用户的初始评级是C,B,所以获得了更低的利率,APP闪电,普通,其他类型的用户的初始评级是D,所以利率比电商高

      4.2.6 历史成功借款金额和借款金额的关系(非首标)

ggplot(aes(x=历史成功借款金额,y=借款金额),data=lc_nfb)+
  geom_point(alpha=1/20,position = 'jitter')+
  scale_x_log10()+
  scale_y_log10()+
  geom_smooth()+
  labs(x='历史成功借款金额(非首标)',y='借款金额(非首标)')

      结论:随着历史成功借款金额的增长,借款金额也在增长,两者正相关,当超过10000元的时候,幅度变化很大,表示历史借款不停的叠加,最后需要还的钱会很多

      4.2.7 总应还本金历史成功借款金额(非首标)

ggplot(aes(x=历史成功借款金额,y=总待还本金),data=subset(lc_nfb,总待还本金>100))+
  geom_point(alpha=1/20,position = 'jitter')+
  scale_x_log10()+
  scale_y_log10()+
  geom_smooth()+
  labs(x='历史成功借款金额(非首标)',y='总待还本金(非首标)')

      结论:借的越多,还的越多

      4.2.8 年龄阶段和借款金额的关系

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

      结论:17~20岁的青年借款数量较少,25~30岁的成年人借款金额增大,30~45岁之间的高额借款的比例增多,55~60之间的借款金额保持不变

      4.2.9 年龄阶段和初始评级的关系

ggplot(aes(x=年龄阶段,y=as.numeric(初始评级)),data=lc)+
  geom_boxplot()+
  scale_y_continuous(breaks = seq(1,6,1),labels = c('F','E','D','C','B','A'))+
  labs('初始评级')

      结论:二者没有太大的关系

      4.3.0 贷款利率和借款总金额的关系

ggplot(aes(x=借款金额,y=借款利率),data=lc)+
  geom_point(alpha=1/2,position = 'jitter')+
  scale_x_log10()+
  geom_smooth()

      结论:随着借款金额的增多,利率呈下降趋势

  双变量探索总结论:

当初始评级上升时,借款利率呈现下降趋势。在上面初始评级和借款利率的箱线图中,E和F等级中,借款利率25%的分位数是22,75%的分位数分别是23和24;
初始等级上升至D后,25%分位数、中位数和75%分位数均为22;等级升级至A时,分位数变为16。说明初始评级和借款利率具有明显的较强的关系。 通过分析贷款利率可以得出以下结论: 1.贷款利率和信用评级呈负相关 2.贷款利率和年龄无关 3.电商平台的信用评级较高,所以获得的利率较低 4.借款金额增多,利率逐渐下降

  4.3 多变量分析

      4.3.1 借款金额,利率,借款类型的关系

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

      结论:app闪电的借款利率较高,但是涉及的金额较少,电商类型的借款利率较低,但是金额较大.普通类型的借款数额相对app闪电较多但利率高,其他类型的借款数额较大利率也比较低

      4.3.2 信用评分,利率和借款总金额的关系

ggplot(aes(x=借款利率,y=借款金额,color=初始评级),data=lc)+
  geom_point(position = 'jitter')+
  scale_y_log10()

      结论:初始评级越高,借款利率越低,同时评级高的客户更倾向于大额借款

      4.3.3 认证评分,利率,借款金额的关系

ggplot(aes(x=借款利率,y=借款金额,color=认证评分),data=lc)+
  geom_point(position = 'jitter')+
  scale_y_log10()

      结论:证评分高的客户借款的金额较大,但是借款利率和认证评分之间没有太大的关联

      4.3.4 借款期限,利率,借款金额的关系

ggplot(aes(x=借款利率,y=借款金额,color=借款期限),data=lc)+
  geom_point(position = 'jitter',alpha=1/5)+
  scale_y_log10()

      结论:借款的期限越长,利率越高,当借款的额度较大时,期限越短,利率也低,可能先是大量的资金进行投资,然后在还款利率最低的时候还款

      4.3.5 借款利率,借款期限,借款金额的关系

ggplot(aes(x=借款利率,y=借款期限,size=借款金额,color=借款类型),data=lc)+
  geom_point(position = 'jitter')

      结论:App闪电贷的借款金额较小,并且都是以短期为主,且利率较高.普通贷款和其他贷款的利率的贷款时间相对较长,但是普通用户的利率比其他贷款的利率高很多电商贷款的利率较低,同时期限较短,是一个性         价比高的的贷款模式

  多变量分析汇总

1.借款利率和信用评级之间呈负相关

2.借款利率和是借款期限程正相关

3.借款利率和认证评分之间没有太大的关系

4.借款利率和借款平台之间也有关系App闪电贷和普通借款的利率较高,其他借款和电商类借款的利率较低

5.借款金额和借款利率呈负相关

5.拟合因子,验证相关性

m1 <- lm(I(借款利率)~I(初始评级),
         data=subset(lc,lc$借款金额>0))

m2 <- update(m1,~ . + 认证评分)
m3 <- update(m2,~ . + 借款金额)
m4 <- update(m3,~ . + 借款类型)
mtable(m1,m2,m3,m4)

  结论:贷款利率和初始评级和贷款方式最为紧密

 数据集:https://github.com/Mounment/R-Project

posted @ 2018-03-12 11:12  月上贺兰  阅读(1644)  评论(0编辑  收藏  举报