炼数成金 门户 商业智能 R语言 查看内容

手把手教你用R语言建立信用评分模型(二)—单变量分析

2017-2-1 21:19| 发布者: 炼数成金_小数| 查看: 23468| 评论: 0|来自: Frank和风险模型们

摘要: 在风险建模的过程中,变量选择可以具体细化为单变量变量筛选 (Univariate Variable Selection)和多变量变量筛选 (Multivariate Variable Selection)。多变量变量筛选一般会利用Stepwise算法在变量池中选取最优变 ...

模型 算法 数学 R语言 BI

单变量分析
在风险建模的过程中,变量选择可以具体细化为单变量变量筛选  (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")
ggplot(AccountBalancewoe, aes(x = BIN, y = -WOE)) + geom_bar(stat = "identity",fill = "blue", colour = "grey60",size = 0.2, alpha = 0.2)+labs(title = "AccountBalance")
 
一般来讲,支票账户余额越多,借款人还款能力越强,所以这个指标是一个正向指标。可以看出AccountBalance同WoE程强负相关关系,且没有跳点(个别分箱不符合总体趋势则被称为跳点)。所以接受AccountBalance作为进入模型的变量之一。

接下来分析一下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")
ggplot(ValueSavingswoe, aes(x = BIN, y = -WOE)) + geom_bar(stat = "identity",fill = "blue", colour = "grey60",size = 0.2, alpha = 0.2)+labs(title = "ValueSavings") 

输出后的R图形:

从上图看出,在 分箱2 出现了轻微的跳点现象。因为跳点幅度并不大,我们可以保留此分箱,或者对分箱1和分箱2进行合并。
for(i in 1:750){
  if(train$ValueSavings[i]==1){train2$ValueSavings[i]=2}
}
分箱标准:
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")
ggplot(Lengthofcurrentemploymentwoe, aes(x = BIN, y = -WOE)) + geom_bar(stat = "identity",fill = "blue", colour = "grey60",size = 0.2, alpha = 0.2)+labs(title = "Lengthofcurrentemployment") 

输出R图形:

同样, Lengthofcurrentemployment(受雇佣年限)出现了跳点现象。因而, 我们将分箱4 和 分箱5 进行合并。 
for(i in 1:750){
  if(train2$Lengthofcurrentemployment[i]==5){train2$Lengthofcurrentemployment[i]=4}
}
重分箱标准:
1 : unemployed 
2 : ... < 1 year 
3 : 1 <= ... < 4 years 
4 :  .. >= 4 years 

重新输出:

经过合并后,Lengthofcurrentemployment(受雇佣年限)指标呈现明显的负相关关系,且无跳点现象。可以接受指标进入下一步的筛选。

欢迎加入本站公开兴趣群
商业智能与数据分析群
兴趣范围包括各种让数据产生价值的办法,实际应用案例分享与讨论,分析工具,ETL工具,数据仓库,数据挖掘工具,报表系统等全方位知识
QQ群:81035754

鲜花

握手

雷人

路过

鸡蛋

最新评论

热门频道

  • 大数据
  • 商业智能
  • 量化投资
  • 科学探索
  • 创业

即将开课

热门文章

     

    GMT+8, 2020-7-4 01:22 , Processed in 0.205076 second(s), 23 queries .