首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SAS线性回归中,如何对4级范畴预测变量执行虚拟编码?

在SAS线性回归中,如何对4级范畴预测变量执行虚拟编码?
EN

Stack Overflow用户
提问于 2022-11-02 17:11:49
回答 1查看 35关注 0票数 0

我有一个像临床指标一样的响应变量,并将执行基于一系列预测变量的多元回归,所有的预测变量都是数值变量或范畴虚拟变量,除了种族是4级范畴变量之外。要执行此回归,我需要对race变量进行虚拟编码。语句的确切编码或选项是什么?

EN

回答 1

Stack Overflow用户

发布于 2022-11-02 17:17:10

许多回归过程(如proc glmselect )不需要虚拟编码。可以直接使用class语句指定分类变量。

代码语言:javascript
复制
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为您生成假人。您可以将其转换为宏变量,以使生成假人的速度更快、更简单。

代码语言:javascript
复制
%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;

示例:

代码语言:javascript
复制
%get_dummies(data=sashelp.cars, vars=make origin, drop=yes);

如果是drop=yes,则会删除原始变量,只留下虚拟编码的值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74293183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档