The GLIMMIX procedure might produce incorrect ILINK results for estimates involving a random effect


PROC GLIMMIX produces incorrect results for the inversely linked estimate of the mean and its standard error when these conditions are met:

If the CL option is specified in the ESTIMATE statement, the confidence interval for the inversely linked mean is also incorrect.

There is one exception, and the problem does not occur for multirow estimates when the random effect is continuous.

There is no circumvention for this problem.

Below are examples of ESTIMATE statements in PROC GLIMMIX that generate incorrect results for the ILINK mean and its standard error. The last ESTIMATE statement below generates correct results.

  proc glimmix data=dset;
     class f trt species;
     model y=trt / d=multinomial link=glogit;
     random intercept trt/subject=f group=y ;

     estimate "trt 1 f=1" intercept 1 trt 1 0 0 | intercept 1 trt 1 0 0 / subject 1 0 bycat ilink;
     estimate "trt 2 f=1" intercept 1 trt 0 1 0 | intercept 1 trt 0 1 0 / subject 1 0 bycat ilink;
     estimate "trt 3 f=1" intercept 1 trt 0 0 1 | intercept 1 trt 0 0 1 / subject 1 0 bycat ilink;

     estimate "trt 1 f=1" intercept 1 trt 1 0 0 | intercept 1 trt 1 0 0,
              "trt 2 f=1" intercept 1 trt 0 1 0 | intercept 1 trt 0 1 0,
              "trt 3 f=1" intercept 1 trt 0 0 1 | intercept 1 trt 0 0 1 / subject 1 0 bycat ilink;
     run;

   /* Model with continuous random effect */
  proc glimmix data=dset;
     class f species;  
     model species=x / d=multinomial solution link=glogit;
     random intercept x/subject=f group=species solution;

     /*These ESTIMATE statements represent each predictable function */
     estimate "x=0 f=1" intercept 1 x 0 | intercept 1 x 0 / subject 1 0 bycat ilink;
     estimate "x=2 f=1" intercept 1 x 2 | intercept 1 x 2 / subject 1 0 bycat ilink;
  
     /*With a continuous random effect used in a multiple row ESTIMATE, the ILINK results are correct*/
     estimate "x=0 f=1" intercept 1 x 0 | intercept 1 x 0,
           "x=2 f=1" intercept 1 x 2 | intercept 1 x 2/ subject 1 0 bycat ilink;
   run;