Создание условий взаимодействия с SAS Proc Logistic для больших наборов данных - PullRequest
0 голосов
/ 18 декабря 2018

Выполнение логистической регрессии с большим количеством объясняющих переменных (400 в этом примере).Я легко могу ссылаться на все 400 переменных, используя приведенный ниже код в операторе модели, но есть ли простой способ генерировать термины взаимодействия 1-го уровня (т.е. все пары из двух)?

proc logistic data = d1;
    model y = var1-var400 / rsquare;
run;

Я виделкод, подобный этому:

proc logistic data = d1;
    model y = var1 | var2 | var3... @2 / rsquare;
run;

, но это нереально для 400 переменных.

Есть ли какие-либо предложения, которые обеспечивают лучший способ, чем сделать это сложным способом и создать новый набор данных, содержащий все термины взаимодействия?

1 Ответ

0 голосов
/ 18 декабря 2018

Вы можете легко сгенерировать макропеременную, содержащую список переменных из набора данных, используя proc sql, например:

proc sql noprint;
  select name into :var_list 
    separated by '|'
  from dictionary.columns 
  where libname = 'SASHELP' 
    and memname = 'CLASS'
  ;
quit;

%put &var_list;

Затем вы можете использовать эту макропеременную в своем коде, а не набирать var1 | ... | var400.Это разумный вариант для вас?

...