Mult_vars issues preventing convergence? + workarounds...

12 views
Skip to first unread message

Henry Whitfield

unread,
Jun 15, 2026, 12:51:02 PM (9 days ago) Jun 15
to gimme-r
Hi Katie,
I've noticed radical differences in how many participants converge when adding mult_vars product terms and exogenous variables.
I have two exogenous variables any two Multvars product termm on one node x each of the 2 exogenous variables. It stopped a third of the participants converging.
I tried a workaround of creating the product terms manually. That was Only 3 didn't get models/convergence at all. The rest fully converged. Is that a good work around? I guess I have to just ignore the group edges from the product term interaction variables to the node they contain? If you have any comments or input on this I'd super appreciate it. 
Many thanks,
Henry

Katie Gates

unread,
Jun 16, 2026, 9:11:07 AM (8 days ago) Jun 16
to gimme-r
Hey Henry, 

Sounds good to me! 

That's really interesting that models converged better when you multiplied them outside of gimme. I wonder what choices were made that might be different... would you be able to share what you did? For instance, did you mean-center the variables before multiplying, did you standardize, etc. I'd like to learn what made them converge when the gimme defaults didn't provide that. 

Thanks for sharing.

Best,
Katie

Henry Whitfield

unread,
Jun 17, 2026, 4:11:06 PM (7 days ago) Jun 17
to gimme-r
Hi Katie,
Yes in both instances I mean-centered the endogenous nodes separately. and I have the exogenous nodes kept at 0/1 dummy variables. I therefore didn't standardize. 

Comparing 'exogenous + endogenous' results with exogenous + 2 manual product terms (2 exogenous variables *one node) + endogenous: Both had 3 out of 30 participants that don't run at all.  2 of these are the same. One is different. Then they both have one "last known convergence"/"no additional significant paths" but a different participant


I just ran it with Mult_vars (2 exogenous variable *one node) again to double check and it was worse. Looks like the version that did complete had mean-centered=TRUE (not needed when endogenous nodes were already mean centered). It doesn't run at all now  - it only gets to the subgroups plot phase and 5 individual models (out of 30). It get stuck with:
invalid class “Fit” object: invalid object for slot "fx.group" in class "Fit": got class "NULL", should be or extend class "numeric" and then:
Error in UseMethod("lavInspect", object) : no applicable method for 'lavInspect' applied to an object of class "try-error
How is Mult_vars getting such a radically different (failed) result compared to the manually added product terms? I'm curious what else  Mult_vars does other than add the product terms. 

Is it a problem that the full group level edges (with manually added product terms) include the 100% correlation between product term and the endogenous node that the product term contains? Or it's enough to just ignore those?

Many thanks for your help,

Henry
 

Katie Gates

unread,
Jun 17, 2026, 4:18:44 PM (7 days ago) Jun 17
to gimme-r
HI Henry, 

Thanks for the details. 

It sounds like in both cases, 3 out of 30 people didn't converge. The main difference was (1) it was a different person for 1 of the 3 and (2) some people had different convergence reports. These slight differences are not atypical when running different variables on the same people with data that may be short or have a lot of variables. Also, these mean they converged OK - there just weren't any additional paths to add to make the fit "good" according to the predefined cutoffs. This is somewhat expected if you have 4 variables that are exogenous (2 exogenous and 2 exogenous times another variable). None of the variance in these variables are explained by the model, so it hurts model fit. In SEM, the model is trying to predict the covariance matrix, and some elements have no information here. 

It is strange that model will run into an error now when previously it ran. It could be something as simple as restarting and trying again - sometimes R memory seems to get weird. 

When the mean-centered option in gimme is evoked, the exogenous 0/1 variables would also be mean-centered. This seems to be where the difference is between your 'manual' implementation & gimme. To make them the same, you could mean-center your endogenous variable prior to putting it into gimme, then set "mean-center = FALSE". This also will keep your exogenous variables at 0/1, which seems important here. 

Best, 
Katie
Reply all
Reply to author
Forward
0 new messages