2013-05-20 3 views
1

신용 위험 스코어 카드를 개발하는 첫 번째 단계는 예측 가능한 변수를 평가하는 것입니다.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/&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; 

감사합니다. 엘리자베스

답변

1

SPSS Statistics의 기본 기능은 매크로 정의를 작성하는 DEFINE 명령이지만 파이썬 프로그래밍 기능을 사용하면 훨씬 더 많은 유연성과 성능을 얻을 수 있습니다. Python Essentials는 SPSS Community 웹 사이트 (www.ibm.com/developerworks/spssdevcentral)를 통해 무료로 다운로드하거나 Statistics V21의 경우 Statistics 자체를 다운로드하는 사이트에서 무료로 다운로드 할 수 있습니다.

동일한 사이트에서 책 및 기사 섹션의 프로그래밍 및 데이터 관리 도서를 다운로드 할 수 있습니다. SPSS 컨텍스트에서이 기술을 사용하는 많은 예제를 보여줍니다. 전체 api 문서는 사이트에 북마크 된 IBM Info Center에서 구할 수 있습니다.

파이썬 프로그래밍 기능을 사용하여 매크로를 작성하여 나중의 코드에서 내장 매크로 기능을 사용할 수 있습니다.

HTH, 존 펙

+0

안녕 존, 나는 파이썬 모듈에 볼 것이다; 그것은 이전에 저에게 언급되었지만 우리는 현재 그것에 접근 할 수 없습니다. 나는 SPSS에서 매크로를 사용할 수 있었지만, 나중에 프로그램에서 사용할 수있는 매크로 변수에 상품 및 불량의 총계를 저장하는 CALL SYMPUT 부분을 작성하려고 노력했습니다. 내가 인터넷에서 찾은 다른 예제에 따라 정의를 사용하여 시도했지만 작동하지 않았다. 그것에 대한 제안이 있습니까? 그런 다음 코드를 계속해서 번역 할 수 있습니다. 고맙습니다. – Enucera