信用リスク スコアカードを作成するプロセスの最初のステップは、どの変数が予測的かを評価することです。
これを行うために、変数の情報値が計算されます。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;
ありがとうございました。エリザベス