敏感性分析与替代解释
分析选择的“分岔花园”
一个网络分析要经过许多选择:节点怎么定义、边用什么统计量、阈值取多少、社团算法用哪个、随机基线怎么构造……每个选择都“合理”,但组合起来,结论可能截然不同。Botvinik-Nezer 等(2020)请 70 个团队独立分析同一份 fMRI 数据、检验同样 9 个事先确定的假设:没有两个团队选择了完全相同的分析流程,各团队对同一假设给出的“显著/不显著”结论差异相当大,即使在中间统计图高度相关的团队之间也是如此。
敏感性分析(sensitivity analysis):系统改变关键分析选择,观察主要结论是否保持。若在合理范围内结论都成立,结论是稳健的;若只在某个选择下成立,必须如实报告。把所有合理选择组合起来逐一运行、汇总结果的做法称为多元宇宙分析(multiverse analysis),见多元宇宙分析与设定曲线。
网络分析中常见的敏感点
| 分析环节 | 常见选择 | 敏感性做法 | 相关专题 |
|---|---|---|---|
| 节点定义 | 不同脑图谱与分辨率;基因 ID 映射规则;症状条目合并与否 | 至少比较两种节点定义 | 脑连接组、网络构建 |
| 边的定义 | 相关、偏相关、互信息 | 至少比较两种 | 脑连接组、症状网络、基因网络推断 |
| 阈值/密度 | 绝对阈值、比例阈值、加权 | 扫描一段密度区间并画曲线 | 脑连接组 |
| 数据库置信度 | STRING 0.4 / 0.7 / 0.9 | 报告三档下的结果 | 生物分子网络、网络医学 |
| 预处理 | 是否全局信号回归、头动处理策略、批次校正 | 主要预处理选择各跑一次 | 脑连接组 |
| 社团检测 | Louvain 种子、分辨率参数 | 多种子、共识划分、报告 Q 的范围 | 社团结构与社区发现 |
| 零模型 | ER、度保持重连、度匹配抽样 | 说明选择理由,必要时比较两种 | 网络结构指标与随机图、网络医学 |
| 样本 | 全部样本、去除离群、子样本 | bootstrap 或留一法 | 症状网络、网络构建与统计验证 |
替代解释排查表
看到一个“有趣”的结果时,先问下面五个问题:
- 密度/规模差异:两组网络的边数不同,是否就足以解释指标差异?(见本专题代码示例“替代解释”)
- 度与研究偏倚:结果是否只是“热门基因/节点连边多”的反映?是否做了度匹配?
- 混杂因素:头动、批次、细胞组成、年龄、用药是否可能同时影响网络和结果?
- 多重比较:检验了多少个节点、多少个指标?是否做了 FDR 校正?
- 循环论证(double dipping):是否用同一份数据既选择特征又检验特征?例如先挑出差异最大的边再比较它们的组间差异。
循环分析(circular analysis, double dipping):用同一份数据既做选择(选边、选脑区、选基因、选参数),又对选择结果做统计检验或估计效应量。Kriegeskorte 等(2009)系统说明了它在系统神经科学中的危害:被选中的特征在同一数据中的效应被系统性高估,在纯噪声中也能得到“显著”结果。解决办法是选择与检验使用独立数据(分半、留出集、交叉验证),或者把选择步骤整体放进置换检验的每一次循环中。
本专题的代码示例“循环论证”在不存在任何组间差异的模拟数据上演示:先在全部数据中挑出差异最大的 10 条边再检验,几乎每次都“显著”;改为一半数据选边、另一半检验后,“显著”比例回到名义水平 5% 左右。
敏感性分析不是“找一个让结果显著的设置”。正确顺序是:先在研究计划中写明主分析的选择和要检查的敏感点,再运行并如实报告所有结果。反过来做,就成了 Simmons 等(2011)所说的“研究者自由度”导致的假阳性。Wicherts 等(2016)把研究设计、执行、分析和报告各阶段的研究者自由度整理成检查清单,可在写分析计划时对照。