開發信用風險記分卡過程的第一步是評估哪些變量是預測性的。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/>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;
謝謝。 Elisabeth
喬恩您好,我會考慮的Python模塊;它之前已經提到過,但目前我們無法訪問它。我設法在SPSS使用宏,但我被困在試圖寫它基本上存儲商品和劣品的總和爲可以在後面的程序中使用宏變量CALL SYMPUT部分的等效。我嘗試使用Define,我在互聯網上找到的其他例子,但它只是沒有工作。你有什麼建議嗎?然後我可以嘗試繼續翻譯代碼。謝謝。 – Enucera