library(ggplot2)
library(knitr)
library(gridExtra)
library(GGally)
library(scales)
library(memisc)
library(dplyr)
# 设置工作环境
setwd("C:/Users/yc/new-dand-advanced-china-master/ppdai_3_23")
# 加载数据
df <- read.csv("LC1.csv", fileEncoding='utf-8')
# 查看数据集的变量属性和统计数据
str(df)
summary(df)
## 'data.frame': 328553 obs. of 21 variables:
## $ ListingId : int 126541 133291 142421 149711 152141 162641 171191 175451 182261 193831 ...
## $ 借款金额 : int 18000 9453 27000 25000 20000 20000 3940 20000 25000 10475 ...
## $ 借款期限 : int 12 12 24 12 6 12 6 12 12 6 ...
## $ 借款利率 : num 18 20 20 18 16 14 18 18 16 18 ...
## $ 借款成功日期 : Factor w/ 756 levels "2015-01-01","2015-01-02",..: 119 70 477 84 22 79 172 439 75 100 ...
## $ 初始评级 : Factor w/ 6 levels "A","B","C","D",..: 3 4 5 3 3 1 5 2 2 3 ...
## $ 借款类型 : Factor w/ 4 levels "APP闪电","电商",..: 4 4 3 4 2 3 2 3 4 2 ...
## $ 是否首标 : Factor w/ 2 levels "否","是": 1 1 1 1 1 1 1 1 1 1 ...
## $ 年龄 : int 35 34 41 34 24 36 27 32 33 25 ...
## $ 性别 : Factor w/ 2 levels "男","女": 1 1 1 1 1 1 2 1 2 1 ...
## $ 手机认证 : Factor w/ 2 levels "成功认证","未成功认证": 1 2 1 1 1 1 1 1 1 1 ...
## $ 户口认证 : Factor w/ 2 levels "成功认证","未成功认证": 2 1 2 1 1 1 1 1 2 1 ...
## $ 视频认证 : Factor w/ 2 levels "成功认证","未成功认证": 1 2 2 1 1 1 1 1 1 1 ...
## $ 学历认证 : Factor w/ 2 levels "成功认证","未成功认证": 2 2 2 2 2 2 2 2 2 2 ...
## $ 征信认证 : Factor w/ 2 levels "成功认证","未成功认证": 2 2 2 2 2 2 2 2 2 2 ...
## $ 淘宝认证 : Factor w/ 2 levels "成功认证","未成功认证": 2 2 2 2 2 2 2 2 2 2 ...
## $ 历史成功借款次数: int 11 4 5 6 13 7 15 7 7 9 ...
## $ 历史成功借款金额: num 40326 14500 21894 36190 77945 ...
## $ 总待还本金 : num 8713 7891 11726 9703 0 ...
## $ 历史正常还款期数: int 57 13 25 41 118 56 75 52 41 49 ...
## $ 历史逾期还款期数: int 16 1 3 1 14 0 8 0 2 4 ...
## ListingId 借款金额 借款期限 借款利率
## Min. : 126541 Min. : 100 Min. : 1.00 Min. : 6.5
## 1st Qu.:11908871 1st Qu.: 2033 1st Qu.: 6.00 1st Qu.:20.0
## Median :19523251 Median : 3397 Median :12.00 Median :20.0
## Mean :19079479 Mean : 4424 Mean :10.21 Mean :20.6
## 3rd Qu.:26298621 3rd Qu.: 5230 3rd Qu.:12.00 3rd Qu.:22.0
## Max. :32819531 Max. :500000 Max. :24.00 Max. :24.0
##
## 借款成功日期 初始评级 借款类型 是否首标
## 2017-01-25: 3558 A: 10284 APP闪电:112079 否:241090
## 2017-01-20: 3063 B: 33188 电商 : 1069 是: 87463
## 2016-12-14: 2266 C:131705 普通 :118103
## 2016-12-02: 2033 D:134860 其他 : 97302
## 2017-01-09: 1859 E: 17027
## 2017-01-04: 1806 F: 1489
## (Other) :313968
## 年龄 性别 手机认证 户口认证
## Min. :17.00 男:221946 成功认证 :123007 成功认证 : 10105
## 1st Qu.:24.00 女:106607 未成功认证:205546 未成功认证:318448
## Median :28.00
## Mean :29.14
## 3rd Qu.:33.00
## Max. :56.00
##
## 视频认证 学历认证 征信认证
## 成功认证 : 18501 成功认证 :114124 成功认证 : 9606
## 未成功认证:310052 未成功认证:214429 未成功认证:318947
##
##
##
##
##
## 淘宝认证 历史成功借款次数 历史成功借款金额 总待还本金
## 成功认证 : 1152 Min. : 0.000 Min. : 0 Min. : 0
## 未成功认证:327401 1st Qu.: 0.000 1st Qu.: 0 1st Qu.: 0
## Median : 2.000 Median : 5000 Median : 2542
## Mean : 2.323 Mean : 8786 Mean : 3722
## 3rd Qu.: 3.000 3rd Qu.: 10355 3rd Qu.: 5447
## Max. :649.000 Max. :7405926 Max. :1172653
##
## 历史正常还款期数 历史逾期还款期数
## Min. : 0.000 Min. : 0.0000
## 1st Qu.: 0.000 1st Qu.: 0.0000
## Median : 5.000 Median : 0.0000
## Mean : 9.948 Mean : 0.4233
## 3rd Qu.: 13.000 3rd Qu.: 0.0000
## Max. :2507.000 Max. :60.0000
##
单变量
单变量绘图选择
借款金额分布:由summary数据可知,借款金额最低为100,最高为500000,集中分布在3000-4000左右,做直方图。
# 借款金额的直方图,并做log转换
ggplot(df, aes(借款金额))+
geom_histogram(binwidth = .05)+
scale_x_log10(breaks = c(0, 500, 1000, 2000, 5000, 10000, 20000, 50000))+
scale_y_sqrt()+
theme(axis.text.x = element_text(angle=-45, hjust=.5))+
geom_vline(xintercept = quantile(df$借款金额, .95), linetype='dashed', color='red')+
geom_vline(xintercept = quantile(df$借款金额, .05), linetype='dashed', color='red')
# 查看5%和95%分位点的借款金额
quantile(df$借款金额, .95)
quantile(df$借款金额, .05)
df$log借款金额 <- log(df$借款金额)
90%的借款分布在660-9000区间内,说明以小额借款为主。经log转换后借款分布近似正太分布。
借款人年龄分布:最小17,最大56,集中在28,29岁,做直方图。
# 建立年龄的直方图,并做log对数转换
ggplot(df, aes(年龄))+
geom_histogram(binwidth = .02)+
scale_x_log10(breaks = seq(17, 56, 2))+
coord_trans(y='sqrt')+
geom_vline(xintercept = quantile(df$年龄, .95), linetype='dashed', color='orange')+
geom_vline(xintercept = quantile(df$年龄, .05), linetype='dashed', color='orange')
df$log年龄 <- log(df$年龄)
90%的借款人年龄在21岁到43岁区间内,说明借款人以青壮年为主力。分布经log转换后近似正态分布,显示25-27岁左右的青年人借款最集中,这个年龄的人群大概最缺钱吧。
借款利率分布:最低6.5,最高24.0,集中在20左右,做直方图。
# 借款利率的直方图
ggplot(df, aes(借款利率))+
geom_histogram(binwidth = 1)+
scale_y_sqrt()+
scale_x_continuous(breaks = seq(6, 24, 1))
借款利率集中分布在20和22两档,大部分借款人都是这个利率。分布也近似正态。
借款期限分布:最低1个月,最高24个月,集中分布在12个月左右,做直方图。
# 借款期限直方图,做log转换
ggplot(df, aes(借款期限))+
geom_histogram(binwidth = .05)+
scale_x_log10(breaks = seq(1, 24, 1))+
scale_y_sqrt()
df$log借款期限 <- log(df$借款期限)
大部分借款人借款期限为6个月和12个月两档,说明借款以短期借款为主。转换后近似正态分布。
认证分布:比较6个认证特征的分布差异。
# 柱状图显示6个认证特征的分布,用grid.arrange方法塞进一张图里
p1 <- ggplot(df, aes(手机认证))+
geom_bar()
p2 <- ggplot(df, aes(户口认证))+
geom_bar()
p3 <- ggplot(df, aes(视频认证))+
geom_bar()
p4 <- ggplot(df, aes(学历认证))+
geom_bar()
p5 <- ggplot(df, aes(征信认证))+
geom_bar()
p6 <- ggplot(df, aes(淘宝认证))+
geom_bar()
grid.arrange(p1, p2, p3, p4, p5, p6, ncol=3)
6个认证特征均是未成功认证占多数。而成功认证当中,大部分只有手机认证或学历认证。
借款人性别分布
# 柱状图显示借款人的性别分布
ggplot(df, aes(性别))+
geom_bar()
借款的男性数量几乎是女性的两倍,看来当今社会男性更加缺钱呀。
借款成功日期分布:最早开始于2015-01-01,最晚截止至2017-01-30。
# 将借款成功日期转换为Date数据类型
df$借款成功日期 <- as.Date(as.character(df$借款成功日期), "%Y-%m-%d")
ggplot(df, aes(借款成功日期))+
geom_histogram(binwidth = 30)+
scale_x_date(date_breaks = '1 month', date_labels = '%y-%m')
分布呈明显的左偏,到截止时间为止,借款数量稳步上升。在16年底,17年初也就是最后的截止时间附近,借款数量最高。
借款是否首标
# 柱状图显示是否为首标
ggplot(df, aes(是否首标))+
geom_bar()
首标约为非首标的1/3,说明大部分借款人都不是第一次借款。
借款类型分布
# 柱状图显示借款类型的分布,由于电商数量太少,使用scale_y_sqrt方法使其数量显示更清楚。
ggplot(df, aes(借款类型))+
scale_y_sqrt()+
geom_bar()
APP闪电,普通和其他,3中借款类型平分秋色,电商类借款最少,远少于其他类型。推测为电商类借款难以获得资格。
查看历史借款情况
# 将借款成功日期转换为Date数据类型,并做log转换
p7 <- ggplot(df, aes(历史成功借款次数))+
geom_histogram()+
scale_x_log10()
p8 <- ggplot(df, aes(历史成功借款金额))+
geom_histogram()+
scale_x_log10()
p9 <- ggplot(df, aes(总待还本金))+
geom_histogram()+
scale_x_log10()
p10 <- ggplot(df, aes(历史正常还款期数))+
geom_histogram()+
scale_x_log10()
p11 <- ggplot(df, aes(历史逾期还款期数))+
geom_histogram()+
scale_x_log10()
# 同样用grid.arrange方法塞进一张图里
grid.arrange(p7,p8,p9,p10,p11, ncol=3)
# 由于历史借款数据可能为0,最好在log转换前+1避免无穷大出现
df$log历史成功借款次数 <- log(df$历史成功借款次数+1)
df$log历史成功借款金额 <- log(df$历史成功借款金额+1)
df$log总待还本金 <- log(df$总待还本金+1)
df$log历史正常还款期数 <- log(df$历史正常还款期数+1)
df$log历史逾期还款期数 <- log(df$历史逾期还款期数+1)
经过log转换后,历史成功借款金额,总待还本金,历史正常还款期数都近似正态分布。而历史成功借款次数和历史逾期还款期数仍有明显的右偏。
单变量分析
你的数据集结构是什么?
数据集含有328553条借款数据,21个变量。
你的数据集内感兴趣的主要特性有哪些?
由于借款时不同的借款人会有不同的借款利率,而借款利率直接关系到借款人的经济利益,是数据集中最应关注的特征。
你认为数据集内哪些其他特征可以帮助你探索兴趣特点?
除了ListingId外的其他19个特征,应该都与借款利率存在一定相关性,可帮助探索。
根据数据集内已有变量,你是否创建了任何新变量?
对若干个数值型变量进行了log对数转换,并将转换后的值保存为log+variable形式的新变量,方便用于后续的分析和计算。
在已经探究的特性中,是否存在任何异常分布?你是否对数据进行一些操作,如清洁、调整或改变数据的形式?如果是,你为什么会这样做?
数据集中的借款成功日期是factor数据类型,可转换为date类型,以便按时间序列作图。
双变量
双变量绘图选择
绘制借款利率与数值型变量之间的特征矩阵图。
# 借款利率与数值变量的矩阵图
Num_vars <- c("log借款金额","log借款期限","借款利率","借款成功日期","log年龄","log历史成功借款次数","log历史成功借款金额","log总待还本金","log历史正常还款期数","log历史逾期还款期数")
df_subset <- df[Num_vars]
set.seed(42)
theme_set(theme_minimal(10))
# 选取2000个样本进行ggpairs矩阵绘图
ggpairs(df_subset[sample.int(nrow(df_subset), 2000),])
数值型变量中,与借款利率相关系数最高的是借款期限,为0.381。而历史成功借款次数和金额,总待还本金,历史正常还款期数这几个变量均有-0.25左右的负相关系数。说明借款期限越高,利率越高,而呈负相关的几项特征值越高,利率越低。
另外可以发现,年龄,借款金额,借款成功时间,和历史逾期还款期数与借款利率的相关性很低,可以认为不相关。
借款利率与几个数值变量的相关系数。
# 重新设回ggplot默认主题
theme_set(theme_grey())
# 计算借款利率的相关系数较高的几个特征关系
with(df, cor.test(借款利率, log借款期限, method='pearson'))
with(df, cor.test(借款利率, log历史成功借款次数, method='pearson'))
with(df, cor.test(借款利率, log历史成功借款金额, method='pearson'))
with(df, cor.test(借款利率, log总待还本金, method='pearson'))
with(df, cor.test(借款利率, log历史正常还款期数, method='pearson'))
##
## Pearson's product-moment correlation
##
## data: 借款利率 and log借款期限
## t = 228.91, df = 328550, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.3679249 0.3738230
## sample estimates:
## cor
## 0.3708777
##
## Pearson's product-moment correlation
##
## data: 借款利率 and log历史成功借款次数
## t = -160.81, df = 328550, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.2732944 -0.2669547
## sample estimates:
## cor
## -0.2701275
##
## Pearson's product-moment correlation
##
## data: 借款利率 and log历史成功借款金额
## t = -164.34, df = 328550, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.2787568 -0.2724375
## sample estimates:
## cor
## -0.2756001
##
## Pearson's product-moment correlation
##
## data: 借款利率 and log总待还本金
## t = -146.55, df = 328550, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.2509111 -0.2444920
## sample estimates:
## cor
## -0.2477043
##
## Pearson's product-moment correlation
##
## data: 借款利率 and log历史正常还款期数
## t = -154.57, df = 328550, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.2635476 -0.2571724
## sample estimates:
## cor
## -0.2603628
借款利率与借款期限的相关系数为0.371,而另外几个特征均为-0.25左右。
借款利率与初始评级关系。
# 对初始评级做利率的箱型图,观察评级与利率的相关性
ggplot(df, aes(初始评级, 借款利率))+
geom_boxplot()
初始评级越高(最高为A),借款利率越低。
借款利率与借款类型的关系。
# 箱型图比较不同借款类型
ggplot(df, aes(借款类型, 借款利率))+
geom_boxplot()
电商的借款利率最低,其他类型没有明显差异。
借款利率与是否首标关系。
# 箱型图比较是否首标的区别
ggplot(df, aes(是否首标, 借款利率))+
geom_boxplot()
没有明显关系。
借款利率与性别关系。
# 箱型图比较性别差异
ggplot(df, aes(性别, 借款利率))+
geom_boxplot()
没有明显关系。
借款利率与6种认证的关系。
# 箱型图比较6种认证对利率的影响
f1 <- ggplot(df, aes(手机认证, 借款利率))+
geom_boxplot()
f2 <- ggplot(df, aes(户口认证, 借款利率))+
geom_boxplot()
f3 <- ggplot(df, aes(视频认证, 借款利率))+
geom_boxplot()
f4 <- ggplot(df, aes(学历认证, 借款利率))+
geom_boxplot()
f5 <- ggplot(df, aes(征信认证, 借款利率))+
geom_boxplot()
f6 <- ggplot(df, aes(淘宝认证, 借款利率))+
geom_boxplot()
grid.arrange(f1,f2,f3,f4,f5,f6, ncol=3)
淘宝认证成功者借款利率较低,其他认证成功与否与借款利率关系不明显。结合借款类型中电商的低利率,说明淘宝商家在借款中有一定的利率优势。这可能与淘宝商家的借款金额,初始评级有关。
查看淘宝认证商家的借款类型。
# 柱状图比较不同类型的利率,并用facet_wrap方法分为淘宝成功认证与否来比较
ggplot(df, aes(借款类型))+
geom_bar()+
scale_y_sqrt()+
facet_wrap(~淘宝认证, scales = 'free_y')
淘宝认证成功的借款人借款类型多为电商,未认证成功者则几乎不适用电商类型借款。这应该与拍拍贷借款策略有关,只有通过了淘宝认证的借款人才能使用电商类型借款。
淘宝商家的借款金额。
# 箱型图淘宝认证与否的借款金额差异
ggplot(df, aes(淘宝认证, 借款金额))+
geom_boxplot()+
scale_y_sqrt()+
coord_cartesian(ylim = c(0, 100000))
淘宝认证电商在借款金额上明显高于非电商借款人。
淘宝商家的初始评级。
# 柱状图查看淘宝认证与否的初始评级差异,同样以facet_wrap方法分组
ggplot(df, aes(初始评级))+
geom_bar()+
facet_wrap(~淘宝认证, scales = 'free_y')
淘宝认证成功商家初始评级集中在B、C,未成功认证者集中在C、D,说明电商借款的初始评级更高。
双变量分析
探讨你在这部分探究中观察到的一些关系。这些感兴趣的特性与数据集内其他特性有什么区别?
- 借款期限越长,借款利率越高。
- 借款金额,历史成功借款次数和金额,总待还本金,历史正常还款期数越大,借款利率越低。
- 初始评级越高,借款利率越低。
- 借款利率与是否首标,年龄,性别,除淘宝认证外的其他认证没有明显相关性。
- 拥有淘宝认证的电商借款利率更低,这与其较高的借款金额和初始评级有关。
借款利率作为数据集的一个特征本质上与其他特征没有区别,但由于我想要找出其他特征与借款利率的相关性,便赋予了借款利率一个目标值的意义,并以此为目的进行了单变量乃至多变量的分析。
你是否观察到主要特性与其他特性之间的有趣关系?
借款利率与借款期限正相关,与借款金额,历史成功借款次数和金额,总待还本金,历史正常还款期数负相关。此外,初始评级越高,或是拥有淘宝认证的电商,借款利率越低。
你发现最强的关系是什么?
数值型变量中,借款利率与借款期限的相关性最强,达0.371;而分类型变量中,初始评级与借款利率的线性关系最明显。
多变量
多变量绘图选择
借款利率,借款金额和借款类型之间关系。
# 以借款金额为x,利率为y,不同借款类型为不同颜色做多变量散点图
ggplot(df, aes(借款金额, 借款利率, color=借款类型))+
scale_x_log10()+
geom_jitter(alpha=.75)
APP闪电多为小额借款,利率较高,电商正好相反,借款额度高,利率较低。
借款利率,借款金额,初始评级之间关系。
# 以借款金额为x,利率为y,不同初始评级为不同颜色做多变量散点图
# scale_color_brewer方法调用红色色板,颜色越深的评级越高
ggplot(df, aes(借款金额, 借款利率, color=初始评级))+
scale_x_log10()+
geom_point(position = 'jitter')+
scale_color_brewer(palette = 'Reds',direction = -1)
初始评级越高的借款人,更倾向于高额借款,并能得到较低的借款利率。
借款利率,借款期限,借款金额的关系。
# 以借款期限为x,利率为y,不同借款金额为不同散点大小做多变量散点图
ggplot(df, aes(借款期限, 借款利率, size=借款金额))+
scale_x_log10()+
geom_point(position = 'jitter', alpha=.25)
大额借款主要集中在短期低利率区间内,说明资本是很理智的,不愿意在利率上花费太多。而小额贷款的周期大多偏长,利率也较高。整体上借款利率有随借款期限上升的趋势。
建立预测借款利率线性模型。
# 由于log历史成功还款次数的分布显著右偏,不代入线性模型中
m1 <- lm(I(借款利率)~I(log借款期限), data=df)
m2 <- update(m1, ~.+初始评级)
m3 <- update(m2, ~.+log借款金额)
m4 <- update(m3, ~.+借款类型)
m5 <- update(m4, ~.+淘宝认证)
m6 <- update(m5, ~.+log历史成功借款金额)
m7 <- update(m6, ~.+log总待还本金)
m8 <- update(m7, ~.+log历史正常还款期数)
mtable(m1, m2, m3, m4, m5, m6, m7, m8)
##
## Calls:
## m1: lm(formula = I(借款利率) ~ I(log借款期限), data = df)
## m2: lm(formula = I(借款利率) ~ I(log借款期限) + 初始评级, data = df)
## m3: lm(formula = I(借款利率) ~ I(log借款期限) + 初始评级 + log借款金额,
## data = df)
## m4: lm(formula = I(借款利率) ~ I(log借款期限) + 初始评级 + log借款金额 +
## 借款类型, data = df)
## m5: lm(formula = I(借款利率) ~ I(log借款期限) + 初始评级 + log借款金额 +
## 借款类型 + 淘宝认证, data = df)
## m6: lm(formula = I(借款利率) ~ I(log借款期限) + 初始评级 + log借款金额 +
## 借款类型 + 淘宝认证 + log历史成功借款金额, data = df)
## m7: lm(formula = I(借款利率) ~ I(log借款期限) + 初始评级 + log借款金额 +
## 借款类型 + 淘宝认证 + log历史成功借款金额 + log总待还本金,
## data = df)
## m8: lm(formula = I(借款利率) ~ I(log借款期限) + 初始评级 + log借款金额 +
## 借款类型 + 淘宝认证 + log历史成功借款金额 + log总待还本金 +
## log历史正常还款期数, data = df)
##
## ==========================================================================================================================================================
## m1 m2 m3 m4 m5 m6 m7 m8
## ----------------------------------------------------------------------------------------------------------------------------------------------------------
## (Intercept) 16.038*** 15.393*** 16.528*** 16.464*** 16.353*** 16.966*** 16.958*** 16.966***
## (0.020) (0.014) (0.018) (0.019) (0.034) (0.035) (0.035) (0.035)
## I(log借款期限) 2.005*** 0.315*** 0.389*** 0.339*** 0.339*** 0.354*** 0.353*** 0.349***
## (0.009) (0.005) (0.005) (0.005) (0.005) (0.005) (0.005) (0.005)
## 初始评级: B/A 1.932*** 1.937*** 1.976*** 1.976*** 1.956*** 1.956*** 1.957***
## (0.010) (0.009) (0.009) (0.009) (0.009) (0.009) (0.009)
## 初始评级: C/A 3.925*** 3.938*** 3.939*** 3.939*** 3.946*** 3.946*** 3.949***
## (0.009) (0.009) (0.008) (0.008) (0.008) (0.008) (0.008)
## 初始评级: D/A 5.726*** 5.713*** 5.711*** 5.711*** 5.634*** 5.635*** 5.640***
## (0.009) (0.009) (0.009) (0.009) (0.009) (0.009) (0.009)
## 初始评级: E/A 6.716*** 6.712*** 6.693*** 6.692*** 6.536*** 6.537*** 6.542***
## (0.011) (0.010) (0.010) (0.010) (0.011) (0.011) (0.011)
## 初始评级: F/A 5.239*** 5.207*** 5.195*** 5.195*** 5.099*** 5.101*** 5.105***
## (0.023) (0.023) (0.023) (0.023) (0.023) (0.023) (0.023)
## log借款金额 -0.162*** -0.142*** -0.142*** -0.190*** -0.189*** -0.189***
## (0.002) (0.002) (0.002) (0.002) (0.002) (0.002)
## 借款类型: 电商/APP闪电 -2.277*** -2.216*** -2.033*** -2.028*** -2.013***
## (0.026) (0.030) (0.030) (0.030) (0.030)
## 借款类型: 普通/APP闪电 0.078*** 0.078*** 0.104*** 0.103*** 0.101***
## (0.004) (0.004) (0.004) (0.004) (0.004)
## 借款类型: 其他/APP闪电 -0.030*** -0.030*** 0.072*** 0.071*** 0.069***
## (0.004) (0.004) (0.004) (0.004) (0.004)
## 淘宝认证: 未成功认证 0.111*** 0.062* 0.061* 0.064*
## (0.028) (0.028) (0.028) (0.028)
## log历史成功借款金额 -0.032*** -0.035*** -0.043***
## (0.000) (0.001) (0.001)
## log总待还本金 0.004*** 0.005***
## (0.001) (0.001)
## log历史正常还款期数 0.023***
## (0.002)
## ----------------------------------------------------------------------------------------------------------------------------------------------------------
## R-squared 0.138 0.774 0.779 0.785 0.785 0.789 0.789 0.789
## adj. R-squared 0.138 0.774 0.779 0.785 0.785 0.789 0.789 0.789
## sigma 1.646 0.842 0.832 0.821 0.821 0.814 0.814 0.814
## F 52399.890 187610.099 165872.707 120187.024 109267.017 102391.389 94521.739 87799.714
## p 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## Log-likelihood -629930.385 -409872.077 -405915.242 -401479.378 -401471.800 -398623.952 -398614.491 -398570.495
## Deviance 890154.488 233185.563 227636.058 221571.578 221561.357 217753.537 217740.996 217682.690
## AIC 1259866.769 819760.153 811848.485 802982.756 802969.599 797275.904 797258.982 797172.990
## BIC 1259898.876 819845.773 811944.807 803111.185 803108.731 797425.738 797419.518 797344.229
## N 328553 328553 328553 328553 328553 328553 328553 328553
## ==========================================================================================================================================================
多变量分析
探讨你在这部分探究中观察到的一些关系。通过观察感兴趣的特性,是否存在相互促进的特性?
借款利率和初始评级,借款金额,借款期限,借款类型等均存在不同程度的相关性。其中,借款利率与借款期限有相互促进的正相关关系。
这些特性之间是否存在有趣或惊人的联系呢?
很多特征之间是相互联系的,譬如获得淘宝认证的电商普遍利率更低,同时这些电商又拥有较高的初始评级和借款金额,并且更倾向于使用电商类贷款,而正是这些特征又会带来较低的借款利率。这些特征相互联系,对借款利率的影响相似,属于相关性较强的特征。
选项:你是否创建过数据集的任何模型?讨论你模型的优缺点。
创建了数据集的线性回归模型,以借款利率为目标值,依次带入借款期限,初始评级,借款金额,借款类型,淘宝认证,历史成功借款金额,总待还本金,历史正常还款期数这7个变量。最终得到的模型决定系数R^2=0.789,线性相关性还不错。
在模型构建中带入的这些特征之间,或多或少带有一定相关性,或者说变量的重复,会增加模型的复杂度。有条件的话可以做主成分分析将特征转换为不相关的变量。
定稿图与总结
图像展示
绘图一
# 将楷体添加到windowsfont字体库中
windowsFonts(kaiti=windowsFont("楷体"))
# 借款利率分布的直方图
ggplot(df, aes(借款利率))+
geom_histogram(binwidth = 1, fill=I('#B3EE3A'), color=I('black'))+ # 填充草绿色
scale_y_sqrt()+ # y轴开方以延长低频段
labs(x = '利率', y = '频数', title = '借款利率的分布')+
theme(title = element_text(family = "kaiti", size = 12,
color = 'red', face = 'bold')) # 设置标签格式
借款利率主要集中在16-24之间,主要为偶数。其中,20和22利率出现最多。近似呈正态分布。
绘图二
# 初始评级的借款利率箱型图
ggplot(df, aes(初始评级, 借款利率, color=初始评级, fill=初始评级))+
geom_boxplot()+
theme_bw()+ # 白色背景
coord_cartesian(ylim = seq(15,24,1))+
labs(x = '评级', y = '利率', color = '评级', fill='评级', title = '不同评级的利率箱型图')+
theme(title = element_text(size = 12, color = 'black',
face = 'bold', family = "kaiti")) # 设置标签格式
初始评级越高(A>B>C>D>E>F),借款利率越低,有明显的线性相关关系。
绘图三
# 以借款期限为x,利率为y,不同借款金额为不同散点大小做多变量散点图
ggplot(df, aes(借款期限, 借款利率, size=借款金额))+
scale_x_log10()+
geom_point(position = 'jitter', alpha=.25)+
labs(x = '期限(月)', y = '利率', size = '金额(RMB)', title = '借款期限,利率,金额关系图')+
theme(panel.grid = element_blank())+ # 删掉网格线
theme(title = element_text(size = 12, color = 'blue',
face = 'bold', family = "kaiti")) # 设置标签格式
大额借款主要集中在短期低利率区间内,说明资本是很理智的,不愿意在利率上花费太多。而小额贷款的周期大多偏长,利率也较高。整体上借款利率有随借款期限上升的趋势。
反思与总结
- 本项目采用拍拍贷真实数据集中的LC表数据,主要对借款的利率及其影响因素做探究,通过单变量,双变量和多变量的探索,找出了特征间的一些规律,并以贷款利率为目标值创建了预测的线性模型。
- 借款利率与借款人初始评级关系最大,初始评级越高,利率越低。此外,借款利率还与借款期限正相关,与借款金额负相关。电商在借款中可获得最低的利率,收益最高。
- 项目在进行过程中也遇到了许多问题,主要是对R语言和ggplot2包的不熟悉所致,譬如plot文本字体类型,大小,位置的设置和主题的选择等。此外,Rstudio对中文的支持也不太好,导致使用时多有不便。
- 由于不太好直接比较数值型变量和分类变量对目标值“借款利率”的影响,开始时我错误地认为相关系数较高的“借款期限”是对利率影响最大的特征。而在后面线性模型的建立中发现,只代入特征“借款期限”得到的R方只有0.138,代入特征“初始评级”后却可以让决定系数R方升高至0.774,而最后代入所有变量得到的R方为0.789,没有太大变化。可以认为“初始评级”在线性模型的构建中占最大的比重,是对利率影响最大的特征。这也是探索过程中的意外发现。
- 建立的预测借款利率的线性模型中,特征之间相关性较高,导致模型变量的重复和冗余。后续有条件可以对其进行主成分分析,将相关特征转换为不相关特征。除了数据集中的LC表外,后续还可对LCIS表及LP表进行联立探索,分析和预测投资者收益或每笔借款收回情况。
|
请发表评论