# [Eeglablist] A tentative issue in coherence calculation in EEGLAB for epoched data

Fri Jul 24 11:06:31 PDT 2015

```Hi,
Suppose the data Y contains of 100 epochs and each epoch is 1000 points. Size Y is (100 x 1000). Now,  if we create X from Y and consider X as a (1 , (100x1000) ) matrix then the fft(X) on the whole length of it is different that Sum(fft(Y(i, :))/100
Best
Iman

From: Makoto Miyakoshi [mailto:mmiyakoshi at ucsd.edu]
Sent: Friday, July 24, 2015 10:53 AM
Cc: EEGLAB List <eeglablist at sccn.ucsd.edu>; Loo, Sandra <SLoo at mednet.ucla.edu>; Scott Makeig <smakeig at ucsd.edu>; Chantelle C Kinzel <ckinzel at mednet.ucla.edu>; Michelini, Giorgia <giorgia.michelini at kcl.ac.uk>
Subject: Re: A tentative issue in coherence calculation in EEGLAB for epoched data

Dear Iman,

If I understand the calculation correctly, you are comparing

mean(j1+j2+j3+j4+...+jn)

with

mean(mean(j1+j2)+mean(j3+j4)+...+mean(j(n-1)+jn))

They should produce the same results (if j is a data chunk, then they should have the same number of data points... which holds anyway)

Do I understand the problem correctly?

Makoto

Hi Makoto ,
It is about the stationarity of EEG signal and basically we cannot assume it is stationary for the long period of the concatenated data.
Best,
Iman

From: Makoto Miyakoshi [mailto:mmiyakoshi at ucsd.edu<mailto:mmiyakoshi at ucsd.edu>]
Sent: Thursday, July 23, 2015 6:14 PM

Cc: EEGLAB List <eeglablist at sccn.ucsd.edu<mailto:eeglablist at sccn.ucsd.edu>>; Loo, Sandra <SLoo at mednet.ucla.edu<mailto:SLoo at mednet.ucla.edu>>; Scott Makeig <smakeig at ucsd.edu<mailto:smakeig at ucsd.edu>>; Chantelle C Kinzel <ckinzel at mednet.ucla.edu<mailto:ckinzel at mednet.ucla.edu>>; Michelini, Giorgia <giorgia.michelini at kcl.ac.uk<mailto:giorgia.michelini at kcl.ac.uk>>
Subject: Re: A tentative issue in coherence calculation in EEGLAB for epoched data

Dear Iman,

> coherres = sum(alltfX .* conj(alltfY), 3) ./ sqrt( sum(abs(alltfX).^2,3) .* sum(abs(alltfY).^2,3) );

So 'sum(alltfX .* conj(alltfY), 3)' sums all data points? If so, as long as the number of data points distribute uniformly across all trials, the mean of the mean is the same as the grand mean. Am I wrong? Please correct me.

Makoto

Hi,
The way the code scripted is to calculate the spectrum from the whole data at once

[alltfX freqs timesout] = timefreq(X, g.srate, spectraloptions{:})

Not each epoch separately and then make an average from them.  and yes in matters !

Best,
Iman
From: Makoto Miyakoshi [mailto:mmiyakoshi at ucsd.edu<mailto:mmiyakoshi at ucsd.edu>]
Sent: Thursday, July 23, 2015 3:44 PM
Cc: EEGLAB List <eeglablist at sccn.ucsd.edu<mailto:eeglablist at sccn.ucsd.edu>>; Loo, Sandra <SLoo at mednet.ucla.edu<mailto:SLoo at mednet.ucla.edu>>; Scott Makeig <smakeig at ucsd.edu<mailto:smakeig at ucsd.edu>>; Chantelle C Kinzel <ckinzel at mednet.ucla.edu<mailto:ckinzel at mednet.ucla.edu>>; Michelini, Giorgia <giorgia.michelini at kcl.ac.uk<mailto:giorgia.michelini at kcl.ac.uk>>
Subject: Re: A tentative issue in coherence calculation in EEGLAB for epoched data

Dear Iman,

I ask you this without testing it, but does the order of the averaging process makes difference in results?

Makoto

Hi EEGLABERs,
I have been looking into ‘newcrossf’ function and the way it calculates coherence for epoched data. Basically, it uses the ‘timefreq’ function to calculate the time/frequency decomposition the data.  ‘timefreq’ function treats the epoched data as a continuous one:

X = reshape(X, g.frame, g.trials);
[alltfX freqs timesout] = timefreq(X, g.srate, spectraloptions{:});

Y = reshape(Y, g.frame, g.trials);
[alltfY] = timefreq(Y, g.srate, spectraloptions{:});

and calculates the its spectrum using the whole data which is now concatenated version of all trials.  So, for each of channel’s pair (X and Y , for example) the spectrum is calculated as described above and then the joint time-freq decomposition is calculated for coherence value.

coherres = sum(alltfX .* conj(alltfY), 3) ./ sqrt( sum(abs(alltfX).^2,3) .* sum(abs(alltfY).^2,3) );

However, similar to the ERSP concept, each trial/epoch might be different than others [because of perturbations in subjects’ mental status, mental fatigue, etc] and thus I think it is more appropriate to calculate the coherence for each trial first and then make the average across trials.

Any thoughts?
Iman

--
Makoto Miyakoshi
Swartz Center for Computational Neuroscience
Institute for Neural Computation, University of California San Diego

--
Makoto Miyakoshi
Swartz Center for Computational Neuroscience
Institute for Neural Computation, University of California San Diego

--
Makoto Miyakoshi
Swartz Center for Computational Neuroscience
Institute for Neural Computation, University of California San Diego
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://sccn.ucsd.edu/pipermail/eeglablist/attachments/20150724/df82d0f1/attachment.html>
```