zoukankan      html  css  js  c++  java
  • 信用风险评分卡研究-第8章笔记

    证据权重(Weight OF EVIDENCE,WOE)转换可以将LOGISTIC回归模型转换为标准评分卡转为标准评分卡格式 。本章,我们将介绍各种各种类型变量的WOE转换过程,即名义变量、顺序变量和连续变量。应用证据权重转换又称为粗分类。
    引入WOE转换的目的并不是为了提高模型质量。正如第7章部分案例表明,一些变量不应该被纳入模型。这或者是因为它们不能增加模型值,或者是因为与模型相关系数有关的误差较大。
    在介绍WOE转换之前,需要注意的是,建立标准信用评分卡也可以不采用WOE转换。在这种情况下,LOGISTIC回归模型需要处理更大数量的自变量。尽管这样会增加建模程序的复杂性,但最终得到的评分卡都是一样的。

    WOE的定义
    下面的例子介绍了WOE转换的基本定义
    首先,计算数据库CREIDTCARD中变量RESSTATUS种类中正常和违约的频率。列表8.1中的代码将生成这些频率。
    PROC FREQ DATA=CREDITCARD;
    TABLE RESSTATUS*STATUS/NOCOL NOROW NOPC;
    RUN;
    使用这些数值,就可以计算变量RESSTATUS的WOE,详见表8.1
    列GOOD DIST 和 BAD DIST分别表示变量RESSTATUS种类别中正常和违约的分布情况。它们分别由每一类别中占用率数据除以正常或违约总数而得到。例如,类别OTHER中正常的分布的计算方法是131/803=0.163

    如果括号内比值小于1,WOE的负值;反之则是正值。需要注意的是,公式8.1中将违约的分布作为分子来定义WOE。公式8.1中类别顺序的选择隐含着WOE的含义。
    例8.1 是计算名义变量WOE的示例。同样的定义和计算方法也可以适用于连续变量的情况。但此时,在计算WOE之前,需要将变量分段(bin)。对于名义变量,如例8.1中的变量RESSTATUS,因为这些名义变量之间不存在任何序列关系,所以不同类别的WOE值可以以任意顺序排列。然而,对于连续变量,WOE值必须按照分段的自然顺序排列,以保持连续原始变量中所包含的顺序关系。

    WOE的含义
    对于一个名义变量的类别I,或连续变量的某个段,WOE可以定义为:
    需要记住的是,对于类别i,正常和违约的分布分别定义为:类别I的好样本/总样本的好样本。

    将对这个函数与第4章中公式4.23定义的概率比进行对比,可以发现WOE是概率比一种调整形式后的对数,即第i类中违约与正常比率与整个样本中违约与正常比率的比值的对数。因此,其目的是衡量第I类对违约与正常的比率的影响程度。
    接下来的例子表明,如果用一个已经过了WOE转换的自变量对LOGISTIC回归模型进行拟合,则该变量对应的模型参数正好是1.0.

    列表8.7 用%EqWBinn 和 %VarBin 对连续变量分段

    列表8.6
    %MACRO BinVar(DSIN,IVVAR,DVVAR,METHOD,MMAX,ACC,DSVARMAP,NEWVAR,DSOUT);

    /*Generate the binning map and then apply them */
    %BinContVar(&DSIN,&IVVAR,&DVVAR,&METHOD,&MMAX,&ACC,&DSVVARMAP);

    %APPLYMAP2(&DSIN,&IVVAR,&NEWVAR,&DSVARMAP,&DSOUT);

    %MEND;

    采用最优分段,通常不会得到等宽的段。
    当WOE值和分段号的序列量表之间的线性关系,或更差一点单调性,不存在时,有两种可能的解释:
    1、变量并没有表现出可以用LOGISTIC回归合理解释的模式。因此,不应该将该变量以现有形式纳入模型。可以尝试各种不同的转换,如不同的分段范围,以考察解决该问题的可能性。如果没有任何一种转换形式可以得到线性,或至少是单调形式,应该拒绝该变量。
    2、第二种情况是,可以为WOE值观察到的行为找到业务上的解释。常见的U形曲线表示某个变量取中间值时坏账率较低,而其取高端值和低端值时坏账率较高。例如,如果申请评分卡中表示,客户年龄的变量被观察到这种模式,可以用就业率对些进行解释,中年客户的就业率水平最高,而年龄区间的两端就业率较低。

    /*Customer Age:5 EQUAL WIDTH Bins */
    %EqWBinn(CreditCard,CustAge,5,CustAge_b,CC1,Age_Map);

    /*Bin All the continuous variables using Binvar The mothod=1 is the Gini method*/

    /*Time at Address:5 bins*/
    %BinVar(CC1,TmAtAddress,Status,1,5,0.01,TmAtAddress_Map,TmAtAddress_b,CC2);

    /*Customer Income:5 bins*/
    %BinVar(CC2,CustIncome,Status,1,5,0.01,CustIncom_Map,CustIncom_b,CC3);

    /*Time with Bank:4 bins*/
    %BinVar(CC3,TmWbak,Status,1,4,0.01,TmWBank_Map,TmWBank_b,CC4);

    /*Average monthly balance:5 bins*/
    %BinVar(CC4,AmBalance,Status,1,5,0.01,AmBalance_Map,AmBalance_b,CC5);

    /*Utilization Rate:5 bins*/
    %BinVar(CC5,UtilRate,Status,1,5,0.01,UtilRate_Map,UtilRate_b,CC6);

    列表8.8 用%CalcWOE 计算WOE
    /*Customer Age*/
    %CalcWOE(CC6,CustAge_b,Status,CustAge_WOE,CustAge_WOE,CC7);

    /*Time at address*/
    %CalWOE(CC7,TmAtAddress_b,Status,TmAtAddress_WOE,TmAtAddress_WOE,CC8);

    /*Customer Income*/
    %CalcWOE(CC8,CustIncome_b,Status,CustIncome_WOE,CustIncome_WOE,CC9);

    /*Time With Bank*/
    %CalcWOE(CC9,TmWBank_b,Status,TmWBank_WOE,TmWbank_WOE,CC10);

    /*Average Monthly Balance*/
    %CalcWOE(CC10,AmBalance_b,Status,AmBalance_WOE,AmBalance_WOE,CC11);

    /*Utilization Rate*/
    %CalcWOE(C11,UtilRate_b,Status,UtilRate_WOE,UtilRate_WOE,CC12);

    显示并绘制变量CustAge和TmAtAddress的WOE值
    /*Customer Age*/
    PROC SORT DATA=CustAge_WOE;
    BY CustAge_b;
    RUN;

    PROC PRINT DATA=CustAge_WOE;
    RUN;

    %PlotWOE(CustAge_WOE,CustAge_b);

    /*Time At Address*/
    PROC SORT DATA=TmAtAddress_WOE;
    BY TmAtAddress_b;
    RUN;

    PROC PRINT DATA=TmAtAddress_WOE;
    RUN;
    %PlotWOE(TmAtAddress_WOE,TmAtAddress_b);

  • 相关阅读:
    html实现时间输入框
    使用textarea标签代替input标签可以实现输入框的大小调节,自动换行,滚动条显示
    requests模块的使用
    抓包工具Fiddler使用教程
    git 使用merge 对本地分支进行合并 并进行代码提交的流程
    js常用方法汇总
    js对象排序
    原生javasxript获取浏览器的滚动距离和可视窗口的高度
    深度对象拷贝
    curl扩展代码
  • 原文地址:https://www.cnblogs.com/wdkshy/p/9898564.html
Copyright © 2011-2022 走看看