我正在使用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
答案 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条记录的回归模型也非常不稳定......