SAS中文论坛

标题: 自动截取回归系数? [打印本页]

作者: shiyiming    时间: 2011-12-20 23:40
标题: 自动截取回归系数?
请问各位前辈,小弟有个问题想请教,就我现在有一个回归式,如:
y=ax1+bx2+cx3,因为已知x1、x2、x3与y之值,故能求出系数a、b、c之值。而小弟现在的问题是,我想用求出之a、b、c之值再代回那条回归式求出新的y值,但因为这个步骤要重复很多次,所以想请问各位前辈,不知有没有办法直接截取系数a、b、c之值而不用手动从输出之结果将系数值重新代回回归式求出y值呢。拜托各位前辈帮我想个办法,谢谢。
提供之前我的作法,请各位前辈帮我看看该如何修改才会自动截取系数,先谢谢各位前辈了!

/*估计回归系数*/

data book1;

set a;

a=1/prasset;

b=fa/prasset;

c=doi/prasset;


run;

proc reg data=book1;

model asset =a b c;

run;


/*代回系数求差异*/

data book2;

set book1;

ta=-591-7100*a+146*b+1206*c;

diff=asset-ta;

run;
作者: shiyiming    时间: 2011-12-21 12:31
标题: Re: 自动截取回归系数?
方法一:proc reg本来就涵盖此功能,不需要取出回归系数,程序如下
[code:gpfbbsil]proc reg data=book1;
        model asset =a b c;
        output out=book2 p=ta r=diff;
run;
quit;[/code:gpfbbsil]


方法二:若你一定要你的方法去解题的话,那么如下
[code:gpfbbsil]
proc reg data=book1 outest=tmp(keep=Intercept a b c rename=(Intercept=a0 a=a1 b=a2 c=a3));
        model asset =a b c;
run;
quit;
data book2;
        if _n_=1 then set tmp;
        set book1;
        ta=a0+a1*a+a2*b+a3*c;
        diff=asset-ta;
run;
[/code:gpfbbsil]
作者: shiyiming    时间: 2011-12-21 21:12
标题: Re: 自动截取回归系数?
SAS 很体贴的,早就有满足你的方法了。

data book;                                                                                                                              
  input x1 x2 x3 y;                                                                                                                     
cards;                                                                                                                                 
1  2   3   5                                                                                                                           
2  3   3   4                                                                                                                           
3  3   4   8                                                                                                                           
2  3   4   9                                                                                                                           
1.1  2.9   3   5                                                                                                                        
2.3  3.2   3   4                                                                                                                        
3.6  3.8   4   8                                                                                                                        
2.8  3.5   4   9                                                                                                                        
1  2  3    .                                                                                                                           
3  3  5     .                                                                                                                           
;                                                                                                                                       
model y=x1 - x3;                                                                                                                        
output out= sxlion P = py;                                                                                                            
run;                                                                                                                                    
                                                                                                                                       
  proc print data =sxlion;                                                                                                              
run;
作者: shiyiming    时间: 2011-12-21 22:47
标题: Re: 自动截取回归系数?
感谢前辈的指教,小弟受教了!!
作者: shiyiming    时间: 2011-12-23 22:33
标题: Re: 自动截取回归系数?
[quote="sxlion":2ymmh1qk]SAS 很体贴的,早就有满足你的方法了。

data book;                                                                                                                              
  input x1 x2 x3 y;                                                                                                                     
cards;                                                                                                                                 
1  2   3   5                                                                                                                           
2  3   3   4                                                                                                                           
3  3   4   8                                                                                                                           
2  3   4   9                                                                                                                           
1.1  2.9   3   5                                                                                                                        
2.3  3.2   3   4                                                                                                                        
3.6  3.8   4   8                                                                                                                        
2.8  3.5   4   9                                                                                                                        
1  2  3    .                                                                                                                           
3  3  5     .                                                                                                                           
;                                                                                                                                       
model y=x1 - x3;                                                                                                                        
output out= sxlion P = py;                                                                                                            
run;                                                                                                                                    
                                                                                                                                       
  proc print data =sxlion;                                                                                                              
run;[/quote:2ymmh1qk]
谢谢友友,对于reg又有了多一点的认识




欢迎光临 SAS中文论坛 (http://mysas.net/forum/) Powered by Discuz! X3.2