[FieldTrip] Cluster-based permutation tests for between-subject design
Frédéric Roux
f.roux at bcbl.eu
Tue Nov 4 12:40:29 CET 2014
Hi Eric,
thanks for getting back about this so quickly.
This is very helpful.
Do you think I could also combine depsamplesT with indepsamplesregrT?
I was thinking to do something like this:
% First test for the general effect of WM-load
cfg = [];
cfg.method = 'montecarlo';
...
cfg.statfun = 'depsamplesT';
cfg.ivar = 1;
cfg.uvar = 2;
cfg.design = [];
cfg.design(1,:) = [ones(1,length(dat3)) 2*ones(1,length(dat2))];
cfg.design(2,:) = [1:length(dat3) 1:length(dat2)];
[depT1] = ft_freqstatistics(cfg,dat3{:},dat2{:});% WM-load effect #1
cfg.design = [];
cfg.design(1,:) = [ones(1,length(dat2)) 2*ones(1,length(dat1))];
cfg.design(2,:) = [1:length(dat2) 1:length(dat1)];
[depT2] = ft_freqstatistics(cfg,dat2{:},dat1{:});% WM-load effect #2
% Second test for the general effect of age in the data while controlling for load
cfg = [];
cfg.method = 'montecarlo';
...
cfg.statfun = 'indepsamplesregrT';
cfg.ivar = 1;
cfg.cvar = 2;
cfg.design = [];
cfg.design(1,:) = [Age Age Age];
cfg.design(2,:) = [ones(1,length(dat1)) 2*ones(1,length(dat2)) 3*ones(1,length(dat3))];
indepregT = ft_freqstatistics(cfg,dat1{:},dat2{:},dat3{:});
% Finally get the mixed-effects for Age and WM-load by combining the mask-data from the previous steps
mixed_effects.mask = depT1.mask.*depT2.mask.*indepregT.mask;
That way I would identify the channelxtimexfrequency data-points showing both an effect of WM-load
and Age.
Do you think that this would make sense or should I stick to depsamplesregrT and indepsamplesregrT?
Best,
Fred
Frédéric Roux
----- Original Message -----
From: "Eric Maris" <e.maris at psych.ru.nl>
To: "FieldTrip discussion list" <fieldtrip at science.ru.nl>
Sent: Tuesday, November 4, 2014 12:22:12 PM
Subject: Re: [FieldTrip] Cluster-based permutation tests for between-subject design
Hi Fred,
What you ask can definitely be done in Fieldtrip. The analyses you need are
very similar to those of Vladimir Litvak, for who I implemented the statfuns
indepsamplesRegrT and depsamplesRegrT. To give you the recipe, I would have
to go back to the code, because it is such a long time ago. Anyhow, you now
know where to look, and I trust that you can get a long way yourself.
Best,
Eric Maris
> -----Original Message-----
> From: Frédéric Roux [mailto:f.roux at bcbl.eu]
> Sent: dinsdag 4 november 2014 11:59
> To: FieldTrip discussion list
> Subject: Re: [FieldTrip] Cluster-based permutation tests for between-
> subject design
>
> Dear all,
>
> I would like to follow up on this, as I am currently struggling
> myself with the coding of the design matrix of my analysis.
>
> I have MEG data from n = 95 participants aged between 12 and 27 years
> on a WM-task with 3 WM-load conditions.
>
> I would like to investigate the effects of age (continuous variable
> ranging from 12 to 27) and WM-load (categorical variable ranging from
> 1-3) on delay-activity in different frequency-bands.
>
> What would be the correct way to perform such an analysis in
> fieldtrip?
>
> Would this be akin to a mixed-effects design?
>
> Best regards,
>
> Fred
>
> Frédéric Roux
>
> ----- Original Message -----
> From: "Eric Maris" <e.maris at psych.ru.nl>
> To: "FieldTrip discussion list" <fieldtrip at science.ru.nl>
> Sent: Friday, October 31, 2014 4:56:16 PM
> Subject: Re: [FieldTrip] Cluster-based permutation tests for
> between-subject design
>
>
>
>
>
> Dear Dylan,
>
>
>
> I replied to your question on the Fieldtrip faq page that you refer
> to. Although the problem can be solved, it is not implemented yet,
> because it requires the implementation of three new statfuns:
> Hotelling’s T-square for dependent samples, Hotelling’s T-square for
> independent samples, and Wilk’s lambda. A good statistics book (e.g.,
> Johnson & Wichern) will show you how to do this yourself. Otherwise,
> you have to be patient.
>
>
>
> Although your statistical problem can be solved, with neurobiological
> data, it is almost never wise to statistically test interaction
> effects in designs more complicated than the 2-by-2 factorial design.
> In these more complicated designs, you always end up with F-tests,
> which do not inform you about the pattern in the data that is
> responsible for the interaction effect.
>
>
>
> Best,
>
>
>
> Eric
>
>
>
>
>
>
>
>
> From: Dylan DeLosAngeles [mailto:dylan.delosangeles at gmail.com]
> Sent: dinsdag 28 oktober 2014 13:22
> To: FieldTrip discussion list
> Subject: Re: [FieldTrip] Cluster-based permutation tests for between-
> subject design
>
>
>
>
> Thank you, Eelke.
> I'm sorry I am not picking this up more quickly.
>
>
>
>
>
> Your examples of passing either multiple structs or cell arrays to
> ft_freqstatistics deals with one group of subjects in multiple
> conditions, or two groups in one condition, respectively. I have two
> groups, both doing multiple (11) conditions and I would like to know
> how to handle that in ft_freqstatistics. What I require seems to be
> similar to what Eric Maris wrote about here:
>
>
> http://fieldtrip.fcdonders.nl/faq/how_can_i_test_an_interaction_effec
> t_using_cluster-based_permutation_tests
>
>
>
>
>
> but instead of a 2-by-2 factorial design, I am using a 2-by-11
> factorial design. As such, I am not sure how this translates when
> making difference data structures. I hope I am not missing something
> obvious.
>
>
>
>
>
> Thanks again,
>
>
> Dylan
>
>
>
>
>
> On Tuesday, 28 October 2014, Eelke Spaak < eelke.spaak at donders.ru.nl
> > wrote:
>
> Dear Dylan,
>
> You don't want (or need) a single struct with a subj X chan X freq X
> time powspctrm. Instead, it is often convenient to collect each
> individual subject's struct in a *cell* array (rather than a struct
> array). See, for example, here:
> http://www.mathworks.nl/help/matlab/cell-arrays.html and here:
> http://blogs.mathworks.com/loren/2006/06/21/cell-arrays-and-their-
> contents/
> .
>
> At the statistics step you should pass in multiple structs, each one
> corresponding to one unit-of-observation, to ft_freqstatistics. This
> can be done like so:
>
> stat = ft_freqstatistics(cfg, struct11, struct12,
> struct13,...struct21, struct22, ...);
>
> or, using the cell arrays, like so:
>
> stat = ft_freqstatistics(cfg, groupA{:}, groupB{:});
>
> Make sure that each column in your design matrix describes one unit-
> of-observation, in the order in which the structs are passed into
> ft_freqstatistics.
>
> Best,
> Eelke
>
> On 21 October 2014 03:41, Dylan DeLosAngeles <
> dylan.delosangeles at gmail.com > wrote:
> > Dear Eelke,
> >
> > Thank you for help regarding cluster-based permutation analysis of
> two or more conditions.
> >
> > I am using time-frequency data (not time-lock structures). My first
> problem seems to be getting my 12 subjects into the 4D powspectrum.
> >
> > My code below loads 12 subjects from the first group, but I end up
> with a 1 x 12 struct where each struct's .powspctrm is 1 subject x 11
> electrodes x 3 frequencies x 2049 time points, rather than one struct
> with a 4D powspctrm with 12 subjects as rows x electrodes x freqs x
> time points.
> >
> > for k = 1:Nmt, % states
> > for i = 1%:Ng, % groups
> > for j = 1:Ns, % subjects
> >
> > % load files
> > p(j) = eeg3.eeg.load(fullfile(fpath,fname2));
> >
> > % convert to eeglab to get channel locations
> > EEG(j) = eeg2eeglab( p(j));
> > EEG(j) = pop_chanedit( EEG(j), 'lookup', chanlocfile);
> >
> > % preprocessing in fieldtrip
> > d(j) = eeglab2fieldtrip( EEG(j), 'preprocessing');
> >
> > % specify length of time to use in config time =
> > EEG(j).xmax-EEG(j).xmin;
> >
> > % setup configuration for freqanalysis cfg = []; % clear cfg
> > cfg.output = 'pow'; cfg.channel = 'EEG'; cfg.method = 'mtmconvol';
> > cfg.taper = 'hanning'; cfg.foi = 0.5:3; % delta cfg.toi =
> 1:0.05:time;
> > % length of each state cfg.t_ftimwin = 7./cfg.foi; % 7 cycles
> > cfg.keeptrials = 'yes';
> >
> > % do freqanalysis
> > freqdata(j) = ft_freqanalysis( cfg, d(j)); end end end
> >
> > My second problem is loading in the second group of 12 subjects and
> what that will look like when I run ft_freqstatistics.
> >
> > Lastly, I just want to confirm what you said in your previous
> email,
> > that I should be using indepsamplesF for more than two conditions
> (I
> > have 11), and therefore my design should look like this;
> > 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 (two groups)
> > 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 (11 conditions)
> >
> > Any help would be appreciated.
> >
> > Kind regards,
> > Dylan
> >
> >
> >
> >
> > On Wed, Sep 24, 2014 at 3:29 PM, Eelke Spaak <
> eelke.spaak at donders.ru.nl <mailto: eelke.spaak at donders.ru.nl >>
> wrote:
> > Hello Dylan,
> >
> > You can analyse a between-subjects design exactly as you would a
> > between-trials design (at least as far as the statistics step is
> > concerned), in both cases the two conditions correspond to two
> groups
> > of observations, and not to the same group of observations measured
> in
> > two separate conditions (which would be a within-UO design). In
> > FieldTrip, you would typically compute averages per subject, then
> use
> > an "indepsamplesT" (or indepsamplesF with >2 conditions) statistic
> > (not depsamples). indepsamplesT only requires one row in the design
> > matrix, indicating the condition.
> >
> > Note that if you have e.g. timelock structures in two (or more)
> cell
> > arrays, corresponding to the conditions, you can input them into
> the
> > statistics function as follows:
> >
> > stat = ft_timelockstatistics(cfg, tlCondA{:}, tlCondB{:});
> >
> > without having to call ft_timelockgrandaverage. In fact, the above
> is
> > the preferred way to do statistics now. (The same holds for
> > ft_freqstatistics.)
> >
> > Hope that helps,
> > Best,
> > Eelke
> >
> > On 24 September 2014 02:32, Dylan DeLosAngeles <
> > dylan.delosangeles at gmail.com <mailto: dylan.delosangeles at gmail.com
> >> wrote:
> >> Hello,
> >>
> >> So far, the tutorial on "Cluster-based permutation tests on
> >> time-frequency data" has been very helpful.
> >>
> >> Out of the four combinations from the two UO-types (subjects and
> >> trials) and the two experimental designs (between- and within-UO),
> >> the tutorial covers statistics on data in two conditions in a
> >> between-trials, in a within-trials and in a within-subjects
> design.
> >> However, I am wondering if there is any information about the
> fourth type of experiment design: between-subjects.
> >>
> >> I have data for 2 groups with 12 subjects in each group. Both
> groups
> >> are measured during 11 conditions.
> >> Can I approach this in a similar fashion to within-subjects design
> >> (multiple subjects in multiple experimental conditions), such that
> my
> >> design is multiple groups in multiple experimental conditions. Is
> it
> >> a case of first averaging over all trials belonging to each of the
> >> experimental conditions for each subject (as instructed in
> tutorial),
> >> and then averaging over all subjects in each group?
> >>
> >> Configuration code for setting up the design currently looks like
> >> this; grp = 2; subj = 11; design = zeros(2, subj*grp);
> >>
> >> for i = 1:grp
> >> design(1,i:2:end) = i;
> >> end
> >>
> >> idx = 1;
> >> for i = 1:subj
> >> design(2,idx:idx+1) = i;
> >> idx = idx+2;
> >> end
> >>
> >> Is there anything else I need to take into consideration when
> doing
> >> these statistics?
> >>
> >> Thank you,
> >> Dr Dylan DeLosAngeles
> >> Research Fellow
> >> Brain Signal Laboratory
> >> Flinders University
> >>
> >> _______________________________________________
> >> fieldtrip mailing list
> >> fieldtrip at donders.ru.nl <mailto: fieldtrip at donders.ru.nl >
> >> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
> > _______________________________________________
> > fieldtrip mailing list
> > fieldtrip at donders.ru.nl <mailto: fieldtrip at donders.ru.nl >
> > http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
> >
>
> _______________________________________________
> fieldtrip mailing list
> fieldtrip at donders.ru.nl
> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
> _______________________________________________
> fieldtrip mailing list
> fieldtrip at donders.ru.nl
> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>
_______________________________________________
fieldtrip mailing list
fieldtrip at donders.ru.nl
http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
More information about the fieldtrip
mailing list