如何在SAS中输出R square和RMSE

时间:2013-07-03 07:39:28

标签: sas

我在X上回归Y.回归按日期分组。

proc reg data=A noprint;
    model Y=X;
    by DATE;
run;

在每个DATE的回归结果中,有一个R square和一个RMSE值。 如何输出R square和RMSE值的表格如下所示。谢谢!

|------------|-----------|------------|
|    Date    |  R Square |    RMSE    |
|------------|-----------|------------|
|  1/1/2009  |     R1    |    RMSE1   |
|  2/1/2009  |     R2    |    RMSE2   |
|  3/1/2009  |     R3    |    RMSE3   |
|    ....    |    ....   |    ....    |
|  10/1/2010 |     R22   |    RMSE22  |
|  11/1/2010 |     R23   |    RMSE23  |
|  12/1/2010 |     R24   |    RMSE24  |
|------------|-----------|------------|

2 个答案:

答案 0 :(得分:4)

如果你看一下SAS PROC REG的一个例子,这很容易做到。

示例数据:

data htwt;
      input sex $ age :3.1 height weight @@;
      datalines;
   f 143 56.3  85.0 f 155 62.3 105.0 f 153 63.3 108.0 f 161 59.0  92.0
   f 191 62.5 112.5 f 171 62.5 112.0 f 185 59.0 104.0 f 142 56.5  69.0
   f 160 62.0  94.5 f 140 53.8  68.5 f 139 61.5 104.0 f 178 61.5 103.5
   f 157 64.5 123.5 f 149 58.3  93.0 f 143 51.3  50.5 f 145 58.8  89.0
   m 164 66.5 112.0 m 189 65.0 114.0 m 164 61.5 140.0 m 167 62.0 107.5
   m 151 59.3  87.0
   ;
run;

现在,PROC REG。特别注意OUTEST声明;这将输出一个包含你想要的数据集est1

proc reg outest=est1 outsscp=sscp1 rsquare;
      by sex;
      eq1: model  weight=height;
      eq2: model  weight=height age;

   proc print data=sscp1;
      title2 'SSCP type data set';

   proc print data=est1;
      title2 'EST type data set';
   run;
quit;

所以现在,est1的最后一个PROC PRINT可以很容易地路由到只包含你想要的东西:

proc print data=est1;
var sex _RMSE_ _RSQ_;
run;

答案 1 :(得分:3)

您可以使用此代码:

proc reg data=A noprint;
model Y=X;
by DATE;
ods output FitStatistics=final_table;
run;
data final_table; set final_table;
    rename cValue1=RMSE;
    rename cValue2=RSquared;
proc print data=final_table;
    where Label1='Root MSE';
    var DATE RSquared RMSE;
run;

我只是打开了跟踪并取了我感兴趣的表的名称,并将其保存为proc reg的输出。

ODS Trace on;
proc reg data=A noprint;
model Y=X;
by DATE;
run;
ODS Trace off;

这将打印出日志文件中所有输出表的名称。