Choosing the best model after MVM test

Dear AFNI experts,
After having obtained the output from 3dMVM how i can choose the best F statistical model to be used for post-hoc comparisons?

you can find below both the MVM command script and the “3dinfo” command output. As you can see there are different F statistical models and we want to define which model is the most appropriate. Is there a way to compare all the different F statistical models coming out from the 3dMVM command?

In R, we used to compare different GLM models using the command ANOVA and then choose the one that is statistically more robust. Is there something similar in AFNI?

in addition to that would you mind to explain what “statpar = 1 30” means? we understood that is showing the dof but where the numbers “1” and “30” come from?

thank you very much for your response

P.


[MVM command script]

3dMVM -prefix MVM_test -jobs 6
-bsVars ‘GroupSexage’
-wsVars “Run”
-qVars “age”
-num_glt 16
-gltLabel 1 Group_sham_vs_omt -gltCode 1 ‘Group : 1SHAM -1OMT’
-gltLabel 2 Group_male_vs_female -gltCode 2 ‘Group : 1SHAM -1OMT Sex : 1M -1F’
-gltLabel 3 Group_age_sham_vs_omt -gltCode 3 ‘Group : 1SHAM -1OMT age :’
-gltLabel 4 3way_interaction -gltCode 4 ‘Group : 1SHAM -1OMT Sex : 1M -1F age :’
-gltLabel 5 OMT_runs0 -gltCode 5 ‘Group : 1OMT Run : 1run0’
-gltLabel 6 OMT_runs1 -gltCode 6 ‘Group : 1OMT Run : 1run1’
-gltLabel 7 OMT_runs2 -gltCode 7 ‘Group : 1OMT Run : 1run2’
-gltLabel 8 OMT_runs3 -gltCode 8 ‘Group : 1OMT Run : 1run3’
-gltLabel 9 OMT_runs4 -gltCode 9 ‘Group : 1OMT Run : 1run4’
-gltLabel 10 SHAM_runs0 -gltCode 10 ‘Group : 1SHAM Run : 1run0’
-gltLabel 11 SHAM_runs1 -gltCode 11 ‘Group : 1SHAM Run : 1run1’
-gltLabel 12 SHAM_runs2 -gltCode 12 ‘Group : 1SHAM Run : 1run2’
-gltLabel 13 SHAM_runs3 -gltCode 13 ‘Group : 1SHAM Run : 1run3’
-gltLabel 14 SHAM_runs4 -gltCode 14 ‘Group : 1SHAM Run : 1run4’
-gltLabel 15 OMT_runs -gltCode 15 ‘Group : 1OMT Run : 1run0 -1run1 & 1run1 -1run2 & 1run0 -1run2 & 1run0 -1run3 & 1run1 -1run3 & 1run2 -1run3 & 1run0 -1run4 & 1run1 -1run4 & 1run2 -1run4 & 1run3 -1run4’
-gltLabel 16 SHAM_runs -gltCode 16 'Group : 1
SHAM Run : 1run0 -1run1 & 1run1 -1run2 & 1run0 -1run2 & 1run0 -1run3 & 1run1 -1run3 & 1run2 -1run3 & 1run0 -1run4 & 1run1 -1run4 & 1run2 -1run4 & 1run3 -1run4’
-dataTable

[3dinfo command output]

++ 3dinfo: AFNI version=AFNI_16.3.06 (Oct 31 2016) [64-bit]

Dataset File: MVM_test+tlrc
Identifier Code: XYZ_a5jM6WB16c964o0OF36u2x Creation Date:
Template Space: TLRC
Dataset Type: Func-Bucket (-fbuc)
Byte Order: LSB_FIRST [this CPU native = LSB_FIRST]
Storage Mode: BRIK
Storage Space: 26,076,768 (26 million [mega]) bytes
Geometry String: “MATRIX(3,0,0,-89.5,0,-3,0,125.5,0,0,3,-71.5):61,73,61”
Data Axes Tilt: Plumb
Data Axes Orientation:
first (x) = Right-to-Left
second (y) = Posterior-to-Anterior
third (z) = Inferior-to-Superior [-orient RPI]
R-to-L extent: -89.500 [R] -to- 90.500 [L] -step- 3.000 mm [ 61 voxels]
A-to-P extent: -90.500 [A] -to- 125.500 [P] -step- 3.000 mm [ 73 voxels]
I-to-S extent: -71.500 [I] -to- 108.500 [S] -step- 3.000 mm [ 61 voxels]
Number of values stored at each pixel = 48
– At sub-brick #0 ‘(Intercept) F’ datum type is short: 0 to 32767 [internal]
[* 0.00305185] 0 to 100 [scaled]
statcode = fift; statpar = 1 30
– At sub-brick #1 ‘Group F’ datum type is short: 0 to 32767 [internal]
[* 0.000692395] 0 to 22.6877 [scaled]
statcode = fift; statpar = 1 30
– At sub-brick #2 ‘Sex F’ datum type is short: 0 to 32767 [internal]
[* 0.000799937] 0 to 26.2115 [scaled]
statcode = fift; statpar = 1 30
– At sub-brick #3 ‘age F’ datum type is short: 0 to 32767 [internal]
[* 0.000470193] 0 to 15.4068 [scaled]
statcode = fift; statpar = 1 30
– At sub-brick #4 ‘Group:Sex F’ datum type is short: 0 to 32767 [internal]
[* 0.000771039] 0 to 25.2646 [scaled]
statcode = fift; statpar = 1 30
– At sub-brick #5 ‘Group:age F’ datum type is short: 0 to 32767 [internal]
[* 0.000669584] 0 to 21.9403 [scaled]
statcode = fift; statpar = 1 30
– At sub-brick #6 ‘Sex:age F’ datum type is short: 0 to 32767 [internal]
[* 0.00095717] 0 to 31.3636 [scaled]
statcode = fift; statpar = 1 30
– At sub-brick #7 ‘Group:Sex:age F’ datum type is short: 0 to 32767 [internal]
[* 0.000764718] 0 to 25.0575 [scaled]
statcode = fift; statpar = 1 30
– At sub-brick #8 ‘Run F’ datum type is short: 0 to 32767 [internal]
[* 0.00305185] 0 to 100 [scaled]
statcode = fift; statpar = 4 120
– At sub-brick #9 ‘Group:Run F’ datum type is short: 0 to 32767 [internal]
[* 0.000225385] 0 to 7.38518 [scaled]
statcode = fift; statpar = 4 120
– At sub-brick #10 ‘Sex:Run F’ datum type is short: 0 to 32767 [internal]
[* 0.000249783] 0 to 8.18464 [scaled]
statcode = fift; statpar = 4 120
– At sub-brick #11 ‘age:Run F’ datum type is short: 0 to 32767 [internal]
[* 0.000246166] 0 to 8.06613 [scaled]
statcode = fift; statpar = 4 120
– At sub-brick #12 ‘Group:Sex:Run F’ datum type is short: 0 to 32767 [internal]
[* 0.000223302] 0 to 7.31693 [scaled]
statcode = fift; statpar = 4 120
– At sub-brick #13 ‘Group:age:Run F’ datum type is short: 0 to 32767 [internal]
[* 0.000194883] 0 to 6.38573 [scaled]
statcode = fift; statpar = 4 120
– At sub-brick #14 ‘Sex:age:Run F’ datum type is short: 0 to 32767 [internal]
[* 0.000275205] 0 to 9.01764 [scaled]
statcode = fift; statpar = 4 120
– At sub-brick #15 ‘Group:Sex:age:Run F’ datum type is short: 0 to 32767 [internal]
[* 0.000237915] 0 to 7.79575 [scaled]
statcode = fift; statpar = 4 120
– At sub-brick #16 ‘Group_sham_vs_omt’ datum type is short: -32767 to 26584 [internal]
[* 7.47976e-06] -0.245089 to 0.198842 [scaled]
– At sub-brick #17 ‘Group_sham_vs_omt t’ datum type is short: -32767 to 28810 [internal]
[* 0.000145365] -4.76316 to 4.18795 [scaled]
statcode = fitt; statpar = 30
– At sub-brick #18 ‘Group_male_vs_female’ datum type is short: -31468 to 32767 [internal]
[* 1.36212e-05] -0.428631 to 0.446325 [scaled]
– At sub-brick #19 ‘Group_male_vs_female t’ datum type is short: -25554 to 32767 [internal]
[* 0.000153398] -3.91993 to 5.02639 [scaled]
statcode = fitt; statpar = 30
– At sub-brick #20 ‘Group_age_sham_vs_omt’ datum type is short: -27743 to 32767 [internal]
[* 2.01171e-06] -0.0558108 to 0.0659176 [scaled]
– At sub-brick #21 ‘Group_age_sham_vs_omt t’ datum type is short: -30126 to 32767 [internal]
[* 0.00014295] -4.30651 to 4.68404 [scaled]
statcode = fitt; statpar = 30
– At sub-brick #22 ‘3way_interaction’ datum type is short: -32767 to 29748 [internal]
[* 3.57185e-06] -0.117039 to 0.106256 [scaled]
– At sub-brick #23 ‘3way_interaction t’ datum type is short: -31725 to 32767 [internal]
[* 0.000152768] -4.84656 to 5.00575 [scaled]
statcode = fitt; statpar = 30
– At sub-brick #24 ‘OMT_runs0’ datum type is short: -5213 to 32767 [internal]
[* 6.73889e-05] -0.351299 to 2.20813 [scaled]
– At sub-brick #25 ‘OMT_runs0 t’ datum type is short: -7278 to 32767 [internal]
[* 0.000978543] -7.12184 to 32.0639 [scaled]
statcode = fitt; statpar = 30
– At sub-brick #26 ‘OMT_runs1’ datum type is short: -4558 to 32767 [internal]
[* 6.4787e-05] -0.295299 to 2.12288 [scaled]
– At sub-brick #27 ‘OMT_runs1 t’ datum type is short: -5549 to 32767 [internal]
[* 0.0011886] -6.59552 to 38.9467 [scaled]
statcode = fitt; statpar = 30
– At sub-brick #28 ‘OMT_runs2’ datum type is short: -3800 to 32767 [internal]
[* 6.52345e-05] -0.247891 to 2.13754 [scaled]
– At sub-brick #29 ‘OMT_runs2 t’ datum type is short: -6916 to 32767 [internal]
[* 0.000887668] -6.13911 to 29.0862 [scaled]
statcode = fitt; statpar = 30
– At sub-brick #30 ‘OMT_runs3’ datum type is short: -5040 to 32767 [internal]
[* 5.35354e-05] -0.269819 to 1.75419 [scaled]
– At sub-brick #31 ‘OMT_runs3 t’ datum type is short: -9588 to 32767 [internal]
[* 0.000769138] -7.37449 to 25.2023 [scaled]
statcode = fitt; statpar = 30
– At sub-brick #32 ‘OMT_runs4’ datum type is short: -5586 to 32767 [internal]
[* 5.32691e-05] -0.297561 to 1.74547 [scaled]
– At sub-brick #33 ‘OMT_runs4 t’ datum type is short: -8960 to 32767 [internal]
[* 0.000760041] -6.80997 to 24.9043 [scaled]
statcode = fitt; statpar = 30
– At sub-brick #34 ‘SHAM_runs0’ datum type is short: -4146 to 32767 [internal]
[* 6.62905e-05] -0.274841 to 2.17214 [scaled]
– At sub-brick #35 ‘SHAM_runs0 t’ datum type is short: -6890 to 32767 [internal]
[* 0.000946568] -6.52185 to 31.0162 [scaled]
statcode = fitt; statpar = 30
– At sub-brick #36 ‘SHAM_runs1’ datum type is short: -5089 to 32767 [internal]
[* 6.61489e-05] -0.336632 to 2.1675 [scaled]
– At sub-brick #37 ‘SHAM_runs1 t’ datum type is short: -6294 to 32767 [internal]
[* 0.00131755] -8.29263 to 43.172 [scaled]
statcode = fitt; statpar = 30
– At sub-brick #38 ‘SHAM_runs2’ datum type is short: -4065 to 32767 [internal]
[* 6.55569e-05] -0.266489 to 2.1481 [scaled]
– At sub-brick #39 ‘SHAM_runs2 t’ datum type is short: -7106 to 32767 [internal]
[* 0.000968474] -6.88198 to 31.734 [scaled]
statcode = fitt; statpar = 30
– At sub-brick #40 ‘SHAM_runs3’ datum type is short: -5314 to 32767 [internal]
[* 5.46937e-05] -0.290642 to 1.79215 [scaled]
– At sub-brick #41 ‘SHAM_runs3 t’ datum type is short: -9849 to 32767 [internal]
[* 0.000884186] -8.70835 to 28.9721 [scaled]
statcode = fitt; statpar = 30
– At sub-brick #42 ‘SHAM_runs4’ datum type is short: -4089 to 32767 [internal]
[* 5.26651e-05] -0.215348 to 1.72568 [scaled]
– At sub-brick #43 ‘SHAM_runs4 t’ datum type is short: -6069 to 32767 [internal]
[* 0.000842349] -5.11222 to 27.6012 [scaled]
statcode = fitt; statpar = 30
– At sub-brick #44 ‘OMT_runs’ datum type is short: -19573 to 32767 [internal]
[* 1.40101e-05] -0.27422 to 0.459069 [scaled]
– At sub-brick #45 ‘OMT_runs t’ datum type is short: -18773 to 32767 [internal]
[* 0.000259346] -4.8687 to 8.49799 [scaled]
statcode = fitt; statpar = 30
– At sub-brick #46 ‘SHAM_runs’ datum type is short: -16534 to 32767 [internal]
[* 1.3242e-05] -0.218943 to 0.4339 [scaled]
– At sub-brick #47 ‘SHAM_runs t’ datum type is short: -17878 to 32767 [internal]
[* 0.000277464] -4.9605 to 9.09166 [scaled]
statcode = fitt; statpar = 30

After having obtained the output from 3dMVM how i can choose the best F statistical model to be used for post-hoc comparisons?

It’s not clear to me what exactly you’re looking for.

With the marginal type (option -SS_type 3) as an example, each F-stat for a variable (factor or quantitative covariate) in the output indicates the extra contribution from that variable with all other effects present in the model. You can specify any kinds of post hoc tests in 3dMVM without having to know the omnibus F-stat.

You might be referring to model comparison. If that is the case, I don’t see any reason for that even if it’s practically feasible at the voxel level because you can conceptualize each F-stat as the test that compares two models (one with and the other without that variable).