【发布时间】:2017-10-24 05:34:03
【问题描述】:
我正在尝试使用 Proc Mixed 测试宏内部的不同协方差结构。
%macro cov(type);
proc mixed data=tmp order=data;
class sub trt visit;
model var = trt visit trt*visit / S cl;
repeated visit /subject=sub type=&type.;
FitStatistics=min_var_&type.;
run;
%mend;
我需要在模型中拟合的一些协方差结构会导致错误,我正在尝试找到一种方法来仅执行此 proc 混合语句,前提是它不会导致 &type 的值出现错误。
我一直在使用 %sysfunc,但还没有解决这个问题。
%IF %SYSFUNC(EXIST(min_var_&type.)) %THEN %DO;
data help_&type.;
set min_var_&type.;
run;
%end;
这会正确生成这些数据集,但对于那些无法拟合的宏变量,日志中仍然存在日志错误。
【问题讨论】:
-
为什么某些协方差结构会导致错误?这是您在运行
PROC MIXED之前可以预测的吗?您不能告诉PROC MIXED仅在不会导致错误的情况下运行,但您可以控制错误发生后发生的情况。但我认为最好不要出现错误,所以也许首先解决这个问题,无论是你自己还是在问题中解决它,最好用一些示例数据来显示你所指的错误类型。 -
我正在为多个数据集运行此宏,其中一些数据集适合特定的协方差结构,而另一些数据集则不适合。在拟合 proc 混合之前,我不知道哪种协方差结构适合该数据。
-
如果您的目标是避免日志中出现错误消息,并且您无法预测 PROC MIXED 何时会抛出错误,您可以使用 PROC PRINTTO 重定向日志,然后运行 MIXED,重定向回主日志,然后测试备用日志是否有错误,并决定是否再次运行该模型。
-
@Laura 那么如果协方差结构不合适,PROC MIXED 会发生什么? proc错误吗?如果是这样,究竟是什么导致了错误?
-
'QUANEW优化无法完成。 ' 所以我猜这种协方差结构根本不适合那个特定的数据,而其他它可能适合,这就是为什么无论如何它都必须适合。