2013-05-20 133 views
1

開發信用風險記分卡過程的第一步是評估哪些變量是預測性的。SPSS:計算宏中多個變量的信息值

爲此,計算變量的信息值。在Excel中,它非常簡單: 信息值是iv * 1000的總和。 IV =禍*(%用品 - %BADS) 禍= LN(%商品/ BADS%)

因此,在下面我的變量的例子中具有3個值(1,2,3)。 根據顯示的分佈,信息價值爲22.738。

屬性%BADS出總計%的商品的總出悲哀IV 1 59%66%0.008 0.114653893 2 36%30%0.009 -0.168842887 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; 

謝謝。 Elisabeth

回答

1

SPSS Statistics中類似的基本功能是創建宏定義的DEFINE命令,但通過使用Python可編程性您將獲得更多的靈活性和強大功能。 Python Essentials可通過SPSS社區網站(www.ibm.com/developerworks/spssdevcentral)免費下載,或者從統計本身下載的統計信息V21下載。

從同一網站,您可以從書籍和文章部分下載編程和數據管理手冊。它展示了很多在SPSS環境中使用這種技術的例子。完整的api文檔可從IBM信息中心獲取,該信息在網站上添加了書籤。

的Python編程都可以使用,甚至,創建宏,以便以後的代碼可以使用內置的宏工具。

HTH, 喬恩·佩克

+0

喬恩您好,我會考慮的Python模塊;它之前已經提到過,但目前我們無法訪問它。我設法在SPSS使用宏,但我被困在試圖寫它基本上存儲商品和劣品的總和爲可以在後面的程序中使用宏變量CALL SYMPUT部分的等效。我嘗試使用Define,我在互聯網上找到的其他例子,但它只是沒有工作。你有什麼建議嗎?然後我可以嘗試繼續翻譯代碼。謝謝。 – Enucera