脑电数据预处理-ICA去除伪影
ICA/BSS的理论与模型
独立成分分析(ICA)是一种盲信号分离(Blind Signal Separation,BSS)方法。ICA可线性建模如下图所示.
假设X为”通道x时间”的脑电信号,S为”成分x时间”的源信号,A为混合矩阵。ICA的目的是找到混合矩阵A,使每一个分量(每一行)相互独立。根据线性模型,采用独立成分分析方法对脑电信号进行去伪迹处理。
执行ICA算法得到混合矩阵A;
自动得到源信号S = pinv(A)×X;
在S中手动识别伪影成分,通过将相应的行设置为0,我们有S_bar;
通过移除伪影后的S_bar,我们可以自动得到X_bar= A×S_bar。
信号X_bar是ICA伪影去除的结果。在Letswave7中,步骤2和步骤4可以自动完成,其中pinv(A),也称为混合矩阵,是矩阵A的伪逆矩阵。步骤1 (computer ICAmatrix)和步骤3 (identify artifact component)需要手动执行。因此,在Letswave7中,我们需要两个步骤来完成ICA的移除伪影工作。
关于ICA之前也介绍过很多,可以查看:
说明,这部分的教程是基于前面几次教程的基础上进行的。所以要进行ICA预处理进行伪影去除,需要:
1.先导入数据《letswave7中文教程1:软件安装与脑电数据导入》;
2.然后《letswave7中文教程2:脑电数据预处理-通道位置分配》,之后开始本节的教程。
第5步:计算ICA矩阵
在管理模块数据列表中选择“chan_interpbutt sel_chan sub093”数据集,在菜单中点击Process->Spatial filters(ICA/PCA)->Compute ICA matrix。
在Batch模块中,选择decide byuser 成分数量,设置Components Number(成分数量)为40。
[Tips:成分数量可以自己设定,一般小于通道数。]
点击Run按钮以进行不良电极插值。[注,这里运行需要一些时间,所以耐心等待]。
一个名为“icachan_interp butt sel_chan sub093”的新数据集将出现在管理器模块的数据列表中。
第6步:识别伪影成分
在得到ICA矩阵、混合矩阵A和逆混合矩阵pinv(A)后,我们需要人工识别其伪影分量。
在管理器模块数据列表中选择数据集“ica chan_interp buttsel_chan sub093”,在菜单中点击Process->Spatial filters(ica /PCA)->Applyica /PCA Spatial filter。
我们将看到用于手动删除空间过滤器成分的界面。
在这个界面中,不同的信息用不同的颜色来标记。黑色表示原始信号X,蓝色表示源信号S,橙色表示过滤后的信号X_bar。利用左侧面板中的黑色列表框,我们可以选择数据集、epoch和通道来检查原始信号X作为中间面板中的黑色曲线。接下来,我们可以选择左侧面板中蓝色的成分,来检查底部蓝色面板中源S中每个成分的时间/频率/空间特征。在我们将成分标识为而言之后,我们可以在右边的橙色面板中选择它们。相应地,中间面板中的橙色曲线将显示经过过滤的信号X_bar。我们可以立即检查ICA过滤器的结果。
在本研究中,我们将成分1识别为眨眼伪影。头皮地形图显示眼睛附近存在“等效电流偶极子”(ECD)。时域波形呈尖峰状,频域功率集中在低频(<5Hz),说明该独立分量为眨眼伪影。
Comp1的时域波形图
Comp1的头皮地形图和频域功率图
Comp2的时域波形图
Comp2的头皮地形图和频域功率图
当我们通过选择右侧面板中的comp1移除该成分后,与中间面板中的橙色曲线X_bar和黑色曲线X相比,眨眼(blink)伪影已经被有效地移除。同样,成分2为伪像,具有侧向眼动。可以从头皮地形图上观察到清晰的证据。
在右边面板中选择橙色的comp1, comp 2,然后点击OK按钮。
一个名为sp_filterica chan_interp butt sel_chan sub093的新数据集将出现在管理器模块的数据列表中,这是ica去除伪影后的结果。
讨论
为了在Letswave7中运行ICA,需要讨论几件事情。
在菜单中,ICA矩阵计算有两项,分别是Compute ICA matrix和Compute ICA matrix(merged)。它们功能相似,但输入和输出不同。如果选择了多个数据集,则ComputeICA matrix将分别计算ICA矩阵。而Compute ICA matrix(merged),letswave7首先将所有选定的数据集合并在一起,然后为所有数据集计算一个公共ICA矩阵。
在预处理中还应讨论ICA的操作顺序和分割。由于ICA是一种用于去除伪影的数据驱动方法,因此我们需要足够的数据来运行ICA。而过多的数据量会大大增加计算时间,但对结果准确性的提高是有限的。通常情况下,我们在分割后运行ICA,因为分割可以缩短数据长度,去除不相关的噪声。然而,在P300的研究中,试验之间的重叠非常严重,分割后运行ICA会不必要地增加计算时间。因此在这个示例里,我们先运行ICA,然后在分割。
在本示例中,我们通过选择成分数量为40来运行ICA。通常,可以分离的独立分量的最大数目等于原始信号X中的通道数目。在本例中,由于通道数64已经足够大,所以我们将独立组件的数量设置为40就可以了
letswave7以及rawdata1.zip 数据资源下载
在公众号后台回复"letswave"(建议复制),获取数据资源。
文章仅用于学术交流,不用于商业行为,
若有侵权及疑问,请后台留言,管理员即时删侵!
更多阅读