楼主: 夭妖
5758 14

【请教】SAS回归模型保存 [推广有奖]

  • 0关注
  • 0粉丝

已卖:4份资源

博士生

40%

还不是VIP/贵宾

-

威望
0
论坛币
499 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
9933 点
帖子
222
精华
0
在线时间
371 小时
注册时间
2008-3-7
最后登录
2021-5-5

楼主
夭妖 发表于 2010-5-20 11:15:45 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
问题是这样的:我在A数据集中得到了回归模型,
怎么样把这个回归模型运用到其他数据集B上呢?
两个数据集的 列名设置为一样的,
但是,由于自变量比较多,不能手工输入,
所以请教一下大家~非常谢谢~
二维码

扫码加我 拉你入群

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

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

关键词:回归模型 数据集 自变量 怎么样 请教 模型 SAS 保存

回帖推荐

soporaeternus 发表于7楼  查看完整内容

手上正好有代码,剥出来看看 &Var_Lst是所有变量的列表,用空格分开,不包括ID变量以及目标变量,例如%let Var_Lst=x1 x2 x3; 或者proc contents来获得 &Target 是目标变量 例如 %let Target=y; Coefficient数据集包括回归模型结果的系数,并且变量名与B中相对应另外EM中的SCORE节点也可以,proc score也可以...... 我习惯这样做了.....

pobel 发表于6楼  查看完整内容

简单线性回归+SAS9.1.3 data height; input height; datalines; 63 61 59 62 ; %macro reg(modelds=sashelp.class ,model=%str(weight=height) ,testds=height ,outds=result ,Yvar=weight ); proc reg data=&modelds; model &model; ods output ParameterEstimates=para_est; run; quit; data _null_; set para_est; call symputx(variab ...

本帖被以下文库推荐

沙发
醉_清风 发表于 2010-5-20 11:20:02
这是一个较为复杂的宏
等待高手解答
从来不需要想起 永远也不会忘记

藤椅
朱世光 发表于 2010-5-20 11:30:27
谢谢!1!!!!

板凳
crackman 发表于 2010-5-20 11:31:20
你用得到什么呢?
如果是多重线性回归,通过A数据集的回归模型来来获得B数据集的预测值,其实思路可以这样
先用APPEND,当然前提两者的列名设置为一样的
在程序运行之后回自动计算预测值的

报纸
夭妖 发表于 2010-5-20 11:49:53
回LS的~想知道这个模型在B数据集上的表现如何~是好是坏~

地板
pobel 在职认证  发表于 2010-5-20 12:15:44
简单线性回归+SAS9.1.3

data height;
    input height;
        datalines;
63
61
59
62
;



%macro reg(modelds=sashelp.class
      ,model=%str(weight=height)
      ,testds=height
          ,outds=result
       ,Yvar=weight
          );
   proc reg data=&modelds;
     model &model;
         ods output ParameterEstimates=para_est;
run;
quit;

data _null_;
     set para_est;
         call symputx(variable,estimate,l);
run;

proc sql noprint;
     select distinct variable into : vars separated by " "
           from para_est
       where upcase(variable)^="INTERCEPT";
quit;

data &outds;
    set &testds;
        &yvar=&intercept
        %do i=1 %to &sqlobs;
            %let var&i=%scan(&vars,&i);
                        +&&var&i*&&&&&&var&i
                %end;
                ;
run;
             
%mend;

options mprint;
%reg()
已有 1 人评分热心指数 收起 理由
crackman + 1 先学习 谢谢

总评分: 热心指数 + 1   查看全部评分

7
soporaeternus 发表于 2010-5-20 13:14:34
手上正好有代码,剥出来看看
&Var_Lst是所有变量的列表,用空格分开,不包括ID变量以及目标变量,例如%let Var_Lst=x1 x2 x3;
或者proc contents来获得
&Target 是目标变量 例如 %let Target=y;
Coefficient数据集包括回归模型结果的系数,并且变量名与B中相对应
  1. %MACRO T;
  2. %let Var_Cnt=%eval(%sysfunc(count(&Var_Lst,%str( )))+1);
  3. %put &Var_Cnt;
  4. proc sql;
  5.         create table SCORE as
  6.                 select
  7.                         %do i=1 %to &Var_Cnt %by 1;%if &i>=2 %then %do;,%end;a.%scan(&Var_Lst,&i)%end;
  8.                         ,a.&Target
  9.                         sum(%do i=1 %to &Var_Cnt %by 1;%if &i>=2 %then %do;,%end;a.%scan(&Var_Lst,&i)*b.%scan(&Var_Lst,&i)%end;,b.Intercept) as SCORE
  10.                 from B a
  11.                 inner join  Coefficient b
  12.                 on        1=1
  13.                 order by SCORE descending
  14.         ;
  15. quit;
  16. %MEND T;
复制代码
另外EM中的SCORE节点也可以,proc score也可以......
我习惯这样做了.....
已有 1 人评分热心指数 收起 理由
crackman + 1 精彩帖子

总评分: 热心指数 + 1   查看全部评分

Let them be hard, but never unjust

8
夭妖 发表于 2010-5-20 13:17:40
恩恩~非常谢谢LS的两位~

9
醉_清风 发表于 2010-5-20 13:19:36
进来学习了
从来不需要想起 永远也不会忘记

10
jingju11 发表于 2010-5-20 13:35:46
crackman 发表于 2010-5-20 11:31
你用得到什么呢?
如果是多重线性回归,通过A数据集的回归模型来来获得B数据集的预测值,其实思路可以这样
先用APPEND,当然前提两者的列名设置为一样的
在程序运行之后回自动计算预测值的
Agree.
Moreover, I think, it also depends on the criteria by which the good model is defined.
Assume the ‘Residual’, a difference between predicted value by model from set A and the real Y in set B, is of your interest.

  1. DATA AB;
  2. SET  A B(IN = b RENAME = (y = yb)); *Let's say response as Y;
  3. IF b THEN y = .A; *to differ the possible missing (.) in set A;
  4. RUN;
  5. ods output OutputStatistics=os(where = (depVar = .A));
  6.    proc reg data=AB;   
  7.       model y = x1 x2 / r cli clm; *assume fit x1 x2 as independent vars;
  8.    run;
  9. quit;
  10. data C;
  11. retain type 'Predicted ';
  12. set  B; set os;
  13. Residual = PredictedValue-y;
  14. run;
复制代码
已有 1 人评分热心指数 收起 理由
crackman + 1 精彩帖子

总评分: 热心指数 + 1   查看全部评分

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-24 21:58