[Eeglablist] Analysis of Frontal Alpha Asymmetry - am I on the right track?

Katarzyna Dudzikowska k.a.dudzikowska at gmail.com
Sun Jul 26 08:47:54 PDT 2020


Dear all,

First of all, thank you for all the help I have gotten from this mailing
list so far, I really appreciate it!

For my MSc thesis I am trying to run a Frontal Alpha Asymmetry analysis.
The end goal is an individual numeric score capturing interhemispheric
difference in alpha activation for each of my subjects. I have extracted
1-sec-long epoch from each trial and I am going to derive the score from a
dataset containing just these epochs. A typical dataset, in case it
matters, has around 300 epochs, 250 frames per epoch (as sampling rate is
250Hz).

Rather than use just one pair of electrodes, I want to use an aggregate of
AF8, F6 and F8 for the right and AF7, F5 and F7 for the left hemisphere.

Based on the previous literature, I want to run a fast Fourier transform
analysis with a 50% Hamming window on the epoched dataset, extract alpha
frequency power (8-13Hz), average across the right-side channels to obtain
right alpha power and across the left-side channels to obtain left alpha
power, log transform these values and subtract the left from the right to
get my final score.

This sounds simple enough, but I am not sure
a) whether the code I have written definitely does the things I described
above (I think so, but I would really love to get some feedback)
b) whether before I log transform and subtract the values I should "compute
absolute power" as described by Makoto here:
https://sccn.ucsd.edu/wiki/Makoto's_useful_EEGLAB_code#How_to_extract_EEG_power_of_frequency_bands_.2806.2F06.2F2020_updated.29
I have to admit that I do not understand why I would/wouldn't and what it
does. I have searched the list and found some discussions you had on this
topic, but I didn't understand much of it I'm afraid.

Below is the code I compiled from literature + Makoto's advice I link
above + this post:
https://sccn.ucsd.edu/pipermail/eeglablist/2007/001903.html
Does it make sense?

%Define channels of interest:
left_ind = [4 8 9]; %AF7, F7, F5
right_ind = [7 15 16]; %AF8, F6, F8

%Obtain power spectra at specified channels on the left and on the right
[spectraL, freqs] = spectopo(EEG.data(left_ind,:,:), EEG.pnts, EEG.srate,
'winsize', EEG.srate, ...
   'wintype', 'hamming', 'overlap', EEG.srate/2, 'plot', 'off');

[spectraR] = spectopo(EEG.data(right_ind,:,:), EEG.pnts, EEG.srate,
'winsize', EEG.srate, ...
    'wintype', 'hamming', 'overlap', EEG.srate/2, 'plot', 'off');

% Aggregate of the chosen channels
spectraLagg = mean(spectraL)
spectraRagg = mean(spectraR)


%Define alpha power as between 8 and 13Hz.
alpha_ind = find(freqs>=8 & freqs<=13);

% Here I am looking at two options and I have no idea which one to choose:
alphaL = mean(spectraLagg(alpha_ind));
alphaR = mean(spectraRagg(alpha_ind));

FCA = log(alphaL) - log(alphaR)

alphaLb = mean(10.^(spectraLagg(alpha_ind )/10));
alphaRb = mean(10.^(spectraRagg(alpha_ind )/10));

FCAb = log(alphaLb) - log(alphaRb)

My most pertinent questions are:

1) Is it acceptable to run spectopo() only on selected channels or should I
run it on the whole dataset and then extract the channels I am interested
in? Does it make any difference?

2) Is it acceptable to simply average across my channels of interest to
obtain a composite alpha power score, or should I employ some more
sophisticated calculation?

3) *The most most-pertinent question*: should I go with FCAa or FCAb? For
this dataset one ends up being a positive and the other a negative number,
so this is a really important choice that I have no idea how to make. From
what I understand it has to do with the values being expressed in either
decibels or in uV^2, correct? Raw spectopo() output (is that dB?)? contains
negative values which obviously mess things up for me when I average, so I
am leaning towards option b, but the fact that similar transformation was
not mentioned in any of the papers I looked at makes me doubt myself.

4) I also have a question regarding the spectopo() function. In the
eeglablist post I link above, Arno calls the function with EEG.pnts as the
second argument (frames per epoch). But in Makoto's example the value used
is 0. Why would it ever be 0? Should it be 0 or EEG.pnts?

I will be so incredibly grateful to get your input: for my first foray into
the world of EEG analysis I picked a method that nobody I know has ever
used, so I am completely relying on what I can find out myself and your
kindness :)

Best regards,
Katia Dudzikowska



More information about the eeglablist mailing list