利用R分析拍拍貸數據
拍拍貸數據集分析
```{r echo=FALSE, message=FALSE, warning=FALSE} # 加載你最終使用的所有組件 # 在這個代碼塊的分析中。 # 註意,在這個代碼塊中,將參數 "echo" 設為假。 # This prevents the code from displaying in the knitted HTML output.這可以避免代碼混入 HTML 輸出顯示。 # 應當在文件中,對所有代碼塊設為 echo=FALSE 。 library(ggplot2) library(gridExtra) library(GGally) library(scales) library(memisc) library(dplyr) ```
單變量曲線部分
```{r echo=FALSE, Load_the_Data} # 加載數據 lc <- read.csv(‘LC.csv‘,fileEncoding = ‘utf8‘) str(lc) summary(lc) ```
‘data.frame‘: 328553 obs. of 21 variables: $ ListingId : int 126541 133291 142421 149711 152141 162641 171191 175451 182261 193831 ... $ 借款金額 : int18000 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 2017-01-25: 3558 A: 10284 1st Qu.:11908871 1st Qu.: 2033 1st Qu.: 6.00 1st Qu.:20.0 2017-01-20: 3063 B: 33188 Median :19523251 Median : 3397 Median :12.00 Median :20.0 2016-12-14: 2266 C:131705 Mean :19079479 Mean : 4424 Mean :10.21 Mean :20.6 2016-12-02: 2033 D:134860 3rd Qu.:26298621 3rd Qu.: 5230 3rd Qu.:12.00 3rd Qu.:22.0 2017-01-09: 1859 E: 17027 Max. :32819531 Max. :500000 Max. :24.00 Max. :24.0 2017-01-04: 1806 F: 1489 (Other) :313968 借款類型 是否首標 年齡 性別 手機認證 戶口認證 APP閃電:112079 否:241090 Min. :17.00 男:221946 成功認證 :123007 成功認證 : 10105 電商 : 1069 是: 87463 1st Qu.:24.00 女:106607 未成功認證:205546 未成功認證:318448 普通 :118103 Median :28.00 其他 : 97302 Mean :29.14 3rd Qu.:33.00 Max. :56.00 視頻認證 學歷認證 征信認證 淘寶認證 歷史成功借款次數 成功認證 : 18501 成功認證 :114124 成功認證 : 9606 成功認證 : 1152 Min. : 0.000 未成功認證:310052 未成功認證:214429 未成功認證:318947 未成功認證:327401 1st Qu.: 0.000 Median : 2.000 Mean : 2.323 3rd Qu.: 3.000 Max. :649.000 歷史成功借款金額 總待還本金 歷史正常還款期數 歷史逾期還款期數 Min. : 0 Min. : 0 Min. : 0.000 Min. : 0.0000 1st Qu.: 0 1st Qu.: 0 1st Qu.: 0.000 1st Qu.: 0.0000 Median : 5000 Median : 2542 Median : 5.000 Median : 0.0000 Mean : 8786 Mean : 3722 Mean : 9.948 Mean : 0.4233 3rd Qu.: 10355 3rd Qu.: 5447 3rd Qu.: 13.000 3rd Qu.: 0.0000 Max. :7405926 Max. :1172653 Max. :2507.000 Max. :60.0000
我們的數據集由21個變量組成,有328553個觀測值。
# 單變量繪圖選擇
```{r echo=FALSE} ##1.借款金額 summary(lc$借款金額) ggplot(aes(x=借款金額),data =lc )+ geom_histogram(binwidth = .01)+ scale_x_log10(breaks = c(0,700,1000,3000,10000, 20000, 100000))+ 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‘)+ theme(axis.text.x = element_text(angle = 90, hjust = 1))
95%借款金額大多在700-8000元之間,說明大部分借款金額以小額借貸為主。
2.借款期限
```{r echo=FALSE} ##2.借款期限 ggplot(aes(x=借款期限),data = lc)+ geom_histogram(binwidth = 1)+ scale_x_continuous(breaks = seq(1,24,1))
```
結論:借款期限選擇6和12個月的人多,說明借款以短期借貸為主。
3.借款利率
```{r echo=FALSE} ##3.借款利率 summary(lc$借款利率) ggplot(aes(x=借款利率),data = lc)+ geom_histogram(binwidth = 1)+ scale_x_continuous(breaks = seq(6,24,1)) ```
借款利率大多在20%與22%。
4.借款成功日期
```{r echo=FALSE, Univariate_Plots} ##4.借款成功日期 lc_month <- format(as.Date(lc$借款成功日期), "%m") lc_day <- format(as.Date(lc$借款成功日期), "%d") lc_year <- format(as.Date(lc$借款成功日期), "%Y") year <- ggplot(aes(lc_year),data = lc)+geom_bar() month <- ggplot(aes(lc_month),data = lc)+geom_bar() day <- ggplot(aes(lc_day),data = lc)+geom_bar() grid.arrange(month,day,year) ```
借款成功日期在2016年的1、10、11、12月比較多。
5.初始評級
```{r echo=FALSE} ##5.初始評級 lc$初始評級 <- factor(lc$初始評級,levels=c(‘F‘,‘E‘,‘D‘,‘C‘,‘B‘,‘A‘),ordered=T) summary(lc$初始評級) ggplot(aes(x=初始評級),data = lc)+geom_bar() ```
借款人初始評級C和D的人數最多
6.借款類型
```{r echo=FALSE} ##6.借款類型 summary(lc$借款類型) ggplot(aes(x=借款類型),data = lc)+geom_bar() ```
APP閃電 普通 其他多,電商最少。
7.年齡
```{r echo=FALSE} ##7.年齡 summary(lc$年齡) ggplot(aes(x=年齡),data = lc)+ geom_histogram(binwidth = 1)+ scale_x_continuous(breaks = seq(17,56,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‘)+ theme(axis.text.x = element_text(angle = 90, hjust = 1)) ```
95%的借款人年齡在21歲和43歲之間,說明借款人以青壯年為主。
8.性別
```{r echo=FALSE} ##8.性別 summary(lc$性別) ggplot(aes(x=性別),data = lc)+geom_bar() ```
借款人性別男性多於女性,大約為其兩倍。說明男性比女性更需要錢。
9.認證
```{r echo=FALSE} ##9.認證 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) ```
學歷認證和手機認證成功認證的多。
10.歷史成功借款次數
```{r echo=FALSE} ##10.歷史成功借款次數 summary(lc$歷史成功借款次數) ggplot(aes(x=歷史成功借款次數),data=lc)+ geom_histogram(binwidth = 1)+ coord_cartesian(xlim = c(0,40))+ scale_x_continuous(breaks = seq(0,40,1))+ scale_y_sqrt()+ geom_vline(xintercept = quantile(lc$歷史成功借款次數,probs = 0.95,na.rm = T), linetype = ‘dashed‘,color = ‘red‘) ```
95%借款次數在7或7以下。說明借款人比較理性。
11.歷史逾期還款期數
```{r echo=FALSE} ##11.歷史逾期還款期數 summary(lc$歷史逾期還款期數) ggplot(aes(x=歷史逾期還款期數),data = lc)+ geom_histogram(binwidth = 1)+ coord_cartesian(xlim = c(0,16))+ scale_x_continuous(breaks = seq(1,16,1))+ scale_y_sqrt()+ geom_vline(xintercept = quantile(lc$歷史逾期還款期數,probs = 0.95,na.rm = T),linetype = ‘dashed‘,color = ‘red‘) ```
95%的人逾期次數在2以下。說明借款人比較理性,根據自己能力還款。
單變量分析
你的數據集結構是什麽?
數據集中有328553個數據,具有22種變量。
其他觀察:
1.95%借款金額大多在700-8000元之間,說明大部分借款金額以小額借貸為主。
2.借款期限選擇6和12個月的人多,說明借款以短期借貸為主。
3.借款利率大多在20%與22%。
4.借款成功日期在2016年的1、10、11、12月比較多。
5.借款人初始評級C和D的人數最多。
6.APP閃電 普通 其他多,電商最少。
7.95%的借款人年齡在21歲和43歲之間,說明借款人以青壯年為主。
8.借款人性別男性多於女性,大約為其兩倍。說明男性比女性更需要錢。
9.學歷認證和手機認證成功認證的多。
10.95%借款次數在7或7以下。
11.95%的人逾期次數在2以下。說明借款人比較理性,根據自己能力還款。
你的數據集內感興趣的主要特性有哪些?
數據集中的主要特征是借款利率和借款金額。我想確定哪些功能影響貸款利率。
你認為數據集內哪些其他特征可以幫助你探索興趣特點?
借款金額 初始評級 借款類型 是否首標 年齡 歷史成功借款金額可以幫助我探索興趣特點
根據數據集內已有變量,你是否創建了任何新變量?
沒有
在已經探究的特性中,是否存在任何異常分布?你是否對數據進行一些操作,如清潔、調整或改變數據的形式?如果是,你為什麽會這樣做?
對借款日期進行了提取,三個變量繪制三幅圖更清晰。
雙變量繪圖選擇
1.初始評級與借款利率
```{r echo=FALSE} ggplot(aes(x=初始評級,y=借款利率),data=lc)+ geom_boxplot()+ scale_y_continuous(breaks = seq(15,25,1)) ```
初始評級越高,貸款利率越低。呈負相關關系。
2.借款類型與借款利率
```{r echo=FALSE} ggplot(aes(x=借款類型,y=借款利率),data=lc)+ geom_boxplot() ```
電商的借款利率最低,可能和電商的初始評級有關。
3.歷史成功借款金額與借款利率
```{r echo=FALSE} ggplot(aes(x=歷史成功借款金額,y=借款利率),data = lc)+ geom_point(alpha = 1/10)+ scale_x_log10()+ scale_y_log10()+ geom_smooth(method = lm) cor.test(lc$歷史成功借款金額,lc$借款利率,method = ‘pearson‘) ```
歷史成功借款金額越多,借款利率越少 ,呈負相關, 相關性為-0.15,說明歷史成功借款金額與借款利率沒多大關系。
4.年齡階段與借款利率
```{r echo=FALSE} lc$年齡階段 <- cut(lc$年齡,breaks = c(17,20,25,30,35,40,45,50,56)) ggplot(aes(x = 年齡階段,y = 借款利率),data=subset(lc,!is.na(lc$年齡階段)))+ geom_boxplot() ```
借款利率和年齡沒關系
5.年齡階段與借款金額
```{r echo=FALSE} lc$年齡階段 <- cut(lc$年齡,breaks = c(17,20,25,30,35,40,45,50,56)) ggplot(aes(x=年齡階段,y=借款金額),data=subset(lc,!is.na(lc$年齡階段)))+ geom_boxplot()+ scale_y_log10() ```
在17到30歲之間借款金額逐漸升高,之後金額不變。
6.歷史成功借款金額與借款金額
```{r echo=FALSE} ggplot(aes(x=歷史成功借款金額,y=借款金額),data=lc)+ geom_point(alpha=1/20,position = ‘jitter‘)+ scale_x_log10()+ scale_y_log10()+ geom_smooth() cor.test(lc$歷史成功借款金額,lc$借款金額,method = ‘pearson‘) ```
歷史還款金額愈多,借款金額越多,在借款金額為1萬的時候增長幅度變高,呈正相關,相關系數為0.518,說明歷史成功借款金額與借款金額有一定關系。
雙變量分析
探討你在這部分探究中觀察到的一些關系。這些感興趣的特性與數據集內其他特性有什麽區別?
1.初始評級越高,貸款利率越低
2.電商的借款利率最低
3.歷史成功借款金額越多,借款利率越少
4.借款利率和年齡沒關系
5.在17到30歲之間借款金額逐漸升高,之後金額不變
6.歷史還款金額愈多,借款金額越多,在借款金額為1萬的時候增長幅度變高。
區別在於經過了單變量的篩選。
你是否觀察到主要特性與其他特性之間的有趣關系?
貸款利率和貸款類型 初始評級 借款金額相關。
你發現最強的關系是什麽?
初始評級和貸款利率
多變量繪圖選擇
```{r echo=FALSE} ggplot(aes(x=借款利率,y=借款金額,color=借款類型),data=lc)+ geom_point(alpha=0.8,size =1,position = ‘jitter‘)+ scale_color_brewer(type = ‘div‘)+ theme_dark()+ scale_x_continuous()+ scale_y_log10() ```
結論:APP閃電利率高,借款數額小,電商利率低借款數額大,普通介於電商和APP閃電之間.
1.借款利率,借款金額 初始評級
```{r echo=FALSE} ggplot(aes(x=借款利率,y=借款金額,color=初始評級),data=lc)+ geom_point(size =1,position = ‘jitter‘)+ scale_color_brewer(type = ‘div‘)+ theme_dark()+ scale_x_continuous()+ scale_y_log10() ```
結論:初始評級越好,貸款利率越低,借款金額越大。
2.借款利率 金額 期限
```{r echo=FALSE} ggplot(aes(x=借款利率,y=借款金額,color=借款期限),data=lc)+ geom_point(alpha = 1/2)+ theme_dark()+ scale_y_log10() ```
結論:借款期限越長,借款利率越高,借款額度大且期限短,利率低。
1.創建線性模型
```{r echo=FALSE} m1 <- lm(I(借款利率)~I(初始評級),data=lc) m2 <- update(m1,~ . + 借款金額) m3 <- update(m2,~ . + 借款類型) m4 <- update(m3,~ . + 借款期限) mtable(m1,m2,m3,m4) ```
Calls:
m1: lm(formula = I(借款利率) ~ I(初始評級), data = lc)
m2: lm(formula = I(借款利率) ~ I(初始評級) + 借款金額, data = lc)
m3: lm(formula = I(借款利率) ~ I(初始評級) + 借款金額 + 借款類型,
data = lc)
m4: lm(formula = I(借款利率) ~ I(初始評級) + 借款金額 + 借款類型 +
借款期限, data = lc)
==========================================================================================
m1 m2 m3 m4
------------------------------------------------------------------------------------------
(Intercept) 20.025*** 20.087*** 20.104*** 19.750***
(0.004) (0.004) (0.005) (0.007)
I(初始評級): .L -5.128*** -5.087*** -5.102*** -5.038***
(0.014) (0.014) (0.014) (0.014)
I(初始評級): .Q -2.324*** -2.322*** -2.337*** -2.315***
(0.013) (0.013) (0.013) (0.013)
I(初始評級): .C 1.128*** 1.115*** 1.105*** 1.054***
(0.010) (0.010) (0.010) (0.010)
I(初始評級): ^4 -0.258*** -0.280*** -0.284*** -0.287***
(0.006) (0.006) (0.006) (0.006)
I(初始評級): ^5 0.003 -0.009* 0.006 0.041***
(0.004) (0.004) (0.004) (0.004)
借款金額 -0.000*** -0.000*** -0.000***
(0.000) (0.000) (0.000)
借款類型: 電商/APP閃電 -2.023*** -1.837***
(0.031) (0.031)
借款類型: 普通/APP閃電 -0.018*** -0.021***
(0.004) (0.004)
借款類型: 其他/APP閃電 -0.114*** -0.109***
(0.004) (0.004)
借款期限 0.036***
(0.001)
------------------------------------------------------------------------------------------
R-squared 0.771 0.778 0.782 0.784
adj. R-squared 0.771 0.778 0.782 0.784
sigma 0.848 0.835 0.828 0.824
F 221655.696 192164.030 130698.457 119322.294
p 0.000 0.000 0.000 0.000
Log-likelihood -411847.887 -406814.070 -404249.218 -402410.223
Deviance 236007.101 228884.966 225339.133 222830.640
AIC 823709.775 813644.139 808520.435 804844.447
BIC 823784.692 813729.759 808638.162 804972.876
N 328553 328553 328553 328553
==========================================================================================
結論:貸款利率和借款類型 借款期限聯系最為緊密
多變量分析
探討你在這部分探究中觀察到的一些關系。通過觀察感興趣的特性,是否存在相互促進的特性?
借款利率與初始評級 借款金額 借款類型 借款期限的關系。
這些特性之間是否存在有趣或驚人的聯系呢?
借款額度大,借款期限短,利率低
選項:你是否創建過數據集的任何模型?討論你模型的優缺點。
是的,我創建了一個線性模型,從借款利率和初始評級開始。
------
# 定稿圖與總結
### 繪圖一
```{r echo=FALSE} summary(lc$借款利率) ggplot(aes(x=借款利率),data = lc)+ geom_histogram(binwidth = 1)+ scale_x_continuous(breaks = seq(6,24,1))+ ggtitle(111, subtitle = NULL) ```
### 描述一
借款利率主要在16-24之間,總體利率平穩。
### 繪圖二
```{r echo=FALSE} ggplot(aes(x=初始評級,y=借款利率),data=lc)+ geom_boxplot()+ scale_y_continuous(breaks = seq(15,25,1))+ ggtitle(222, subtitle = NULL) ```
## 描述二
初始評級越高,貸款利率越低,呈負相關。
### 繪圖三
```{r echo=FALSE} ggplot(aes(x=借款利率,y=借款金額,color=初始評級),data=lc)+ geom_point(size =1,position = ‘jitter‘)+ scale_color_brewer(type = ‘div‘)+ theme_dark()+ scale_x_continuous()+ scale_y_log10()+ ggtitle(333, subtitle = NULL) ```
### 描述三
結論:初始評級越好,貸款利率越低,借款金額越大,初始評級和貸款利率呈負相關,同借款金額呈正相關。
------
# 反思
拍拍貸數據集包含21個變量中328553個數據的信息。我通過了解數據集中的各個變量開始,然後在繼續對情節進行觀察時探究了有趣的問題和線索。最後,我研究了許多變量的貸款利率,並創建了一個預測貸款利率的線性模型。
說明貸款利率和借款類型 借款期限之間存在著明顯的趨勢,以後我會加入貸款是否是首標,作為考慮影響貸款利率的因素。
利用R分析拍拍貸數據