开发信用风险记分卡过程的第一步是评估哪些变量是可预测的。
为此,计算变量的信息值。在 Excel 中非常简单:信息值是 iv*1000 的总和。iv=woe*(%Goods-%Bads) woe=ln(%Goods/%Bads)
因此,在下面的示例中,我的变量有 3 个值 (1,2,3)。根据显示的分布,信息值计算为 22.738。
属性 % 坏品占总数 % 商品占总祸害 iv 1 59% 66% 0.114653893 0.008 2 36% 30% -0.168842887 0.009 3 5% 4% -0.33749397 0.005 总计 100% 100% 22.738
在构建记分卡时,我将查看 100 到 300 个变量之间的任何变量,以找到最具预测性的变量。因此需要一个宏。理想情况下,我还希望自动将诸如收入之类的连续变量带入例如 10 个相等的带中,以便信息值更有意义。
我在 SAS 中有一些代码来执行上述操作(但是,自动绑定是单独完成的)。我开始将其转换为 SPSS 语言,但我无法理解如何替换 CALL SYMPUT 行。我希望有人可以轻松查看 SAS 代码并将其转换为 SPSS。
这是SAS代码。
/* calculating total values for goods, bads and total */
/* the values are output to a data set and called later in a macro */
PROC MEANS DATA=test NOPRINT MAXDEC=4;
VAR GOOD BAD ;
OUTPUT OUT=TOTALS SUM = GTC BTC ;
RUN;
DATA TOTALS;
SET TOTALS;
TTC = SUM(OF GTC BTC);
CALL SYMPUT('GTC',GTC);
CALL SYMPUT('BTC',BTC);
CALL SYMPUT('TTC',TTC);
run;
/* Calculation of information value */
%macro infov(var);
PROC SUMMARY DATA=test;
CLASS &var;
VAR GOOD BAD ;
OUTPUT OUT=RESULTS SUM=GC BC;
RUN;
DATA RESULTS;
SET RESULTS;
BY &var;
IF _TYPE_=1;
IF GC=. THEN GC=0;
IF GC NE 0 THEN GP= GC/>C*100;
ELSE GP=0;
GCP + GP;
IF BC=. THEN BC=0;
IF BC NE 0 THEN BP= BC/&BTC*100;
ELSE BP=0;
BCP + BP;
format iv&var 5.2;
iv&var=0;
IV&var=(GP-BP)*log(GP/BP);
run;
PROC MEANS DATA=results NOPRINT MAXDEC=4;
VAR iv&var;
OUTPUT OUT=iv&var SUM = ivTC&var;
RUN;
DATA IV&VAR (KEEP = &VAR); SET IV&VAR;
RENAME IVTC&VAR=&VAR;
RUN;
%mend infov;
%infov(app_1_age);
%infov(app_1_employment_status);
%infov(app_1_marital_status);
DATA ALL; MERGE IV:;
RUN;
PROC TRANSPOSE DATA=ALL OUT=ALL; RUN;
DATA ALL; SET ALL; RENAME COL1=iv _name_=Variable; RUN;
PROC SORT DATA=ALL;
BY DESCENDING iv;
RUN;
PROC PRINT;
title 'Information Value';RUN;
谢谢你。伊丽莎白