[Eeglablist] Rank deficient data

Madeline Anne Gregory mg242 at buffalo.edu
Wed Jan 22 13:52:27 PST 2020


Hi Scott, 

Great, thank you!

Using the ICLabel plugin allows me to reject artifacts after using the pca option for runica (unlike ADJUST). It was through reading Makoto’s preprocessing tips that I realized my data would be rank deficient due to interpolation and re-referencing. However, the pca option allows me to account for this, and I can still use the ICLabel plugin to reject artifacts afterwards. 

Best,
Maddie

> On Jan 22, 2020, at 1:16 PM, Scott Burwell <burwell at umn.edu> wrote:
> 
> Hi Madeline,
> 
> Thanks for bringing this issue to the listserv.
> 
> If you intend to use ICA for any step in your EEG processing (e.g., artifact correction, etc.), an ICA decomposition performed on or ICA solution applied to rank deficient data can be the source of many (sometimes BIG) problems down the line - so I would not suggest ignoring the rank deficiency issue. One thing you should consider is *why* you are obtaining rank deficient data? In my experience with very high density EEG (as is the case with your 256-channel data) is that because electrodes are situated very close to one another it is highly prone to salt-bridges, which often reduce the rank of the data. So, identifying which channels are salt-bridged and removing them should be a (near) first step in your preprocessing stream. If it helps, I have built a small MATLAB function ( https://github.com/sjburwell/eeg_commander/blob/master/functions/basefunc/get_elecdists.m <https://github.com/sjburwell/eeg_commander/blob/master/functions/basefunc/get_elecdists.m> ) that can be used to calculate the "electrical distance" (Tenke & Kayser, 2001) among all channels -- electrical distances that approach 0 reflect pairs/groups of salt-bridged channels, and these channels should be dropped early in preprocessing. I've found a minimum acceptable electrical distance of ~2uV to work will for single-trial 61-channel BioSemi data, *but the value that is acceptable for your data is likely to be different because of differences in recording system,* etc. 
> 
> More broadly related to the rank deficiency issue - have you walked through Makoto's preprocessing tips ( https://sccn.ucsd.edu/wiki/Makoto's_preprocessing_pipeline <https://sccn.ucsd.edu/wiki/Makoto's_preprocessing_pipeline> )? I have found his notes helpful in thinking about the ordering of operations (e.g., how/when to accurately estimate rank? when to perform ICA? when to interpolate? etc.) as to preserving the integrity of your data when preprocessing using ICA. 
> 
> Finally, while I have enjoyed the ADJUST plugin, you might consider the ICLabel plugin ( https://sccn.ucsd.edu/wiki/ICLabel <https://sccn.ucsd.edu/wiki/ICLabel> )? I have found ICLabel to do a pretty good job identifying ocular (and other) artifacts, and it doesn't require the number of independent components to match the number of channels (as long as the EEG.icachansind field is accurate). 
> 
> Best,
> Scott 
> 
> On Wed, Jan 22, 2020 at 1:36 AM Madeline Anne Gregory <mg242 at buffalo.edu <mailto:mg242 at buffalo.edu>> wrote:
> Hi all, 
> 
> I am having some issues trying to figure out how to deal with rank deficient data.
> 
> Initially, I ignored rank deficient data and ran ICA after interpolating bad channels and re-referecing to the average reference. I know this can produce 'ghost ICAs' but how problematic is it really? Especially in my case when dealing with a 256-electrode array. 
> 
> I decided that in case it really is an issue, I should try to find a way to fix it. At first, I tried interpolating and re-referencing after ICA. This is problematic because re-referencing after ICA removes all ICA weights. From what I understand, this does not 'undo' any of the removed ICs/artifacts (that were removed during ICA), so it is only really problematic if I intend to use ICs later on for analysis (someone please correct me if I am wrong). At this point, I am unsure whether I will need the ICs (I may just use channels instead), but I don't want to be in a situation where I'd like to do an analysis that requires them but I'm unable to. 
> 
> I then tried to use the pca option for runica in order to run ICA only on non-interpolated channels (i.e. only on 'real' data). However, when I then try and run ADJUST after ICA, I get the following error message:
> 
> If ICA was not run on all channels, remove the excluded channels before running ADJUST.
> They can be reintroduced by interpolating them from neighbour channels after artifact removal.
> 
> As I previously mentioned, I don't want to interpolate after ICA. So I went into the ADJUST code and removed the line which specified that number of ICs must = number of channels. I was able to run ADJUST just fine after that, however I suspect I probably changed something pretty important about the algorithm..
> 
> I know I could just not use an algorithm to reject ICs and instead reject ICs myself, however I am not keen to do this for up to 256 ICs... I also think using the algorithm makes the process a little bit more objective. 
> 
> At this point, I'm inclined just to ignore the rank deficiency issue... but of course I don't want this to negatively affect my results or lead to erroneous conclusions. For reference, I intend to use this data for time-frequency analysis. 
> 
> I appreciate any suggestions or comments!
> 
> Thank you,
> Maddie
> _______________________________________________
> Eeglablist page: http://sccn.ucsd.edu/eeglab/eeglabmail.html <http://sccn.ucsd.edu/eeglab/eeglabmail.html>
> To unsubscribe, send an empty email to eeglablist-unsubscribe at sccn.ucsd.edu <mailto: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 <mailto:eeglablist-request at sccn.ucsd.edu>
> 
> 
> -- 
> Scott J. Burwell, PhD
> NIDA T32 Postdoctoral Research Fellow
> Department of Psychiatry & Behavioral Sciences
> University of Minnesota, Minneapolis, MN
> burwell at umn.edu <mailto:burwell at umn.edu> 
> github.com/sjburwell <http://github.com/sjburwell> 




More information about the eeglablist mailing list