Анализ по столбцам в SAS

#statistics #sas #analytics

#Статистика #sas #аналитика

Вопрос:

Мне нужна помощь для анализа зависимости целевой функции (переменной: «cus12») от независимых переменных. У меня есть данные, которые содержат 1000 столбцов, а независимые переменные разделены на 4 группы: app_x, act_x, agr_x, ags_x. Вероятно, мне нужно написать цикл для исследования зависимости переменной «cus12» от переменных из заданных групп. У меня проблема с написанием такого цикла и вводом в него соответствующего «proc»

 %let src=C:UserschlopDesktopProjektSAS;
%let out=C:UserschlopDesktopProjektSASwyj;
libname src "amp;src" compress=yes;
libname out "amp;out" compress=yes;

data out.test;
    set src.train;
    drop app_char_job_code app_char_marital_status app_char_city app_char_home_status app_char_cars act: agr: ags: default_cus3 default_cus6 default_cus9;
    where period<'200405';
run;




proc sort data=names;
by varnum;
run;

%let target = default_cus12; *zmienna objasniana do modelu;


proc sql;
select name
from names
where name ne "app_char_job_code" and name ne "app_char_marital_status" and name ne "app_char_city" and name ne "app_char_home_status" and name ne "app_char_cars" and name ne "cid" and name ne "period" and name ne "amp;target";
quit;



proc sql;
select name into:zmienne separeted by ' '
from names
where name ne "app_char_job_code" and name ne "app_char_marital_status" and name ne "app_char_city" and name ne "app_char_home_status" and name ne "app_char_cars" and name ne "cid" and name ne "period" and name ne "amp;target";
quit;

%put amp;zmienne;


%macro a(lista);
%do i=1 %to 3;
%put %scan(amp;lista, amp;i, ' '); *separator na koncu;
%end;
%mend;

%a(amp;zmienne);


%macro gini(in, target, vars);

data gini_tab;
length zmienna $ 50. gini 8.;
delete;
run; 


proc sql noprint;
select count(*)
into :n
from names;
quit;

%do i=1 %to amp;n;
%let zm = %scan(amp;vars, amp;i,' ');
*separator na koncu, wybieramy kolejne zmienne;



ods output Association=gini;
proc logistic data=amp;in;
model amp;target = amp;zm;
run;
ods output close;


proc sql;
select nValue2 into :g_coef
from gini
where Label2 contains "Somers";
quit;

%put Gini: amp;zm = amp;g_coef;

data tmp;
length zmienna $ 50. gini 8.;
zmienna = "amp;zm";
gini = amp;g_coef;
run;

proc append base=gini_tab data=tmp force;
run;


%end;

proc sort data=gini_tab;
by descending gini;
run;

%mend;

%gini(src.train, default_cus12, amp;zmienne);
 

Комментарии:

1. какая у вас проблема ?

2. Я не знаю, с чего начать. Моя идея заключается в следующем: 1. Я думаю, мне следует создать макрос и цикл (но все циклы, которые я создаю, не работают). 2. Я думаю, мне следует проанализировать зависимость с помощью «proc logistic», но у меня нет макроса и циклов, поэтому я не могу пытаться что-либо делать внутри. 3. Я хотел использовать хи-квадрат и V-критерий Крамера, но без хорошего начала я не могу попробовать что-либо еще. Я новичок в SAS. Любая помощь / совет будут полезны.

3. Вы хотите сказать, что хотите запустить четыре модели? Каждый с зависимой переменной cus12 и другим списком независимых переменных?

4. Одна модель, если это возможно? Где я могу проанализировать зависимость целевой функции (переменной: «cus12») от независимых переменных. Теперь у меня есть что-то подобное (я отредактировал сообщение)

5. Сначала перенесите свой набор данных, см. Это сообщение в блоге: blogs.sas.com/content/iml/2017/02/13/run-1000-regressions.html