Первым шагом в процессе разработки системы показателей кредитного риска является оценка переменных, которые являются прогностическими.SPSS: вычисление информационного значения для нескольких переменных в макросе
Для этого рассчитывается информационное значение переменной. В Excel это довольно просто: Information Значение представляет собой сумму iv * 1000. IV = горе * (% товары-% антитовары) горе = п (% Товары /% антитовары)
Таким образом, в приведенном ниже примере моих переменных имеет 3 значения (1,2,3). На основании показанного распределения значение информации составляет 22,738.
Атрибуты% антитовары из Всего% товаров от общего WOE 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;
спасибо. Elisabeth
Привет Джон, я буду смотреть в модуль Python; это было упомянуто ранее, но у нас нет доступа к нему в данный момент. Мне удалось использовать макросы в SPSS, но я застрял в попытке написать эквивалент части CALL SYMPUT, которая в основном хранит общую сумму товаров и ошибок в макропеременной, которая может быть использована позже в программе. Я попытался использовать Define в соответствии с другими примерами, которые я нашел в Интернете, но это просто не сработало. Есть ли у вас какие-либо предложения по этому поводу? Затем я могу попытаться продолжить перевод кода. Спасибо. – Enucera