[关闭]
@77qingliu 2018-05-13T12:06:00.000000Z 字数 12756 阅读 1337

预测力指标

信用评分


这里继续探讨EDA过程,并重点介绍对候选变量预测力的判断。
首先明确区分相关性和关联性的区别。统计学上,相关性通常指的变量之间的线性相关,而其他所有的非线性相关都可以用关联性来衡量。

需要衡量变量间相关性和关联性的原因有以下几点:

而通过判断变量之间的相关水平,可以过滤掉预测力低的变量。接下来,讨论这些衡量指标和他们的SAS实现过程

符号

不同的相关性和关联性指标需要使用大量符号。

指标 描述 指标 描述
皮尔逊卡方统计量 似然比
皮尔逊相关系数 似然比检验统计量
斯皮尔曼相关系数 熵方差
基尼方差 信息值

根据变量类型,这些符号可以分为3组:
image.png-85.8kB
image.png-61.6kB

皮尔逊相关系数

给定两个连续变量,皮尔逊相关系数被定义为:


的取值总是在0-1之间,接近0表示变量间无相关性,接近1表示强相关性。

proc corr可以计算多个相关系数,皮尔逊相关是默认指标。如下例所示:
程序

  1. data Homes;
  2. input Income Value1 Value2 @@;
  3. datalines;
  4. 20 120 120 22 165 165 25 203 203
  5. 25 205 205 31 192 192 33 220 220
  6. 36 129 129 36 269 269 37 136 136
  7. 40 364 364 48 194 759 52 285 285
  8. 55 279 279 59 320 320 64 370 370
  9. 81 448 448 83 514 514 98 419 419
  10. 99 613 613 99 526 667
  11. ;
  12. run;
  13. /* Calculate the Person correlation coefficient using
  14. PROC FREQ */
  15. proc corr data=Homes pearson;
  16. var Income Value1 Value2;
  17. run;

输出
image.png-25.8kB

斯皮尔曼相关系数

斯皮尔曼相关系数采用的是取值的等级,而不是取值本身,常用作顺序变量的相关性检验。例如,给定3个值:33,21,44,他们的等级就是2,1,3。具体的计算公式如下:


其中R和S分布代表观测i取值的等级。可以用proc corr通过指定选项spearman来计算斯皮尔曼相关系数。举例如下:
程序

  1. data Homes;
  2. input Income Value1 Value2 @@;
  3. datalines;
  4. 20 120 120 22 165 165 25 203 203
  5. 25 205 205 31 192 192 33 220 220
  6. 36 129 129 36 269 269 37 136 136
  7. 40 364 364 48 194 759 52 285 285
  8. 55 279 279 59 320 320 64 370 370
  9. 81 448 448 83 514 514 98 419 419
  10. 99 613 613 99 526 667
  11. ;
  12. run;
  13. proc corr data=Homes spearman;
  14. var Income Value1 Value2;
  15. run;

输出
image.png-25.5kB

另外,在proc corr中,可以指定outp=ocorr或者outs=scorr将皮尔逊或者斯皮尔曼相关系数输出到数据集中。

  1. proc corr data=Homes Pearson Spearman OutP=PCorr OutS=SCorr;
  2. var Value1 Value2 Income;
  3. run;

皮尔逊卡方统计量

皮尔逊卡方统计量,用表示,用来衡量两个分类变量之间的关联性。公式如下:


其中

表示计算第i行和第j列中的预期单元数。
如果单元数很大,服从自由度为的卡方分布。因此,独立性概率为:

皮尔逊卡方值可以在proc freq中,通过在tables语句中指定选项chisq计算得到。举例如下:
程序

  1. data CreditApp;
  2. length ResidenceCat $20.;
  3. length EmploymentCat $20.;
  4. infile datalines delimiter=',';
  5. input ResidenceCat $ EmploymentCat $ Wt ;
  6. datalines;
  7. House,Full time,6248
  8. House,Part time,4215
  9. House,Self employed,4521
  10. House,Other,857
  11. Apartment,Full time,4128
  12. Apartment,Part time,3874
  13. Apartment,Self employed,1125
  14. Apartment,Other,741
  15. Other,Full time,3145
  16. Other,Part time,1780
  17. Other,Self employed,452
  18. Other,Other,2569
  19. ;
  20. run;
  21. /* Calculate the Pearson Chi-squared statistic using
  22. PROC FREQ */
  23. proc freq data = CreditApp order=data;
  24. tables ResidenceCat * EmploymentCat/CHISQ;
  25. weight wt;
  26. run;

输出
image.png-31.7kB

似然比

似然比检验统计量,用表示,是基于最大似然估计原理(MLE)的统计量。MLE的原理是定义一个似然函数,赋予其所需求的解的特征。

首先,从观测一个有类,分布为的名义变量的简单案例开始。假设来自一个已知分布的总体,因其各类的概率定为,表示为向量
然后,抽取一个规模为N的样本。该样本的每一类别的概率表示为,将其表示为向量。这些类别观察到的频率是
对于当前样本,写出其似然函数以代表得到的类别的联合概率为:


由于一直当前样本中各类别的真实概率,可以计算其概率

因而,似然函数可以表示为:

对已知概率总体的似然函数的估计表示如下:

似然比定义为检验对于任意的假设的统计量。该比率统计量可以定义为:

最后,定义似然比统计量,用表示,为。可以得到:

还可以表示成另外一个有用的格式:

服从的渐进卡方分布。
proc freq可输出似然比卡方统计量。

概率比

如果两个变量都是二元的,即二分类的,见下表
image.png-62.5kB
概率比,用表示:


如果概率比接近1,则表明变量x相对于变量y的频率分布不存在差异。
可以在proc freq中应用选项measures计算概率比,如下例所示:
程序

  1. data CreditCards ;
  2. input Region $ Status $ Wt;
  3. datalines;
  4. Europe Bad 3425
  5. US Bad 3719
  6. Europe Good 71254
  7. US Good 69845
  8. ;
  9. run;
  10. /* Calculate the odds ratio using PROC FREQ */
  11. proc Freq Data=CreditCards order=data;
  12. table Region * Status/measures chisq;
  13. WEIGHT Wt;
  14. run;

输出
image.png-26.2kB
大多数情况下,概率比的结果还能得到皮尔逊卡方统计量和似然比统计量相似结论的支持。

概率比在logistc模型中起到关键作用。
最常见的logistic回归模型是:


odds是状态变量违约-正常的比率。
考虑到模型只有唯一二元自变量的情况,这种情况下,logistic回归模型可以简化为

将变量x=1,0的值代入模型,得到

这两个等式相减,可以得到变量对违约-正常的比率的影响:

主要到即为概率比,因而,可以将概率比用模型的参数表示:

下例程序用logistic模型计算概率比:

  1. data CreditCards ;
  2. input Region Status Wt;
  3. datalines;
  4. 0 1 3425
  5. 1 1 3719
  6. 0 0 71254
  7. 1 0 69845
  8. ;
  9. run;
  10. /* Invoke logistic regression */
  11. proc logistic Data=CreditCards;
  12. model Status (event='0')=Region;
  13. WEIGHT Wt;
  14. run;

输出
image.png-36.7kB

F检验

F检验衡量一个名义变量和一个连续变量之间的关联性。其中,谁是因变量不重要。公式如下:


其中,组间方差定义为:

其中, 表示第i组的均值, 表示第i组的观测数 表示总的均值, 表示分组数目.
组内方差定义为:

其中 是第j组的第i个观测, 是总的观测数.,

值是自由度的累积分布的逆。即


CalcGrF可执行F检验

基尼方差

基尼方差被定义为,衡量三种情况下变量之间关联性的指标:

首先一个连续变量和一个名义变量的情况,基尼方差可以定义为:


%ClacGrF可以计算基尼方差和F值以及p值。宏的参数如下表
image.png-136.4kB

下列示例用来计算基尼方差

  1. data CC;
  2. input Default $ AvgBalance @@;
  3. datalines;
  4. N 1132.37 N 1118.39 Y 336.17 N 775.64 N 519.49
  5. N 303.34 N 1418.00 N 1372.85 N 1363.32 N 244.29
  6. N 624.70 N 1191.22 N 1536.35 N 752.05 N 1013.60
  7. N 1394.93 N 688.43 N 557.26 N 773.99 N 1302.07
  8. N 1241.23 N 765.49 N 775.11 N 683.23 N 922.97
  9. N 1095.69 N 752.59 N 1488.18 N 687.98 N 901.57
  10. N 1761.56 N 861.63 N 1095.73 N 1626.03 N 498.24
  11. N 1139.91 N 1524.18 N 387.17 N 1313.15 N 1155.98
  12. N 727.66 N 689.59 N 1577.18 N 1522.56 Y 225.92
  13. Y 279.63 N 261.39 N 874.46 N 1352.64 N 1898.72
  14. N 622.42 N 1791.32 N 1497.03 N 913.54 N 861.12
  15. Y 539.82 N 886.68 N 499.23 N 942.35 N 515.34
  16. Y 462.33 N 1618.78 N 1392.00 N 1113.60 N 765.68
  17. N 1119.53 N 906.02 N 884.23 N 901.92 Y 556.98
  18. N 633.66 N 343.12 N 1036.54 N 498.94 Y 238.26
  19. Y 19.41 N 1492.44 N 545.95 N 1776.19 N 1048.82
  20. N 1270.68 N 897.63 N 1194.00 N 422.45 N 500.44
  21. N 1602.12 N 1135.93 N 900.85 Y 134.19 N 598.06
  22. N 1009.30 N 618.23 N 1855.87 N 1074.82 Y 401.79
  23. N 1139.86 N 568.81 N 913.48 N 1470.60 N 1468.44
  24. ;
  25. run;
  26. /* Call the macro: the variables in the macro header
  27. with the prefix M_ are to be initialized to null
  28. strings before calling the macro */
  29. %let DSin=CC;
  30. %let Xvar=default;
  31. %let YVar=AvgBalance;
  32. %let Gr=;
  33. %let Fstar=;
  34. %let Pvalue=;
  35. %CalcGrF(&DSin, &Xvar, &YVar, Gr, Fstar, Pvalue);
  36. /* output the values to the SAS-Log window */
  37. %put Gr=&Gr Fstar=&Fstar Pvalue=&Pvalue;

输出
image.png-3.1kB

现在考虑x和y都是名义变量,或都是顺序变量的情况。基尼方差可以用以下定义:


其中,



使用宏%GNomNom可以计算两个名义变量的基尼方差,宏的参数如下
image.png-107.1kB
示例如下

  1. data Home_Emp1;
  2. length ResidenceCat $20.;
  3. length EmploymentCat $20.;
  4. infile datalines delimiter=',';
  5. input ResidenceCat $ EmploymentCat $ FR ;
  6. datalines;
  7. House,Full time,248
  8. House,Part time,215
  9. House,Self employed,121
  10. House,Other,157
  11. Apartment,Full time,98
  12. Apartment,Part time,74
  13. Apartment,Self employed,25
  14. Apartment,Other,141
  15. Other,Full time,145
  16. Other,Part time,80
  17. Other,Self employed,82
  18. Other,Other,69
  19. ;
  20. run;
  21. DATA Home_Emp2;
  22. set Home_Emp1;
  23. do i=1 to FR;
  24. output;
  25. end;
  26. drop i FR;
  27. run;
  28. /* Call the macro */
  29. %let DSin=Home_Emp2;
  30. %let XVar=ResidenceCat;
  31. %let YVar=EmploymentCat;
  32. %let Grx1=;
  33. %GNomNom(&DSin, &XVar, &YVar, Grx1);
  34. /* Display the Gini variance in the SAS Log */
  35. %put GR=&Grx1;
  36. /* Interchange the variables */
  37. %let DSin=Home_Emp2;
  38. %let XVar=EmploymentCat;
  39. %let YVar=ResidenceCat;
  40. %let Grx2=;
  41. %GNomNom(&DSin, &XVar, &YVar, Grx2);
  42. %put GR=&Grx2;

输出
image.png-1.6kB

熵方差

首先一个连续变量和一个名义变量的情况,熵方差可以定义为:


可以看出,公式与基尼方差相同
当x和y都是名义变量时,熵方差可以定义为:

其中,



%ENomNom可以计算两个名义变量的熵方差。宏的参数如下
image.png-102.5kB
示例

  1. data Home_Emp1;
  2. length ResidenceCat $20.;
  3. length EmploymentCat $20.;
  4. infile datalines delimiter=',';
  5. input ResidenceCat $ EmploymentCat $ FR ;
  6. datalines;
  7. House,Full time,248
  8. House,Part time,215
  9. House,Self employed,121
  10. House,Other,157
  11. Apartment,Full time,98
  12. Apartment,Part time,74
  13. Apartment,Self employed,25
  14. Apartment,Other,141
  15. Other,Full time,145
  16. Other,Part time,80
  17. Other,Self employed,82
  18. Other,Other,69
  19. ;
  20. run;
  21. DATA Home_Emp2;
  22. set Home_Emp1;
  23. do i=1 to FR;
  24. output;
  25. end;
  26. drop i FR;
  27. run;
  28. /* Call the macro */
  29. %let DSin=Home_Emp2;
  30. %let XVar=ResidenceCat;
  31. %let YVar=EmploymentCat;
  32. %let Erx1=;
  33. %ENomNom(&Dsin, &Xvar, &YVar, Erx1);
  34. /* Display the Entropy variance in the SAS Log */
  35. %put ER=&Erx1;
  36. /* Interchanging the variables */
  37. %let DSin=Home_Emp2;
  38. %let XVar=EmploymentCat;
  39. %let YVar=ResidenceCat;
  40. %let Erx2=;
  41. %ENomNom(&Dsin, &Xvar, &YVar, Erx2);
  42. %put ER=&Erx2;

输出
image.png-1.4kB

信息值

信息值,是衡量两个名义变量,其中一个是二元变量,之间关联性的指标。信息值可以定义为:


或者也可以定义为

其中分布是第i行中变量第1类和第2类中记录的百分比。

信息值的定义仅针对二元变量和名义变量。因此,将其应用到一个顺序变量时,顺序关系将被忽略。如果是连续变量,该变量被分段。

在上述的基础上,当前信用评分开发实践中,提供了用信息值决定候选变量的预测里的一般准则。见下表:
image.png-70.1kB
%InfValue可用来计算信息值,参数列表如下
image.png-95.9kB

变量选择自动化

上面已经介绍了几个衡量变量间关联性和相关性的统计量。这些衡量指标或者用于判断候选自变量的预测里,或者用于评估自变量之间的关联性。上述任何一项工作,都需要一个自动计算不同衡量指标的程序。这里将介绍实施这种自动变量选择的SAS宏。

这里假设所有自变量都是同一种类型,即全部都是名义变量、顺序变量或连续变量,没有多种类型变量混杂的情况。宏%PowerGini用基尼方差计算一系列变量的预测力,其生成的值存储在一个数据集中。其参数列表如下:
image.png-97.3kB

基本上,宏可以被分成以下三个部分:

计算关联性指标不是基尼方法,如熵方差或信息值,只需要调用适当的宏对第二个步骤进行调整。
下表列出了所有判断预测力的宏
image.png-175.5kB

现在,介绍另外一个宏ExtractTop,该宏读取上表中宏生成的数据集,并从中提取预测力最强的变量。通常,通过指定预期的预测力最强的变量数,或指定衡量指标的最小允许值,实现上述目标。其参数见下表
image.png-179.2kB

下面举个例子应用ExtractTop提取预测力最强的变量。
程序

  1. data CardInfo1;
  2. length EmpType $10.; /* Applicant employment type*/
  3. length Gender $6.; /* Applicant Gender */
  4. length ResType $10.; /* Applicant Residential status */
  5. length AppChannel $10.; /* Application channel */
  6. length TelType $10.; /* Type of contact tel number */
  7. infile datalines delimiter=',';
  8. input EmpType $ Gender $ ResType $ AppChannel $ TelType $ Status Freq;
  9. datalines;
  10. Full Time,Female,Home owner,Web,Home,1,35
  11. Full Time,Female,Home owner,Web,Home,0,9
  12. Full Time,Female,Home owner,Web,Mobile,1,18
  13. Full Time,Female,Home owner,Web,Mobile,0,6
  14. Full Time,Female,Home owner,Mail,Home,1,9
  15. Full Time,Female,Home owner,Mail,Home,0,19
  16. Full Time,Female,Home owner,Mail,Mobile,1,33
  17. Full Time,Female,Home owner,Mail,Mobile,0,28
  18. Full Time,Female,Tenant,Web,Home,1,8
  19. Full Time,Female,Tenant,Web,Home,0,22
  20. Full Time,Female,Tenant,Web,Mobile,1,25
  21. Full Time,Female,Tenant,Web,Mobile,0,31
  22. Full Time,Female,Tenant,Mail,Home,1,37
  23. Full Time,Female,Tenant,Mail,Home,0,18
  24. Full Time,Female,Tenant,Mail,Mobile,1,26
  25. Full Time,Female,Tenant,Mail,Mobile,0,28
  26. Full Time,Male,Home owner,Web,Home,1,12
  27. Full Time,Male,Home owner,Web,Home,0,36
  28. Full Time,Male,Home owner,Web,Mobile,1,2
  29. Full Time,Male,Home owner,Web,Mobile,0,22
  30. Full Time,Male,Home owner,Mail,Home,1,34
  31. Full Time,Male,Home owner,Mail,Home,0,27
  32. Full Time,Male,Home owner,Mail,Mobile,1,2
  33. Full Time,Male,Home owner,Mail,Mobile,0,21
  34. Full Time,Male,Tenant,Web,Home,1,32
  35. Full Time,Male,Tenant,Web,Home,0,33
  36. Full Time,Male,Tenant,Web,Mobile,1,1
  37. Full Time,Male,Tenant,Web,Mobile,0,8
  38. Full Time,Male,Tenant,Mail,Home,1,17
  39. Full Time,Male,Tenant,Mail,Home,0,15
  40. Full Time,Male,Tenant,Mail,Mobile,1,10
  41. Full Time,Male,Tenant,Mail,Mobile,0,24
  42. Other,Female,Home owner,Web,Home,1,21
  43. Other,Female,Home owner,Web,Home,0,39
  44. Other,Female,Home owner,Web,Mobile,1,28
  45. Other,Female,Home owner,Web,Mobile,0,17
  46. Other,Female,Home owner,Mail,Home,1,23
  47. Other,Female,Home owner,Mail,Home,0,11
  48. Other,Female,Home owner,Mail,Mobile,1,34
  49. Other,Female,Home owner,Mail,Mobile,0,3
  50. Other,Female,Tenant,Web,Home,1,21
  51. Other,Female,Tenant,Web,Home,0,31
  52. Other,Female,Tenant,Web,Mobile,1,18
  53. Other,Female,Tenant,Web,Mobile,0,28
  54. Other,Female,Tenant,Mail,Home,1,27
  55. Other,Female,Tenant,Mail,Home,0,32
  56. Other,Female,Tenant,Mail,Mobile,1,16
  57. Other,Female,Tenant,Mail,Mobile,0,24
  58. Other,Male,Home owner,Web,Home,1,11
  59. Other,Male,Home owner,Web,Home,0,26
  60. Other,Male,Home owner,Web,Mobile,1,19
  61. Other,Male,Home owner,Web,Mobile,0,1
  62. Other,Male,Home owner,Mail,Home,1,31
  63. Other,Male,Home owner,Mail,Home,0,14
  64. Other,Male,Home owner,Mail,Mobile,1,17
  65. Other,Male,Home owner,Mail,Mobile,0,19
  66. Other,Male,Tenant,Web,Home,1,35
  67. Other,Male,Tenant,Web,Home,0,23
  68. Other,Male,Tenant,Web,Mobile,1,12
  69. Other,Male,Tenant,Web,Mobile,0,17
  70. Other,Male,Tenant,Mail,Home,1,15
  71. Other,Male,Tenant,Mail,Home,0,14
  72. Other,Male,Tenant,Mail,Mobile,1,9
  73. Other,Male,Tenant,Mail,Mobile,0,22
  74. ;
  75. run;
  76. /* Use the Freq field to generate the data */
  77. DATA CardInfo2;
  78. set CardInfo1;
  79. do i=1 to Freq;
  80. output;
  81. end;
  82. drop i Freq;
  83. run;
  84. /* Call the macro */
  85. %let DSin=CardInfo2;
  86. %let DV=Status;
  87. %let IVList=EmpType Gender ResType AppChannel TelType;
  88. %let DSOut=CardInfo_IVs;
  89. %PowerIV(&DSin, &DV, &IVList, &DSout);
  90. /* Extract the top three variables */
  91. %let DSin=CardInfo_IVs;
  92. %let VarCol=VariableName;
  93. %let SelVar=InformationValue;
  94. %let Method=1;
  95. %let Ntop=3;
  96. %let Cutoff=0;
  97. %let VarList=;
  98. %ExtrctTop(&DSin, &VarCol, &SelVar, &Method, &NTop, &CutOff, VarList);
  99. %put Selected Variables: &VarList;
  100. /* Extract the top variables with IV>=0.015*/
  101. %let DSin=CardInfo_IVs;
  102. %let VarCol=VariableName;
  103. %let SelVar=InformationValue;
  104. %let Method=2;
  105. %let Ntop=0;
  106. %let Cutoff=0.015;
  107. %let VarList=;
  108. %ExtrctTop(&DSin, &VarCol, &SelVar, &Method, &NTop, &CutOff, VarList);
  109. %put Selected Variables: &VarList;

输出
image.png-1.7kB

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注