Print

Print


Hi Tom, Susie, everyone,

Thought I'd barge in here, Susie and I (Ged) have noticed that in 
practice the SVC button is only available after a first run through 
the results options, including specification of FWE/FDR/Unc and a 
corresponding ("whole-brain") alpha. This whole-brain threshold does 
seem to affect the subsequent search volume. What you suggest here:

 > Try running the results multiple times with different
 > uncorrected thresholds, each time clicking S.V.C.
 > If you specify the  same mask/VOI in the SVC, you'll
 > see that the footer will show the same "Search vol"

is what Susie and I expected to be the case, but not what appears to 
happen in practice. In Susie's first email, the difference in number 
of voxels searched was (we think) due to the first statistical 
thresholding at alpha = 0.99. So just to be completely clear about this:

 > I can only assume that in the 2nd instance, ROI as
 > explicit mask, you're including some voxels with
 > values less than 0.99 (and hence 122673 > 121424).

This 0.99 is the alpha given in the fist (whole-brain) pass through 
the results options (I think Susie chose uncorrected here). It is not 
an absolute or relative threshold for the creation of the "analysis 
mask" created during the estimation stage. I'm fairly sure that with 
Susie's 2nd ROI-as-explicit analysis, no absolute or relative 
threshold masking was used. I believe she also only used an explicit 
GM mask in the 1st ("whole-brain") analysis too; but in any case, 
additional threshold masking in the first analysis could not increase 
the number of voxels considered. So again, our hypothesis is that 
SPM's SVC considers only the subset of voxels which are in both the 
chosen ROI and the set of voxels which survived the preliminary 
whole-brain alpha.

> line 78 of spm_VOI, where you see that the original
 > analysis mask is  consulted to build the list of
 > possible in-mask voxels).

Indeed, the following lines (in SPM2's spm_VOI)

76 % voxels in entire search volume {mm}
77 %----------------------------------------------------------------
78 XYZmm = SPM.xVol.M(1:3,:)*[SPM.xVol.XYZ; ones(1, SPM.xVol.S)];

suggest this. However, later on, this XYZmm variable is used for a set 
of voxels denoted k, while another another set, j, is constructed via 
the xSPM structure, which I believe is only created after the initial 
"whole-brain" alpha threshold, and which only contains supra-threshold 
voxels:

111 XYZ = D.mat \ [xSPM.XYZmm; ones(1, size(xSPM.XYZmm, 2))];
112 j = find(spm_sample_vol(D, XYZ(1,:), XYZ(2,:), XYZ(3,:),0) > 0);
113 XYZ = D.mat \ [     XYZmm; ones(1, size(    XYZmm, 2))];
114 k = find(spm_sample_vol(D, XYZ(1,:), XYZ(2,:), XYZ(3,:),0) > 0);

Then in order to create the structures passed to spm_list for the 
actual determination of the SVC p-values, k is used for the voxel-size 
of the search space, and for the sorted p-values that go into the FDR 
correction, but it is j -- the ROI-subset of voxels which survived the 
first analysis, that is used with the statistic itself, in xSPM.Z:

118 xSPM.S     = length(k);
119 xSPM.R     = spm_resels(FWHM,D,SPACE);
120 xSPM.Z     = xSPM.Z(j);
121 xSPM.XYZ   = xSPM.XYZ(:,j);
122 xSPM.XYZmm = xSPM.XYZmm(:,j);
123 xSPM.Ps    = xSPM.Ps(k);

Where again, this indicates that the new xSPM.Z (etc) is a subset of 
the previous xSPM.Z, unless I'm missing something elsewhere.

If we assume for the moment that this interpretation is correct, and 
that SVC looks only within the subset, then my sequence of questions 
would be, firstly, whether this is deliberate/correct, secondly, if so 
why, and then finally, if there is a good reason, does the practice of 
choosing an alpha very near to one for the prelimary whole-brain 
threshold (as I believe Susie's quick survey of SVC-users suggested 
was quite common) violate that reason?

Incidentally, Matthew Brett has a program:
   http://imaging.mrc-cbu.cam.ac.uk/imaging/VolCorr
which has the ability to output corrected t-thresholds for an SVC. If 
these thresholds were then used with imcalc or similar on the original 
spmT image, then the effect would obviously be to consider all voxels 
within the SVC-ROI (against this SVC-t-threshold, but no other, 
earlier, whole-brain t-threshold) as you, me, and Susie, all thought 
would be what SPM did anyway. However, it appears that this would be 
different to what SPM actually does, again, raising the question of 
whether one is preferable to the other, for any reason.

Finally, a quick glance at SPM5 () suggests to me that the behaviour 
is the same, and (apart from different line numbers) the code 
fragments above are the same, or at least similar, and include the 
important xSPM.Z = xSPM.Z(j); line. (My understanding is that this 
xSPM comes from spm_getSPM, see e.g. lines 455-465 where the 
"whole-brain" threshold is applied, and lines 507 and following, where 
the structure is built, including this thresholding.)

Often when working on Saturday evenings though, I later find that I 
was completely insane, so it's quite possible that much of the above 
is non-sense. However, regardless of my (mis)interpretation of the 
code, I do have confidence in Susie's description of the problem as it 
appears in practice.

Thanks from me too, for your very helpful earlier reply (the 
"knobliness" correction was particularly enlightening!), and thanks in 
advance for any more time you (or anyone else) can spare to look into 
this issue.

Ged.