手把手教你用R語言建立信用評分模型(二)——單變數分析
單變數分析
在風險建模的過程中,變數選擇可以具體細化為單變數變數篩選 (Univariate Variable Selection)和多變數變數篩選 (Multivariate Variable Selection)。多變數變數篩選一般會利用Stepwise演算法在變數池中選取最優變數。 而單變數篩選,或者說單變數分析,是通過比較指標分箱和對應分箱的違約概率來確定指標是否符合經濟意義。
具體的單變數分析方法有很多種, 如我在《信用評級建模中的數據清洗與變數選擇》中介紹的的AR值分析、《信用評分模型中應不應該包括「歧視變數」》中的 好壞比分析(Goods/Bads)都可以看作單變數分析的具體體現。 在本文,我會介紹另一種常見的單變數分析方法:WoE分析。
這三種方法,本質的方法論都是一致的:去比較變數分箱和違約水平的相關關係。一般來講,正向指標 (如公司評級模型中的利潤率,零售評級模型中的抵押品價值)要和分箱內違約率呈反向關係, 反向指標要同分箱內違約率呈正向關係。當然也有特殊的U型指標,這裡不再詳述,詳情請見《信用評級建模中的數據清洗與變數選擇》中的介紹。但這三者不同的是其中分箱內代表違約水平的指標,在不同的方法中指標計算有所不同(AR值/好壞比/WoE)。
WoE分析, 是對指標分箱、計算各個檔位的WoE值並觀察WoE值隨指標變化的趨勢。其中WoE的數學定義是:
WoE定義,另一種WoE定義不包括 rescale factor(×100)在進行分析時,我們需要對各指標從小到大排列,並計算出相應分檔的WoE值。其中正向指標越大,WoE值越小;反向指標越大,WoE值越大。正向指標的WoE值負斜率越大,反響指標的正斜率越大,則說明指標區分能力好。WoE值趨近於直線,則意味指標判斷能力較弱。若正向指標和WoE正相關趨勢、反向指標同WoE出現負相關趨勢,則說明此指標不符合經濟意義,則應當予以去除。
首先來看一下AccountBalance(支票賬戶餘額):
AccountBalancewoe=woe(train, "AccountBalance",Continuous = F, "Creditability",C_Bin = 4,Good = "1",Bad = "0")nggplot(AccountBalancewoe, aes(x = BIN, y = -WOE)) + geom_bar(stat = "identity",fill = "blue", colour = "grey60",size = 0.2, alpha = 0.2)+labs(title = "AccountBalance")n n
接下來分析一下ValueSavings(儲蓄賬戶餘額)
以下是分箱標準:
ValueSavings
1 : ... < 100 DM
2 : 100 <= ... < 500 DM 3 : 500 <= ... < 1000 DM 4 : .. >= 1000 DM 5 : unknown/ no savings account其中,第五個分箱(unknown/ no savings account )同前四項並無可比性,所以在比較中可以忽略此分箱。
R代碼:
ValueSavingswoe=woe(train2, "ValueSavings",Continuous = F, "Creditability",C_Bin = 5,Good = "1",Bad = "0")nggplot(ValueSavingswoe, aes(x = BIN, y = -WOE)) + geom_bar(stat = "identity",fill = "blue", colour = "grey60",size = 0.2, alpha = 0.2)+labs(title = "ValueSavings") n
輸出後的R圖形:
從上圖看出,在 分箱2 出現了輕微的跳點現象。因為跳點幅度並不大,我們可以保留此分箱,或者對分箱1和分箱2進行合併。
for(i in 1:750){n if(train$ValueSavings[i]==1){train2$ValueSavings[i]=2}n}n
分箱標準:
ValueSavings
2 : < 500 DM 3 : 500 <= ... < 1000 DM 4 : .. >= 1000 DM 5 : unknown/ no savings account 重新輸出:可以看出,通過合併前兩個分箱,ValueSavings(儲蓄賬戶餘額)指標和WoE呈明顯的負相關關係,且無跳點。因而,可以接受這一指標。
最後一個進入單變數分析的指標是Lengthofcurrentemployment(受僱傭年限),下面是具體分箱標準:
1 : unemployed
2 : ... < 1 year 3 : 1 <= ... < 4 years 4 : 4 <= ... < 7 years 5 : .. >= 7 years運行R代碼:
Lengthofcurrentemploymentwoe=woe(train, "Lengthofcurrentemployment",Continuous = F, "Creditability",C_Bin = 4,Good = "1",Bad = "0")nggplot(Lengthofcurrentemploymentwoe, aes(x = BIN, y = -WOE)) + geom_bar(stat = "identity",fill = "blue", colour = "grey60",size = 0.2, alpha = 0.2)+labs(title = "Lengthofcurrentemployment") n
同樣, Lengthofcurrentemployment(受僱傭年限)出現了跳點現象。因而, 我們將分箱4 和 分箱5 進行合併。
for(i in 1:750){n if(train2$Lengthofcurrentemployment[i]==5){train2$Lengthofcurrentemployment[i]=4}n}n
重分箱標準:
1 : unemployed
2 : ... < 1 year 3 : 1 <= ... < 4 years 4 : .. >= 4 years重新輸出:
經過合併後,Lengthofcurrentemployment(受僱傭年限)指標呈現明顯的負相關關係,且無跳點現象。可以接受指標進入下一步的篩選。微信公眾號:Frank和風險模型們,歡迎關注
http://weixin.qq.com/r/QDj27j-EwWK_rXuN921S (二維碼自動識別)
推薦閱讀:
※徵信機構與信用評級機構的區別?
※不查徵信怎麼了解客戶的信用?
※如何看待穆迪於 2017 年 5 月 24 日將中國主權評級下調至 A1,可能帶來哪些影響?
※信用評級在國內的發展怎麼樣?
※如何看待連雲港政府融資平台新海連被標普降級?