신용 위험 스코어 카드를 개발하는 첫 번째 단계는 예측 가능한 변수를 평가하는 것입니다.SPSS : 매크로 내의 여러 변수에 대한 정보 값 계산
이렇게하려면 변수에 대한 정보 값이 계산됩니다. Excel에서는 매우 간단합니다. 정보 값은 iv * 1000의 합계입니다. iv = woe * (% Goods- % Bads) woe = ln (% Goods/% Bads)
따라서 아래 예제에서 my 변수에는 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;
감사합니다. 엘리자베스
안녕 존, 나는 파이썬 모듈에 볼 것이다; 그것은 이전에 저에게 언급되었지만 우리는 현재 그것에 접근 할 수 없습니다. 나는 SPSS에서 매크로를 사용할 수 있었지만, 나중에 프로그램에서 사용할 수있는 매크로 변수에 상품 및 불량의 총계를 저장하는 CALL SYMPUT 부분을 작성하려고 노력했습니다. 내가 인터넷에서 찾은 다른 예제에 따라 정의를 사용하여 시도했지만 작동하지 않았다. 그것에 대한 제안이 있습니까? 그런 다음 코드를 계속해서 번역 할 수 있습니다. 고맙습니다. – Enucera