楼主: changgz
2399 0

[程序分享] Reg过程结果输出 [推广有奖]

  • 2关注
  • 27粉丝

讲师版主

讲师

13%

还不是VIP/贵宾

-

威望
0
论坛币
750008 个
通用积分
14.2227
学术水平
59 点
热心指数
57 点
信用等级
50 点
经验
3913 点
帖子
122
精华
2
在线时间
414 小时
注册时间
2013-10-28
最后登录
2024-2-4

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
/*******************************************************************************************************/
/*引用格式为
%reglist(orig_table=betas);
其中betas为proc reg过程输出的表格,该语句中必须加outest=betas tableout EDF选项,示例如下:
proc reg data=acrue_temp6 outest=betas tableout EDF noprint ;
model TA_sd=CA;
model TA_sd=CA REV_REC_sd;
model TA_sd=CA REV_REC_sd PPE_sd;
model TA_sd=CA REV_REC_sd PPE_sd l_cs;
quit;*/
/*******************************************************************************************************/

%Macro reglist(orig_table=);
proc sql noprint;/*获取因变量名称*/
        select _DEPVAR_ into :y from &orig_table;
quit;
/*将回归结果拆分为两个文件,其中一个存放BETA,另外一个存放R2*/
data &orig_table._1(drop=_RSQ_ Obs _DEPVAR_ &Y) &orig_table._R2(keep=_MODEL_ _RSQ_ Obs where=(_RSQ_ IS NOT NULL));
        set &orig_table;
        Obs=_EDF_+_P_+1;
        where _TYPE_ in ("PARMS","STDERR","PVALUE");
        drop _RMSE_ _IN_ _P_ _EDF_;
run;

/*先整理R2的表格*/
data &orig_table._R2(drop=_RSQ_ Obs);
        set &orig_table._R2;
        _RSQ_=round(_RSQ_,0.001);
        format _RSQ_ BEST5.2;
        format Obs BEST6.;
        R2=put(_RSQ_,BEST8.5);N=put(obs,BEST8.);
run;
proc transpose data=&orig_table._R2 out=&orig_table._R2_1;
        id _MODEL_;var R2 N;
run;

/*整理BETA*/
proc transpose data=&orig_table._1 out=&orig_table._2(drop=_LABEL_);
        by _MODEL_;
        ID _TYPE_;
run;
data &orig_table._3(drop=PARMS STDERR PVALUE sig);
set &orig_table._2;
        format sig $3. beta $8. std $8.;
        if PVALUE=. then sig="";
        else if PVALUE<=0.001 then sig="***";
        else if PVALUE>0.001 and PVALUE<=0.01 then sig="** ";
        else if PVALUE>0.01 and PVALUE<=0.05 then sig="*  ";
        else if PVALUE>0.05 and PVALUE<=0.1 then sig="+  ";
        else sig="   ";
        beta=put(PARMS,BEST5.2)||sig;
        if STDERR~=. then std="("||put(STDERR,BEST5.2)||")";
run;
data &orig_table._31(drop=std rename=(beta=parm)) &orig_table._32(drop=beta rename=(std=parm));
set &orig_table._3;
        if first._MODEL_=1 then i=0;
    i+1;
        by _MODEL_;
run;

data  &orig_table._4;
set &orig_table._31 &orig_table._32;
run;
proc sort data=&orig_table._4;
        by _MODEL_ i;
run;
data  &orig_table._5;
set &orig_table._4;
        if first.i=1 then i1=0;
    i1+1;
        by _MODEL_ i;
run;
proc sort data=&orig_table._5;
        by i i1;
run;
proc transpose data=&orig_table._5 out=&orig_table._6(drop=i i1);
        by i _NAME_ i1;
                var parm;
                id _MODEL_;
run;
/*合并BETA和R2*/
data reglist;
        SET &orig_table._6 &orig_table._R2_1;
        label _NAME_="解释变量";
RUN;
Proc report data =reglist;
footnote ""***"表示0.1%下显著;"**"表示1%下显著;"*"表示5%下显著;"+"表示10%下显著;";
Run;
footnote "";
proc delete data=Reglist &orig_table._R2_1 &orig_table._R2 &orig_table._31 &orig_table._32 &orig_table._1-&orig_table._6;run;
%Mend reglist;


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:结果输出 REG Transpose proc sql pvalue

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 17:47