[Eeglablist] Rank deficient data
Scott Burwell
burwell at umn.edu
Wed Jan 22 10:16:18 PST 2020
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
)
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 )? 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 )? 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>
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
> 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
>
--
Scott J. Burwell, PhD
NIDA T32 Postdoctoral Research Fellow
Department of Psychiatry & Behavioral Sciences
University of Minnesota, Minneapolis, MN
burwell at umn.edu
github.com/sjburwell
More information about the eeglablist
mailing list