相比其它成像方法,EEG更为便捷低价,无论是拿erp成分还是做时频分析,提高信噪比始终是EEG分析的重点。将ICA应用在EEG分析中,可以较好的识别并去掉眼动和其它噪音(heart beat,line noise,muscle noise)。但对ICA分析前的预处理和后期成分的识别,缺少详细的说明。

以下的分析方法主要参考EEGLAB给的非官方说明,tutorial的第九章和第十章,Boy Luck的The ERP Boot Camp,并结合我自己实际分析的血泪经验而来。

1,导入数据

确保导入的数据格式是正确的,并且以双精度格式存储。有的eeglab版本并不能自动识别导入的data是32bit还是16或其他format,一旦手动选错,后果非常严重。如果本来是32bit存储的,导入后的format选为16bit,那么会有一半的数据看起来就是weird。在neuroscan的机子上采集的数据需要特别注意这个问题。

导入后,plot出来看是否有坏电极,如果只看到少数几条线,那么需要remove DC.

数据记录和存储的形式跟采集时使用的set up文件有关,所以导入之前,最好也要熟悉一下里面的参数。

2,导入坐标信息(channel info)

导出的EEG,如果不包含坐标信息,那么建议在这一步就加上。电极坐标对后续的ICA分析非常重要,没有坐标信息无法做地形图,而地形图可以让人对成分的分布有基本的认识。

这里需要注意的是,有些厂家总有一套自己的标准,如neuroscan,检查一下坐标,并plot出来,对比和自己实际的电极坐标及label是否一致,有益无害。(被小坑过!)

3,滤波

滤波的标准,此处略有分歧,boy luck认为0.1Hz的 高通就够了。

EEGlab的非正式建议认为1~2 HZ较好,较多的低频噪音会影响ICA的结果分析,而ICA对识别高于这个标准的成分表现较好。并且不会因为如此高的(1~2 Hz)的标准而影响erp成分。用这个标准,分析出来的成分更干净。

如果担心如此做会招致humiliation,可以用个大家接受的方法:用1 HZ高通算出来的ICA weights放回原来的dataset,不影响后续分析。。。(简直了!)

我不想太麻烦,选择0.1 Hz高通。此外,有些被试高频噪音很多,如果能做一个低通,数据更clean。

*滤波要在连续数据上做。不然boundary的地方会有distortion。

3 Epoch

对epoch的态度有两种。

一种是认为用整段eeg data来做后续的分析(当然,block之间的休息和开始前的准备,即所有的非任务状态的eeg data要去掉)。

另一种是认为将信号按照event来epoch成小段小段来分析,这样的信号里neural activity更多。

无论哪种,都要求进入分析的点要足够多,至少大于N^2*20。N是进入分析的通道数。

4 检查坏电极

坏电极的识别很麻烦,有些看起来很差的信号,做个低通(low pass 40Hz),就平滑多了。但是可以在粗糙的检查中发现是否存在别的问题,例如,很有可能不是有坏电极,是电极导联到接地了,满屏都被巨大的电压值覆盖。

对于坏电极,不要在这个时候interpolate掉,因为会造成rank deficiency,跑ICA跑出乱七八糟的东西。

同样不要让它进入ICA分析,它的noise会影响ICA的成分识别。

最好的方法就是,不让这个通道进入分析。

分析完了后,再替换它。

5 进行ICA

用EEGlab进行ICA分析,只有一句简单的命令。但是注意留心运行后给出的info,它可以提示此时是否是full rank,进行的是否是ICA。

以免被坑(血泪教训)。

6 移除噪音

run完ICA后,根据“经验”识别眼动和其他噪音并移出。

我非常讨厌“经验”这个词,对于新手来说,这个经验似乎就是宣告你不行。幸运的是,我的确找到了不错的网站教人如何根据规律识别ICA,让新手也可以按图索骥。

识别ICA,可以:

1,将不同的成分plot出来,看他们的频谱特征。

2,画地形图,看成分的空间分布。

3,比较去掉前后,原始波形的差异。

4,看这个成分占的variance比例,一般大于15的,都需要留心一下。

此外还有其他的标准有助于识别,但是永远不要只看一个地形图的位置就做出判断。

确定了这是噪音就去掉,多个成分都可以去掉,不要想再做一次ICA,再去成分,it never works!(坑到想哭)

7 回去检查原始信号是否clean




下面是问答:

1 EOG通道要放进去做ICA分析吗?

这取决于EOG的信号是如何采集的,如果它们是bipolar互为参考,那就去掉。如果是和其他电极共用同样的参考,那就留下,一起做ICA。

如果将互为参考的EOG纳入分析,第一个成分exactly是眼动,因为眼动还是肌电呢,可比其他信号强多了。但是从一个本来就是眼动的通道去掉眼动信息并不是我们的目的,而是去掉其他EEG通道里的眼动。Give ICA a better chance to decompose。

2,为什么不能做第二次ICA,为什么不能提前替换掉坏电极?

这所有的答案指向一个,他们会造成rank defiency。在不满秩的情况下做ICA会出现奇怪的现象,我恰好都遇到了三个。而这三种情况都让我精疲力尽。以下答案搬运自Makoto和我自己的草稿。注意,这里提到的第二次ICA,仅指去除component后继续做ICA的做法,而不是指去掉坏的epoch的做法,后者是可行的。

Why there is no need to run the second ICA?

Rejecting ICs to improve the next ICA is the idea that keeps alluring many of us but never works. Let us confirm the process and the reason why it does not work.

You have 100ch data.

You run ICA on it to obtain 100 ICs.

You identify 1 eye-blink component.

You reject it. Now you have 99 ICs.

You back-project the 99 ICs to obtain 100ch reconstructed scalp channel signals.

You run ICA again on the reconstructed 100ch data, hoping to obtain another 100 ICs. The new ICA result should be cleaner because this time ICA is free from eye-blink artifact.

You find somehow 100ch ICA gives you only 99 ICs. Certainly the blink IC is gone, but the rest of 99 ICs remains identical as before.

What would happen if I want to run the second ICA?

If we have removed some components after the first ICA, the data is no longer full rank now. Under such rank deficiency condition, weird things would happen in running ICA:

First, it gives the info warning such as the following sentence, but this sentence we won’t see under the full rank condtion.

'Warning: fixing rank computation inconsistency (66 vs 65) most likely because running under Linux 64-bit MatlabAttempting to convert data matrix to double precision for more accurate ICA results.'

Sometimes, the info would say ‘the learning rate is low’, the ICA run goes into repeated rounds of the weights blowing up and the learning rate being reduced. It cannot start and end. Here is a similar question from EEGLAB mail list. And it does happen to me a lot before I figure out what happened!

Sometimes, it can pass the Irate test, but get strange components, such as the following picture. (Due to privacy, the picture is removed). Makoto calls it as ghost ICs, anyway, we should avoid to do the ICA in the rank deficiency condition.

Sometimes, if the infomax of runica has detected the rank deficiency successfully, it would go to run PCA dimension reduction first and run PCA, evidence can be found from the original script. The info will be:

'Data rank (64) is smaller than the number of channels (66)'

'Input data size [64,406296] = 64 channels, 406296 frames/nAfter PCA dimension reduction.'

脑电独立成分分析(independent component analysis)相关推荐

  1. Stanford UFLDL教程 独立成分分析

    独立成分分析 Contents [hide] 1概述 2标准正交ICA 3拓扑ICA 4中英文对照 5中文译者 概述 试着回想一下,在介绍 稀疏编码算法中我们想为样本数据学习得到一个超完备基(over ...

  2. lda 吗 样本中心化 需要_机器学习 —— 基础整理(四):特征提取之线性方法——主成分分析PCA、独立成分分析ICA、线性判别分析LDA...

    本文简单整理了以下内容: (一)维数灾难 (二)特征提取--线性方法 1. 主成分分析PCA 2. 独立成分分析ICA 3. 线性判别分析LDA (一)维数灾难(Curse of dimensiona ...

  3. 学习笔记 | 独立成分分析(ICA, FastICA)及应用

    学习笔记 | 独立成分分析[ICA, FastICA]及应用 1 背景说明 2 算法原理 2.1 ICA简介 2.2 形式化表达 3 算法步骤与代码 4 算法改进:FastICA 5 ICA实例与应用 ...

  4. 机器学习-独立成分分析(ICA)

    1. 独立成分分析(Independent Components Analysis) 1.1 概念 独立成分分析是从观测变量中分离出独立元素,观测变量的维度(数目)要和独立元素维度(数目)相同.模型表 ...

  5. 独立成分分析(Independent Component Analysis,ICA)原理及代码实现

    过程监控中会用到很多中方法,如主成分分析(PCA).慢特征分析(SFA).概率MVA方法或独立成分分析(ICA)等为主流算法. 其中PCA主要多用于降维及特征提取,且只对正太分布(高斯分布)数据样本有 ...

  6. 独立成分分析(Independent Component Analysis,ICA)模型介绍

    独立成分分析ICA模型 1 历史背景 2 ICA基本模型 3 独立与不相关 \qquad 1 历史背景 \qquad独立成分分析思想和方法最早源于上世纪八十年代几个法国学者的研究工作,尽管当时他们并没 ...

  7. ICA独立成分分析去除脑电伪影

    今天分享的这篇利用独立成分分析ICA去除EEG伪影是翻译自jung大神的一篇文章. 目录 1 介绍 2 方法 3 实验数据样本 1 介绍 眼动,眨眼,肌肉,心脏和线的噪音会严重污染脑电图活动,这在脑电 ...

  8. 第十一讲:独立成分分析(Independent Components Analysis )

    接下来我们要讲的主体是独立成分分析(Independent Components Analysis,缩写为 ICA).这个方法和主成分分析(PCA)类似,也是要找到一组新的基向量(basis)来表征( ...

  9. 独立分量分析(Independent Component Analysis)

    独立分量分析(Independent Component Analysis) 盲源信号分离问题 引入:鸡尾酒会问题 设想在一个鸡尾酒会中,所有的人都在交谈,而我们所希望听到的可能只是其中一个人到谈话内 ...

最新文章

  1. R语言绘制韦恩(venn)图
  2. eclipse中maven项目红叉解决方案
  3. php安装solr扩展,PHP扩展模块 solr 安装
  4. 查询shared_pool主要部分的使用率
  5. crontab基本命令
  6. Entity Framework Core 批处理语句
  7. php获取某地的ip,php获取本土实际IP
  8. 在5分钟内将Spring Boot作为Windows服务启动
  9. 无处不在的container_of
  10. 机器学习中目标函数、损失函数以及正则项的通俗解释
  11. Educational Codeforces Round 39 F Largest Beautiful Number
  12. 记录——《C Primer Plus (第五版)》第十章编程练习第三题
  13. Ubuntu学习日记--Lesson7:文件权限管理chmod
  14. Spark性能优化指南——高级篇【2】
  15. 在腾讯云 EMR 上使用 GooseFS 加速大数据计算服务
  16. excel多个窗口独立显示_细说丨你想要的Excel保护与加密都在这里
  17. [Err] 1418 - This function has none of DETERMINIST
  18. 我推荐这几个好玩有趣的小网站
  19. 埃尔米特多项式 (Hermite Polynomials)简介(2)
  20. python中图片转base64,再转html保存方法

热门文章

  1. 怼天怼地的 Linux 之父宣布休息,为过去的行为道歉
  2. CSS3 transition详解
  3. js原生ajax与jquery的ajax的用法区别
  4. 118358-38-6,Fmoc-L-Ser(β-D-Glc(Ac)4)-OH,葡萄糖丝氨酸的纯度以及结构式介绍
  5. 探索浏览器内部(一)生成HTTP消息流程
  6. 地砖中间高四边低_贴地漏旁的瓷砖应注意哪些误区?
  7. javascript---操作节点
  8. HFP A2DP,通话过程中打开蓝牙,A2DP连接失败
  9. Cadence Allegro 17.4 鱼眼图 Fisheye view
  10. Qt 集成 FFmpeg 实现颜色格式转换