=======================================================
#2 加载探索分析需要的包及数据
library(ggplot2)
library(knitr)
library(dplyr)
library(scales)
library(memisc)
library(gridExtra)
setwd('E:/udacity/udacity data/R/project/a')
lc<-read.csv('LC.csv',fileEncoding ='UTF-8')
summary(lc)
str(lc)
lc$year<-format(as.Date(lc$借款成功日期),'%y')
lc$month<-format(as.Date(lc$借款成功日期),'%m')
lc$day<-format(as.Date(lc$借款成功日期),'%d')
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)
lc$年龄段<-cut(lc$年龄,breaks=c(17,22,27,32,37,42,47,52,57),include.lowest=T)
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')
qplot(x=借款期限,data=lc,binwidth=1)+
scale_x_continuous(lim=c(1,25),breaks=seq(1,25,2))
qplot(x=借款利率,data=lc,binwidth=0.2)+
scale_x_continuous(lim=c(5,25),breaks=seq(5,25,1))
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')
qplot(x=性别,data=lc)
qplot(x=初始评级,data=lc)
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()
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')
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')
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')
summary(lc$历史正常还款期数)
ggplot(aes(x=历史正常还款期数),data=subset(lc,历史正常还款期数>=1))+
geom_histogram(binwidth=0.1)+
scale_x_log10()
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()
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)
拍拍贷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月借款成功的人较多。
通过以上对单变量的探索后,拟研究以下几个问题:
1.影响借款利率的因素有哪些,例如借款金额、借款期限、借款类型、初始评级、历史逾期期数、总待还本金、认证条数等的关系;
2.初始评级与认证条数的关系;
3.借款金额与初始评级、年龄、历史成功借款金额、总待还本金、历史还款逾期数的关系。
cor.test(lc$借款金额,lc$借款利率,method='pearson')
ggplot(aes(x=借款金额,y=借款利率),data=lc)+
geom_jitter(alpha=0.05)+
scale_x_log10()+
geom_smooth()
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()
ggplot(aes(x=借款类型,y=借款利率),data=lc)+
geom_boxplot()
ggplot(aes(x=初始评级,y=借款利率),data=lc)+
geom_boxplot()
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()
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()
ggplot(aes(x=初始评级),data=lc)+
geom_bar(aes(fill=认证条数),position='fill')+
scale_fill_brewer(palette ='green')
ggplot(aes(x=初始评级,y=借款金额),data=lc)+
geom_boxplot()+
scale_y_log10()
ggplot(aes(x=年龄段,y=借款金额),data=lc)+
geom_boxplot()+
scale_y_log10()
ggplot(aes(x=历史成功借款金额,y=借款金额),data=subset(lc,历史成功借款金额>0))+
geom_jitter(alpha=0.1)+
scale_x_log10()+
scale_y_log10()+
geom_smooth()
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()
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()
ggplot(aes(x=认证条数,y=借款金额),data=lc)+
geom_boxplot()+
scale_y_log10()
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))
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万。
拟探索问题:
1.借款金额、利率和初始评级的关系;
2.借款金额与借款利率、借款类型的关系;
3.借款利率与初始评级和认证条数的关系;
4.借款利率、金额、性别与年龄段的关系。
ggplot(aes(x=借款利率,y=借款金额,color=初始评级),data=lc)+
geom_jitter()+
scale_y_log10()+
scale_color_brewer(palette = 'red',direction=-1)
ggplot(aes(x=借款利率,y=借款金额),data=lc)+
geom_point(aes(color=借款类型))+
scale_y_log10()
ggplot(aes(x=借款利率,y=借款金额),data=lc)+
geom_jitter(aes(color=认证条数))+
scale_y_log10()+
scale_color_brewer(palette = 'red')
ggplot(aes(x=借款利率,y=借款金额,color=年龄段),data=lc)+
geom_jitter()+
scale_y_log10()+
scale_color_brewer(direction = -1)+
theme_dark()+
facet_wrap(~性别,nrow=4)
1.初始评级越高,借款利率越低;借款金额越高(可能是大客户),借款利率越低。
2.app闪电的借款金额较低、借款利率高;电商的借款金额较高、借款利率较低;普通和其他的借款金额和利率分布无明显特征。
3.认证条数多的借款金额更大,但是认证条数与利率没有明显关系。
4.性别与借款利率无明显关系;男性借款总数明显多于女性,且女性借款额度整体低于男性;年龄在27-42岁的借款金额更大;借款金额大的借款利更低;总体来看,年龄在27-42的应该为拍拍贷的优质用户。
m1 <- lm(I(借款利率) ~ I(初始评级), data =subset(lc,借款金额>0))
m2 <- update(m1, ~ . + 借款金额)
m3 <- update(m2, ~ . + 借款期限)
m4 <- update(m3, ~ . + 借款类型)
mtable(m1, m2, m3, m4)
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('借款金额频率分布图直方图')
ggplot(aes(x=初始评级,y=借款金额,ylab=('借款金额(元)')),data=lc)+
geom_boxplot()+
scale_y_log10()+
ggtitle('借款金额-初始评级箱线图')
ggplot(aes(x=借款利率,y=借款金额),xlab=('借款利率(%)'),ylab=('借款金额(元)'),data=lc)+
geom_point(aes(color=初始评级))+
scale_y_log10()+
ggtitle('不同初始评级下的借款金额-借款利率图')
本项目利用拍拍贷LC数据集中的各个变量,探究了单因素、双因素和多因素的相互关系,并创建了预测贷款利率的线性模型。
本项目主要目的是研究影响贷款金额、贷款利率的因素,围绕这两个关键因素进行各种分析,并最终根据数据成功得出了一些大众化的结论,例如初始评级越高,借款金额越高(可能是大客户),借款利率越低;app闪电的借款金额较低、借款利率高;电商的借款金额较高、借款利率较低;认证条数多的可借款金额更大等。
本项目分析中遇到的挫折主要是很多结论与常识不太相符,例如认证条数与借款利率没有明显关系;男性的借款数量两倍于女性,这与经常看到的新闻不一样;另外很多0认证的借款人能借到50万元巨款等。这些都需要进一步探究。
本项目接下来还可以对是否首标与贷款金额和贷款利率、贷款日期与贷款金额和利率等作进一步探究。