3dLME error with multiple covariates

Dear Gang,

I have a question regarding running 3dLME. I have two fixed factors of interest (2 categorical variables), and the rest as covariates of no interests (mean centered and quantitative). Because I wanted to see my fixed effects while all of covariates are regressed out, I used 3dLME. MSeq could be like categorical variable (as the values are 1 or -1, but I treat it as quantitative to have a center at 0).

Here is the 3dLME script/specs that I run:
3dLME
-prefix 3dLME_CuexAtt_allCOVs.nii
-jobs 1
-model ‘CueAtt’
-qVars ‘MSeq,bmi,sTime’
-qVarCenters ‘0,0,0’
-ranEff ‘~1’
-num_glt 14
-gltLabel 1 ‘DvsP’ -gltCode 1 'Cue : 1
D -1P MSeq : 0 bmi : 0 sTime : 0’
-gltLabel 2 ‘VvsN’ -gltCode 2 'Att : 1
V -1*N MSeq : 0 bmi : 0 sTime : 0’

-dataTable
Subj MSeq bmi sTime Cue Att InputFile
Ss1 1 -0.63657 -1.36364 D V …
Ss2 -1 0.95703 -1.36364 D V…


When I only enter MSeq : 0 (e.g., -gltLabel 1 ‘DvsP’ -gltCode 1 ‘Cue : 1D -1P MSeq : 0) for each of my glt, the script runs fine. But as I soon as I enter all covariates centered at 0 (as glt specification above, … MSeq : 0 bmi : 0 sTime : 0’), I get the following error message:

Error in seq.default(2, length(sepTerms), 2) :
wrong sign in ‘by’ argument
Calls: process.LME.opts → gl_Constr → glfConstr → seq → seq.default
In addition: Warning messages:
1: In if (is.na(code[[n]][QVpos + 2])) { :
the condition has length > 1 and only the first element will be used
2: In if (QVpos == 1) outList[[1]][[n]] ← NA else outList[[1]][[n]] ← glfConstr(code[[n]][-(QVpos:(QVpos + :
the condition has length > 1 and only the first element will be used
3: In QVpos:(QVpos + 2) :
numerical expression has 3 elements: only the first used
4: In QVpos:(QVpos + 2) :
numerical expression has 3 elements: only the first used
Execution halted

It would be much appreciated if you could provide some help – Or whether I am using a wrong model specification…?

Best,
Michelle.

Michelle,

Those quantitative variables have to be incorporated into the model. So you probably want this:

-model ‘Cue*Att+MSeq+bmi+sTime’ \

Also those post hoc tests are problematic. For example,

-gltLabel 1 ‘DvsP’ -gltCode 1 ‘Cue : 1D -1P MSeq : 0 bmi : 0 sTime : 0’ \
-gltLabel 2 ‘VvsN’ -gltCode 2 ‘Att : 1V -1N MSeq : 0 bmi : 0 sTime : 0’ \

should be

-gltLabel 1 ‘DvsP’ -gltCode 1 ‘Cue : 1D -1P’ \
-gltLabel 2 ‘VvsN’ -gltCode 2 ‘Att : 1V -1N’ \

In other words, by default the absence of a quantitative variable in the specification means that the quantitative variable is controlled at its center value.

Thank you so much, Gang. The script runs fine now.

Best, Michelle.