CFC 跨频率耦合(上):原理与陷阱
低频打节拍、高频变音量——跨频耦合是近年论文的高频词汇,也是假阳性重灾区。 这一课先建立原理与直觉,再用一份"陷阱清单"帮你在动手前冷静下来。
🎯 本节学习目标
- 能用"节奏与音量"的类比解释 PAC 的含义,区分 PAC / PPC / AAC 三类跨频耦合
- 说出跨频耦合的生理意义与经典发现(θ-γ 与工作记忆)
- 理解相位分箱 + 调制深度的计算直觉,以及 MI 等指标各自在算什么
- 识别 CFC 的五大陷阱:边缘效应、谐波伪耦合、1/f 与尖峰、窗口长度、多重比较
- 会用判断清单决定自己的数据该不该上 CFC
一、跨频耦合是什么:节奏与音量
想象一支交响乐团:低音提琴打着缓慢而稳定的节拍(低频相位), 小提琴的旋律忽强忽弱(高频幅值)。如果小提琴的音量强弱总是跟着低音的节拍起伏, 我们就说这两层声音之间存在跨频率耦合。 脑电里最经典的版本:θ 波(4–8Hz)的相位像节拍器,γ 波(30Hz 以上)的幅值 跟着节拍器起伏——低频"指挥"高频。
跨频耦合最常用的类型:低频振荡的相位系统性调制高频振荡的幅值——高频"多响"取决于低频"走到哪一刻"。
为什么这个现象重要?因为它把时间尺度的嵌套变成了可测量的东西: 慢振荡(大范围、长时程的调节)为快振荡(局部的精细计算)提供时间窗口。 这是"大脑如何组织多层次计算"这一问题的电生理线索。
二、CFC 家族:PAC、PPC、AAC
| 类型 | 耦合什么与什么 | 典型问题 |
|---|---|---|
| PAC(phase-amplitude) | 低频相位 ↔ 高频幅值 | θ 相位是否调制 γ 幅值(最常用) |
| PPC(phase-phase) | 低频相位 ↔ 高频相位(n:m 锁相) | γ 是否固定出现在 θ 的某个相位(如 1:4) |
| AAC(amplitude-amplitude) | 两个频段的幅值包络 | θ 包络与 γ 包络是否共涨落 |
本模块聚焦 PAC——文献里出现最多、工具链最成熟的一类。
三、为什么值得算:生理意义
- θ-γ 与记忆:海马场电位研究里,γ 幅值随 θ 相位起伏是最著名的发现之一,人类颅内 EEG 也有对应观察。工作记忆的"嵌套假说"进一步提出:一个 θ 周期里塞进几个 γ 周期,就同时能保持几个记忆项目——PAC 强度与记忆容量相关的证据正来自这条思路;
- α-γ 与注意:皮层 α 相位调制 γ 幅值,被视为大尺度网络给局部皮层"开门 / 关门"的门控机制;
- 睡眠:慢波相位与纺锤波幅值的耦合,是睡眠记忆巩固研究里的常客。
四、计算直觉:相位箱 × 幅值分布 → 调制深度
PAC 的计算可以浓缩成五步,全程不需要超出模块 4 的知识:
- 滤出低频带,取瞬时相位 φ(t) ∈ (−π, π];
- 滤出高频带,取瞬时幅值 A(t)(包络);
- 把相位圆切成 n 个箱(常用 18 箱,每箱 20°);
- 对每个箱求平均高频幅值,得到"幅值-相位分布";
- 分布平坦 = 无耦合;在某相位附近隆起一座"小山" = 有耦合。山有多高 = 调制深度。
闭上眼睛想象一张图:横轴是低频相位,从 −180° 一路拉直到 +180°; 纵轴是高频平均幅值。无耦合时这条线是平的;有耦合时它像一座单峰小山, 山峰所在的相位就是"高频最活跃的低频时刻"。
% ---- PAC 的核心直觉:相位分箱 + 调制深度 ----
% 假设已经得到:ph = 低频瞬时相位;am = 高频瞬时幅值(包络)
nBins = 18; % 把相位圆切成 18 箱(每箱 20 度)
bIdx = discretize(ph, linspace(-pi, pi, nBins+1)); % 每个时刻落在哪个相位箱
ampBin = accumarray(bIdx, am, [nBins 1], @mean); % 每箱的平均高频幅值
% 直觉可视化:以相位为横轴画柱状图——
% 一排平头柱 = 幅值与相位无关;单峰"小山" = 存在耦合
figure; bar(-170:20:170, ampBin);
xlabel('低频相位 (deg)'); ylabel('高频平均幅值'); title('幅值-相位分布');
% 调制深度最常用的度量:MI = 该分布与均匀分布的 KL 散度
p = ampBin / sum(ampBin);
MI = sum(p .* log(max(p, eps) * nBins)); % 0 = 完全平坦,越大越"山"
五、常用指标一览
| 指标 | 思路 | 优点 | 注意 |
|---|---|---|---|
| 调制指数 MI(KL 散度) | 幅值-相位分布与均匀分布的距离 | 直观、最常用 | 对箱数与幅值分布形状敏感 |
| PLV 类指标 | 对包络再做希尔伯特变换取其相位,算包络相位与低频相位的锁相 | 不受幅值绝对大小影响 | 解释略绕 |
| height / power ratio(Klimesch 学派常用) | 相位箱中最大与最小的幅值(或功率)之比 | 计算简单、好解释 | 只用两个极端箱,浪费数据 |
| 回归 / GLM 类 | 把幅值对相位的各次谐波做回归 | 灵活、可加协变量 | 模型细节多,同样要防伪迹 |
六、陷阱清单(本课重点)
CFC 的名声问题在于:很多东西都能造出"看起来像耦合"的结果。动手前把这份清单过一遍:
- 边缘效应:滤波和希尔伯特变换在数据两端不可靠,边缘几秒的相位与包络都是"坏数据";分段数据尤其严重——每段 epoch 有两个边缘;
- 谐波伪耦合:低频信号若不是干净的正弦(尖峰、不对称的 α 波),它自带谐波——高频带里的"幅值"其实只是低频的谐波,天然与低频相位锁死;
- 1/f 频谱与瞬态事件:尖峰、K 复合波这类瞬态会把能量同时泼进多个频段,也会制造假耦合;
- 窗口长度:分析窗至少覆盖低频的若干个完整周期(6Hz 就是至少 1–2 秒),否则每个相位箱样本太少;
- 多重比较:相位频率 × 幅值频率 × 通道 × 时间点的组合动辄上万次检验,不校正必然遍地"显著"。
这是 PAC 假阳性最隐蔽的来源:一个幅值完全恒定、只是长得不平滑的信号,也能算出漂亮的 MI。看代码:
% ---- 伪耦合演示:幅值恒定但非正弦的信号,PAC 也会"报警" ----
fs = 1000; t = (0:1/fs:60)';
% 造一列每秒 10 个窄尖峰的脉冲串:频谱含丰富谐波,但幅值没有任何真实调制
train = zeros(size(t));
for p = 0:0.1:60
train = train + exp(-((t - p).^2) / (2*0.005^2)); % 5ms 宽的高斯尖峰
end
[b1, a1] = butter(2, [8 12] / (fs/2)); % 低频带:alpha 相位
[b2, a2] = butter(2, [30 50] / (fs/2)); % 高频带:gamma 幅值
ph = angle(hilbert(filtfilt(b1, a1, train)));
am = abs(hilbert(filtfilt(b2, a2, train)));
bIdx = discretize(ph, linspace(-pi, pi, 19));
ampBin = accumarray(bIdx, am, [18 1], @mean);
pf = ampBin / sum(ampBin);
MI = sum(pf .* log(max(pf, eps) * 18));
fprintf('MI = %.4f —— 显著大于 0,但这不是耦合,是谐波假象\n', MI);
% 结论:报告 PAC 前,先目检低频波形是否接近正弦,并检查谐波功率
正式分析前:连续数据掐掉两端各 1–2 秒;epoch 数据要让分析窗距边缘至少留出低频两个周期的余量;每个相位箱里至少要有几百个样本点。
comodulogram 一画就是几百上千个频对,再乘上通道与时间点,检验次数爆炸。对策:用先验假设限定频带与通道、报告 FDR / cluster 校正后的结果、并明确标出哪些是探索性分析。
七、该不该用 CFC:一张判断清单
- 有明确的先验假设吗(哪个低频、哪个高频、哪个脑区、为什么)?
- 检查过低频波形的正弦性了吗(看波形 + 查谐波功率)?
- 数据够长、窗够长吗(低频至少几个完整周期)?
- 管线在仿真数据上验证过吗(下一课专讲)?
- 统计与多重比较方案定了吗?
五问全过,再进入下一课的完整实现;任何一问含糊,先回头补功课——CFC 论文的审稿意见几乎全部来自这五条。
📌 本节小结
- CFC = 一个频段的振荡调制另一个频段;PAC(低频相位调制高频幅值)最常用
- 计算直觉五步:低频相位 → 高频包络 → 相位分箱 → 幅值分布 → 分布偏离均匀的程度即调制深度
- MI(KL 散度)是最常用指标;PLV 类与 height ratio 各有取舍
- 最大的坑是非正弦波形:幅值恒定的尖峰串也能算出显著 PAC
- 上 CFC 前先过五问清单:先验假设、正弦性、窗口长度、仿真验证、多重比较
✏️ 课后练习
- 构造纯正弦 10Hz 与幅值恒定的独立 80Hz 信号之和,验证 MI 接近 0。
- 把课中的高斯尖峰串换成功率相当的 10Hz 正弦,分别计算 MI,体会非正弦性带来的假象幅度。
- 把谐波演示里的高频带换成 100–120Hz(更远离低频谐波),观察 MI 如何变化并解释原因。