標籤:

prosper貸款數據EDA分析

互聯網技術的發展,為金融創新提供了條件,並未不斷湧現的金融創新在實踐中的應用於推廣奠定了堅實基礎.其中,網路借貸就是資金借貸活動藉助互聯網平台而實現的一種去中介化的模式創新.作為網貸平台的主要形式,P2P平台通過直接撮合借貸雙方,改變了傳統商業銀行作為資金融通中介的借貸模式,近年來發展迅速.2005年3月,英國Zopa的成立標誌著P2P融資模式的形成,之後美國相繼出現了Prosper和Lending Club等P2P平台公司.而Prosper作為此次研究的重點,本文選取了該公司自2006年至2014年總共11W的貸款數據,試圖從EDA分析角度出發,分析Prosper貸款人質量,貸款資金價格界定規則等問題.

試圖解決的問題:

1.在prosper貸款的客戶都有什麼特點?

2.prosper在2009年7月1日前後的貸款模型是否有變化?

數據解釋:

  • BorrowerRate:借款標利率,作為P2P平台資金借貸價格的代理變數,BorrowerRate不包含其他費用,是籌資者付給投資人的報酬,也是融資最直接和最重要的成本,其體現了資金供求雙方在綜合考慮各種因素情況下所認可的資金使用成本.
  • Term:期限,籌資者通過網貸平台進行借款時所承諾的最終償還期限,借款期限體現該資產的流動性,期限較長的資產應存在著流動性溢價(利率上漲).
  • CreditGrade/ProsperRating(Alpha):信用等級,前者反映的是2009年7月1日前客戶的信用等級,後者反映的是2009年7月1日後的信用等級.信用等級越高,其償債能力越強.

  • CreditScore:由消費信用公司提供的消費信用評分,同信用評級作用.
  • StatedMonthlyIncome:客戶月收入,月收入越高,投資者對該借款本息按時迴流越有信心.

  • DelinquenciesLast7Years:信用資料提交時借款人過去7年違約次數,該指標在一定程度上可以體現借款標發布者的信用狀況

  • BankCarduse:信用資料提交時借款人信用卡使用額度和信用卡總透支額度的百分比,本文將這個數據分成四組(mild use;medium use;heavy use;super use)
  • LoanOriginalAmount:借款人在借款時已經向prosper借入的資金,如果沒有歷史記錄則為0,顯然,借入本金越多,其還款壓力越大,但是這項指標大的話也可能說明該客戶對prosper依賴性較強.

  • DebtToIncomeRatio:借款人的債務收入比,債務收入比越高說明籌資者財務狀況越差,還款能力較低.其向P2P平台借款時,投資者應要求有更高的回報.

  • Occupation:貸款人職業

  • IncomeRange:貸款人年收入範圍
  • BorrowerState:貸款人借款地點

一.導入數據和包

library(ggplot2)nlibrary(GGally)nlibrary(scales)nlibrary(memisc)nlibrary(gridExtra)nlibrary(tidyr)nlibrary(mice)nlibrary(dplyr)nlibrary(gridExtra)nnloandata <- read.csv(prosperLoanData.csv)nhead(loandata)nstr(loandata)n

數據轉換

#日期字元轉換nloandata$LoanOriginationDate <- as.Date(loandata$LoanOriginationDate)nloandata$ListingCreationDate <- as.Date(loandata$ListingCreationDate)nloandata$DateCreditPulled <- as.Date(loandata$DateCreditPulled)nn#對客戶的消費信用評級,數據中有高低範圍,將這兩個數值取平均值做計算nloandata$CreditScore <-(loandata$CreditScoreRangeLower+loandata$CreditScoreRangeUpper)/2nn#將兩個衡量信用等級的數據轉換n#這裡的數據來自2009年7月1日之前nloandata$CreditGrade <- n ordered(loandata$CreditGrade,levels = c("NC","HR","E","D","C","B","A","AA"))ntable(loandata$ProsperRating..Alpha.)n#2009年7月1日之後nloandata$ProsperRating..Alpha.<-n ordered(loandata$ProsperRating..Alpha.,levels = c("HR","E","D","C","B","A","AA")) nn#因為2009年7月1日是一個數據截點,因此將數據分成兩段處理nloandata$Phase[loandata$LoanOriginationDate > "2009-07-01"] <- "After 2009"nloandata$Phase[loandata$LoanOriginationDate < "2009-07-01"] <- "Before 2009"nn#對之前未在prosper的客戶建立庫(數據解釋:0或NA是未使用過prosper的客戶,反之是使用過的)nloandata$Customer_clarify[loandata$TotalProsperLoans > 0] <- "Previous Borrower"nloandata$Customer_clarify[loandata$TotalProsperLoans == 0] <- "New Borrower"nloandata <- replace_na(loandata,replace = list(Customer_clarify = "New Borrower"))nloandata$Customer_clarify <- factor(loandata$Customer_clarify)nn#對信用卡使用程度進行衡量nloandata$BankCardUse[loandata$BankcardUtilization<quantile(loandata$BankcardUtilization,nprobs = 0.25,"na.rm" = TRUE)] <- "Mild Use"nnloandata$BankCardUse[loandata$BankcardUtilization>=quantile(loandata$BankcardUtilization,nprobs = 0.25,na.rm=TRUE) & (loandata$BankcardUtilization <nquantile(loandata$BankcardUtilization,probs =0.5,na.rm=TRUE))] <- "Medium Use"nnloandata$BankCardUse[loandata$BankcardUtilization>=quantile(loandata$BankcardUtilization,nprobs = 0.5,na.rm=TRUE)&(loandata$BankcardUtilization<1)] <- "Heavy Use"nnloandata$BankCardUse[loandata$BankcardUtilization>=1] <- "Super Use"nnloandata$BankCardUse <- factor(loandata$BankCardUse,levels=c("Mild Use","Medium Use",n"Heavy Use","Super Use"))n

借款人信息分析:

1.借款人地址的分布

ggplot(aes(BorrowerState),data = loandata) + n geom_bar(color=I(black),fill = I(#FFCC22)) +n theme(axis.text.x = element_text(angle = 90))n

從借款人分布來看,California借款人最多,由網上信息得知,prosper的總部位於舊金山,那麼加利福尼亞的客戶最多這一點是有實際意義的.而其他幾個周也有超過5000的用戶,並且大部分是發達城市.

2.借款人收入分布

loandata$IncomeRange<-ordered(loandata$IncomeRange,levels=c("Not displayed",n "Not employed","$0",n "$1-24,999",n "$25,000-49,999",n "$50,000-74,999",n "75,000-99,999",n "$100,000+"))nggplot(aes(IncomeRange),data = loandata) +n geom_bar(color = I(black),fill = I(#FF77FF))n

這一點很讓人奇怪,借款人收入缺失的就有超過1W的數據,並且0收入群體以及沒有工作的群體也佔有一定的比例,而其他大部分借款人的收入在$25000--$75000之間.

3.借款人的職業

qplot(x=Occupation,data=loandata,color=I(black),fill=I(#099DD9))+ntheme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))n

在職業選項上,很多借款人似乎不太願意透露自己的信息,都選擇填了other這個選項.因此這項數據的真實性讓人懷疑.

4.借款人債務收入比

ggplot(aes(DebtToIncomeRatio),data = loandata) +n geom_histogram(color=I(black),fill=I(#FFDDAA)) +n xlim(0,1) n

從上圖可以看到,債務收入比呈現左偏的形態,說明大部分借款人的債務收入比較低,集中在0-0.25之間,這說明該平台的借款人的資金狀況良好,利於償還債務,維護平台的穩定.

5.借款人信用卡使用比率

ggplot(aes(BankCardUse),data = subset(loandata,!is.na(BankcardUtilization))) +n geom_bar(color = I(black),fill = I(#FFBB66))n

這裡我們將幾個標準這樣定義(mild use:0-0.25,medium use:0.25-.75,heavy use:0.75-1,super use > 1)數字代表信用卡使用額度/信用卡總額度.可以看到,大部分人都是在接近1的邊緣,說明借款人在借款時還有信用卡要還,這降低了他們的在prosper的還款能力.

6.客戶信用等級

q1 <- qplot(CreditScore,data = loandata,color=I(black),fill=I(#00AA55)) +n xlim(400,800) + n ggtitle(consumer credit rating)nq2 <- qplot(CreditGrade,data = subset(loandata,LoanOriginationDate < "2009-07-01"),color=I(black),fill=I(orange)) +n scale_x_discrete(limits = c("HR","E","D","C","B","A","AA")) + n ggtitle(CreditScore before 2009)nq3 <- qplot(x = ProsperRating..Alpha.,data = subset(loandata,n LoanOriginationDate > "2009-07-01"), color=I(black),fill=I(#099DD9)) + n scale_x_discrete(limits = c("HR","E","D","C","B","A","AA")) +n ggtitle(CreditScore after 2009)ngrid.arrange(q1,q2,q3) n

從圖中可以看到,大部分人的消費信用評分都比較高,在700分左右集中,而根據時間劃分的prosper信用評分(AA最高,HR最低)也比較均衡,在2009年之後的數據更偏向正態分布,這也跟數據量的擴充有關.

7.借款人過去7年的違約次數

ggplot(aes(x = DelinquenciesLast7Years),data = loandata)+n geom_density(aes(fill = I(#EEFFBB)))+n scale_x_continuous(limits = c(-1,quantile(loandata$DelinquenciesLast7Years,probs = 0.95,na.rm = TRUE)))nsummary(loandata$DelinquenciesLast7Years)n

密度圖中看到,大部分人在過去7年內的違約次數都為0,這也說明了借款人的資質比較好,至少在過去的違約次數較少,在一定程度上說明這些客戶在未來違約的可能性會小一些.

總結:

1.大部分客戶來源於加利福尼亞以及發達城市,說明網貸的分布集中在大城市中,這也許跟宣傳,客戶群體水平,客戶推薦等有關係.

2.借款人收入大都在$25000-$75000之間,但是也不乏一些低收入群體和沒有工作的人,但是佔比較少

3.借款人的信用記錄普遍較好,但是從信用卡使用角度來看,借款人的還款壓力比較大.

資金借貸情況分析:

1.資金價格分布和期限分布

qplot(BorrowerRate,data = loandata_sub,color = I(black),n fill = I(#99BBFF)) +n scale_x_continuous(breaks = seq(0,0.4,0.1)) nnloandata$Term <- factor(loandata$Term)nggplot(aes(Term),data = loandata) + n geom_bar(color=I(black),fill = I(#56B4E9))n

圖中可以看到,資金的價格分布比較均勻,大體呈現正態分布,而借款期限來看,36期的借款明顯更受歡迎,佔比達到80%以上.

2.資金價格與期限的關係

ggplot(aes(x = Term,y = BorrowerRate),data = loandata) + n geom_boxplot() + n stat_summary(fun.y = mean,geom = point,shape = 4)n

從箱線圖中可以看到,中位數與均值很接近,並且異常值很少,可以看出,資金價格與資金借貸期限似乎沒有什麼明顯的關係.

3.資金價格和客戶月收入

ggplot(aes(StatedMonthlyIncome,BorrowerRate),data = subset(loandata,!is.na(StatedMonthlyIncome))) + n stat_density2d(aes(alpha = ..density..), geom = tile, contour = FALSE) + n scale_x_continuous(limits = c(0,30000))n

從核密度圖看出,月收入集中在$10000以下,但是沒有看到資金價格與月收入有什麼明顯的關係.

4.資金價格與消費信用評分的關係

ggplot(aes(CreditScore,BorrowerRate),data = loandata) + n geom_point() + n facet_wrap(~Phase,ncol = 1) + n scale_x_continuous(limits=c(400,900))+n scale_y_continuous(limits=c(0.0,0.4))+n geom_line(stat="summary", fun.y=mean)+n geom_line(stat="summary", fun.y=median,linetype=2,color="red")n

這一點很有意思,在2009年前,prosper還借給評分給600分以下的客戶,而在2009年之後,640分以下的客戶基本沒有了,這似乎說明了prosper在2009年7月1日之後對其信貸模式進行了修改,對600分以下的客戶不允許放貸了.

5.資金價格與信用評級的關係(以2009年7月1日為時間節點)

2009年7月1日前:

ggplot(aes(ProsperRating..Alpha.,BorrowerRate),data =subset(loandata,LoanOriginationDate > "2009-07-01")) +n scale_x_discrete(limits = c("HR","E","D","C","B","A","AA")) + n geom_boxplot() +n stat_summary(fun.y = mean,geom = point,shape = 4) +n stat_summary(funy = mean,geom = smooth,aes(group = 1))n

2009年7月一日後:

ggplot(aes(ProsperRating..Alpha.,BorrowerRate),data =subset(loandata,LoanOriginationDate > "2009-07-01")) +n scale_x_discrete(limits = c("HR","E","D","C","B","A","AA")) + n geom_boxplot() +n stat_summary(fun.y = mean,geom = point,shape = 4) +n stat_summary(funy = mean,geom = smooth,aes(group = 1))n

(圖中的線是均值連線),兩張圖進行比較,可以清晰看到,後面那張圖均線的斜率更大,這說明了在2009年7月1日之後,prosper對借款人信用評級更加重視,評級決定資金價格的趨勢更加明顯,從另一方面說明了其貸款模型有所變化.

#進一步探究在這個時間節點發生的變化

6.資金價格與貸款總額和信用評級的關係

2009年7月1日前:

ggplot(aes(LoanOriginalAmount,BorrowerRate,color = CreditGrade),data = subset(loandata,LoanOriginationDate < "2009-07-01"& CreditGrade != NC)) +n geom_point() +n scale_color_brewer(type = seq,n guide = guide_legend(title = CreditGrade,reverse = TRUE,n override.aes = list(alpha = 1, size = 2)))n

2007年7月1日之後:

ggplot(aes(LoanOriginalAmount,BorrowerRate,color = ProsperRating..Alpha.),n data = subset(loandata,LoanOriginationDate > "2009-07-01" n & !is.na(ProsperRating..Alpha.))) +n geom_point() +n scale_color_brewer(type = seq,n guide = guide_legend(title = ProsperRating,reverse = TRUE,n override.aes = list(alpha = 1, size = 2)))n

從上面兩個圖形可以看到,在2009年7月1日前後,數據點有了很大的變化,從借貸資金來看,在時間節點之後,prosper開始借出一些超過25000的資金,並且由於2009年之後,prosper發展迅速,後圖擁有更多的點,同時可以看出,隨著借貸資金的增加,prosper逐漸降低了利率,這在2009年之前並未見到這種變化(當然也是由於2006年才建立,而大部分客戶借的是36期有關)還有一點,後圖圖層的顯示的更加分明,這也說明了proeper可能在2009年之後對貸款模型進行了修改,其資金價格與客戶信用聯繫更加緊密了.

7.資金價格與貸款總額與信用卡使用的關係:

2009年7月1日前:

ggplot(aes(LoanOriginalAmount,BorrowerRate,color = BankCardUse),data = subset(loandata,LoanOriginationDate < "2009-07-01"& CreditGrade != NC & n !is.na(BankCardUse))) +n geom_point() +n scale_color_brewer(type = qual,n guide = guide_legend(title = BankCardUse,reverse = TRUE,n override.aes = list(alpha = 1, size = 2)))n

2009年7月1日後:

ggplot(aes(LoanOriginalAmount,BorrowerRate,color = BankCardUse),n data = subset(loandata,LoanOriginationDate > "2009-07-01" n & !is.na(BankCardUse))) +n geom_point() +n scale_color_brewer(type = div,n guide = guide_legend(title = BankCardUse,reverse = TRUE,n override.aes = list(alpha = 1, size = 2)))n

在信用卡使用程度來看,在時間節點前後似乎並沒有什麼變化,但是可以看出信用卡使用率低的用戶得到了更低的資金貸款價格,這似乎驗證了我們的觀點,信用卡使用率越低,貸款利率也會有所下降.

8.擬合函數,檢驗相關性

我們的問題是prosper在2009年7月1日前後的貸款模型是否有變化,我將從lm函數角度出發,驗證上面圖形的觀點,使用多元線性回歸模型,對2009年7月1日前後分別進行模擬,得出相關係數,若後者相關係數更大,說明我們的觀點正確:prosper更加看中了客戶信用評分,去決定他的資金價格.

2009年7月1日前:

m1 <- lm(I(BorrowerRate) ~ I(CreditScore), data = subset(loandata,n LoanOriginationDate < "2009-07-01"n & !is.na(CreditGrade) & !is.na(LoanOriginalAmount) & !is.na(BankCardUse) & !is.na(CreditScore)))nm2 <- update(m1, ~ . + CreditGrade)nm3 <- update(m2, ~ . + LoanOriginalAmount)nm4 <- update(m3, ~ . + BankCardUse)nmtable(m1, m2, m3, m4)n

2009年7月1日後:

m5 <- lm(I(BorrowerRate) ~ I(CreditScore), data = subset(loandata,n LoanOriginationDate > "2009-07-01"n & !is.na(ProsperRating..Alpha.) & !is.na(LoanOriginalAmount) & !is.na(BankCardUse)n & !is.na(CreditScore)))nm6 <- update(m5, ~ . + ProsperRating..Alpha.)nm7 <- update(m6, ~ . + LoanOriginalAmount)nm8 <- update(m7, ~ . + BankCardUse)nmtable(m5, m6, m7, m8)n

兩者擬合的函數P值都是0,說明函數擬合的較好,因此可以做比較.從R^2出發,總體來看,2009年之後的R^2(0.9)是明顯大於2009年之前的(0.5),說明總體而言,prosper更加看中了幾個信用評級的評分,從具體指標來看,prosper降低了對信用評分(creditscore)的比重,對信用評級和信用卡的使用的比重上升.

總結:

1.prosper的貸款利率分布均勻,但是在借款人中,借36期的人數比重最大.

2.貸款利率與月收入的關係不大

3.prosper在2009年之後對消費信用評分低於600的人不再發放貸款,這也許與他的貸款模型修改有關

4.prosper在2009年7月1日之後更加看重客戶的信用評級和信用卡使用情況,但是對消費信用貸款的重視程度有所下降

背景資料:

prosper貸款條件:

貸款申請的合格標準為:1)在過去6個月內,少於7個信用局查詢了申請人的信用信息;2)申請人自己聲明有正的收入;3)債務收入比低於50%;4)在信用局報告上至少有3筆公開交易;5)在過去12個月內無申請破產。此外,第一次在平台出借的申請人需要有不低於640分的信用分數。

以上幾點,我們驗證的幾個觀點得到證實,債務比以及信用分數我們已經預測到.

事件:2008年11月24日,SEC判定Prosper違反了《1933年證券法》,要求Prosper暫定運營。經審查後,考慮P2P借貸模型的特性,SEC將所有P2P借貸定義為債券銷售,要求所有P2P企業都在SEC登記註冊。2008年11月26日,加州最高法院對Prosper提起集體訴訟,控告Prosper違反加州和聯邦法律發行和出售未認證和註冊的證券。訴訟尋求類認證、損害、撤銷權和律師費。Prosper的保險商Greenwhich保險公司拒絕給予賠償,表示這類事件不包含在保險政策中。2009年7月,Prosper的貸款在獲得SEC的註冊後,重新開發了網站。但重新開業後,競標貸款限制在美國28個州和哥倫比亞地區的居民。有47個州的居民可以再Prosper上借款,另外三個州(Iowa、Maine、North Dakota)則不允許。

在我們的EDA分析中,也看到了居民的分布情況,這一點得到驗證,並且2009年7月1日之後prosper重新開業,修改了其借貸模型,這也與我們的預測接近.

不足之處:

1.第一次寫這麼長的報告,語言很爛,總結觀點不夠精鍊

2.數據分析的不夠到位,沒有對更多的指標進行更新

3.只用線性回歸局限性較大,待學習了聚類,隨機森林的演算法再來做這個數據,用其製作評分卡模型,來驗證模型的準確性.


推薦閱讀:

衛視實時收視率對比 | R爬蟲&可視化第1季
機器學習和數據分析中,R和Python的對比
數據挖掘預備役——前期數據處理(譯)

TAG:R编程语言 |