EEGLAB系列教程5:数据预处理2(ICA去伪迹)
今天介绍EEG数据处理系列教程5,在前面的几期中,已经介绍了数据基本处理过程,可以参见以下链接:
EEGLAB系列教程1:安装和启动 EEGLAB
EEGLAB系列教程2:在 EEGLAB 中管理数据集
EEGLAB系列教程3:在 EEGLAB 中建立location
EEGLAB系列教程4:在 EEGLAB 中预处理数据1
在很久之前,我也利用analyzer软件进行了ICA去噪的教程分享,可以参考链接:
独立成分分析(ICA)
在运行ICA之前,通过前面的系列教程可以剔除了不好的通道和肉眼可见的不好数据段。然后在来运行ICA是更好的。
运行 ICA
对连续 EEGLAB 数据集进行ICA,选择Tools → Decompose data by ICA。将调用函数pop_runica。如使用默认选项运行 ICA,只需按OK即可。
如使用高导联(128导及以上),可以将选择的commandline option参数进行修改,选取其中的一部分数据进行PCA提取成分。
正常运行过程:
ICA 算法
EEGLAB 允许尝试不同的 ICA 算法。Infomax ICA 使用runica、 Jader 算法使用jamer.m和 SOBI 算法使用sobi.m这些都是EEGLAB 默认算法。通过下拉选择即可选择算法。
另外需要使用 FastICA 算法,必须安装FastICA 工具箱并将其添加到MATLAB 路径中。
查看 ICA 成分
runica.m给出的成分顺序是按每个成分计算的 EEG 方差的降序排列。
IC成分激活(时间进程)
依时间进程查看IC成分,选择Plot → component activiations(scroll)。滚动浏览 ICA 激活,可以很容易地发现占特征伪影的成分。例如,在下面的展示中,成分 3 可能是眨眼成分。
绘制2-D成分头皮图
绘制 2-D 头皮成分图,选择Plot → Component maps → In 2-D。然后由函数pop_topoplot生成交互式窗口(如下) 。只需按确定即可绘制所有成分。
出现以下图片,显示所选成分头皮显示图。
优化 ICA 分解的质量
ICA是利用机器学习的算法,对EEG数据进行成分分解。它是将所有训练数据都考虑在内,当训练数据中留下太多类型的噪声—复杂的运动伪影、电极坏道等,这些坏数据特征将对ICA分解会产生影响。因此,向 ICA 提供尽可能多的干净 EEG 数据才是最佳的。(剔除较大的明显的伪迹数据)
在 ICA 之前与自动伪迹剔除相关的问题
ICA 之前的自动伪迹剔除可能会删除部分数据(如:较大的眨眼等),当然这也可以通过 ICA方法进行校正。但是,降低自动伪迹剔除的阈值可能会保留太多 ICA 无法删除的伪迹。在这种情况下,推荐以下操作步骤:
- 从已最少清除伪迹(或仅删除坏通道)的数据集开始
- 在这个数据集上运行 ICA
- 识别不良 ICA 成分并从数据中删除
- 使用更严格的阈值或剔除伪迹方法再次清理ICA后的数据集,以删除数据的剩余伪迹部分
将 ICA 应用于分段数据而不是连续数据
一般来说,建议对连续数据使用 ICA,而不是已提取的分段数据。首先,分段数据已经减少了样本数量,当存在更多数据时,ICA 成分的质量会更高些。其次,删除分段数据的基线会对ICA 产生重大影响,因为它会在每个通道中引入随机偏移,这是 ICA 无法建模或补偿的。虽然可以提取分段时不删除基线,但是在运行 ICA 之后,基线可能会被删除。
将 ICA 应用于分段数据也是可能的。ICA 期望数据是平稳的,即相同的统计模型正在生成所有数据样本。如果您在 分段之后有足够的数据,那么分段数据可能更可取,因为它会更加稳定。但是,在对不同事件进行分段以生成不同数据集时,我们建议对所有条件使用相同的 ICA 分解。实际上,这可能意味着在运行 ICA 之前创建一个包含所有分段类型的数据集。假设所有数据在统计上相似,更多的数据通常会提供更好的 ICA 分解。更长的时期更可取,因为它们为 ICA 产生更多数据(假设平稳性成立。)
自动检测伪迹ICA成分
目前,Luca Pion-Tonachini的ICLabel插件是 EEGLAB 默认安装的 EEGLAB 插件,它提供了对每个独立成分(大脑、眼动、肌肉、线路噪声等)类型的估计。ICLabel 的目标是开发一种足够可靠和准确的脑电图 IC 分类器,可用于大规模研究。当前的分类器实现是在数千个手动标记的 IC 和数十万个未标记的 IC 上进行训练的。更多信息可以在ICLabel 参考文章中找到。
运行 ICA 后,选择菜单项Tools → Classify components using ICLabel → Label components。只需选择默认值,然后按 OK。
将弹出以下窗口并要求绘制成分。只需按确定。
单击一个成分将弹出一个窗口,包含其成分属性以及属于每种类型的估计概率。IC 成分将与它们最可能属于的类别以及属于该类别的可能性一起绘制。
然后可以选择菜单项Tools → Classify components using ICLabel → Flag components as artifacts。默认设置是标记那些有超过 90% 的概率属于肌肉或眼动伪迹(眨眼和眼球运动)类别的成分。使用此功能标记成分时,手动拒绝成分的界面中的按钮将显示为红色(Tools→Reject componengts by map),可以编辑哪些成分将其标记为伪迹。
剔除 ICA 成分
删除成分,使用菜单栏Tools → Remove components from data。
结果窗口(下图)中默认包含的前面标记的伪迹成分编号。
可以点击"Yes"或"Manual reject"按钮来手动编辑成分列表,如下所示。
输入需要剔除的成分编号,然后点击Ok。会弹出对话框窗口,询问是否要比较剔除成分前后的数据,如下图。
单击Plot single trials按钮。显示(下图)在(黑色)和之后(红色)分量剔除之前的数据。我们可以清楚地看到 ICA 去除眨眼伪迹的效果如何。
如果是在分段数据时期中删除 ICA 成分,可以单击Plot ERPs按钮,获得类似的下图,绘制通道 ERP 之前(蓝色)和之后(红色)剔除后的数据结果。
一旦对结果感到满意,点击接受按钮。将弹出另一个窗口,询问是否要重命名新数据集。输入新名字,保存数据集,然后再次按Ok。
最后附上网络上总结的经典成分识别:
眨眼成分
成分判断: 眨眼成分
判断依据:
- 在头皮地形图的前端分布;
- ERP图像中有小方块;
- 随机分布;
- 功率谱图中,低频能量高;
- 成分排序较为靠前,像这个示例中,为IC3
颜色的深浅有意义,但是红还是蓝无所谓,大红大蓝都可以的。
眼动成分
成分判断: 眼动成分
判断依据:
- 在头皮地形图的前端两侧分布,红蓝相对;
- 在ERP图像中,长条状,红蓝相间;
- 随机分布;
- 在功率谱图中低频能量高
- 分量排序靠前,但一般在眨眼后面,在该示例中为IC5.
头动成分
成分判断: 头动成分
判断依据:
- 在头皮地形图中分布在周围;
- 在ERP图像中呈现长条状;
- 随机分布;
- 在单个trial里有非常明显(非常长)的飘移。
成分判断:心电成分
成分判断:心电成分
判断依据:
1.在ERP图像中呈雨点般散落状。
成分判断:工频干扰
判断依据:
- 头皮地形图显示分布在地线周围;
- 在ERP图像中单个trail上的分布非常规律;
- 在功率谱图中,50Hz左右能量最高(有剧烈的峰值)。
ICA判断网站,若是对ICA成分不熟悉,可以看看这个网站的介绍
网址:https://labeling.ucsd.edu/tutorial/labels
参考网址:
https://github.com/sccn/ICLabel
https://labeling.ucsd.edu/tutorial/format
Groppe, D. M., Makeig, S., & Kutas, M. (2009). Identifying reliable independent components via split-half comparisons. NeuroImage, 45(4), 1199–1211. https://doi.org/10.1016/j.neuroimage.2008.12.038
Luca Pion-Tonachini, Ken Kreutz-Delgado, Scott Makeig,ICLabel: An automated electroencephalographic independent component classifier, dataset, and website,NeuroImage,Volume 198,2019,Pages 181-197,ISSN 1053-8119,https://doi.org/10.1016/j.neuroimage.2019.05.026.
谢谢大家观看,如有帮助,来个喜欢或者关注吧!
本文作者:陈锐
本文仅供学习参考,有任何疑问及侵权,扫描以下公众号二维码添加交流:
更多学习内容,仅在知识星球发布: