加载预处理后的脑电数据(假设你已经用MNE处理过数据)
多变量模式分析最早应用在磁共振数据中,用来考察某些脑区在编码不同条件的刺激时是否存在表征上的显著不同。 后来逐渐运用到脑电数据中,虽然脑电数据的空间分辨率较低,但时间分辨率很高,因此可以帮助确定在哪一段时间内,个体对不同条件刺激的表征有显著差异。 目前已经有很多工具箱支持脑电数据MVPA的分析,例如matlab中ADAM,python中的NeuroRA等(这两个相对来说比较好上手)。 方法共包括基础的时间序列解码,以及衍生方法跨时域解码与权重投射等。 MVPA不仅可以应用在原始时域数据上,也可以应用在时频域数据上,来观察不同频段的能量对于编码不同刺激过程中的贡献。
当你想从脑电数据里挖出点有意思的东西时,多变量模式分析(MVPA)就像个会读心的侦探。这哥们最早在磁共振圈子里混,后来发现脑电数据虽然空间上有点糊,但胜在能把时间轴上的变化看得清清楚楚——比如你看到暗恋对象和看到老板时,大脑在300毫秒到500毫秒之间的电信号肯定不是一回事。
现在搞脑电MVPA的工具箱已经相当亲民,像Python党可以直接抄起NeuroRA开搞。举个栗子,咱们先看看最基础的时间窗口解码:
from neurora.decoding import TimeDecoding import mne epochs = mne.read_epochs("your_clean_data-epo.fif") # 把数据格式转换成n_epochs × n_channels × n_times data = epochs.get_data() labels = epochs.events[:, -1] # 获取事件标签 # 设置滑动时间窗 td = TimeDecoding(time_win=[-0.2, 1.0], time_step=0.02) acc = td.svm_decoding(data, labels, n=10) # 10折交叉验证这段代码里有个魔鬼细节:time_step参数设成0.02秒意味着每20ms切一刀。别小看这个设置,太细了计算量爆炸,太粗了可能错过关键时间点。建议先用大窗口粗筛,锁定关键时段后再上精细分析。
进阶玩法里最骚的当属跨时间解码。这货能告诉你不同时间点的神经表征有多相似,相当于让机器学习模型在不同时间点之间玩连连看:
from neurora.decoding import CrossTempDecoding ctd = CrossTempDecoding(time_win=[0, 1.0], time_step=0.05) cross_acc = ctd.svm_decoding(data, labels)跑出来的结果会是个对称矩阵,对角线上的高准确率说明模型在同时间段的泛化能力强,而非对角线上的亮点可能暗示着某些神经表征在时间轴上的迁移规律。曾经有个师弟用这个方法发现了情绪加工在theta频段的表征会持续漂移,直接发了篇二区。
多变量模式分析最早应用在磁共振数据中,用来考察某些脑区在编码不同条件的刺激时是否存在表征上的显著不同。 后来逐渐运用到脑电数据中,虽然脑电数据的空间分辨率较低,但时间分辨率很高,因此可以帮助确定在哪一段时间内,个体对不同条件刺激的表征有显著差异。 目前已经有很多工具箱支持脑电数据MVPA的分析,例如matlab中ADAM,python中的NeuroRA等(这两个相对来说比较好上手)。 方法共包括基础的时间序列解码,以及衍生方法跨时域解码与权重投射等。 MVPA不仅可以应用在原始时域数据上,也可以应用在时频域数据上,来观察不同频段的能量对于编码不同刺激过程中的贡献。
说到频段,时频域上的MVPA才是真·宝藏区。比如想看alpha震荡到底在记忆编码里起多大作用:
from neurora.encoding import WeightProjection # 先做时频分解(这里用Morlet小波示意) freqs = np.arange(8, 13, 1) # alpha频段 n_cycles = freqs / 2.0 # 小波周期数 tfr = mne.time_frequency.tfr_morlet(epochs, freqs=freqs, n_cycles=n_cycles) # 权重投射分析 wp = WeightProjection() weights = wp.svm_plot(tfr.data, labels)跑出来的权重图能告诉你哪些频段在哪些时间点对分类贡献大。不过要注意,这里算的是相对权重,真正要确定物理意义的话,建议配合置换检验(permutation test)来筛掉随机噪声产生的假阳性信号。
工具箱虽好,但有几个坑新人必踩:1)数据维度顺序搞反(NeuroRA要求试次数×通道×时间);2)忘记基线校正导致时间窗错位;3)在试次太少的情况下强行做交叉验证。上次隔壁实验室有个哥们用20个试次跑10折验证,结果准确率曲线抖得跟心电图似的,被审稿人怼到怀疑人生。
说到底,MVPA在脑电里的魅力就在于能把时间维度上的动态变化扒得明明白白。下次当你盯着ERP波形觉得没啥新意时,不妨让机器学习模型带着你在时间轴上冲浪,说不定就撞见藏在毫秒之间的认知密码呢?
