AFNI version info (afni -ver): @Gang@ptaylor
If I am running a 3dLMEr mode which shows a 3-way interaction between DrugTimeSHAPS, where Drug and Time have two levels, and SHAPS is a quantitative variable.

How do I test how the Drug*Time effect is modulated by SHAPS?

I currently have:

Drug : '1DrugA' '-1DrugB' Time : '1Post' '-1Pre' SHAPS :

Do I have to specify multiple gltcodes with different SHAPS values (e.g., +-1.5SD) and compare the results qualitatively, or is there a way to look at the linear effect of SHAPS on the Drug*Time interaction?

The three-way interaction involving Drug, Time, and SHAPS reveals the linear marginal effect of SHAPS with the interaction between Drug and Time factors. To further parse the interaction, you might consider estimating additional effects such as

'Drug : 1*DrugA Time : 1*Post SHAPS :'
'Drug : 1*DrugA Time : 1*Pre SHAPS :'`
'Drug : 1*DrugB Time : 1*Post SHAPS :'
'Drug : 1*DrugB Time : 1*Pre SHAPS :'
'Drug : 1*DrugA -1*DrugB Time : 1*Post SHAPS :'
'Drug : 1*DrugA -1*DrugB Time : 1*Pre SHAPS :'
'Drug : 1*DrugA Time : 1*Post -1*Pre SHAPS :'
'Drug : 1*DrugB Time : 1*Post -1*Pre SHAPS :'

If I want to focus on the Drug*Time interaction and how it is modulated by SHAPS, should I do the above contrasts at specific High/Low (+-1SD) values of SHAPS? e.g.:

Drug : '1DrugA' '-1DrugB' Time : '1Post' '-1Pre' SHAPS : +1SDvalue
Drug : '1DrugA' '-1DrugB' Time : '1Post' '-1Pre' SHAPS : -1SDvalue

Drug : '1DrugA' '-1DrugB' Time : '1Post' '-1Pre' SHAPS : +1SDvalue
Drug : '1DrugA' '-1DrugB' Time : '1Post' '-1Pre' SHAPS : -1SDvalue

would not make syntactical sense to 3dLMEr.

The three-way interaction:

'Drug : 1*DrugA -1*DrugB Time : 1*Post -1*Pre SHAPS :'

shows the linear marginal interaction effect of SHAPS in the following manner: the alteration by a unit in SHAPS is associated with the interaction effect between Drug and Time. Whether the unit is expressed in the SHAPS physical space or as a standard deviation is essentially a matter of preference and convenience.

I see. I read in the 3dMVM documentation that specifying 'SHAPS : ' in this way means you are looking at the effect of other variables at the MEAN (given SHAPS is mean-centered) value of SHAPS, so it is not looking at a linear effect. Maybe that led to the confusion. I tried doing the specification I wrote above (using +-1.5 SD values of SHAPS) and I did get different results for the two contrasts.

if Drug : 1*DrugA -1*DrugB Time : 1*Post -1*Pre SHAPS : is indeed the linear effect of SHAPS on the Drug*Time interaction, then what would the sign of any significant cluster from the contrast indicate - i.e., if the resulting cluster has negative z, how is it different from it having a positive z?

I read in the 3dMVM documentation that specifying 'SHAPS : ' in this way means you are looking at the effect of other variables at the MEAN (given SHAPS is mean-centered) value of SHAPS, so it is not looking at a linear effect. Maybe that led to the confusion.

The notion of interpreting a quantitative variable at its center value becomes relevant in scenarios where the said variable is not explicitly specified. Take, for instance:

'Drug : 1*DrugA -1*DrugB Time : 1*Post -1*Pre'

I would appreciate if you could point out which content in the 3dMVM documentation leads to the confusion.

I tried doing the specification I wrote above (using +-1.5 SD values of SHAPS) and I did get different results for the two contrasts.

It is no surprise you got totally different results, but such results would not align with the intended assessment.

if Drug : 1*DrugA -1*DrugB Time : 1*Post -1*Pre SHAPS : is indeed the linear effect of SHAPS on the Drug*Time interaction, then what would the sign of any significant cluster from the contrast indicate - i.e., if the resulting cluster has negative z, how is it different from it having a positive z?

This points to my previous suggestion of specifying more comparisons:

'Drug : 1*DrugA Time : 1*Post SHAPS :'
'Drug : 1*DrugA Time : 1*Pre SHAPS :'`
'Drug : 1*DrugB Time : 1*Post SHAPS :'
'Drug : 1*DrugB Time : 1*Pre SHAPS :'
'Drug : 1*DrugA -1*DrugB Time : 1*Post SHAPS :'
'Drug : 1*DrugA -1*DrugB Time : 1*Pre SHAPS :'
'Drug : 1*DrugA Time : 1*Post -1*Pre SHAPS :'
'Drug : 1*DrugB Time : 1*Post -1*Pre SHAPS :'

I was referring to this text in the 3dMVM documentation:

2) When a quantitative covariate is involved in the model, the
absence of the covariate in the GLT coding means that the test
will be performed at the center value of the covariate. However,
if the covariate value is specified with a value after the colon,
for example, 'Group : 1*Old Age : 2', the effect of the Old Group
would be tested at the value of 2 above the center. On the other
hand, 'Group : 1*Old' tests for the effect of the Old Group at the
center age.
3) The effect for a quantitative variable (or slope) can be specified
by omitting the value after the colon. For example,
'Group : 1*Old Age : ', or 'Group : 1*Old - 1*Young Age : '.

specifically where it says"the effect of the Old Group would be tested at the value of 2 above the center." That is why I was trying to specify +-1.5SD values for SHAPS to get the effect at those values.

But I also see point 3 which says if you specify a quantitative variable with just a colon (e.g., 'SHAPS : ') then it will show the linear effect of that variable - apologies that I overlooked that point.

I am specifically interested in this effect:

Drug : 1*DrugA -1*DrugB Time : 1*Post -1*Pre SHAPS :

i.e., how the Drug*Time interaction is dependent on HIGH/LOW values of SHAPS.

Let me use a simple example to explain the differences. Suppose one wants to compare body weight between females and males while adjusting for body height through centering. Two types of effects can be estimated from the model:

Intercept: This represents the body weight difference between the two sexes. The effect is measured in units of weight (e.g., kg).

Slope or Marginal Effect: This represents the change in body weight per unit of body height (e.g., kg/cm).

These two effects have entirely different interpretations and meanings. Applying this example to your case, the following specification:

'Drug : 1*DrugA -1*DrugB Time : 1*Post -1*Pre SHAPS :'

corresponds to a slope-type effect. In contrast, the specification you insist on obtaining:

Drug : '1*DrugA' '-1*DrugB' Time : '1*Post' '-1*Pre' SHAPS : +1SDvalue
Drug : '1*DrugA' '-1*DrugB' Time : '1*Post' '-1*Pre' SHAPS : -1SDvalue

represents an intercept-type effect.

I hope this explanation clarifies the distinction.

That makes sense, @Gang .
I get that 'Drug : 1*DrugA -1*DrugB Time : 1*Post -1*Pre SHAPS :' is the linear effect (slope) of SHAPS on the Drug*Time interaction.

The reason I want to also calculate the Drug*Time interaction effect at specific values (+-1.5SD) of SHAPS (intercept effect as you mention) is to be consistent with R's emmeans package:

mylist <- list(SHAPS=c(22,52))
p1=emmip(fit , Drug ~ Time | SHAPS ,at=mylist)

Where this gives me interaction plots for Drug*Time at the specified values (+-1.5SD, [22,52]) of SHAPS. So I wanted to clarify if the following code achieves the same analysis:

Drug : '1*DrugA' '-1*DrugB' Time : '1*Post' '-1*Pre' SHAPS : 52
Drug : '1*DrugA' '-1*DrugB' Time : '1*Post' '-1*Pre' SHAPS : 22

If not, is it possible to specify the gltcode in way which achieves the intended goal - looking at Drug*Time interaction effect at specific HIGH/LOW values of SHAPS?
Best,
Avi

Yes, in that case it would be a valid specification.

Gang Chen

The
National Institute of Mental Health (NIMH) is part of the National Institutes of
Health (NIH), a component of the U.S. Department of Health and Human
Services.