Bogdan Taranta

Bogdan Taranta Business Solutions
Manager

Temat: [SAS] dyskretyzacja zmiennych i wyrzuty sumienia

Wyrzuty sumienia z powodu zaniedbywania mojego bloga popchnęły mnie do podzielenia się kolejnym makrem z folderu tych najczęściej używanych. Tym razem przypiszemy obserwacje do koszyków odpowiadających kolejnym poziomom wartości zmiennej, czyli oznaczmy np. obserwacje odpowiadające kolejnym decylom jakiejś cechy. Obserwacje bez przypisanej wartości cechy nie są brane podu uwagę. Makro prościutkie, ale bardzo przydatne.

Zazwyczaj taki zabieg wykorzystuję dla różnych score'ów - łatwo mogę wybrać klientów, którzy wpadają w 5%, 10% czy 25% najwyższych wartości, albo zobaczyć i zmierzyć zależność pomiędzy poziomami score a inną cechą, zwłaszcza nominalną. Zatem, smacznego!


%MACRO BINS(DATASET,VARIABLE,GROUPS);
proc sort data=&DATASET (keep=&VARIABLE) nodupkey out=&VARIABLE._VALS;
by &VARIABLE;
proc rank data=&VARIABLE._VALS out=&VARIABLE._RANK groups=&GROUPS;
var &VARIABLE;
ranks &VARIABLE._BIN&GROUPS;
proc sort data=&DATASET;
by &VARIABLE;
data &DATASET;
merge &DATASET &VARIABLE._RANK;
by &VARIABLE;
label &VARIABLE._BIN&GROUPS = "&VARIABLE in &GROUPS groups";
run;
%MEND;