General question: Applying baseline

Hi everyone,

I would like to ask about the typical preprocessing protocol people use for applying baseline to data. I have a group of participants which I am running time-frequency analysis on.

The order towards getting to the eventual outcome goes from:

  1. Generating ‘epochs’ for each participant using mne.epoch
  2. Then sending the ‘epochs’ output to mne.tfr_morlet, which would then be averaged into a single group tfr data.
  3. Separately, a single grand averaged evoked data is also generated for evoked activity plotting from the list of ‘epochs’.

Do people apply baseline to at each stage of this different steps? (ie. Applying baseline to each epoch/trial in step 1, then apply baseline again to the single group averaged data in steps 2 and 3), or is it sufficient to just apply baseline only on the final averaged data (in steps 2 and 3) and leave the ‘epochs’ with baseline set to (None, None) to retain the original activity for as long as possible?

Hi @AaronAng, sorry for the late response. I personally would only apply baseline-correction at the very beginning for each participant individually. It should not be necessary to re-apply it after averaging data – if you believe it is, this could be indicative of a problem with your data processing.

Please be aware that (None, None) means that the entire epoch will be used for “baseline” correction. To disable baseline-correction, you’d need to pass baseline=None.

Thanks Richard. Just to be sure though, no averaging is needed even after getting the tfr_morlet output (time freq)? Sorry I am just trying to wrap my head around this as all the guides involving tfr_morlet has a line that goes .apply_baseline(mode=baseline_mode, baseline=baseline). That is why I was a little confused as to the different stages of averaging.

Hi @AaronAng,

just to add: watch out that baseline correction in the time domain (your step 1.) and in the time-frequency domain (anything after step 2. ) are two fundamentally different things. More precisely: baseline correction in the time domain, does not make baseline correction in the time-frequency domain redundant. AFAIK, whether or not you baseline correct in the time domain does not have substantial influence on the results of your time-frequency decomposition (maybe for very low frequencies though).

The question whether it’s better/different to baseline correct time-freq data on the single trial, single subject, or averaged data is discussed in Hu et al. (2014). [Unfortunately, that’s paywalled. Let me know if you do not have access.]
Spoiler: it depends on the kind of correction you use.

1 Like

Ah thanks @eioe ; just as I asked, you replied. So in short, apply baseline once during the mne.Epoch stage, and once more after getting the time freq output from tfr_morlet.

Thanks for the article. Looks like my institution has access to it.

So in short, apply baseline once during the mne.Epoch stage, and once more after getting the time freq output from tfr_morlet .

That’s how I do it, yes. But as I wrote, it may depend on your specific pipeline.
In my experience, it’s good to dig into the baselining procedures for the time-freq data, as your choices there have a very strong influence on your results.