First of all, thanks for all matlab scripts you made, which are really helpful.
I'm using y_GRF_Threshold.m to do a FSL-style cluster-extent thresholding in matlab. As far as I know, y_GRF_Threshold.m is a matlab version of "easythresh" in fsl. One interesting thing about the function was it has an option for one/two-tailed thresholding, because I've never heard about one/two-tailed approach in cluster-extent thresholding. If the option is turned on, the function is using cluster-defining threshold (i.e., voxel-wise height p value) divided by 2. Also it's using a half of corrected p value. Then, it calculates cluster extent size < the corrected p value.
Is this process same as easythresh is doing? That is, easythresh has the two-tailed option as well? The two-tailed and one-tailed could produce big differences in results, I think... However, actually, I cannot understand the reason of dividing a cluster-level p value by two. This is because, as far as I understand, we are using the distribution of maximum cluster size in one direction (i.e., whether the cluster extent size is "bigger" (not smaller) than p = .05 or not given the primary (cluster-defining) p value). So I'm curious to hear about your understanding of this. Any comments would be really appreciated!
Thanks,
Wani
IsTwoTailed option in y_GRF_Threshold
Forums
Re: IsTwoTailed option in y_GRF_Threshold
Thanks a lot for your interests and test on my codes!
You are correct, y_GRF_Threshold.m is doing a FSL-style cluster-extent thresholding. And there is NO "two-tailed" way in easythresh.
I made the "two-tailed" option is because: when people compare AD and controls, they usually interested in BOTH the increased activity and the decreased activity in AD compared with controls (i.e., this is a "TWO-TAILED" statistical analysis).
In FSL, I guess lots people will first only see AD>controls, set a Z>2.3 and cluster level p<0.05.
And then see AD<controls, set a Z<2.3 and cluster level p<0.05. (or reverse the sign)
However, you can only ensure p<0.1 take both of them together.
(In addition, as a Note in my code: FSL's Z>2.3 corresponds to one-tailed VoxelPThreshold = 0.0107. |Z|>2.3 corresponds to two-tailed VoxelPThreshold = 0.0214.)
Thus, I decided to have an "two-tailed" option (e.g., if set VoxelPThreshold = 0.01 and cluster level p<0.05):
1. See AD>controls, set a Z>2.576 (two-tailed p <0.01) and cluster level p<0.025.
2. See AD<controls, set a Z<2.576 (two-tailed p <0.01) and cluster level p<0.025.
3. Add 1 and 2 together, which could ensure the total p<0.5.
However, dividing by 2 (use p<0.025) is a way like Bonferroni correction, i.e., a little strict. I don't know if this the most appropriate way, but I do think we need to have some kind of correction if you see both AD>controls and AD<controls.
Given it is a little strict (0.05/2 like Bonferroni correction), thus, in the upcoming version of REST (y_GRF_Threshold will be released as rest_GRF_Threshold in this version), I am making "One-Tailed" as default, and then let the users to choose if doing "Two-Tailed" or not. And if they click the "two-tailed" button, there will be a pop-up window to explain what procedures will be done in such a way.
Best,
Chao-Gan
Thanks for your reply.
Re
Re: IsTwoTailed option in y_GRF_Threshold
During GRF correction, could you provide another choice, i.e. estimating the smoothest (FWHM) on the original images (not on the statistical images). My results showed that estimation on the statistical images is too strict to get reasonable results.
Best wishes!
Re: IsTwoTailed option in y_GRF_Threshold
Thanks for your post. As pointed out in several previous posts (some in Chinese), I know this issue. I do have a plan to revise the Statistical Analysis Module thoroughly in May. The smoothness will be estimated from the residual files and pass to GRF correction.
Following thoroughly revision of Statistical Analysis Module, there will be a new course on Statistical Analysis.
I hope I would have enough time this month, and my schedule doesn't mess up. :)
Best,
Chao-Gan