使用SAS进行稳健回归

时间:2017-09-27 11:12:11

标签: sas regression linear-regression

我正在使用SAS执行稳健回归。我收到以下警告:

  

警告:刻度接近0.检测到可能的精确配合。

     

警告:未创建输出'GoodFit'。确保输出   对象名称,标签或路径拼写正确。也,            验证是否使用了适当的过程选项来生成请求的输出对象。例如,验证            不使用NOPRINT选项。“**

为什么我收到此警告?如何纠正它以便可以创建 Goodfit ?由于outttest=dataset中没有任何观察结果,因此我的代码中出现错误,因为 outtest 的输出随后被用作输入。

代码段如下: -

proc robustreg data=test method=m (wf=huber(c=1.3)) outest = fac1;
   class bucket bucket0;
   model R_res_new=xyz_ldg*bucket bucket0  abcdev_sh*bucket0 abcdev_lg*bucket0 /  noint;
   output out=fac1t residual=res;
   ods output GoodFit=fit1; 
run;

测试数据集是: -

bucket0 R_res_new     abcdev_sh      abcdev_lg    xyz_ldg     bucket
pp      0.118023674       0         0.427853531  0.622702006    aa
pp      0.2443029    -0.52011222    0            0.84582555     bb
pp      0.242459596  -0.198019513   0            3.796344334    bb
pp      0.150550397       0         0.05454537   0.57086536     bb
pp      0.093373827       0         0.855772297  0.68810985     bb
pp      0.401303208  -0.620039465   0            1.319799593    bb

1 个答案:

答案 0 :(得分:0)

我不知道PROC ROBUSTREG,但这是我的猜测,基于快速浏览文档。

您正在使用ods output GoodFit=fit1来获取写入输出数据集的拟合优度统计数据(R-square,AIC等)。

当我运行你的代码并查看输出时,没有打印出适合度统计数据。如果PROC不计算拟合优度统计量,则无法将它们写入输出数据集。它们不存在。

所以关键问题是,为什么PROC ROBUSTREG不能计算拟合统计数据?我认为这与你得到的警告有关:

WARNING: The scale is close to 0. A possible exact fit is detected.

回归中的精确拟合通常不是一件好事。请注意,每个参数估计的标准误差为0,这与精确拟合一致。从全局来看,你已经得到了6个观测数据集,并且你正在拟合一个包含大量预测变量的模型。毫不奇怪,你可以得到一个完全合适的。我将其简化为一个预测变量,并计算拟合统计量。但即便如此,即使它“有效”,仅基于6条记录的回归模型也非常不稳定......