[Mne_analysis] permutation clustering test using TFCE

Denis-Alexander Engemann denis.engemann at gmail.com
Mon Aug 4 10:53:48 EDT 2014
Search archives:

Hi Laetita,


On Mon, Aug 4, 2014 at 4:42 PM, Laetitia Grabot <laetitia.grabot at gmail.com>
wrote:
>>
>> >> Thanks Latitia,
>> >>
>> >>
>> >> On Thu, Jul 31, 2014 at 10:03 AM, Laetitia Grabot <
>> >> laetitia.grabot at gmail.com>
>> >> wrote:
>> >> >
>> >> > Hi Denis,
>> >> >
>> >> > I tried the spatio-temporal clustering with TFCE
>> >> (spatio_temporal_cluster_1samp_test) on alpha power data (size of
epoch :
>> >> 2s; decimation = 4 (so 501 time points)) with n_jobs = 6 and the
default
>> >> TFCE parameter (dict(start = 0, step = 0.2)).
>> >>
>> >>
>> >> I think we need to improve the documentation on TFCE a bit. A good
default
>> >> range is probably
>> >>
>> >> dict(start=2, step=0.2)
>> >>
>> >> >
>> >> > According to script output, 48 thresholds were used from 0 to 9.4.
>> >> > After 5h (!!), 10262484 clusters were found and finally after some
>> >> others
>> >> hours the script crashed before the end ("cannot allocate memory")...
>> >> >
>> >>
>> >> For TFCE N clusters equals N features. Howver if you do not scan the
>> >> enitre
>> >> range of the test statistic you wont have to wait thast long.
>> >>
>> >>
>> > I tried dict(start=2, step=0.2) and dict(start=2, step=0.5), but I
still
>> > had 5 120 000 clusters (15 threshold for step =0.5). How can I not
scan the
>> > entire range of the test, as you suggested ? I didn't understand what
you
>> > mean by "features"...
>> >
>> >
>>
>> samples : subjects or trials or observations
>> feaures : measured value at time t, location l, condition c, frequency f,
>> etc.
>>
>> dict(start=2, step=0.2) would not scan the entire range since you start
at
>> a value of 2. It depends on your effect size and your test statistic.
with
>> an f-test you might want to start at 4 (roughly the point where values
form
>> an f-dist are considered significant). Also if the maximum of your
primary
>> test statistic is rather high, e.g. 80,  you might want to jump in steps
of
>> .05 or even 1.
>>
>> I'm currently using it like that (dict(start=4, step=0.5) in sensor space
>> analysis and with 17640 clusters,  7 jobs and I'm waiting about 6-7
minutes
>> for a result using a repated measures anova as stat function (slower than
>> t-test) .
>>
>
> Ok thanks, it's clearer! So, I tried dict(start=4, step=0.5), I got 5 120
000 clusters, 14 thresholds and I got no significant clusters.

Note. You'll always get as many clusters in TFCE as your ndarrays has
cells, or in other words X.size if X is an array. The speed will then
depend on the number of thresholds you visit and the size of the 'clusters'
in that range.

> And I didn't find the cluster I found with p = 0.01 in classical
analysis...

In my experience TFCE is significantly more sensitive than clustering with
classical thresholding. If you do not happen to find a cluster you should
compare your start value to the actual threshold computed. Maybe you
excluded the range in which your effect resides (smaller than 4 in that
case?).

> The computation lasted 84min, so that remains quite long.

It's expected to last long since you have more clusters. This is a
consequence of method.
I haven't run simulations but I'd expect the TFCE to scale linearly to the
number of permutations and the number of clusters and of course to their
sizes within the thresholds.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.nmr.mgh.harvard.edu/pipermail/mne_analysis/attachments/20140804/72033aa2/attachment.html 


More information about the Mne_analysis mailing list