[FieldTrip] ICA/PCA EOG artifact removal

Max Cantor mcantor at umich.edu
Thu Oct 10 17:29:52 CEST 2013


My lab is trying to sort out a very similar issue, this was a very
convenient coincidence. Anyway, my PI probably understands this issue
better, but for my sake, there seems to be some disagreement here about
whether ICA or PCA is better?

We have a dedicated VEOG channel, but no dedicated ECG channel, so
according to Hamid, we would be better off using ICA for removing ECG
artifacts and PCA for EOG artifacts?

Also, I'm looking at ft_componentanalysis and ft_denoise_pca, and I'm
wondering if there is a simple explanation for what the difference between
using ft_componentanalysis with, for instance, cfg.runica.pca, and just
using ft_denoise_pca is for PCA?

Finally, I noticed ft_componentanalysis has an option for a displaymode and
interactivepca, and I'm wondering if this essentially turns the inputting
of components to be rejected into a gui? I'm trying to create functions for
our muscle, EOG, and ECG artifact rejections, but because the components to
be removed seem to need to be added into the script itself, trying to run
it as a function within our analysis script obviously leads to it not
rejecting any components.


On Thu, Oct 10, 2013 at 9:35 AM, Raquel Bibi <bibi.raquel at gmail.com> wrote:

> Dear Robert,
> Over a year ago I tried to use the suggested method of the lower sample
> rate and project onto my original data. I had problems. Can you provide a
> little snippet of the projection?
>
> Best,
>
> Raquel
> Sent from my iPhone
>
> > On Oct 10, 2013, at 4:43 AM, Robert Oostenveld <
> r.oostenveld at donders.ru.nl> wrote:
> >
> > Hi Craig,
> >
> > Let me forward this to the email discussion list.
> >
> >
> >> On 9 Oct 2013, at 23:27, CR wrote:
> >>
> >> Hi Robert,
> >> I wanted to see what your thoughts were on the merits of 2 different
> methods of removing blinks.  I have a 12 minute resting state segment of
> data, so it has required me to do some things a little differently.
> >>
> >> Method 1:  ICA
> >>
> >> I break the 12 minute segment into 2 second intervals, since doing ICA
> on the whole segment gave a poor result.
> >
> > why does it give you a poor result? Has the subject been moving? Is
> there something else that makes the data not compatible with the stationary
> mixing assumption?
> >
> > Or is it the difference in the preprocessing? 12 minutes of data
> represented in one segment can have drift, whereas 12 minutes of data
> represented in 2 second snippets will not have the drift  (assuming you use
> the default cfg.demean=yes). Doing a low-pass filter on the continuous data
> would have a similar effect as segmenting it and demeaning the 2 sec
> snippets.
> >
> >> I apply the resulting unmixing matrix to the 12 minute segment and
> correlate each component with the EOG to find the most relevant components,
> and reject these based on a threshold.
> >
> > so a bit like
> >
> http://fieldtrip.fcdonders.nl/example/use_independent_component_analysis_ica_to_remove_eog_artifacts
> > with the correlation method of
> >
> http://fieldtrip.fcdonders.nl/example/use_independent_component_analysis_ica_to_remove_ecg_artifacts
> >
> >
> >> Method 2: PCA
> >>
> >> I do a timelock analysis based on the blink onset point returned by the
> eyelink system.  I then PCA the resulting blink ERF.  I then reject the
> component(s) that account for say 98% of the total variance.
> >>
> >> Obviously option 2 is much faster.  What do you see as the relative
> merits/problems with the techniques?  Technique 1 is largely what the FT
> tutorials suggest, so what about method 2?
> >
> > Option 2 makes the large variance component orthogonal to the remainder
> of the components, whereas in option 1 the eye component and frontal brain
> components are both estimated, not orthogonal, and removing of the eye
> component does not remove the frontal brain component.
> >
> > Option 1 is better, as it is less aggressive in removing brain
> components.
> >
> > If speed is a concern, you could do
> > - ft_resampledata to e.g. 250 Hz or even less, estimate the components
> based on that and project them out of the original high Fsample data.
> > - do ft_componentanalysis on a subset of the data (say every 4th data
> segment after cutting it in pieces), and project them out of the original
> segmented data
> > - a combination of the two
> > - try out anothe rica algorithm (fastica versus runica)
> > - try out with the options of the ica algorithm, esp the stopping options
> > - get a faster computer
> >
> > best regards
> > Robert
> >
> >
> >
> >
> >
> >
> > _______________________________________________
> > 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20131010/9507587c/attachment.html>


More information about the fieldtrip mailing list