我有一个像临床指标一样的响应变量,并将执行基于一系列预测变量的多元回归,所有的预测变量都是数值变量或范畴虚拟变量,除了种族是4级范畴变量之外。要执行此回归,我需要对race变量进行虚拟编码。语句的确切编码或选项是什么?
发布于 2022-11-02 17:17:10
许多回归过程(如proc glmselect )不需要虚拟编码。可以直接使用class语句指定分类变量。
proc glmselect data=sashelp.cars;
class make origin;
model horsepower = make origin msrp / showpvalues selection=stepwise(sle=0.1 sls=0.05);
run;遵循Rick Wicklin的虚拟编码方法,您可以使用proc glmselect为您生成假人。您可以将其转换为宏变量,以使生成假人的速度更快、更简单。
%macro get_dummies(data=, vars=, out=dummies, drop=NO);
data _tmp_;
set &data.;
__y__ = 0;
run;
proc glmselect
data=_tmp_
noprint
outdesign(addinputvars) = &out.(drop=__y__
%if(%upcase(&drop.)=YES) %then %do;
&vars.
%end;
)
;
class &vars.;
model __y__ = &vars. / noint selection=none;
run;
proc datasets lib=work nolist;
delete _tmp_;
quit;
%mend;示例:
%get_dummies(data=sashelp.cars, vars=make origin, drop=yes);如果是drop=yes,则会删除原始变量,只留下虚拟编码的值。
https://stackoverflow.com/questions/74293183
复制相似问题