[Eeglablist] Why do different methods for measuring power give such different results?

Dorothy Bishop dorothy.bishop at psy.ox.ac.uk
Wed Sep 10 00:38:51 PDT 2014

Dear All

I am trying to compute power in the mu frequency range, 8-13 Hz.
I've tried 3 different methods for doing this which I thought would be broadly equivalent: However, for the same data, I get very different results depending on the method I use.
If results were just a linear transform of one another, I would not be bothered, but it’s more serious than that.
I am comparing power for 5 different conditions, and when I plot the power for each condition, the pattern of results across conditions is completely different depending on what I do.
I've provided my pared-down scripts below. I'd be grateful if someone could let me know if I’m doing something wrong, or if I've just misunderstood how these functions work.
I’d be happy to provide fuller examples if need be.
I'm running eeglab6.1 with matlabR2009b. Many thanks

With the identical data, I have tried:
%1.       Using FFT via newtimef,
%mydata is subset of EEG.data for trials for given condition and electrode, squeezed to 2D
mydata=squeeze(EEG.data(18,:,:));%electrode 18 is C3
cycles=0;
[ersp,itc,powbase,times,freqs]=...
newtimef( mydata,EEG.pnts,[EEG.xmin EEG.xmax]*EEG.srate, EEG.srate, cycles, 'baseline',NaN,'plotitc','off','plotersp','off');
murange = find(freqs>8 & freqs<13);
mypowermean=(mean(ersp(murange,:),2));
allmu=mean(mypowermean)

%2.       Using spectopo,
% thisdata is subset of trials from EEG data for 1 electrodes and a given condition
thisdata=EEG.data(18,:,:);
[spectra,freqs] = spectopo(thisdata, 0, EEG.srate,'plot','off');
murange2 = find(freqs>8 & freqs<13);
allmu2 = mean(spectra(murange2),2)

%3. Computing power from EEG.data after bandpass filtering at 8-13 Hz
% mydata is EEG.data for given electrode and condition, squeezed to 2D
f1=8;f2=13;
EEG= pop_eegfilt(EEG,0,f2, [], ); % Low pass filter with cutoff freq f2 Hz
EEG = eeg_checkset(EEG );
EEG= pop_eegfilt(EEG,f1,0, [], ); % High pass filter with cutoff freq f1 Hz
EEG = eeg_checkset(EEG );
mydata=squeeze(EEG.data(18,:,:));%electrode 18 is C3
mydamean=mean(mydata,2);
mydavoltsq=mydamean.^2;
myvoltsq=mean(mydavoltsq);
allmu3=10*log10(myvoltsq/10);

Dorothy Bishop, Professor of Developmental Neuropsychology,
Dept of Experimental Psychology, University of Oxford, OX1 3UD.
tel +44 (0)1865 271369; fax +44 (0)1865 281255;
WEB: www.psy.ox.ac.uk/oscci<http://www.psy.ox.ac.uk/oscci>
Blog: http://deevybee.blogspot.com/