第 5 层 · 分段拒绝层 · 第 24 步 / 共 25 步

步骤 24:基线校正

应用基线校正

🕐 18 分钟🎯 难度:进阶🔗 核心 API:epochs.apply_baseline⬅️ 前置:步骤 23

1. 目标

减去基线窗口内的均值,消除直流偏移与刺激前漂移,让 ERP 振幅相对基线被正确解读。基线校正必须在 epoch 创建时或之后、且基于真实有效的基线窗口。

2. 何时使用 / 何时跳过

  • 强烈建议使用:几乎所有 ERP 研究
  • 可跳过:基线窗口已被 ICA / 滤波完全消漂移,且 tmin=0 时

3. 前置条件

  • 已执行步骤 21/22/23:Epochs 已稳定
  • Epochs 包含足够长的刺激前时间窗(≥ 100 ms)

4. 核心代码

Python
import mne

# ====== 方式 A:在 Epochs 创建时就指定 baseline(推荐) ======
# 之前创建 epochs 时已经传入 baseline 参数
# 现在仅做"应用"验证(实际已应用)

# ====== 方式 B:事后施加基线校正 ======
epochs.apply_baseline(
    baseline=(None, 0),   # 完整基线(从 epoch 起点到 0;None 替换为 times[0])
    # baseline=(-0.2, 0),  # 仅 [-0.2, 0] 区间(推荐 ERP)
    # baseline=(None, None), # 全 epoch 基线(None → times[0]/times[-1];通常不推荐)
    verbose='INFO',
)

# ====== 验证 ======
# 取一个 epoch,检查基线区均值是否接近 0
sample_epoch = epochs.get_data()[0]  # (n_channels, n_times)
baseline_mask = epochs.times < 0
baseline_mean = sample_epoch[:, baseline_mask].mean(axis=1)
print(f"基线均值(µV): {baseline_mean * 1e6}")
# 期望:每个通道接近 0(如 [-0.5, 0.5] µV)

# 验证 2:可视化平均 ERP
evoked = epochs.average()
evoked.plot()

# 验证 3:所有 epoch 的基线均值都接近 0
all_baselines = epochs.get_data()[:, :, baseline_mask].mean(axis=2)
print(f"全 epoch 基线均值范围: {all_baselines.min()*1e6:.2f} ~ {all_baselines.max()*1e6:.2f} µV")
# 期望:接近 0

5. 参数详解

参数 含义 推荐值
baseline (tmin, tmax) 元组 (None, 0)(完整)/ (-0.2, 0)(推荐)
verbose 日志 'INFO'

⚠️ apply_baseline 真实签名中无 picks 参数——基线校正会对 Epochs 中所有通道施加。基线校正前用 epochs.pick('eeg') 限制通道。

何时用 None 作为边界

边界 含义 适用
(None, 0) 从 epoch 起点到 0 短 epoch(tmin=-0.2)
(-0.1, 0) 仅前 100 ms 标准 ERP
(-0.5, -0.1) 前 -0.5 到 -0.1 特定研究

6. 验证方法

Python
# 验证 1:基线均值接近 0
baseline_means = epochs.get_data()[:, :, baseline_mask].mean(axis=2)
print(f"基线均值范围: {baseline_means.min()*1e6:.2f} ~ {baseline_means.max()*1e6:.2f} µV")
# 期望:|均值| < 1 µV

# 验证 2:基线窗口不能有显著事件相关
# (如不能包含刺激后成分)

# 验证 3:ERP 振幅是否合理
evoked = epochs.average()
evoked.plot()
# 期望:P300 在 300 ms 处达到 ~10 µV

# 验证 4:ERP 时序不偏移
# 基线校正不会影响时序

7. 常见错误

错误 原因 解决方案
ERP 振幅被"压扁" 基线包含了刺激后成分 缩短基线到 (tmin, 0)
出现错误的高振幅 基线期间含眨眼等伪迹 用更稳健的基线估计
错误信息 Baseline min (...) must be less than baseline max (...) 或 Baseline interval [...] s is outside of epochs data [...] baseline 范围超出 epoch 时间窗 检查 baseline 元组顺序与 epoch.times 范围
怀疑基线不准确 数据本身漂移大 重新检查步骤 08 滤波设置
双次基线校正 重复 apply_baseline 仅调用一次

8. 官方来源

资源类型 链接
apply_baseline https://mne.tools/stable/generated/mne.Epochs.html#mne.Epochs.apply_baseline
基线教程 https://mne.tools/stable/auto_tutorials/epochs/plot_10_epochs_overview.html

9. 学术引用

⚠️ 本教材未在本节引用具体学术文献。基线校正是 EEG/ERP 标准操作,方法学可参考通用教科书:

  • Luck, S. J. (2014). An Introduction to the Event-Related Potential Technique (2nd ed.), Chapter 5. MIT Press.
  • Cohen, M. X. (2014). Analyzing Neural Time Series Data. MIT Press.

如需引用特定基线校正论文,请作者自行 PubMed 检索补充。