开发信用风险记分卡的第一步是评估哪些变量具有预测性。
为此,计算变量的信息值。在Excel中它很简单: 信息价值是iv * 1000的总和。 IV =祸*(%用品 - %BADS) 祸= LN(%商品/ BADS%)
因此,在下面的例子中,我的变量有3个值(1,2,3)。 根据显示的分布,信息值的计算结果为22.738。
属性%总数百分比中的商品总数百分比 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;
谢谢。 伊丽莎白
答案 0 :(得分:1)
SPSS Statistics中的类似基本功能是用于创建宏定义的DEFINE命令,但是通过使用Python可编程性,您将获得更多的灵活性和强大功能。 Python Essentials可以通过SPSS社区网站(www.ibm.com/developerworks/spssdevcentral)免费下载,或者对于Statistics V21,可以从您下载Statistics本身的网站免费下载。
从同一站点,您可以从书籍和文章部分下载编程和数据管理书籍。它显示了很多在SPSS上下文中使用此技术的示例。完整的api文档可从IBM信息中心获得,该信息中心已在网站上添加了书签。
甚至可以使用Python可编程性来创建宏,以便以后的代码可以使用内置的宏工具。
HTH, 乔恩佩克