Controlling for Scanner Differences

Hey there Stats with Gang!

We are looking at resting state fmri whole-brain activation in 2 groups (autism vs controls). We have scans collected over 2 sites and want to control for scanner differences. It was recommended that we do this at the 3dDeconvolve level.

Whats the best way to do this?

Thanks!
-Mit

You probably want to have a look at ComBat RAVEL both methods for harmonization across sites. E.g., see https://www.sciencedirect.com/science/article/pii/S1053811921009642

1 Like

Hi Mit,

Were participants scanned in multiple sessions? Did data collection occur on both scanners for most participants? If not, could you please provide a contingency table similar to the following?

#
              Scanner 1   Scanner 2
Autism            ?           ?
Control           ?           ?

Gang Chen

Hello, I am working with Mit on this. Please see the table above. I'd like to note that resting-state MRI data were acquired on a Siemens 3T PRISMA scanner using a 64-head-channel coil across both study sites. Scans were completed in one session. And we are only looking at one time-point.

          Scanner 1   Scanner 2

Autism 24 14
Control 24 15

-Hector

Hi,

Thank you so much for this. ComBat is on my radar but im reading that it may be too stringent and may decrease effect size. I've also heard of Site Wide De-Meaning which may increase effect size. Is one preferred over the other?

-Mit

Hi Hector and Mit,

Thanks for sharing the information. If all the participants can be conceptualized as randomly assigned to the two scanners, I recommend analyzing the data at the individual level as usual. However, at the population level, formulate an AN(COVA) by adding scanner as a factor, using programs such as 3dMVM.

Gang Chen

We had success using Gang's 3dMVM to add voxel-wise covariates for SFNR per fBIRN methods. Poster linked below:

https://fim.nimh.nih.gov/sites/default/files/sfn_poster_2017_print.pdf

Hello,

We have used 3dMVM but are getting errors such as... (refer to screenshot below)

We dont think there should be interaction between scanner and group because we want to covary for scan site for each participant group separately (i.e. ASD is run separately than TD, then we are running a paired t-test to compare).

Our script is as follows:

3dMVM -prefix SN_test_MVM -jobs 4  \
 -bsVars "scan" \
-qVars "scan"
-num_glf 38 \

-dataTable 
Subj scan InputFile \
ASD015 1 /{subjectsDirectory}/ASD015/rest/ASD015_FC_SN_R-Z.nii.gz \
ASD022 1 /{subjectsDirectory}/ASD022/rest/ASD022_FC_SN_R-Z.nii.gz \
ASD029 1 /{subjectsDirectory}/ASD029/rest/ASD029_FC_SN_R-Z.nii.gz \
ASD033 1 /{subjectsDirectory}/ASD033/rest/ASD033_FC_SN_R-Z.nii.gz \
ASD034 1 /{subjectsDirectory}/ASD034/rest/ASD034_FC_SN_R-Z.nii.gz \
ASD036 1 /{subjectsDirectory}/ASD036/rest/ASD036_FC_SN_R-Z.nii.gz \
ASD037 1 /{subjectsDirectory}/ASD037/rest/ASD037_FC_SN_R-Z.nii.gz \
ASD042 1 /{subjectsDirectory}/ASD042/rest/ASD042_FC_SN_R-Z.nii.gz \
ASD046 1 /{subjectsDirectory}/ASD046/rest/ASD046_FC_SN_R-Z.nii.gz \
ASD055 1 /{subjectsDirectory}/ASD055/rest/ASD055_FC_SN_R-Z.nii.gz \
ASD056 1 /{subjectsDirectory}/ASD056/rest/ASD056_FC_SN_R-Z.nii.gz \
ASD060 1 /{subjectsDirectory}/ASD060/rest/ASD060_FC_SN_R-Z.nii.gz \
ASD067 1 /{subjectsDirectory}/ASD067/rest/ASD067_FC_SN_R-Z.nii.gz \
ASD079 1 /{subjectsDirectory}/ASD079/rest/ASD079_FC_SN_R-Z.nii.gz \
ASD148E 2 /{subjectsDirectory}/ASD148E/rest/ASD148E_FC_SN_R-Z.nii.gz \
ASD167C 2 /{subjectsDirectory}/ASD167C/rest/ASD167C_FC_SN_R-Z.nii.gz \
ASD168C 2 /{subjectsDirectory}/ASD168C/rest/ASD168C_FC_SN_R-Z.nii.gz \
ASD171C 2 /{subjectsDirectory}/ASD171C/rest/ASD171C_FC_SN_R-Z.nii.gz \
ASD181C 2 /{subjectsDirectory}/ASD181C/rest/ASD181C_FC_SN_R-Z.nii.gz \
ASD184C 2 /{subjectsDirectory}/ASD184C/rest/ASD184C_FC_SN_R-Z.nii.gz \
ASD192C 2 /{subjectsDirectory}/ASD192C/rest/ASD192C_FC_SN_R-Z.nii.gz \
ASD194C 2 /{subjectsDirectory}/ASD194Crest/ASD194C_FC_SN_R-Z.nii.gz \
ASD196C 2 /{subjectsDirectory}/ASD196C/rest/ASD196C_FC_SN_R-Z.nii.gz \
ASD200C 2 /{subjectsDirectory}/ASD196C/rest/ASD196C_FC_SN_R-Z.nii.gz \
ASD204  2 /{subjectsDirectory}/ASD204/rest/ASD204_FC_SN_R-Z.nii.gz \
ASD205B 2 /{subjectsDirectory}/ASD205B/rest/ASD205B_FC_SN_R-Z.nii.gz \
ASD207B 2 /{subjectsDirectory}/ASD207B/rest/ASD207B_FC_SN_R-Z.nii.gz \
ASD300	2 /{subjectsDirectory}/ASD300/rest/ASD300_FC_SN_R-Z.nii.gz \
ASD301  2 /{subjectsDirectory}/ASD301/rest/ASD301_FC_SN_R-Z.nii.gz \
ASD302 	2 /{subjectsDirectory}/ASD302/rest/ASD302_FC_SN_R-Z.nii.gz \
ASD303  2 /{subjectsDirectory}/ASD303/rest/ASD303_FC_SN_R-Z.nii.gz \
ASD304	2 /{subjectsDirectory}/ASD304/rest/ASD304_FC_SN_R-Z.nii.gz \
ASD305 	2 /{subjectsDirectory}/ASD305/rest/ASD305_FC_SN_R-Z.nii.gz \
ASD306 	2 /{subjectsDirectory}/ASD306/rest/ASD306_FC_SN_R-Z.nii.gz \
ASD307 	2 /{subjectsDirectory}/ASD307/rest/ASD307_FC_SN_R-Z.nii.gz \
ASD302 	2 /{subjectsDirectory}/ASD302/rest/ASD302_FC_SN_R-Z.nii.gz \
ASD308 	2 /{subjectsDirectory}/ASD308/rest/ASD308_FC_SN_R-Z.nii.gz \
ASD4004	2 /{subjectsDirectory}/ASD4004/rest/ASD4004_FC_SN_R-Z.nii.gz \
ASD4005	2 /{subjectsDirectory}/ASD4005/rest/ASD4005_FC_SN_R-Z.nii.gz \

end

Thank you!

The error is caused by not having a line continuation \ on every line of the script. The shell then tries to run every line as a regular command instead of passing that info to 3dMVM.

That said, your model representation is probably going to get pushback from reviewers, I would recommend that you add both TD and ASD to the model (designated by a column) and scanner as you have now. You'll then need to ask for the scanner X group interaction.

If you get significant differences by scanner or scannerXgroup, then you're going to have to account for those differences with additional covariates, otherwise you won't be able to figure out if the group differences are real or just scanner artifacts.

1 Like

Hi there,

Thank you for catching that! We fixed the \ issue, and added scanner x group interaction. We are now getting this error:

Script is as follows: (there are \ at the end of each line, for some reason the script doesnt let us copy paste it here)

3dMVM -prefix SN_test_MVM -jobs 4  \
 -bsVars 'scan+group' \
 -wsVars 'File' \
 -qVars 'scan' \
-num_glt 2 \
-gltLabel 1 File_1vs2 -gltCode 1 'condition : 1*File : 1*1 -1*2' \    
-gltLabel 2 groupvsscan_interaction -gltCode 2 'group : 1*ASD -1*TD scan : 1*1 -1*2' \
-dataTable \
Subj group scan File InputFile \
ASD015 ASD 1 1 /{subjectsDirectory}/asdsubjects/ASD015/rest/ASD015_FC_SN_R-Z.nii.gz \
ASD022 ASD 1 1 /{subjectsDirectory}/asdsubjects/ASD022/rest/ASD022_FC_SN_R-Z.nii.gz \
ASD029 ASD 1 1 /{subjectsDirectory}/asdsubjects/ASD029/rest/ASD029_FC_SN_R-Z.nii.gz \
ASD033 ASD 1 1 /{subjectsDirectory}/asdsubjects/ASD033/rest/ASD033_FC_SN_R-Z.nii.gz \
ASD034 ASD 1 1 /{subjectsDirectory}/asdsubjects/ASD034/rest/ASD034_FC_SN_R-Z.nii.gz \
ASD036 ASD 1 1 /{subjectsDirectory}/asdsubjects/ASD036/rest/ASD036_FC_SN_R-Z.nii.gz \
ASD037 ASD 1 1 /{subjectsDirectory}/asdsubjects/ASD037/rest/ASD037_FC_SN_R-Z.nii.gz \
ASD042 ASD 1 1 /{subjectsDirectory}/asdsubjects/ASD042/rest/ASD042_FC_SN_R-Z.nii.gz \
ASD046 ASD 1 1 /{subjectsDirectory}/asdsubjects/ASD046/rest/ASD046_FC_SN_R-Z.nii.gz \
ASD055 ASD 1 1 /{subjectsDirectory}/asdsubjects/ASD055/rest/ASD055_FC_SN_R-Z.nii.gz \
ASD056 ASD 1 1 /{subjectsDirectory}/asdsubjects/ASD056/rest/ASD056_FC_SN_R-Z.nii.gz \
ASD060 ASD 1 1 /{subjectsDirectory}/asdsubjects/ASD060/rest/ASD060_FC_SN_R-Z.nii.gz \
ASD067 ASD 1 1 /{subjectsDirectory}/asdsubjects/ASD067/rest/ASD067_FC_SN_R-Z.nii.gz \
ASD079 ASD 1 1 /{subjectsDirectory}/asdsubjects/ASD079/rest/ASD079_FC_SN_R-Z.nii.gz \
ASD148E ASD 2 1 /{subjectsDirectory}/asdsubjects/ASD148E/rest/ASD148E_FC_SN_R-Z.nii.gz \
ASD167C ASD 2 1 /{subjectsDirectory}/asdsubjects/ASD167C/rest/ASD167C_FC_SN_R-Z.nii.gz \
ASD168C ASD 2 1 /{subjectsDirectory}/asdsubjects/ASD168C/rest/ASD168C_FC_SN_R-Z.nii.gz \
ASD171C ASD 2 1 /{subjectsDirectory}/asdsubjects/ASD171C/rest/ASD171C_FC_SN_R-Z.nii.gz \
ASD181C ASD 2 1 /{subjectsDirectory}/asdsubjects/ASD181C/rest/ASD181C_FC_SN_R-Z.nii.gz \
ASD184C ASD 2 1 /{subjectsDirectory}/asdsubjects/ASD184C/rest/ASD184C_FC_SN_R-Z.nii.gz \
ASD192C ASD 2 1 /{subjectsDirectory}/asdsubjects/ASD192C/rest/ASD192C_FC_SN_R-Z.nii.gz \
ASD194C ASD 2 1 /{subjectsDirectory}/asdsubjects/ASD194Crest/ASD194C_FC_SN_R-Z.nii.gz \
ASD196C ASD 2 1 /{subjectsDirectory}/asdsubjects/ASD196C/rest/ASD196C_FC_SN_R-Z.nii.gz \
ASD200C ASD 2 1 /{subjectsDirectory}/asdsubjects/ASD196C/rest/ASD196C_FC_SN_R-Z.nii.gz \
ASD204  ASD 2 1 /{subjectsDirectory}/asdsubjects/ASD204/rest/ASD204_FC_SN_R-Z.nii.gz \
ASD205B ASD 2 1 /{subjectsDirectory}/asdsubjects/ASD205B/rest/ASD205B_FC_SN_R-Z.nii.gz \
ASD207B ASD 2 1 /{subjectsDirectory}/asdsubjects/ASD207B/rest/ASD207B_FC_SN_R-Z.nii.gz \
ASD300	ASD 2 1 /{subjectsDirectory}/asdsubjects/ASD300/rest/ASD300_FC_SN_R-Z.nii.gz \
ASD301  ASD 2 1 /{subjectsDirectory}/asdsubjects/ASD301/rest/ASD301_FC_SN_R-Z.nii.gz \
ASD302 	ASD 2 1 /{subjectsDirectory}/asdsubjects/ASD302/rest/ASD302_FC_SN_R-Z.nii.gz \
ASD303  ASD 2 1 /{subjectsDirectory}/asdsubjects/ASD303/rest/ASD303_FC_SN_R-Z.nii.gz \
ASD304	ASD 2 1 /{subjectsDirectory}/asdsubjects/ASD304/rest/ASD304_FC_SN_R-Z.nii.gz \
ASD305 	ASD 2 1 /{subjectsDirectory}/asdsubjects/ASD305/rest/ASD305_FC_SN_R-Z.nii.gz \
ASD306 	ASD 2 1 /{subjectsDirectory}/asdsubjects/ASD306/rest/ASD306_FC_SN_R-Z.nii.gz \
ASD307 	ASD 2 1 /{subjectsDirectory}/asdsubjects/ASD307/rest/ASD307_FC_SN_R-Z.nii.gz \
ASD302 	ASD 2 1 /{subjectsDirectory}/asdsubjects/ASD302/rest/ASD302_FC_SN_R-Z.nii.gz \
ASD308 	ASD 2 1 /{subjectsDirectory}/asdsubjects/ASD308/rest/ASD308_FC_SN_R-Z.nii.gz \
ASD4004	ASD 2 1 /{subjectsDirectory}/asdsubjects/ASD4004/rest/ASD4004_FC_SN_R-Z.nii.gz \
ASD4005	ASD 2 1 /{subjectsDirectory}/asdsubjects/ASD4005/rest/ASD4005_FC_SN_R-Z.nii.gz \
42003	TD 2 1 /{subjectsDirectory}/controlsubjects/42003/rest/ASD4005_FC_SN_R-Z.nii.gz \
42004	TD 2 1 /{subjectsDirectory}/controlsubjects/42004/rest/ASD4005_FC_SN_R-Z.nii.gz \
42007	TD 2 1 /{subjectsDirectory}/controlsubjects/42007/rest/ASD4005_FC_SN_R-Z.nii.gz \
42008	TD 2 1 /{subjectsDirectory}/controlsubjects/42008/rest/ASD4005_FC_SN_R-Z.nii.gz \
42009	TD 2 1 /{subjectsDirectory}/controlsubjects/42009/rest/ASD4005_FC_SN_R-Z.nii.gz \
42010	TD 2 1 /{subjectsDirectory}/controlsubjects/42010/rest/ASD4005_FC_SN_R-Z.nii.gz \
42013	TD 2 1 /{subjectsDirectory}/controlsubjects/42013/rest/ASD4005_FC_SN_R-Z.nii.gz \
42015	TD 2 1 /{subjectsDirectory}/controlsubjects/42015/rest/ASD4005_FC_SN_R-Z.nii.gz \
42016	TD 2 1 /{subjectsDirectory}/controlsubjects/42016/rest/ASD4005_FC_SN_R-Z.nii.gz \
42019	TD 2 1 /{subjectsDirectory}/controlsubjects/42019/rest/ASD4005_FC_SN_R-Z.nii.gz \
42022	TD 2 1 /{subjectsDirectory}/controlsubjects/42022/rest/ASD4005_FC_SN_R-Z.nii.gz \
42023	TD 2 1 /{subjectsDirectory}/controlsubjects/42023/rest/ASD4005_FC_SN_R-Z.nii.gz \
42027	TD 2 1 /{subjectsDirectory}/controlsubjects/42027/rest/ASD4005_FC_SN_R-Z.nii.gz \
42029	TD 2 1 /{subjectsDirectory}/controlsubjects/42029/rest/ASD4005_FC_SN_R-Z.nii.gz \
42030	TD 2 1 /{subjectsDirectory}/controlsubjects/42030/rest/ASD4005_FC_SN_R-Z.nii.gz \
42031	TD 2 1 /{subjectsDirectory}/controlsubjects/42031/rest/ASD4005_FC_SN_R-Z.nii.gz \
42033	TD 2 1 /{subjectsDirectory}/controlsubjects/42033/rest/ASD4005_FC_SN_R-Z.nii.gz \
42035	TD 2 1 /{subjectsDirectory}/controlsubjects/42035/rest/ASD4005_FC_SN_R-Z.nii.gz \
42036	TD 2 1 /{subjectsDirectory}/controlsubjects/42036/rest/ASD4005_FC_SN_R-Z.nii.gz \
42038	TD 2 1 /{subjectsDirectory}/controlsubjects/42038/rest/ASD4005_FC_SN_R-Z.nii.gz \
42039	TD 2 1 /{subjectsDirectory}/controlsubjects/42039/rest/ASD4005_FC_SN_R-Z.nii.gz \
42040	TD 2 1 /{subjectsDirectory}/controlsubjects/42040/rest/ASD4005_FC_SN_R-Z.nii.gz \
42041	TD 2 1 /{subjectsDirectory}/controlsubjects/42041/rest/ASD4005_FC_SN_R-Z.nii.gz \
42042	TD 2 1 /{subjectsDirectory}/controlsubjects/42042/rest/ASD4005_FC_SN_R-Z.nii.gz \
TD001	TD 1 1 /{subjectsDirectory}/controlsubjects/TD001/rest/ASD4005_FC_SN_R-Z.nii.gz \
TD004	TD 1 1 /{subjectsDirectory}/controlsubjects/TD004/rest/ASD4005_FC_SN_R-Z.nii.gz \
TD012	TD 1 1 /{subjectsDirectory}/controlsubjects/TD012/rest/ASD4005_FC_SN_R-Z.nii.gz \
TD022	TD 1 1 /{subjectsDirectory}/controlsubjects/TD022/rest/ASD4005_FC_SN_R-Z.nii.gz \
TD029	TD 1 1 /{subjectsDirectory}/controlsubjects/TD029/rest/ASD4005_FC_SN_R-Z.nii.gz \
TD031	TD 1 1 /{subjectsDirectory}/controlsubjects/TD031/rest/ASD4005_FC_SN_R-Z.nii.gz \
TD033	TD 1 1 /{subjectsDirectory}/controlsubjects/TD033/rest/ASD4005_FC_SN_R-Z.nii.gz \
TD035	TD 1 1 /{subjectsDirectory}/controlsubjects/TD035/rest/ASD4005_FC_SN_R-Z.nii.gz \
TD043	TD 1 1 /{subjectsDirectory}/controlsubjects/TD043/rest/ASD4005_FC_SN_R-Z.nii.gz \
TD045	TD 1 1 /{subjectsDirectory}/controlsubjects/TD045/rest/ASD4005_FC_SN_R-Z.nii.gz \
TD051	TD 1 1 /{subjectsDirectory}/controlsubjects/TD051/rest/ASD4005_FC_SN_R-Z.nii.gz \
TD053	TD 1 1 /{subjectsDirectory}/controlsubjects/TD053/rest/ASD4005_FC_SN_R-Z.nii.gz \
TD067	TD 1 1 /{subjectsDirectory}/controlsubjects/TD067/rest/ASD4005_FC_SN_R-Z.nii.gz \
TD106E	TD 1 1 /{subjectsDirectory}/controlsubjects/TD106E/rest/ASD4005_FC_SN_R-Z.nii.gz \
TD163C	TD 1 1 /{subjectsDirectory}/controlsubjects/TD163C/rest/ASD4005_FC_SN_R-Z.nii.gz \

end

There are a few issues with the current 3dMVM script:

  • To model the interaction between scanner and group, replace the existing line:
-bsVars 'scan+group' \

with:

-bsVars 'scan*group' \
  • Since the variable scan is a categorical factor, it should be treated as such. Consequently, remove the line:
-qVars 'scan' \
  • The following specification is problematic:
-gltLabel 1 File_1vs2 -gltCode 1 'condition : 1*File : 1*1 -1*2' \ 

First, the variable condition is not part of the data structure. Second, this part 1*File does not make sense since File is a factor.

there are \ at the end of each line, for some reason the script doesnt let us copy paste it here

For optimal alignment and illustration of code content, use three backticks (```) both at the beginning and the end of the quoted script.

Gang Chen

We made the changes above and are getting this error
Screen Shot 2024-01-27 at 1.43.27 PM

Thank you SO much again for your time!!

There are probably additional space characters following the backslash in either of the following two lines:

-num_glt 2 \
-gltLabel 1 File_1vs2 -gltCode 1 'File : 1*1 scan : 1*1 -1*2' \    

To identify and rectify this issue, you may utilize the following command:

file_tool -show_bad_backslash -infile your.3dMVM.script -prefix 3dMVM.script.fixed

This command will help detect and address any problematic spacing after the backslashes in your 3dMVM script.

Gang Chen

We figured out this error but now looks like the script is erroring out due to "model test failure." We looked through the script and it looks like everything is in place and correct- could you please double check and see if our variables look okay?

Thank you so much!!

Would you be able to display the contingency tables for the three variables: scan , group , and File ? You should be able to locate these tables in the output generated when you run your 3dMVM script, just above the error message you posted.

Gang Chen

Dimensions:
rows: 75 | columns: 5

Data summary:
Variable Detected_Type Details
Subj Subjects Num Subjects=75
group Categorical Counts: ASD=37 | TD=38
scan Quantitative Min=1 | Max=2 | ? categorical ? Num levels=2
File Quantitative Min=1 | Max=1 | ? categorical ? Num levels=1
InputFile Data Number of InputFiles=75

++ Good: All InputFiles exist.

++ Good: All InputFiles have exactly 1 volume.

++ Good: All InputFiles are on the same grid.

Loading required package: lme4
Loading required package: Matrix


Welcome to afex. For support visit: http://afex.singmann.science/

  • Functions for ANOVAs: aov_car(), aov_ez(), and aov_4()
  • Methods for calculating p-values with mixed(): 'S', 'KR', 'LRT', and 'PB'
  • 'afex_aov' and 'mixed' objects can be passed to emmeans() for follow-up tests
  • Get and set global package options with: afex_options()
  • Set sum-to-zero contrasts globally: set_sum_contrasts()
  • For example analyses see: browseVignettes("afex")

Attaching package: ‘afex’

The following object is masked from ‘package:lme4’:

lmer

Loading required package: car
Loading required package: carData

++++++++++++++++++++++++++++++++++++++++++++++++++++
***** Summary information of data structure *****
75 subjects : 42003 42004 42007 42008 42009 42010 42013 42015 42016 42019 42022 42023 42027 42029 42030 42031 42033 42035 42036 42038 42039 42040 42041 42042 ASD015 ASD022 ASD029 ASD033 ASD034 ASD036 ASD037 ASD042 ASD046 ASD055 ASD056 ASD060 ASD067 ASD079 ASD148E ASD167C ASD168C ASD171C ASD181C ASD184C ASD192C ASD194C ASD200C ASD204 ASD205B ASD207B ASD300 ASD301 ASD302 ASD303 ASD304 ASD305 ASD306 ASD307 ASD308 ASD4004 ASD4005 TD001 TD004 TD012 TD022 TD029 TD031 TD033 TD035 TD043 TD045 TD051 TD053 TD106E TD163C
75 response values
2 levels for factor group : ASD TD
2 levels for factor scan : 1 2
1 levels for factor File : 1
2 post hoc tests

Contingency tables of subject distributions among the categorical variables:

, , File = 1

group

scan ASD TD
1 14 14
2 23 24

Tabulation of subjects against each of the categorical variables:

lop$nSubj vs group:
         
          ASD TD
  42003     0  1
  42004     0  1
  42007     0  1
  42008     0  1
  42009     0  1
  42010     0  1
  42013     0  1
  42015     0  1
  42016     0  1
  42019     0  1
  42022     0  1
  42023     0  1
  42027     0  1
  42029     0  1
  42030     0  1
  42031     0  1
  42033     0  1
  42035     0  1
  42036     0  1
  42038     0  1
  42039     0  1
  42040     0  1
  42041     0  1
  42042     0  1
  ASD015    1  0
  ASD022    1  0
  ASD029    1  0
  ASD033    1  0
  ASD034    1  0
  ASD036    1  0
  ASD037    1  0
  ASD042    1  0
  ASD046    1  0
  ASD055    1  0
  ASD056    1  0
  ASD060    1  0
  ASD067    1  0
  ASD079    1  0
  ASD148E   1  0
  ASD167C   1  0
  ASD168C   1  0
  ASD171C   1  0
  ASD181C   1  0
  ASD184C   1  0
  ASD192C   1  0
  ASD194C   1  0
  ASD200C   1  0
  ASD204    1  0
  ASD205B   1  0
  ASD207B   1  0
  ASD300    1  0
  ASD301    1  0
  ASD302    1  0
  ASD303    1  0
  ASD304    1  0
  ASD305    1  0
  ASD306    1  0
  ASD307    1  0
  ASD308    1  0
  ASD4004   1  0
  ASD4005   1  0
  TD001     0  1
  TD004     0  1
  TD012     0  1
  TD022     0  1
  TD029     0  1
  TD031     0  1
  TD033     0  1
  TD035     0  1
  TD043     0  1
  TD045     0  1
  TD051     0  1
  TD053     0  1
  TD106E    0  1
  TD163C    0  1

lop$nSubj vs scan:

      1 2

42003 0 1
42004 0 1
42007 0 1
42008 0 1
42009 0 1
42010 0 1
42013 0 1
42015 0 1
42016 0 1
42019 0 1
42022 0 1
42023 0 1
42027 0 1
42029 0 1
42030 0 1
42031 0 1
42033 0 1
42035 0 1
42036 0 1
42038 0 1
42039 0 1
42040 0 1
42041 0 1
42042 0 1
ASD015 1 0
ASD022 1 0
ASD029 1 0
ASD033 1 0
ASD034 1 0
ASD036 1 0
ASD037 1 0
ASD042 1 0
ASD046 1 0
ASD055 1 0
ASD056 1 0
ASD060 1 0
ASD067 1 0
ASD079 1 0
ASD148E 0 1
ASD167C 0 1
ASD168C 0 1
ASD171C 0 1
ASD181C 0 1
ASD184C 0 1
ASD192C 0 1
ASD194C 0 1
ASD200C 0 1
ASD204 0 1
ASD205B 0 1
ASD207B 0 1
ASD300 0 1
ASD301 0 1
ASD302 0 1
ASD303 0 1
ASD304 0 1
ASD305 0 1
ASD306 0 1
ASD307 0 1
ASD308 0 1
ASD4004 0 1
ASD4005 0 1
TD001 1 0
TD004 1 0
TD012 1 0
TD022 1 0
TD029 1 0
TD031 1 0
TD033 1 0
TD035 1 0
TD043 1 0
TD045 1 0
TD051 1 0
TD053 1 0
TD106E 1 0
TD163C 1 0

lop$nSubj vs File:
         
          1
  42003   1
  42004   1
  42007   1
  42008   1
  42009   1
  42010   1
  42013   1
  42015   1
  42016   1
  42019   1
  42022   1
  42023   1
  42027   1
  42029   1
  42030   1
  42031   1
  42033   1
  42035   1
  42036   1
  42038   1
  42039   1
  42040   1
  42041   1
  42042   1
  ASD015  1
  ASD022  1
  ASD029  1
  ASD033  1
  ASD034  1
  ASD036  1
  ASD037  1
  ASD042  1
  ASD046  1
  ASD055  1
  ASD056  1
  ASD060  1
  ASD067  1
  ASD079  1
  ASD148E 1
  ASD167C 1
  ASD168C 1
  ASD171C 1
  ASD181C 1
  ASD184C 1
  ASD192C 1
  ASD194C 1
  ASD200C 1
  ASD204  1
  ASD205B 1
  ASD207B 1
  ASD300  1
  ASD301  1
  ASD302  1
  ASD303  1
  ASD304  1
  ASD305  1
  ASD306  1
  ASD307  1
  ASD308  1
  ASD4004 1
  ASD4005 1
  TD001   1
  TD004   1
  TD012   1
  TD022   1
  TD029   1
  TD031   1
  TD033   1
  TD035   1
  TD043   1
  TD045   1
  TD051   1
  TD053   1
  TD106E  1
  TD163C  1

***** End of data structure information *****
++++++++++++++++++++++++++++++++++++++++++++++++++++

Reading input files now...

Reading input files: Done!


Range of input data: [-1.099, 2.606]

If the program hangs here for more than, for example, half an hour,
kill the process because the model specification or the GLT coding
is likely inappropriate.

~~~~~~~~~~~~~~~~~~~ Model test failed! ~~~~~~~~~~~~~~~~~~~
Possible reasons:

0) Make sure that R packages afex and phia have been installed. See the 3dMVM
help documentation for more details.

1) Inappropriate model specification with options -bsVars, -wsVars, or -qVars.
Note that within-subject or repeated-measures variables have to be declared
with -wsVars.

2) Incorrect specifications in general linear test coding with -gltCode.

3) Mistakes in data table. Check the data structure shown above, and verify
whether there are any inconsistencies.

4) Inconsistent variable names which are case sensitive. For example, factor
named Group in model specification and then listed as group in the table header
would cause grief for 3dMVM.

5) Not enough number of subjects. This may happen when there are two or more
within-subject factors. For example, a model with two within-subject factors with
m and n levels respectively requires more than (m-1)*(n-1) subjects to be able to
model the two-way interaction with the multivariate approach.


** Error: 
   Quitting due to model test failure...
end: Not in while/foreach.
logout

[Process completed]

The rationale for including the variable File in the data analysis is unclear as it does not vary. Assuming there is no coding mistake, I recommend removing File from your 3dMVM script and replacing the following lines:

-wsVars 'File' \
-qVars 'scan' \
-num_glt 2 \
-gltLabel 1 File_1vs2 -gltCode 1 'File : 1*1 scan : 1*1 -1*2' \    
-gltLabel 2 groupvsscan_interaction -gltCode 2 'group : 1*ASD -1*TD scan : 1*1 -1*2' \

with:

-qVars 'scan' \
-num_glt 2 \
-gltLabel 1 scan_1vs2 -gltCode 1 'scan : 1*1 -1*2' \    
-gltLabel 2 groupvsscan_interaction -gltCode 2 'group : 1*ASD -1*TD scan : 1*1 -1*2' \

Gang Chen

Hello! Thank you so much! this script worked.
Question:

Typically, we would run paired sample 3dttest++ to compare connectivity patterns between asd and controls. Is there a way to do similar but with the 3dMVM?

We got 1 output file from the 3dMVM script above, but still need to compare asd vs controls for cluster patterns. Would it make sense to run each group separately and then to run a paired sample t-test? If so, could we incorporate the comparisons in 3dMVM or would we use 3dttest++ with the output of 3dMVM?

To clarify the terminology, the comparison between two groups of individuals (e.g., ASD vs controls in your case) would be referred to as a two-sample Student t-test, as opposed to a paired test. You can incorporate an additional comparison into your initial 3dMVM script as illustrated below:

-num_glt 3 \
...    
-gltLabel 3 asd.vs.td -gltCode 3 'group : 1*ASD -1*TD' \

Gang Chen

Hi there,

Thank you so much for helping us out with the script! Our analysis looks good to go. Question: it looks like our 3dMVM output is removing some of our anticorrelations. (we're seeing positive and negative clusters when we dont control for site, but when we do control for site, we're only seeing positive clusters). Why is this happening? Is this an expected result?

Thank you!