小言_互联网的博客

EEGLAB合辑 | 第八节 使用 ICA 分解数据

549人阅读  评论(0)

​脑电数据的独立成分分析

通过ICA(或任何线性分解方法,包括PCA及其衍生物)分解数据涉及从单头皮通道收集的数据到空间转换的“虚拟通道”的基础的线性变化。即代替同时记录的单通道数据记录的集合,将数据变换为应用于整个多通道数据的空间滤波器的同时记录的输出的集合。
在原始头皮通道数据中,数据记录矩阵的每一行都代表一个源通道到一个数据通道和一个或多个参考通道之间的电压差总和的时间过程。在ICA分解之后,数据激活矩阵的每一行都给出了从通道数据中进行空间过滤的一个组件过程的活动的时程。
在ICA分解的情况下,选择独立分量滤波器以产生通道数据中可用的最大时间独立信号。这些实际上是数据中的信息源,这些数据的混合物通过体积传导已记录在头皮通道中。混合过程(对于EEG,通过体积传导)是被动的,线性的,并且不向数据添加任何信息。

运行ICA分解

关键步骤9:计算ICA分量
要计算EEG历时数据集(或连续EEGLAB数据集)的ICA分量,请选择“工具”>“运行ICA”, 这将调用函数pop_runica.m,要测试此功能,只需按OK。
这里默认的算法是 runica。

绘制二维分量头皮图

要绘制二维头皮组件图,请选择“plot>component maps>In 2d-D”,然后通过函数pop\u topoplot.m生成交互式窗口(下图),它类似于我们用来绘制ERP头皮图的窗口,只需按“确定”即可绘制所有组件。

注意:这可能需要几个数字,具体取决于通道的数量和Plot geometry字段参数。另一种方法是对较小的信道组(例如,1:30、31:60等)多次调用此函数。下面我们只要求前12个组件(1:12),并选择设置“电极”、“关”。
将出现以下topoplot.m窗口,显示选定组件的头皮图投影。
请注意,下图中的比例使用任意单位,组件活动时间过程的比例也使用任意单位。但是,组件的“头皮图”值乘以组件活动时间过程的单位与数据的单位相同。

学习识别独立组件的类型可能需要经验,确定一个成分是认知相关、肌肉伪影还是其他类型伪影的主要标准是,首先是头皮图(如上所示),其次是成分时间过程,其次是成分活动功率谱,最后(给定一个事件相关数据Epoch的数据集),erpimage.m。例如,专家眼睛将组件3(上图)作为眼睛伪影组件(也可通过调用菜单绘图>组件激活(滚动)查看组件活动),在上面的窗口中,单击3号头皮图以弹出一个单独显示它的窗口(如前所述,您的分解和组件排序可能略有不同)。

绘制零件头图

使用EEGLAB,您还可以通过选择“plot>component maps>In 3D-D”来绘制组件地形的3D head plot。这将调用pop\u headplot.m,该函数应自动使用绘制ERP-3D头皮图时生成的样条曲线文件。选择一个或多个组件(下面),然后按OK。

出现下面的pop_headplot.m窗口,您可以使用Matlab旋转3-D选项用鼠标旋转这些头图,或者在上面的窗口中输入其他视角。

研究和删除ICA组件

要研究组件属性并标记要拒绝的组件(即识别要从数据中减去的组件),请选择“工具>使用ICA拒绝数据>按图拒绝组件”,生成的图形与先前的2-D头皮贴图之间的区别在于,这里可以单击每个组件头皮图上方的矩形按钮来绘制每个组件的属性。

如何处理“损坏的” ICA分解

使用Infomax ICA(这是EEGLAB中的默认设置)时,前两个组件的活动可能会崩溃。发生这种情况是因为两个组件的活动相互补偿。在这种情况下,两个组件都被视为具有大量噪声, 如下所示。

一种解决方案是使用不同的ICA算法,我们一直在使用的另一种解决方案是使用PCA尝试减少尺寸数。例如,在32个通道的情况下,将尺寸数减少到10可以消除该问题(减少到20则没有)。

以下是相同的数据,但仅分解了10个PCA组件,前两个组件可以像以前一样清晰地隔离眨眼,但不会显得嘈杂。我们不确定删除下面的单个眨眼组件是否比删除上面两个非常嘈杂的组件更好,因为我们没有进行任何正式的比较。我们的推论是上述两种成分也往往会使其他成分产生噪音,因此最好采用PCA减小尺寸的解决方案。

这并不是说应该系统地使用PCA,通常,PCA将通过添加非线性来稍微破坏数据,因此最好在可能的情况下使用满秩数据矩阵。

从数据中减去ICA成分

通常,我们实际上没有从数据集中减去整个独立的成分过程,因为通常我们研究的是单个成分(而不是头皮通道总和)活动。但是,如果要删除组件,则可以使用菜单工具>删除组件,该菜单将调用pop_subcomp.m函数。

默认情况下,出现在结果窗口中的组件编号(以下)是在先前的工具>使用ICA拒绝>通过地图组件拒绝窗口拒绝组件(使用接受/拒绝按钮)中标记为拒绝的组件编号,输入您要拒绝的组件号,然后按OK。

将会弹出一个窗口,在减法之前(蓝色)和之后(红色)绘制通道ERP,并询问您是否接受新的ERP。

将弹出最后一个窗口,询问您是否要重命名新数据集,给它起一个名字,然后再次按OK。

请注意,将新数据集存储在Matlab内存中不会自动将其永久存储在磁盘上。为此,请选择“文件”>“保存当前数据集”。

注意:如果您尝试在这个新数据集上运行ICA,那么数据的维数将被减去的组件数所减少,要在缩减的数据集上运行ICA,请在运行ICA之前,使用“工具”>“运行ICA”弹出窗口下的pca选项,在命令行选项框中键入“pca”、“10”,将数据维度缩减为剩余组件的数量(此处为10)(请参阅runica.m,如果数据量没有更改,ICA通常会返回相同的(剩余的)独立组件——对于这些数据,这些组件已经被发现是最大独立的,在运行ICA之后,我们建议您再次将数据“基线归零”;如果在删除某些组件时对其进行epoch,则信道数据epoch baseline means可能会有所不同。

/一则小广告/



本篇由BCIduino脑机接口开源社区整理或撰写。BCIduino脑机接口社区由来自北京航空航天大学、康奈尔大学、北京大学、首都医科大学等硕博发起成立,欢迎扫码加入社群,备注"BCI",也欢迎采购BCIduino脑电模块(某宝搜索即可)


转载:https://blog.csdn.net/nvsirgn/article/details/113174916
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场