# [Eeglablist] high frequency oscillation- eeg advice

Andreas Widmann widmann at uni-leipzig.de
Sat Jan 28 01:26:45 PST 2017

```Dear Makoto

>> > A roughly equivalent Butterworth filter will have an estimated effective (numerically relevant) impulse response duration of 20592 samples (~82s!):
>
> I tried to replicate it with EEGLAB iirfilt() but the filter order was only 6. How did you calculate this number?
Not sure whether I understand the question.

Do you mean how I estimated the order (4) of the Butterworth filter in my example to be "roughly equivalent“ to the FIR variant? This was just a wild guess based on experience. In case necessary I could check how rough "roughly equivalent" really is. But note that the EEGLAB iirfilt-plugin does implement an Elliptic and not a Butterworth IIR filter.

Or do you mean the comparison of your iirfilt order (6) to the impulse response duration (20592) of my example? One cannot directly compare the order of IIR and FIR filters. This is a (unfortunately common) misconception. For FIR filters (implemented by convolution) the order equals the duration of the impulse response (minus one sample). This does not hold for IIR filters implemented *recursively*. However, even if the impulse response of IIR filters is infinite by definition in digital implementations it is practically limited by numerical precision. That is, you can compute the impulse response of a digital IIR filter which is now also finite and can be applied by convolution exactly like a FIR filter finally giving the same result (within limits of numerical precision).

In MATLAB you compute the impulse response with impz (see the code example in my previous post). If I remember correctly you may specify required numerical precision as an input argument to impz. I trusted the default here. You have to get the filter coefficients (b, a) of your EEGLAB iirfilt filter and feed them to impz. The length of the resulting impulse response times two is the duration to be compared to the order (or IR duration) of a FIR filter. Times two because you have to apply the non-linear phase IIR derived filter in forward and reverse direction (to get zero-phase).

Does this help? Best,
Andreas

>
> Makoto
>
>
>
> On Fri, Jan 27, 2017 at 2:35 PM, Andreas Widmann <widmann at uni-leipzig.de> wrote:
> Dear Makoto,
>
> to my understanding these are two different and mostly unrelated issues:
>
> (1) Recommendations for very low high-pass cutoff frequencies:
> The filter implementation (IIR vs. FIR) doesn’t really matter here. It is correct that you need very long epochs to resolve these very low frequencies. However, it is not valid to reverse this conclusion. Also, for short epochs apparently small differences in cutoff frequency may matter. You do filter the continuous data, that is, epoch length does not directly influence the filter effects. High-pass filter distortions (mainly due to larger late and slow components biasing smaller early and fast components) were shown empirically several times, e.g. most convincingly by Acunzo et al.
>
> But I agree that this issue is a matter of debate (mainly affecting ERP research). Personally, I recommend to individually adjust filter cutoffs to the properties of signal and noise. It is in principle possible to apply higher high-pass cutoff frequencies if noise level really requires this and it is properly demonstrated that filter distortions do not bias the conclusions. But people always ask for general recommendations and you have to be on the save side...
>
> (2) IIR vs. FIR
> In the first part you argue against long impulse response durations. For IIR filters these are usually even (considerably) longer. Besides other issues (as the non-linear phase property of IIR filters and its side-effects) this is the main reason why I do not recommend IIR filters for offline processing in electrophysiology/ERPs. Following your example with a slightly higher cutoff of 0.1 Hz and a Hamming windowed sinc FIR filter you will have a impulse response duration of 4127 samples (~16s). A roughly equivalent Butterworth filter will have an estimated effective (numerically relevant) impulse response duration of 20592 samples (~82s!):
>
> [b, a]=butter(4, 0.1/125, 'high');
> h = impz(b, a);
> length(h)*2 % Times 2 as you have to apply the non-linear phase filter in forward and reverse direction to achieve zero-phase doubling the impulse response duration
>
> Thus, if you define filter efficiency as achieved roll-off per impulse response duration (as I do) IIR filters can be considerably less efficient. Impulse response duration defines the extent the signal is convoluted and artifacts and distortions are potentially smeared.
>
> > 0.1Hz IIR high-pass filter can be found in EEG amplifiers, so in that sense it is not strange at all.
>
> IIR filters have their merits if high throughput and/or low delays are required. FIR filters have large delays and are computationally less efficient (there are however highly optimized implementations). Delay and throughput do not matter for offline processing but both are highly relevant in amplifiers and BCI applications. Thus, IIR filters are frequently preferred for online processing (despite non-linear phase).
>
> > I thought it seemed a bit odd to report it like this in a paper.
>
> I do not see a problem as long as you reason your approach.
>
> Best,
> Andreas
>
> > Am 27.01.2017 um 21:34 schrieb Makoto Miyakoshi <mmiyakoshi at ucsd.edu>:
> >
> > Dear Andreas,
> >
> > >> And I still don't like 0.1Hz high-pass if you use FIR
> > > Why? What is the problem?
> >
> > Assuming people just enter '0.1' to EEGLAB default FIR filter GUI, it'll apply 0.05Hz cut-off high-pass filter with Hamming window. When the sampling rate is 250Hz, the model order it calculates is 8251, which is 33 sec long. Meanwhile, people are usually only interested in the first few hundreds milliseconds of the averaged signal. And they subtract pre-stimulus baseline mean value from the entire epoch anyway. I don't see much reason to apply 0.1-Hz high-pass filter in these cases. Of course, I saw papers discussing this issue and I have no objection, but intuitively it is still weird to me. I think the point is that people want to claim that ERP is a broadband phenomenon, but the way they demonstrate it is not satisfactory to me.
> >
> > By the way, people often complain about our recommended -1 to 2 sec epoch to be too long, and our recommended 1-Hz high-pass filter too aggressive. But doesn't it makes more sense to apply 1-Hz high-pass filter to 3-sec epoch data, compared with applying 0.1-Hz high-pass for 0.8 sec epoch data? This kind of unbalancedness makes me feel weird.
> >
> > > What would be your suggested alternative?
> >
> > I thought IIR would be more reasonable for such a low cutoff frequency, but I have never tried it myself (as far as I know, clean_rawdata plugin comes with its IIR filter, which could be a part of BCILAB for online processing). It depends on your relative time scale. If I analyze hour-long resting state data to target minute-long slow changes, I would use FIR with no problem.
> >
> > I did not know much about stability issue, but this time you made me learn it a little bit. Thank you Andreas for always pushing my back in this way.
> >
> > Makoto
> >
> >
> >
> > On Fri, Jan 27, 2017 at 3:28 AM, Andreas Widmann <widmann at uni-leipzig.de> wrote:
> > Dear Makoto,
> >
> > > And I still don't like 0.1Hz high-pass if you use FIR
> > Why? What is the problem? What would be your suggested alternative?
> >
> > > (and I do not know how bad it is to use IIR... I've heard it can become 'unstable' but I've never seen it myself)
> > Here you go:
> > [b,a]=butter(4,0.1/500,'high');
> > isstable(b,a)
> > freqz(b,a)
> >
> > But note that possible instability is not the main problem with IIR application in electrophysiology. There are workarounds (e.g. for this example using zpk: [z,p,k]=butter(4,0.1/500,'high'); sos=zp2sos(z,p,k); isstable(sos)).
> >
> > Best,
> > Andreas
> >
> >
> > >
> > > > I won't be using granger causality but I will be estimating phase during ITC.
> > >
> > > Should be ok.
> > >
> > > Makoto
> > >
> > > On Thu, Jan 26, 2017 at 2:12 PM, Ahmad, Jumana <jumana.ahmad at kcl.ac.uk> wrote:
> > > Dear Makoto,
> > > I actually switched to the pop eeg filt eeglab function and it now Really attenuated anything >40Hz, and my ERPs are cleaner. However I filtering between 0.1-40Hz at the same time in the GUI (I interned the high pass and low pass simultaneously). Is this OK to do? The frequency response looks OK.
> > >
> > > The filter order was automatically set very high by the GUI, but it's continuous data and I have room without events at the beginning and end of the data so any edge effects can be disgusted. What do you think?
> > >
> > > Also, this is for my ERP analysis- I trained ICA on a 1Hz high pass filtered set.
> > > I won't be using granger causality but I will be estimating phase during ITC.
> > > Best wishes, and thanks,
> > > Jumana
> > >
> > > ------------------------------------------
> > > Post-Doctoral Research Worker in Cognitive Neuroscience
> > > EU-AIMS Longitudinal European Autism Project (LEAP) & SynaG Study
> > > Room M1.26.Department of Forensic and Neurodevelopmental Sciences (PO 23) | Institute of Psychiatry, Psychology & Neuroscience | King’s College London | 16 De Crespigny Park | London SE5 8AF
> > >
> > > Phone: 0207 848 5359| Email: jumana.ahmad at kcl.ac.uk | Website: www.eu-aims.eu | Facebook: www.facebook.com/euaims
> > >
> > > From: Makoto Miyakoshi <mmiyakoshi at ucsd.edu>
> > > Sent: 26 January 2017 23:49:50
> > > To: Ahmad, Jumana
> > > Cc: eeglablist at sccn.ucsd.edu
> > > Subject: Re: [Eeglablist] high frequency oscillation- eeg advice
> > >
> > > Dear Jumana,
> > >
> > > It's a bad idea to perform ICA with 0.1Hz high-pass filtered data. The cutoff frequency is too low. See this page and the referenced paper.
> > >
> > > https://sccn.ucsd.edu/wiki/Makoto%27s_preprocessing_pipeline#High-pass_filter_the_data_at_1-Hz_.28for_ICA.2C_ASR.2C_and_CleanLine.29
> > >
> > > > A 30Hz low pass does not help to get rid of the oscillation, which is really significant in the data.
> > >
> > > Check the channel frequency spectra and tell me if you see peaks in it. If necessary, you can cut it off using a designed low-pass filter (not like Butterworth...)
> > >
> > > > I use a butterworth filter, which is good for ERP analysis with low phase distortion.
> > >
> > > Do not make qualitative judgement just because something is NOT a classic Butterworth. Of course, if the attenuation is small, the phase 'distortion' is small. But if such small attenuation is not useful, it does not help at all! Also, be careful with the word 'phase'. Particularly people who do not know basics of signal processing believe phase as some magical thing. If you are not performing Granger Causality Analysis or something, you don't need to be so worried about phase issue in practice.
> > >
> > > > I also already run ICA, but in some datasets there is a very significant high frequency oscillation.
> > >
> > >
> > > Remember, to eliminate this is more important than being afraid of qualitative phase issue.
> > >
> > > > However, I can see the high frequency oscillations in my ERP, which is not ideal and now I need to try and get rid of it further.
> > >
> > > Can I filter again on top of the data which already has already undergone ICA- I only use ICA to remove blinks?
> > >
> > >
> > > You'd better to filter the data on continuous state. If you need to filter the epoched data, the half of filter length from both ends becomes unreliable.
> > >
> > > > Should I do cleanline, although it would have to be after ICA now- I read this is not advisable.
> > >
> > > > Should I use a notch filter?
> > >
> > >
> > > If you see > 20dB line noise, Cleanline may not help. In this case, I would simply apply a designed low-pass filter, either Hamming (-50dB) or Blackman (-70dB) using firfilt(). See 'Tools' -> 'Filter the data' -> 'Windowed sinc FIR filter'.
> > >
> > > There are different guys saying different things about data preprocessing. It is confusing, I know! The only good solution for this is to become an engineer yourself...
> > >
> > > Makoto
> > >
> > >
> > >
> > > On Tue, Jan 24, 2017 at 7:00 AM, Ahmad, Jumana <jumana.ahmad at kcl.ac.uk> wrote:
> > > Hi  Everyone,
> > >
> > > I am running a large scale ERP analysis. I filtered 1-40Hz (ICA AMICA), or 0.1-40Hz for the ERP dataset. A 30Hz low pass does not help to get rid of the oscillation, which is really significant in the data. I use a butterworth filter, which is good for ERP analysis with low phase distortion.
> > >
> > > I also already run ICA, but in some datasets there is a very significant high frequency oscillation.
> > >
> > > I do not use cleanline, which is not typical in the literature I have been basing my pipeline on.
> > >
> > >
> > >
> > > However, I can see the high frequency oscillations in my ERP, which is not ideal and now I need to try and get rid of it further.
> > >
> > > Can I filter again on top of the data which already has already undergone ICA- I only use ICA to remove blinks?
> > >
> > > Should I do cleanline, although it would have to be after ICA now- I read this is not advisable.
> > >
> > > Should I use a notch filter?
> > >
> > >
> > >
> > > Any help would be appreciated.
> > >
> > > Best wishes,
> > >
> > > Jumana
> > >
> > >
> > >
> > > ------------------------------------------
> > >
> > >
> > > Post-Doctoral Research Worker in Cognitive Neuroscience
> > >
> > > EU-AIMS Longitudinal European Autism Project (LEAP) & SynaG Study
> > >
> > > Room M1.09. Department of Forensic and Neurodevelopmental Sciences (PO 23) | Institute of Psychiatry, Psychology & Neuroscience | King’s College London | 16 De Crespigny Park | London SE5 8AF
> > >
> > >
> > >
> > >
> > >
> > >
> > > ***************************************************************************************
> > >
> > > ***************************************************************************************
> > >
> > > We are currently looking for volunteers with mild intellectual disability to be part of our exciting and world-leading European project into brain development and social behaviour. Please, do get in touch if you know of anyone who may be interested in taking part.
> > >
> > > ***************************************************************************************
> > >
> > > ***************************************************************************************
> > >
> > >
> > >
> > >
> > > _______________________________________________
> > > Eeglablist page: http://sccn.ucsd.edu/eeglab/eeglabmail.html
> > > To unsubscribe, send an empty email to eeglablist-unsubscribe at sccn.ucsd.edu
> > > For digest mode, send an email with the subject "set digest mime" to eeglablist-request at sccn.ucsd.edu
> > >
> > >
> > >
> > > --
> > > 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
> > > _______________________________________________
> > > Eeglablist page: http://sccn.ucsd.edu/eeglab/eeglabmail.html
> > > To unsubscribe, send an empty email to eeglablist-unsubscribe at sccn.ucsd.edu
> > > For digest mode, send an email with the subject "set digest mime" to eeglablist-request at sccn.ucsd.edu
> >
> >
> >
> >
> > --
> > Makoto Miyakoshi
> > Swartz Center for Computational Neuroscience
> > Institute for Neural Computation, University of California San Diego
> > _______________________________________________
> > Eeglablist page: http://sccn.ucsd.edu/eeglab/eeglabmail.html
> > To unsubscribe, send an empty email to eeglablist-unsubscribe at sccn.ucsd.edu
> > For digest mode, send an email with the subject "set digest mime" to eeglablist-request at sccn.ucsd.edu
>
>
>
>
> --
> Makoto Miyakoshi
> Swartz Center for Computational Neuroscience
> Institute for Neural Computation, University of California San Diego
> _______________________________________________
> Eeglablist page: http://sccn.ucsd.edu/eeglab/eeglabmail.html
> To unsubscribe, send an empty email to eeglablist-unsubscribe at sccn.ucsd.edu
> For digest mode, send an email with the subject "set digest mime" to eeglablist-request at sccn.ucsd.edu

```