random effect, fixed effect and linear mixed model group analysis

Hi AFNI team,
I am currently working on a group-level fMRI analysis involving 7 participants, and unfortunately it is special population. So it is hard to collect more. I did group analysis with 3dttest++ with -clustsim parameter and results seemed weak. And then I change it to 3dLME using a linear mixed model and it is better. However, there are previous reseaches used fixed-effect model to do group analysis.
My question is: 1) what is the approriate way for us to deal with small sample size group analysis in afni, linear mix model or fix effect model?
2) if a fix effect model is used for group analysis in afni, what is the recommended or standard way to do it?
Given the constraints on data collection, our goal is to conduct most robust and reliable analysis possible with available data. Your guidance will be greatly appreciated in helping us to dertermine and implement the best method.

Thank you for your support and help!

Could you share your 3dttest++ and 3dLME scripts?

Gang Chen

Yes, Sure.
Here is the script for linear mixed model group analysis.

3dLME -prefix ID_LME_bodymap.nii.gz -jobs 8 \
      -mask /mnt/mydisk/ACTIONDATA/Mototopy_results_SPMG2/D01.body.results/mask_group+tlrc \
      -model "cond" \
       -ranEff "~1" \
       -SS_type 3 \
       -num_glt 4 \
       -gltLabel 1 'foot_vs_others'     -gltCode 1 'cond : 1.5*R_foot_adduct +1.5*R_foot_flex -1*R_shoulder_move -1*stomach -1*mouth' \
       -gltLabel 2 'shoulder_vs_others' -gltCode 2 'cond : 3*R_shoulder_move -0.5*R_foot_adduct +0.5*R_foot_flex -1*stomach -1*mouth' \
      -gltLabel 3 'stomach_vs_others'  -gltCode 3 'cond : 3*stomach -0.5*R_foot_adduct -0.5*R_foot_flex -1*R_shoulder_move -1*mouth' \
      -gltLabel 4 'mouth_vs_others'    -gltCode 4 'cond : 3*mouth -0.5*R_foot_adduct -0.5*R_foot_flex -1*R_shoulder_move -1*stomach' \
       -dataTable  @ID_bodymap.txt 

3dttest++ script:

3dttest++ -prefix ID_stomach_selectivity.nii.gz  -AminusB -paired -ClustSim \
    -mask /mnt/mydisk/ACTIONDATA/Mototopy_results_SPMG2/D01.body.results/mask_group+tlrc \
    -setA stomach                               \
    01 "/mnt/mydisk/ACTIONDATA/Mototopy_results_SPMG2/D01.body.results/stats.D01_REML+tlrc[stomach#0_Coef]" \
    02 "/mnt/mydisk/ACTIONDATA/Mototopy_results_SPMG2/D02.body.results/stats.D02_REML+tlrc[stomach#0_Coef]" \
    03 "/mnt/mydisk/ACTIONDATA/Mototopy_results_SPMG2/D04.body.results/stats.D04_REML+tlrc[stomach#0_Coef]" \
    04 "/mnt/mydisk/ACTIONDATA/Mototopy_results_SPMG2/D06.body.results/stats.D06_REML+tlrc[stomach#0_Coef]" \
    05 "/mnt/mydisk/ACTIONDATA/Mototopy_results_SPMG2/D07.body.results/stats.D07_REML+tlrc[stomach#0_Coef]" \
    06 "/mnt/mydisk/ACTIONDATA/Mototopy_results_SPMG2/D08.body.results/stats.D08_REML+tlrc[stomach#0_Coef]" \
    07 "/mnt/mydisk/ACTIONDATA/Mototopy_results_SPMG2/D09.body.results/stats.D09_REML+tlrc[stomach#0_Coef]" \
   -setB OTHER4   \
    01 "/mnt/mydisk/ACTIONDATA/Mototopy_results_SPMG2/D01.body.results/Foot+Shoulder+mouth.nii.gz " \
    02 "/mnt/mydisk/ACTIONDATA/Mototopy_results_SPMG2/D02.body.results/Foot+Shoulder+mouth.nii.gz " \
    03 "/mnt/mydisk/ACTIONDATA/Mototopy_results_SPMG2D04.body.results/Foot+Shoulder+mouth.nii.gz " \
    04 "/mnt/mydisk/ACTIONDATA/Mototopy_results_SPMG2/D06.body.results/Foot+Shoulder+mouth.nii.gz " \
    05 "/mnt/mydisk/ACTIONDATA/Mototopy_results_SPMG2/D07.body.results/Foot+Shoulder+mouth.nii.gz " \
    06 "/mnt/mydisk/ACTIONDATA/Mototopy_results_SPMG2/D08.body.results/Foot+Shoulder+mouth.nii.gz " \
    07 "/mnt/mydisk/ACTIONDATA/Mototopy_results_SPMG2D09.body.results/Foot+Shoulder+mouth.nii.gz "

Did you compare the result from the following 3dLME model estimation:

  -gltLabel 3 'stomach_vs_others'  -gltCode 3 'cond : 3*stomach -0.5*R_foot_adduct -0.5*R_foot_flex -1*R_shoulder_move -1*mouth' \

with the 3dttest++ output?

If so, could you explain exactly how you computed the input files for the OTHER4 component for each individual?

Gang Chen

Yes, I do compare the results from 3dLME and 3dttest++, and the results from 3dLME seem better.
The name of other4 actually is the average of foot, shoulder and mouth action.

3dcalc -c stats.D01_REML+tlrc[R_foot_adduct#0_Coef] -d stats.D01_REML+tlrc[R_foot_flex#0_Coef]\
    -expr '(c+d)/2' -prefix Foot_R_avgaction.nii.gz

3dcalc  -b Foot_R_avgaction.nii.gz \
    -c stats.D01_REML+tlrc[R_shoulder_move#0_Coef] -d stats.D01_REML+tlrc[mouth#0_Coef] \
    -expr '(b+c+d)/3' -prefix Foot+Shoulder+mouth.nii.gz

the results from 3dLME seem better

In what sense is the 3dLME result better than 3dttest++? Do you mean that the two approaches show a similar pattern, but 3dLME tends to provide somewhat stronger statistical evidence?

Regarding the difference between models with "fixed" versus "random" effects: Results from a model with random effects can be generalized to a broader conceptual population, while results from a model with only fixed effects are confined to the specific recruited participants. In other words, the model with random effects offers much more powerful interpretability.

In general, conventional approaches for adjusting for multiple testing (e.g., the -clustsim option in 3dttest++) are often excessively conservative and tend to overly penalize the results. You can find a more detailed discussion in this blog post.

Gang Chen

Yes, they seem similar, but 3dLME seems to have more activation, kind of.
Thank you for your help! I will read about it.