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.探索数据集
lc <- read.csv('LC.csv',fileEncoding = 'utf8')
str(lc)
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
R语言-来自拍拍贷的数据探索的更多相关文章
- R语言-来自Prosper的贷款数据探索
案例分析:Prosper是美国的一家P2P在线借贷平台,网站撮合了一些有闲钱的人和一些急用钱的人.用户若有贷款需求,可在网站上列出期望数额和可承受的最大利率.潜在贷方则为数额和利率展开竞价. 本项目拟 ...
- 【R笔记】R语言进阶之4:数据整形(reshape)
R语言进阶之4:数据整形(reshape) 2013-05-31 10:15 xxx 网易博客 字号:T | T 从不同途径得到的数据的组织方式是多种多样的,很多数据都要经过整理才能进行有效的分析,数 ...
- 写论文,没数据?R语言抓取网页大数据
写论文,没数据?R语言抓取网页大数据 纵观国内外,大数据的市场发展迅猛,政府的扶持也达到了空前的力度,甚至将大数据纳入发展战略.如此形势为社会各界提供了很多机遇和挑战,而我们作为卫生(医学)统计领域的 ...
- R语言进阶之4:数据整形(reshape)
一.通过重新构建数据进行整形 数据整形最直接的思路就把数据全部向量化,然后按要求用向量构建其他类型的数据.这样是不是会产生大量的中间变量.占用大量内存?没错.R语言的任何函数(包括赋值)操作都会有同样 ...
- 大数据基础--R语言(刘鹏《大数据》课后习题答案)
1.R语言是解释性语言还是编译性语言? 解释性语言 2.简述R语言的基本功能. R语言是一套完整的数据处理.计算和制图软件系统,主要包括以下功能: (1)数据存储和处理功能,丰富的数据读取与存 ...
- R语言操作mysql上亿数据量(ff包ffbase包和ETLUtils包)
平时都是几百万的数据量,这段时间公司中了个大标,有上亿的数据量. 现在情况是数据已经在数据库里面了,需要用R分析,但是完全加载不进来内存. 面对现在这种情况,R提供了ff, ffbase , ETLU ...
- 吴裕雄--天生自然 R语言开发学习:导入数据
2.3.6 导入 SPSS 数据 IBM SPSS数据集可以通过foreign包中的函数read.spss()导入到R中,也可以使用Hmisc 包中的spss.get()函数.函数spss.get() ...
- 如何使用R语言解决可恶的脏数据
转自:http://shujuren.org/article/45.html 在数据分析过程中最头疼的应该是如何应付脏数据,脏数据的存在将会对后期的建模.挖掘等工作造成严重的错误,所以必须谨慎的处理那 ...
- R语言学习笔记:取数据子集
上文介绍了,如何生成序列,本文介绍一下如何取出其数据子集 取出元素的逻辑值 > x<-c(0,-3,4,-1,45,90,5) > x>0 [1] FALSE FALSE T ...
随机推荐
- Vue中结合Flask与Node.JS的异步加载功能实现文章的分页效果
你好!欢迎阅读我的博文,你可以跳转到我的个人博客网站,会有更好的排版效果和功能. 此外,本篇博文为本人Pushy原创,如需转载请注明出处:http://blog.pushy.site/posts/15 ...
- main函数的实现解析
main函数的传参的实现,其实也是一个解析字符串的过程:将每个word后一个空格改为“/0”,将单词提取出来. 就是这么简单. 废话不多说,直接上代码: #include<stdio.h> ...
- c++多态性---虚函数
虚函数与纯虚函数的区别: 1.拥有虚函数的类可以声明对象,但拥有纯虚函数的类不可以声明对象(只能声明一个指针,并且不能给其分配内存),并且将这个类称为抽象类 特点: 1.虚函数是动态绑定的基础. 2. ...
- memcached 与 redis 的区别和具体应用场景
1. Memcached简介 Memcached是以LiveJurnal旗下Danga Interactive公司的Bard Fitzpatric为首开发的高性能分布式内存缓存服务器.其本质上就是一个 ...
- markdown语法探究
\[\sum_{i=1}^n a_i=0\] \[f(x_1,x_x,\ldots,x_n) = x_1^2 + x_2^2 + \cdots + x_n^2 \] \[\sum^{j-1}_{k=0 ...
- Nginx的try_files指令和命名location使用实例
Nginx的配置语法灵活,可控制度非常高.在0.7以后的版本中加入了一个try_files指令,配合命名location,可以部分替代原本常用的rewrite配置方式,提高解析效率. 下面是一个使用实 ...
- 洛谷P1345 [USACO5.4]奶牛的电信Telecowmunication【最小割】分析+题解代码
洛谷P1345 [USACO5.4]奶牛的电信Telecowmunication[最小割]分析+题解代码 题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流. ...
- AVFoundation 框架初探究(四)
叨叨两句 动手写这篇总结时候也是二月底过完年回来上班了,又开始新的一年了,今年会是什么样子?这问题可能得年底再回答自己了.在家窝了那么久,上班还是的接着看我们要看的东西,毕竟我们要做的事还真的太多的. ...
- Linux服务器上安装MySql数据库(默认安装,密码为空),首次使用需要修改密码
1,在/etc/my.cnf末尾 加入skip-grant-tables,保存,跳过身份验证. 2,重启MySql,使刚才修改的配置生效. 3,终端输入mysql,然后再输入use mysql; 4 ...
- HDU - 1846 Brave Game 巴什博弈
思路:直接判断n是不是m+1的倍数,若是先手则输,否则赢. AC代码 #include <cstdio> #include <cmath> #include <algor ...