3dMVM output - interactions & covariates

Hi AFNI guys (probably Gang):

I used 3dMVM to run an analysis on my data which is from a 3x2 within-subject design; i have 3 stimuli and 2 (qualitatively different) runs and 3 covariates - Sex, STAI-T, STAI-S. Everything ran fine and I used the code attached.

3dMVM -prefix /Volumes/SEQUEL_DISS/PRO_AFNI/OUTPUT/derivatives/STATS/whole_brain/MVM_TvsC_covars.nii.gz -jobs 4 \
-bsVars "sex+stait+stais" \
-wsVars "cs*scan" \
-qVars "stait,stais" \
-qVarCenters '38.47058824,41.70588235' \
-SS_type 3 \
-num_glt 30 \
-SC \
-gltLabel 1 csm-csp1 -gltCode 1 'cs : 1*csm -1*csp scan : 1*scan1' \
-gltLabel 2 csp-cst1 -gltCode 2 'cs : 1*csp -1*cst scan : 1*scan1' \
-gltLabel 3 csm-cst1 -gltCode 3 'cs : 1*csm -1*cst scan : 1*scan1' \
-gltLabel 4 csm-csp1_STAIT -gltCode 4 'cs : 1*csm -1*csp scan : 1*scan1 stait :' \
-gltLabel 5 csp-cst1_STAIT -gltCode 5 'cs : 1*csp -1*cst scan : 1*scan1 stait :' \
-gltLabel 6 csm-cst1_STAIT -gltCode 6 'cs : 1*csm -1*cst scan : 1*scan1 stait :' \
-gltLabel 7 csm-csp1_STAIS -gltCode 7 'cs : 1*csm -1*csp scan : 1*scan1 stais :' \
-gltLabel 8 csp-cst1_STAIS -gltCode 8 'cs : 1*csp -1*cst scan : 1*scan1 stais :' \
-gltLabel 9 csm-cst1_STAIS -gltCode 9 'cs : 1*csm -1*cst scan : 1*scan1 stais :' \
-gltLabel 10 csm-csp1_SEX -gltCode 10 'cs : 1*csm -1*csp scan : 1*scan1 sex : 1*f -1*m' \
-gltLabel 11 csp-cst1_SEX -gltCode 11 'cs : 1*csp -1*cst scan : 1*scan1 sex : 1*f -1*m' \
-gltLabel 12 csm-cst1_SEX -gltCode 12 'cs : 1*csm -1*cst scan : 1*scan1 sex : 1*f -1*m' \
-gltLabel 13 csm-csp2 -gltCode 13 'cs : 1*csm -1*csp scan : 1*scan2' \
-gltLabel 14 csp-cst2 -gltCode 14 'cs : 1*csp -1*cst scan : 1*scan2' \
-gltLabel 15 csm-cst2 -gltCode 15 'cs : 1*csm -1*cst scan : 1*scan2' \
-gltLabel 16 csm-csp2_STAIT -gltCode 16 'cs : 1*csm -1*csp scan : 1*scan2 stait :' \
-gltLabel 17 csp-cst2_STAIT -gltCode 17 'cs : 1*csp -1*cst scan : 1*scan2 stait :' \
-gltLabel 18 csm-cst2_STAIT -gltCode 18 'cs : 1*csm -1*cst scan : 1*scan2 stait :' \
-gltLabel 19 csm-csp2_STAIS -gltCode 19 'cs : 1*csm -1*csp scan : 1*scan2 stais :' \
-gltLabel 20 csp-cst2_STAIS -gltCode 20 'cs : 1*csp -1*cst scan : 1*scan2 stais :' \
-gltLabel 21 csm-cst2_STAIS -gltCode 21 'cs : 1*csm -1*cst scan : 1*scan2 stais :' \
-gltLabel 22 csm-csp2_SEX -gltCode 22 'cs : 1*csm -1*csp scan : 1*scan2 sex : 1*f -1*m' \
-gltLabel 23 csp-cst2_SEX -gltCode 23 'cs : 1*csp -1*cst scan : 1*scan2 sex : 1*f -1*m' \
-gltLabel 24 csm-cst2_SEX -gltCode 24 'cs : 1*csm -1*cst scan : 1*scan2 sex : 1*f -1*m' \
-gltLabel 25 csm1-csm2 -gltCode 25 'cs : 1*csm scan : 1*scan1 -1*scan2' \
-gltLabel 26 csp1-csp2 -gltCode 26 'cs : 1*csp scan : 1*scan1 -1*scan2' \
-gltLabel 27 cst1-cst2 -gltCode 27 'cs : 1*cst scan : 1*scan1 -1*scan2' \
-gltLabel 28 cst1-cst2_STAIT -gltCode 28 'cs : 1*cst scan : 1*scan1 -1*scan2 stait :' \
-gltLabel 29 cst1-cst2_STAIS -gltCode 29 'cs : 1*cst scan : 1*scan1 -1*scan2 stais :' \
-gltLabel 30 cst1-cst2_SEX -gltCode 30 'cs : 1*cst scan : 1*scan1 -1*scan2 sex : 1*f -1*m' \
-dataTable @table.txt

Looking at my output, I understand BRIKs like (gltcode1, and others like it) csm-csp is looking at that contrast while “controlling” for the effects of the covariates. What I’m curious about is stuff like gltcode10 or gltcode16. For example, I get an output BRIK that is csm-csp_SEX. When I look at contrasts I usually use the red/blue color bar so red represents responding to the csm (for example) and blue represents the csp. I have been asked to look at how sex “affects” responding to the stimuli. However when I look at the csm-csp_SEX BRIK I still, expectedly and logically, get a red/blue map which was uninterpretable to me because I didn’t know where sex came into it at that point.
Can you confirm what to do at this point? I discussed it with some colleagues and this is what we came up with: If after thresholding appropriately there are any clusters left you extract the beta weights from those clusters and make a scatterplot/bargraph to show the effect of sex (in case of barograph) or STAI (scatterplot).
Is this the right way to investigate the “effects” of the covariate on the contrasts or is there a better (or more correct?) way to do this?

Also a kind of tangential question: When I get my statistical output datasets I generally just skip straight to looking at the contrasts of interest without looking at the Ftest output because my Fmap is usually covered in huge uninterpretable blobs and this happens pretty much 99% of the time. Is this okay or, like in regular statistics, do we need to check the Fmap first before checking any Tmap? And if we do, does one just check to see if there are ANY blobs in the Fmap and then any contrast is fair game after that?

Please let me know if I can clarify anything. I hope this question makes sense although I’m probably using the wrong terminology somewhere.

Thanks a ton.


First, there was a bug in 3dMVM that may cause trouble when user-specified centers are involved. I put the fix into the distribution about 10 days ago. To be safe, put the following file in your AFNI binary directory and re-run your analysis:


when I look at the csm-csp_SEX BRIK I still, expectedly and logically, get a red/blue map which was uninterpretable
to me because I didn’t know where sex came into it at that point.

By “csm-csp_SEX”, do you mean the following specification?

-gltLabel 10 csm-csp1_SEX -gltCode 10 ‘cs : 1csm -1csp scan : 1scan1 sex : 1f -1*m’ \

I suggest that you add a few more effects if not already:

‘cs : 1csm -1csp scan : 1scan1 sex : 1f’
‘cs : 1csm -1csp scan : 1scan1 sex : 1m’
‘cs : 1csm scan : 1scan1 sex : 1f’
'cs : 1
csm scan : 1scan1 sex : 1m’
‘cs : 1csp scan : 1scan1 sex : 1f’
'cs : 1
csp scan : 1scan1 sex : 1m’

These new ones, combined with csm-csp1_SEX above, will help you get a full picture. The same logic applies to other similar ones. Sure, you could extract the data at an ROI and plot them out, but the above the approach is likely more straightforward.

If after thresholding appropriately there are any clusters left

Just some cautionary words here - there may be currently accepted thresholding methods in the field, but whether a thresholding is appropriate or not is in the eye of the beholder. Even if a cluster does not meet an artificial and arbitrary criterion, it does not mean the underlying brain region was not activated: the absence of evidence is not the same as the evidence of absence. The obsession with and pursuit for rigorous thresholding may have something to do with a lot of wasted resources as well as the reproducibility problem.

If your research hypotheses are those specific contrasts laid out through -gltCode, don’t bother looking at the F-statistics: They are mostly just the vestige from the history.