3dMVM - event related design

Dear AFNI experts,

We have data from a event-related experiment.

  • The average duration of trials is 14 seconds (11.5 - 16.5 s);
  • There are two events: Stimulus and Response. Stimulus starts at trial onset; Response starts 4.5, 5 or 5.5 seconds after trial onset.
  • Individual level analysis: we are considering both a TENT (11 basis functions) and a GAM (Stimulus and Response regressors) approach.

While 3dMVM seems really appropriate to analyze TENT results at the group level, I was wondering if it would be appropriate to analyze also results from the GAM GLM with 3dMVM. My question is: can the two betas associated with the two regressors (Stimulus and Response) be considered multiple response functions (and be better analyzed in a single model with 3dMVM)?

Useful note. There is no collinearity in the GAM approach; the two activation maps are different and coherent with what was expected.
May-be-useful note. 2x2 factorial paradigm (2 voice types x 2 trial types).

Thanks,
Simone

Simone,

May-be-useful note. 2x2 factorial paradigm (2 voice types x 2 trial types).

Sure you can use 3dMVM for this scenario. However, 3dANOVA3 -type 4 would be much faster, and the two approaches should give you the same result.

Thanks Gang for your answer.

However, I still have this doubt: can the two betas associated with the two regressors (Stimulus and Response, modeled at the individual level using GAM functions) be considered multiple response functions (better analyzed in a single model with 3dMVM)?

EDIT: ok, I think you mean using 3dANOVA3 and treating the two regressors (Stimulus, Response) as a random factor. Is that so?

Simone

I still have this doubt: can the two betas associated with the two regressors (Stimulus and Response, modeled at the individual level
using GAM functions) be considered multiple response functions (better analyzed in a single model with 3dMVM)?

I’m confused with your description as well. My suggestion was simply based on the fact you mentioned a 2x2 factorial paradigm. However, it remains unclear to me what exactly those two factors are. Could you describe the data structure in more details? How many effect estimates do you for each subject that go into the group analysis?

Thanks Gang,

In the GAM approach, for each subject I estimated:

  1. the activity associated with the stimulus presentation;
  2. the activity associated with the motor response.

Important infos:

  • The two are both estimated using the function GAM in 3DDeconvolve;
  • There is no collinearity between regressors. And the two activation maps (at the single subject level) are different, and coherent with what was expected.
  • It is a 2x2 factorial paradigm, so there are 4 conditions.

Question:
It is legitimate to treat the activity associated with the two events as multiple response functions (stimulus = T0; response = T1), analyzing them in 3dMVM?

Hope it is clearer now!
Simone

  1. the activity associated with the stimulus presentation;
  2. the activity associated with the motor response.

Is the reason you have a 2 x 2 structure because each of the two stimulus presentations is associated with one motor response?

  • It is a 2x2 factorial paradigm, so there are 4 conditions.

If you consider those 4 conditions as a 2 x 2 structure, then it’s a two-way within-subject (or repeated-measures) ANOVA, which can be directly handled by 3dANOVA3 -type 4. Of course, you can also use 3dMVM, but it would take much longer runtime.

Unless it’s not really a 2 x 2 factorial structure.

Thanks for your answer,

Is the reason you have a 2 x 2 structure because each of the two stimulus presentations is associated with one motor response?

I’m sorry I wasn’t clear. No, there are 4 runs, and each run represents a condition:

  • First run (first condition): factor I level A, factor II level A;
  • Second run (second condition): factor I level A, factor II level B;
  • Third run (third condition): factor I level B, factor II level A;
  • Fourth run (fourth condition): factor I level B, factor II level B.

Within each run, there are 32 trials. Each trial has two events: STIMULUS presentation and RESPONSE.

I understand the rationale of using 3dANOVA3 -type 4, and i agree it is an optimal model. But in 3dANOVA3 I will use as a dependent variable the estimated activity during STIMULUS or the estimated activity during RESPONSE. Not both (as far as I understand).
I am still wondering if 3dMVM would instead allow me to use as inputs the betas associated with both STIMULI and RESPONSE.


In the attempt of being exhaustive, I attach a single-subject 3dDeconvolve generated with afni.proc.py and putative group analysis with 3dANOVA3 and 3dMVM (using only 2 subjects to spare space)

SINGLE SUBJECT GLM:


3dDeconvolve -input pb05.$subj.r*.scale+tlrc.HEAD                             \
    -mask mask_group+tlrc                                                                  \
    -ortvec ROIPC.Svent.r01.1D ROIPC.Svent.r01                                \
    -ortvec ROIPC.Svent.r02.1D ROIPC.Svent.r02                                \
    -ortvec ROIPC.Svent.r03.1D ROIPC.Svent.r03                                \
    -ortvec ROIPC.Svent.r04.1D ROIPC.Svent.r04                                \
    -polort 3                                                                                         \
    -num_stimts 32                                                                              \
    -stim_times 1 stimuli/On_S2_SA_Stim.1D 'GAM'                             \
    -stim_label 1 SA_Stim                                                                    \
    -stim_times 2 stimuli/On_S2_SA_Resp.1D 'GAM'                            \
    -stim_label 2 SA_Resp                                                                   \
    -stim_times 3 stimuli/On_S2_SNA_Stim.1D 'GAM'                           \
    -stim_label 3 SNA_Stim                                                                  \
    -stim_times 4 stimuli/On_S2_SNA_Resp.1D 'GAM'                          \
    -stim_label 4 SNA_Resp                                                                 \
    -stim_times 5 stimuli/On_S2_NSA_Stim.1D 'GAM'                           \
    -stim_label 5 NSA_Stim                                                                  \
    -stim_times 6 stimuli/On_S2_NSA_Resp.1D 'GAM'                          \
    -stim_label 6 NSA_Resp                                                                 \
    -stim_times 7 stimuli/On_S2_NSNA_Stim.1D 'GAM'                         \
    -stim_label 7 NSNA_Stim                                                                \
    -stim_times 8 stimuli/On_S2_NSNA_Resp.1D 'GAM'                        \
    -stim_label 8 NSNA_Resp                                                                         \
    -stim_file 9 mot_demean.r01.1D'[0]' -stim_base 9 -stim_label 9 roll_01          \
    -stim_file 10 mot_demean.r01.1D'[1]' -stim_base 10 -stim_label 10 pitch_01  \
    -stim_file 11 mot_demean.r01.1D'[2]' -stim_base 11 -stim_label 11 yaw_01    \
    -stim_file 12 mot_demean.r01.1D'[3]' -stim_base 12 -stim_label 12 dS_01     \
    -stim_file 13 mot_demean.r01.1D'[4]' -stim_base 13 -stim_label 13 dL_01      \
    -stim_file 14 mot_demean.r01.1D'[5]' -stim_base 14 -stim_label 14 dP_01     \
    -stim_file 15 mot_demean.r02.1D'[0]' -stim_base 15 -stim_label 15 roll_02     \
    -stim_file 16 mot_demean.r02.1D'[1]' -stim_base 16 -stim_label 16 pitch_02  \
    -stim_file 17 mot_demean.r02.1D'[2]' -stim_base 17 -stim_label 17 yaw_02   \
    -stim_file 18 mot_demean.r02.1D'[3]' -stim_base 18 -stim_label 18 dS_02     \
    -stim_file 19 mot_demean.r02.1D'[4]' -stim_base 19 -stim_label 19 dL_02     \
    -stim_file 20 mot_demean.r02.1D'[5]' -stim_base 20 -stim_label 20 dP_02     \
    -stim_file 21 mot_demean.r03.1D'[0]' -stim_base 21 -stim_label 21 roll_03    \
    -stim_file 22 mot_demean.r03.1D'[1]' -stim_base 22 -stim_label 22 pitch_03  \
    -stim_file 23 mot_demean.r03.1D'[2]' -stim_base 23 -stim_label 23 yaw_03   \
    -stim_file 24 mot_demean.r03.1D'[3]' -stim_base 24 -stim_label 24 dS_03     \
    -stim_file 25 mot_demean.r03.1D'[4]' -stim_base 25 -stim_label 25 dL_03     \
    -stim_file 26 mot_demean.r03.1D'[5]' -stim_base 26 -stim_label 26 dP_03     \
    -stim_file 27 mot_demean.r04.1D'[0]' -stim_base 27 -stim_label 27 roll_04     \
    -stim_file 28 mot_demean.r04.1D'[1]' -stim_base 28 -stim_label 28 pitch_04  \
    -stim_file 29 mot_demean.r04.1D'[2]' -stim_base 29 -stim_label 29 yaw_04   \
    -stim_file 30 mot_demean.r04.1D'[3]' -stim_base 30 -stim_label 30 dS_04     \
    -stim_file 31 mot_demean.r04.1D'[4]' -stim_base 31 -stim_label 31 dL_04     \
    -stim_file 32 mot_demean.r04.1D'[5]' -stim_base 32 -stim_label 32 dP_04     \
    -fout -tout -x1D X.xmat.1D -xjpeg X.jpg                       \
    -errts errts.${subj}                                                      \
    -bucket stats.$subj

GROUP ANALYSIS USING 3dANOVA3 - only using RESPONSE as dependent variable:


3dANOVA3 	\
-type 4		\
-alevels 2   	\
-blevels 2  	\
-clevels 2  	\
-dset 1 1 1 'S1/SoA_S1_GAM.results/stats.SoA_S1_GAM+tlrc[4]'   \
-dset 1 1 2 'S2/SoA_S2_GAM.results/stats.SoA_S2_GAM+tlrc[4]'   \
-dset 1 2 1 'S1/SoA_S1_GAM.results/stats.SoA_S1_GAM+tlrc[10]' \
-dset 1 2 2 'S2/SoA_S2_GAM.results/stats.SoA_S2_GAM+tlrc[10]' \
-dset 2 1 1 'S1/SoA_S1_GAM.results/stats.SoA_S1_GAM+tlrc[16]' \
-dset 2 1 2 'S2/SoA_S2_GAM.results/stats.SoA_S2_GAM+tlrc[16]' \
-dset 2 2 1 'S1/SoA_S1_GAM.results/stats.SoA_S1_GAM+tlrc[22]' \
-dset 2 2 2 'S2/SoA_S2_GAM.results/stats.SoA_S2_GAM+tlrc[22]' \
-amean 1 S 		\
-amean 2 NS 	        \
-bmean 1 A 	        \
-bmean 2 NA 	        \
-acontr 1 -1 S-NS	\
-bcontr 1 -1 A-NA 	\
-fa SSS 		\
-fb AAA		\
-fab SSSxAAA	\
-bucket ANOVA_results

GROUP ANALYSIS USING 3dMVM - note that there are both STIMULUS (t1) and RESPONSE (t2) as dependent variables:


3dMVM				        \
-prefix MVM_MultFun_results	\
-wsVars "run*condition*Time"	\
-bsVars 1           			\
-SS_type 3        		  	\
-mask GroupMask+tlrc		\
-dataTable					\
Subj	        run	condition	       Time	InputFile						\
s1		S	A			t1	'S1/SoA_S1_GAM.results/stats.SoA_S1_GAM+tlrc[1]' 	\
s1		S	NA			t1	'S1/SoA_S1_GAM.results/stats.SoA_S1_GAM+tlrc[7]' 	\
s1		NS	A			t1	'S1/SoA_S1_GAM.results/stats.SoA_S1_GAM+tlrc[13]'	\
s1		NS	NA			t1	'S1/SoA_S1_GAM.results/stats.SoA_S1_GAM+tlrc[19]'	\
s2		S	A			t1	'S2/SoA_S2_GAM.results/stats.SoA_S2_GAM+tlrc[1]' 	\
s2		S	NA			t1	'S2/SoA_S2_GAM.results/stats.SoA_S2_GAM+tlrc[7]'	        \
s2		NS	A			t1	'S2/SoA_S2_GAM.results/stats.SoA_S2_GAM+tlrc[13]'	\
s2		NS	NA			t1	'S2/SoA_S2_GAM.results/stats.SoA_S2_GAM+tlrc[19]'	\
s1		S	A			t2	'S1/SoA_S1_GAM.results/stats.SoA_S1_GAM+tlrc[4]'	        \
s1		S	NA			t2	'S1/SoA_S1_GAM.results/stats.SoA_S1_GAM+tlrc[10]'	\
s1		NS	A			t2	'S1/SoA_S1_GAM.results/stats.SoA_S1_GAM+tlrc[16]'	\
s1		NS	NA			t2	'S1/SoA_S1_GAM.results/stats.SoA_S1_GAM+tlrc[22]'	\
s2		S	A			t2	'S2/SoA_S2_GAM.results/stats.SoA_S2_GAM+tlrc[4]'	        \
s2		S	NA			t2	'S2/SoA_S2_GAM.results/stats.SoA_S2_GAM+tlrc[10]'	\
s2		NS	A			t2	'S2/SoA_S2_GAM.results/stats.SoA_S2_GAM+tlrc[16]'	\
s2		NS	NA			t2	'S2/SoA_S2_GAM.results/stats.SoA_S2_GAM+tlrc[22]'	

Thanks for your patience.
Simone

OK, you have a 2 x 2 x 2, not 2 x 2, data structure. Indeed, 3dMVM is the way to go.