在本教程中,我们将介绍传感器协方差计算的基础知识,并构建一个噪声协方差矩阵,该矩阵可用于计算最小范数逆解.
诸如MNE噪声估计需要从记录中进行。
在本教程中,我们介绍了噪声协方差的基础知识,并构造了一个噪声协方差矩阵,该矩阵可在计算逆解时使用。
我们将结合代码进行分析。
# 导入工具库 import os.path as op import mne from mne.datasets import sample import matplotlib.pyplot as plt
读取数据
# 构建数据地址 data_path = sample.data_path() raw_empty_room_fname = op.join( data_path, 'MEG', 'sample', 'ernoise_raw.fif') raw_empty_room = mne.io.read_raw_fif(raw_empty_room_fname) raw_fname = op.join(data_path, 'MEG', 'sample', 'sample_audvis_raw.fif') #读取原始数据 raw = mne.io.read_raw_fif(raw_fname) #设置平均参考 raw.set_eeg_reference('average', projection=True) #增加不良通道 raw.info['bads'] = ['EEG 053'] # bads 1 more
噪声的定义取决于范式。在MEG传感器噪声通常用空房测量来估计。但是,如果要处理诱发的反应,可能还需要考虑将静息的大脑活动视为噪音。首先,我们用空房间记录来计算噪音。请注意,您也可以只记录部分和tmin和tmax一起使用参数。假如你把静息状态作为噪声基线,那就很有用了。在这里,我们使用整个空间记录来计算噪声协方差。
请记住,在操作过程中,空间数据集应与实际情况相结合MEG匹配数据。如果使用,确保过滤器相同ICA,将其等效地应用于空间和主题数据。在这种情况下,我们不过滤数据或使用数据ICA。但是,我们在MEG数据中确实有错误的通道和投影,所以我们必须确保它们存储在协方差对象中。
raw_empty_room.info['bads'] = [ bb for bb in raw.info['bads'] if 'EEG' not in bb] raw_empty_room.add_proj( [pp.copy() for pp in raw.info['projs'] if 'EEG' not in pp['desc']]) # 计算协方差 noise_cov = mne.compute_raw_covariance( raw_empty_room, tmin=0, tmax=None)
3 projection items deactivated Using up to 550 segments Number of samples used : 66000 [done]
现在,已经在了MNE-Python协方差矩阵可用于对象mne.write_cov()将其保存到文件中。
以后,可以使用mne.read_cov()读回。
也可以用刺激前的基线来估计噪声协方差。
首先,我们必须建造它epoch。
计算协方差时,应构建epochs使用基线校正。否则,协方差矩阵将不准确。
在MNE默认情况下,此操作将完成,但为了确定,我们在此手动定义。
#在原始数据中找到events events = mne.find_events(raw) # 构建epoch epochs = mne.Epochs(raw, events, event_id=1, tmin=-0.2, tmax=0.5, baseline=(-0.2, 0.0), decim=3, # we'll decimate for speed verbose='error') # and ignore the warning about aliasing
320 events found Event IDs: [ 1 2 3 4 5 32]
""" 对epochs协方差估计数据 """ noise_cov_baseline = mne.compute_covariance(epochs, tmax=0)
尝试将proj设置为False查看效果。请注意,epochs中间的投影仪已经应用,所以proj参数无效。
noise_cov.plot(raw_empty_room.info,proj=True) plt.show()
noise_cov_baseline.plot(epochs.info, proj=True) plt.show()
在估计的源振幅和可用样本数之间,估计的协方差可能不稳定。
因此,MNE建议将噪声协方差矩阵规范化(请参考噪声协方差矩阵规范化),特别是在只能使用少量样本的情况下。
但是,说样本的有效数量并不容易,所以要选择合适的正则化。
在MNE-Python使用[1]中提到的高级正则化方法来完成正则化。因此,可以使用auto使用此选项,交叉验证将用于学习最佳正则化:
noise_cov_reg = mne.compute_covariance(epochs, tmax=0., method='auto', rank=None)
在这个过程中,使用看不见数据的负对数来量化噪声协方差,从而量化噪声协方差。肉眼也可以检查最终结果。假设基线不包含系统信号(锁定感兴趣的事件),白色基线信号应遵循多个高斯分布,即在给定条件下,白色基线信号应为-1.96和1.96之间 时间样本。基于相同的推理,全球场的功率(GFP)期望值为1(计算GFP真正的自由应该考虑,比如ddof=3.有两个活动SSP向量):
evoked = epochs.average() evoked.plot_white(noise_cov_reg, time_unit='s') plt.show()
该图还显示了每个通道的白化诱发信号和白化GFP。GFP面板中的数字代表数据的估计等级,相当于计算白色GFP时跨传感器的平方和除以的有效自由度。GFP由于过度或不正则化,也有助于检测虚假的晚期诱发成分。
请注意,如果使用信号空间分离(SSS) 处理数据时,梯度仪和磁力仪会同时显示,因为两者都是相同的SSS基向量以相同的值重建。这意味着这两种传感器类型在统计数据上不再独立。这些评估方法可用于评估模型违规行为。
对于专家用例或调试,还可以将替代估计量进行比较,并演示白化对源估计的影响:
noise_covs = mne.compute_covariance( epochs, tmax=0., method=('empirical', 'shrunk'), return_estmators=True,
rank=None)
evoked.plot_white(noise_covs, time_unit='s')
plt.show()
这将绘制出为最佳估计量而诱发的白化并在相关面板中将所有估计器的GFP显示为单独的行。
最后,让我们看一下空房间和与事件相关的协方差之间的区别,使用"method"选项,使它们的类型显示在图例中。
evoked_meg = evoked.copy().pick('meg')
noise_cov['method'] = 'empty_room'
noise_cov_baseline['method'] = 'baseline'
evoked_meg.plot_white([noise_cov_baseline, noise_cov], time_unit='s')
plt.show()
基于对数可能性的负值,基线协方差似乎更合适。
参考
1.Engemann D. and Gramfort A. (2015) Automated model selection in covariance estimation and spatial whitening of MEG and EEG signals, vol. 108, 328-342, NeuroImage.
2.Taulu, S., Simola, J., Kajola, M., 2005. Applications of the signal space separation method. IEEE Trans. Signal Proc. 53, 3359-3372.
仅用于学术交流,不用于商业行为,若有侵权及疑问,请后台留言,管理员即时删侵!
更多阅读
脑电数据的Epoching处理
脑电公开数据集汇总
马斯克近日表示:Neuralink脑机接口有望明年用于人类
北师大吴倩课题组与合作者共同揭示人类下丘脑发育的时空动态特征
“读心”神经元能够预测他人的行为与决策
硬核玩家改造《上古卷轴V》,脑机接口控制魔法施放
一种新型脑机接口--集成光子芯片的脑机接口是否可行?
新型脑刺激疗法治疗重度抑郁症
脑电与情绪简介
点个在看祝你开心一整天!