使用 SAS Proc Logistic 为大型数据集生成交互项
Generate Interaction Terms with SAS Proc Logistic for Large Datasets
使用大量解释变量(在本例中为 400)执行逻辑回归。我可以在模型语句中使用下面的代码轻松引用所有 400 个变量,但是是否还有一种简单的方法来生成第一级交互项(即所有成对的两个项)?
proc logistic data = d1;
model y = var1-var400 / rsquare;
run;
我见过这样的代码:
proc logistic data = d1;
model y = var1 | var2 | var3... @2 / rsquare;
run;
但这对于 400 个变量来说是不现实的。
有什么建议可以提供比艰难地执行此操作并创建包含所有交互项的新数据集更好的方法吗?
您可以使用 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
。这对您来说是一个合理的选择吗?
使用大量解释变量(在本例中为 400)执行逻辑回归。我可以在模型语句中使用下面的代码轻松引用所有 400 个变量,但是是否还有一种简单的方法来生成第一级交互项(即所有成对的两个项)?
proc logistic data = d1;
model y = var1-var400 / rsquare;
run;
我见过这样的代码:
proc logistic data = d1;
model y = var1 | var2 | var3... @2 / rsquare;
run;
但这对于 400 个变量来说是不现实的。
有什么建议可以提供比艰难地执行此操作并创建包含所有交互项的新数据集更好的方法吗?
您可以使用 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
。这对您来说是一个合理的选择吗?