3dClustSim: small cluster size, almost all brain covered by significant clusters (?)

Hello everyone,

I ran an lmervoxel (lmerTest on each voxel) on 1st-level SPM contrast images and took the residuals (one residual x model x voxel x 68 of my files) and entered them into 3dFWHMx. I then input the 3 output numbers and ran 3dClustSim with -athr 0.05 and -pthr 0.001. For all approaches and sidedness, I obtained rather small cluster sizes (e.g. 12.5 with the 2-sided threshold and -NN3). When I plotted the results, I got a brain with small, significant clusters everywhere.

I checked if something had gone wrong in the preprocessing, but the images looked fine. However, I did have also at the subject level rather sparse and small clusters in the majority of files. Am I doing something wrong in the statistical tests described above?

If anyone can help, I'd greatly appreciate it.

Thanks a lot in advance!


I'm curious what these residuals are that are being input into 3dFWHMx. I am used to seeing this being the residuals of single subject modeling, within a brain mask, for each subject in a study; then one might take the average of each component across subjects, or some respresentative trio of numbers---and those should be quite similar across subjects acquired on the same scanner and with the same settings. The idea with clustering is that one wants to use the average smoothness across the brain---as estimated by the spatial autocorrelation of residual time series, which should represent noise---to estimate a minimal size of blob with particular properties: it should be rare that blobs bigger than that special one occur by chance when thresholded at the chosen values.

I'm not exactly sure what the following means: one residual x model x voxel x 68 of my files. It sounds pretty different, like taking one scalar value for each subject at each voxel, and concatenating those together as a kind of residual? Does that allow for the same interpretation for estimation spatial extent of smoothness? Certainly, you would have to be sure to use "-detrend" within 3dFWHMx, as well as a mask.


Thank you very much for the very clear answer.

We will then, as you suggested, run the 3dFWHMx on a per-subject basis, save the results in a matrix for each subject, and then average across subjects for each of the 3 numbers needed to generate the autocorrelation function.

We also decided that, as we are using the cluster correction in afni, it's perhaps better to do everything in afni too and run an 3dLMEr. Any chance you would have time to tell us if the following model we created is correct?

In case, we have a dataset of 40 healthy controls anaesthetised with propofol; while they are anaesthetised and unresponsive, we deliver some sounds (an oddball paradigm). Then, we wake them up and ask them whether they heard the sounds (if they replied "yes" they are labelled as 'connected participants') or not (labelled as 'disconnected participants'). Participants go through this procedure, if their vital parameters allow, twice (for two sessions). It follows that for some subjects we collected only one session (because experiment had to be stopped due to problems with anaesthesia). Our goal is to investigate differences in sound processing between connected and disconnected participants.

Given the design, the same subjects can be connected in session 2 but maybe disconnected in session 1. Hence, we have the group (connected or disconnected) that varies both between and within-subject.
In summary, we have the following contrasts (variables) of interest:

  • propofol concentration (changing across sessions and subjects)
  • number of session (one or two)
  • group (connected (CC) or disconnected (DC))
  • gender
  • type of stimulus (whether deviant or standard)

We thought to define the model as following:

3dLMEr -prefix LME -jobs 8                       \
          -mask Bin_combined_mask_fsl.nii                           \
          -model  'Group*Propofol_Concentration*Stimulus_type + Gender + Session + (1|Subject)'        \
          -SS_type 3                                  \
          -bounds -2 2                                \
          -gltCode CC      ‘Group : 1*CC_impure’                      \
          -gltCode DC      ‘Group : 1*DC_impure’                       \
          -gltCode CC-DC  ‘Group : 1*CC_impure -1*DC_impure’                \
          -gltCode DC-CC  ‘Group : 1*DC_impure -1*CC_impure’                \
          -gltCode CC_prop  ‘Group : 1*CC_impure Propofol_Concentration :’     \
          -glfCode DC_prop  ‘Group : 1*DC_impure Propofol_Concentration :’ \
          -gltCode CC_dev  ‘Group : 1*CC_impure Deviant:’     \
          -gltCode DC_dev  ‘Group : 1*DC_impure Deviant:’     \
          - gltCode CC_std  ‘Group : 1*CC_impure Standard:’     \
          - gltCode DC_std  ‘Group : 1*DC_impure Standard:’     \
          -dataTable                                  \

And we also wanted to specify a contrast that computed the difference between standard and deviant sounds and how this difference 'differs' between CC and DC - i.e., (CC_std-dev) - (DC_std-dev). This would allow us to see whether the difference in processing between these two types of sounds increases as a function of connectedness. But we're unsure on how to specify it..

If you could help us improve the current model, we would be beyond grateful..

Thanks a lot in advance for your time and help :)

If I understand correctly, session is the only within-individual factor (for some participants).

The last four contrast lines need to be modified as follows:

          -gltCode CC_dev  ‘Group : 1*CC_impure Stimulus_type 
 1*Deviant’     \
          -gltCode DC_dev  ‘Group : 1*DC_impure Stimulus_type 
 1*Deviant’     \
          -gltCode CC_std  ‘Group : 1*CC_impure Stimulus_type 
 1*Standard’     \
          -gltCode DC_std  ‘Group : 1*DC_impure Stimulus_type 
 1*Standard’     \

Gang Chen

Hi Gang,
thanks a lot for your answer.

Also Stimulus_type is a within-subject factor (for all participants).

We incorporated your feedback and added the subtraction contrast, and now have the following model (adding qvars for propofol concentration too):

3dLMEr -prefix LMEr -jobs 12 \
 -dbgArgs \
 -mask bin_combined_1st_level_mask_01.nii \
 -model  'Group*Propofol_Concentration*Stimulus_type+Gender+Session+(1|Subj)' \
 -resid residual.nii \
 -SS_type 3 \
 -qVars 'Propofol_Concentration' \
 -gltCode CC 'Group : 1*CC_impure' \
 -gltCode DC 'Group : 1*DC_impure' \
 -gltCode CC-DC 'Group : 1*CC_impure -1*DC_impure' \
 -gltCode DC-CC 'Group : 1*DC_impure -1*CC_impure' \
 -gltCode CC_prop 'Group : 1*CC_impure Propofol_Concentration :' \
 -glfCode DC_prop 'Group : 1*DC_impure Propofol_Concentration :' \
 -gltCode CC_dev 'Group : 1*CC_impure Stimulus_type : 1*Deviant' \
 -gltCode DC_dev 'Group : 1*DC_impure Stimulus_type : 1*Deviant' \
 -gltCode CC_std 'Group : 1*CC_impure Stimulus_type : 1*Standard' \
 -gltCode DC_std 'Group : 1*DC_impure Stimulus_type : 1*Standard' \
 -gltCode Dev-Std 'Group : 1*DC_impure & 1*CC_impure Stimulus_type : 1*Deviant -1*Standard' \
 -gltCode Std-Dev 'Group : 1*DC_impure & 1*CC_impure Stimulus_type : 1*Standard -1*Deviant' \
 -gltCode Dev-Std_DC-CC 'Group : 1*DC_impure -1*CC_impure Stimulus_type : 1*Deviant -1*Standard' \
 -gltCode Dev-Std_CC-DC 'Group : 1*CC_impure -1*DC_impure Stimulus_type : 1*Deviant -1*Standard' \
 -dataTable @3dLMER_dev_std_categorial.txt

Now we have 36 images as output.. I found a tutorial where you explained how to visualize these in AFNI. Usually you used as underlay the contrast and as threshold the Zscores for that contrast..If I want to show the chi square results, which threshold should I use?

Thanks a lot in advance for your help :)

Also Stimulus_type is a within-subject factor (for all participants).

In that case, consider the following model (see more discussion about model specification here):

3dLMEr -prefix LMEr -jobs 12 \
 -model  'Group*Propofol_Concentration*Stimulus_type+Gender+Session+(1|Subj)+(1|Subj:Stimulus_type)+(1|Subj:Session)' \
 -qVars 'Propofol_Concentration' \

If I want to show the chi square results, which threshold should I use?

In general, I suggest a voxel-level p-value of 0.01 and a cluster-level threshold (e.g., 20 voxels). Then, adopt a highlight, but don't hide approach in result reporting.

Gang Chen