EEG Covariance Matrices

Hi everyone, I have been working with resting EEG data collected from 21 scalp electrodes. These EEG recordings also include 2 EOG channels and 1 ECG channel.

I have been using ICA to remove ECG/EOG artifacts. I am unsure about one of the steps involved in ICA, which is whitening the data. In the documentation, it states that data must be pre-whitened to deal with different channel types with different units. In my recordings, the amplitudes from EEG channels are scaled to microvolts (when using the to_data_frame() function). The ECG channel is also scaled to microvolts (although these amplitudes are 10-100X higher than EEG channel amplitudes).

So here are my questions:

  1. When and why would a noise covariance matrix be used to whiten the data?
  2. Would it be necessary to use a covariance matrix for my data, and if so, why would it be necessary?


  • MNE version: 1.0.3
  • operating system: Windows 11

Thank you for your help.

Hello, MNE does all of this automatically for you (scaling, whitening) when running ICA. You don’t have to worry about any of this.

I’m not sure why you’re looking at the data in the DataFrame export, though. Please note that MNE rescales the data for the export, and what you see in the DataFrame is not what MNE internally works with.

Best wishes,

1 Like

Hi Richard, if I am understanding correctly, does this mean that I do not have to specify a covariance matrix for whitening? Are there circumstances when it is necessary to specify a covariance matrix?

Thank you for letting me know about the scaling in the DataFrame export. I will keep that in mind going forward.

Thank you,

Hello, I have never had to provide a covariants matrix to ICA. I suppose it’s only needed in cases where you want to customize the whitening. @larsoner probably knows more!

In practice it seems like it shouldn’t matter much assuming you set your PCA explained variance threshold reasonably (i.e., to discard any projected/rank-deficient components). But I haven’t used ICA much so I’m not really sure

Thank you for your help, Richard and Eric!! I also read through the documentation again, and I found out that the covariance matrix is used to deal with different channels having different units. Since my data only consists of EEG channels, I do not need to use the covariance matrix.