I am running the below proc glimmix procedure.
I am tasked with running this for different covariance structures (type=CHOL, type=AR1, etc), and accepting the structure that first converges.
I have found the following:
1) when I specify the RANDOM statement, the ods output ConvergenceStatus table will not be created, and therefore I cannot check convergence using that covariate structure.
2) When I do NOT specify the RANDOM statement, the ods output ConvergenceStatus table WILL be created, but then I can't specify the covariance structure.
Any suggestions on how I can check convergence while using the various covariance structures?
proc glimmix data=out.alldata(keep=paramcd response AVISITN usubjid trtn subgroup_sort) noitprint noclprint ;
nloptions maxiter=1000000;
by paramcd;
class AVISITN usubjid trtn subgroup_sort ;
model response(descending) = AVISITN trtn subgroup_sort
avisitn*trtn avisitn*subgroup_sort trtn*subgroup_sort
AVISITN*trtn*subgroup_sort /s dist=binary ddfm=KR2;
random avisitn / type=CHOL subject=usubjid residual;
ods output convergenceStatus=anl_conv;
run;
If GLIMMIX does not start the iteration process due to a problem with the data or model, then the convergencestatus output table will not be produced. You could use the &SYSWARNINGTEXT macro variable to see what the last warning message is that GLIMMIX produces. If that macro variable contains the text "Output 'convergencestatus' not created" then you can act accordingly.
Alternatively you can check on the existence of the data set you assigned to convergencestatus with the &SYSERR macro variable. If you try to use that data set in a DATA step and it does not exist, then &SYSERR will be nonzero and you can act on that information.
If GLIMMIX does not start the iteration process due to a problem with the data or model, then the convergencestatus output table will not be produced. You could use the &SYSWARNINGTEXT macro variable to see what the last warning message is that GLIMMIX produces. If that macro variable contains the text "Output 'convergencestatus' not created" then you can act accordingly.
Alternatively you can check on the existence of the data set you assigned to convergencestatus with the &SYSERR macro variable. If you try to use that data set in a DATA step and it does not exist, then &SYSERR will be nonzero and you can act on that information.
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
ANOVA, or Analysis Of Variance, is used to compare the averages or means of two or more populations to better understand how they differ. Watch this tutorial for more.
Find more tutorials on the SAS Users YouTube channel.