1

信用リスク スコアカードを作成するプロセスの最初のステップは、どの変数が予測的かを評価することです。

これを行うために、変数の情報値が計算されます。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/&GTC*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;

ありがとうございました。エリザベス

4

1 に答える 1

1

SPSS Statistics の同様の基本機能は、マクロ定義を作成するための DEFINE コマンドですが、Python のプログラミング機能を使用することで、はるかに柔軟性と能力が得られます。Python Essentials は、SPSS コミュニティ Web サイト (www.ibm.com/developerworks/spssdevcentral) から無料でダウンロードできます。Statistics V21 の場合は、Statistics 自体をダウンロードするサイトから無料でダウンロードできます。

同じサイトから、Books and Articles セクションから Programming and Data Management book をダウンロードできます。SPSS コンテキストでこのテクノロジを使用する多くの例を示しています。完全な API ドキュメントは、サイトにブックマークされている IBM Info Center から入手できます。

Python のプログラミング機能を使用してマクロを作成し、後のコードで組み込みのマクロ機能を使用できるようにすることもできます。

HTH、ジョン・ペック

于 2013-05-20T17:28:00.273 に答える