BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
sohelsayma
Obsidian | Level 7

Hello All,

I was trying to see the climate moisture trend over time for combined sites using proc mixed LMM.   However, when I tried to model it with the following command than an error occurred. It said "Did not converge."  I have applied the same model for temperature and it was successful. But not for climate moisture data. Please note that The climate moisture data have both negative and positive value. Can you please help me to solve the problem? Thanks. N.B access link to input data file https://www.dropbox.com/s/cgaws9lf7p5tkr1/cmi.xlsx?dl=0

 proc mixed data= import;
   class plot;
   model cmi =  plot plot*year;
run;

proc mixed data=import;
         class plot;
         model cmi = year /  ddfm=kr solution outp=pred;
         random int year / type=un subject=plot solution;
         run;

proc sort data=pred; 
         by year; 
         run;

      proc sgplot data=pred;  
         series y=pred x=year / group=plot;
         run;
1 ACCEPTED SOLUTION

Accepted Solutions
lvm
Rhodochrosite | Level 12 lvm
Rhodochrosite | Level 12

You can get this to converge in GLIMMIX (even with that extreme plot that was identified).


proc glimmix data=a ;
         class plot;
         model cmi = year /  ddfm=kr solution ;
         random int year / type=un subject=plot solution;
         run;

GLIMMIX uses a different optimization method by default than MIXED. Converges in 18 iterations. A nice thing about GLIMMIX, you can use the NLOPTIONS statement to specify other optimization methods (wasn't needed here).  To get output, use the OUTPUT statement (the out option on the model statement is not used in GLIMMIX).

 

If you look at the output, you will see that the UN(2,2) variance, the variance of slope, is basically 0. This results in missing values for standard errors of parameter estimates and the EBLUPS. Results suggest an overparameterized model for this response variable. You could reduce the random effect to a random intercept model.

View solution in original post

5 REPLIES 5
lvm
Rhodochrosite | Level 12 lvm
Rhodochrosite | Level 12

There are many reasons for lack of convergence. You might be getting close before the iteration limit is reached. Suggest you add these options to the procedure statement:

           maxiter=1000 maxfunc=1000

You should look at the iteration history to see if the algorithm is getting close to convergence, but is jumping around a lot in terms of the "objective". You could see if convergence is achieved if you relax theconvergence criterion to

     convg=1e-6

(the default is convg=1e-8). The latter is a bit dangerous, because you may not be at the optimum solution. But this can help in checking things out.

 

You are fitting a straight-line model to the data. If the moisture trend with year is not very straight, then convergence would also be an issue.

lvm
Rhodochrosite | Level 12 lvm
Rhodochrosite | Level 12

You can get this to converge in GLIMMIX (even with that extreme plot that was identified).


proc glimmix data=a ;
         class plot;
         model cmi = year /  ddfm=kr solution ;
         random int year / type=un subject=plot solution;
         run;

GLIMMIX uses a different optimization method by default than MIXED. Converges in 18 iterations. A nice thing about GLIMMIX, you can use the NLOPTIONS statement to specify other optimization methods (wasn't needed here).  To get output, use the OUTPUT statement (the out option on the model statement is not used in GLIMMIX).

 

If you look at the output, you will see that the UN(2,2) variance, the variance of slope, is basically 0. This results in missing values for standard errors of parameter estimates and the EBLUPS. Results suggest an overparameterized model for this response variable. You could reduce the random effect to a random intercept model.

ballardw
Super User

Your data for Plot 78p1 is has a much larger range of data than the others. The model will converge when that plot is dropped from the analysis.

The MEANS Procedure

                    Analysis Variable : cmi

               N
plot         Obs         Maximum         Minimum         Std Dev

370p1         65       7.4853610      -2.2740591       2.1793967

591p1         65       5.3872819      -3.0432296       2.0862358

594p1         65       4.4959485      -3.6916214       1.7677325

608p1         65       9.0713372      -2.3283802       2.3539313

609p1         65       6.8631951      -3.3686982       1.9735248

610p1         65       6.5983618      -4.1104316       1.9757973

612p1         65       9.4677688      -2.5632169       2.5307261

613p1         65       3.6177264      -3.9495914       1.7285168

614p1         65      11.0386928      -1.1157220       2.7113059

615p1         65       3.3356982      -3.1275722       1.5254858

616p1         65       3.3269424      -3.2875238       1.5755983

618p1         65       3.4038994      -3.7400507       1.6946378

621p1         65       2.3974877      -3.6640138       1.4707218

622p1         65       6.2530576      -3.8531421       2.3320447

625p1         65       3.1951359      -4.0699301       1.7616092

626p1         65       7.8543502      -4.4866951       2.3123009

78p1          65      29.5117128     -39.5160676      15.9697975

 

sohelsayma
Obsidian | Level 7
Thanks
georgelin
Calcite | Level 5

You can try to proc sort your dependent variable.

 

 

proc sort data = import;
by cmi;
run;

SAS Innovate 2025: Save the Date

 SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!

Save the date!

What is ANOVA?

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.

Discussion stats
  • 5 replies
  • 18773 views
  • 4 likes
  • 4 in conversation