脑电独立成分分析(independent component analysis)「建议收藏」

脑电独立成分分析(independent component analysis)「建议收藏」相比其它成像方法,EEG更为便捷低价,无论是拿erp成分还是做时频分析,提高信噪比始终是EEG分析的重点。将ICA应用在EEG分析中,可以较好的识别并去掉眼动和其它噪音(heartbeat,linenoise,musclenoise)。但对ICA分析前的预处理和后期成分的识别,缺少详细的说明。以下的分析方法主要参考EEGLAB给的非官方说明,tutorial的第九章和第十章,BoyLu…

大家好,又见面了,我是你们的朋友全栈君。

相比其它成像方法,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.’

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/145422.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 安全帽识别软件使用中常见问题分析[通俗易懂]

    安全帽识别软件使用中常见问题分析[通俗易懂]一、安全帽识别软件的主要功能是什么?安全帽识别是通俗的说法,相对准确的名称应该是安全帽佩戴检测,是用深度学习的算法对视频流进行分析,通过人工智能来判断视频中的人是否未佩戴安全帽,如果未佩戴,则触发告警规则。二、安全帽识别软件的技术成熟吗?2012年人工智能领域的卷积神经网络迎来重大突破,深圳强美随即将此尖端技术应用于工业安全监控,因为掌握海量样本数据的先天优势,鹰眸安全帽(佩戴检测)识别系…

  • ubuntu安装goland_ubuntu安装kali工具集

    ubuntu安装goland_ubuntu安装kali工具集1下载地址可以从go语言中文网下载最新的Linux包,地址如下:https://studygolang.com/dl/golang/go1.17.3.linux-amd64.tar.gzhttps://studygolang.com/dl/golang/go1.17.3.linux-amd64.tar.gz2安装进入home目录,使用wget下载子并解压,修改名字,然后创建链接(这个目的是方便后续切换golang版本的时候,只需要修改链接即可),脚本如下:cd~wgethttps

    2022年10月10日
  • html背景音乐自动播放代码_HTML5视频播放器代码

    html背景音乐自动播放代码_HTML5视频播放器代码src后文件可换

  • leetcode-15三数之和(双指针)「建议收藏」

    leetcode-15三数之和(双指针)「建议收藏」原题链接给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[] 提示:0 <= nums.length <= 300

  • Maven 常用镜像站地址

    Maven配置打开Maven的配置文件(windows机器一般在maven安装目录的conf/settings.xml),在<mirrors></mirrors>标签中添加mirror子节点:常用的镜像地址阿里云仓库(推荐使用,速度快)阿里云Maven中央仓库为阿里云云效提供的公共代理仓库,帮助研发人员提高研发生产效率,使用阿里云Maven中央仓…

  • selenium webdriver下载_webdriver怎么读

    selenium webdriver下载_webdriver怎么读地址:http://npm.taobao.org/mirrors/chromedriver/下载完对应的webdriver后,放到python目录下的Scripts文件夹内测试示例:fromseleniumimportwebdriver#测试用例1driver=webdriver.Chrome()如果能够打开浏览器就表示成功,如果报错Thisversiono…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号