主题
对照定义与 index event bias:R9 与 R13 是两个不同的问题(2026-08-03)
一句话
R9 和 R13 的并发症端点,对照定义不一样,因此面临的偏倚也完全不一样。 R9 的对照含非糖尿病者 → 估计量是复合的(糖尿病 + 并发症); R13 的对照只有糖尿病患者 → 估计量确实是并发症特异的,但代价是引入 index event bias(指标事件偏倚,又叫 collider bias 碰撞偏倚)。 两者不能用同一套办法处理,把 R13 的校正法套到 R9 上是方法学错误。
一、先把 collider bias 讲清楚
什么是碰撞节点
因果图里有三种基本结构。前两种大家都熟:
- 链:
吸烟 → 焦油 → 肺癌(中介) - 叉:
年龄 → 白发、年龄 → 老花(混杂,白发与老花因共同原因而相关)
第三种是碰撞(collider):两个原因指向同一个结果。
甲 ──→ 丙 ←── 乙丙就叫碰撞节点。关键性质是:甲和乙本来互相独立,但一旦你「按丙分层」(只看丙发生的人, 或把丙放进回归模型),甲和乙就会凭空产生关联。
一个直观例子
设想大学录取只看两项:学习成绩和体育特长,两者本来毫不相关。 录取(碰撞节点)之后,在被录取的学生里,两者会呈现负相关—— 因为一个学生如果成绩平平却被录取了,那他体育多半很强;反之亦然。
这个负相关是筛选造出来的,不是真的。 你只看录取名单,永远看不出来。
换成我们的问题
蛋白 X ──→ 得糖尿病 ←── 其他无数因素(BMI、TCF7L2、生活方式…)
↓
得视网膜病变「得糖尿病」就是碰撞节点。只要你把分析限制在糖尿病患者内部(对照 = 无并发症的糖尿病人), 就等于按碰撞节点分层,于是:
任何一个促进糖尿病发病的因素,都会与其他促进糖尿病发病的因素凭空产生关联, 进而在「并发症」这个下游结局上表现出虚假的因果效应。
这在文献里的专名叫 index event bias(指标事件偏倚)—— 「index event」就是那个把你筛进研究的事件(这里是"得了糖尿病")。
反过来,如果对照是一般人群呢
那就没有这个筛选,碰撞偏倚不存在。但换来另一个问题: 病例全是糖尿病人、对照大多不是,于是估的效应里混着"得不得糖尿病"那一段。
两害相权,只能选一个。这不是谁做错了,是设计上的固有权衡。
| 对照定义 | 有没有 index event bias | 估计量是什么 |
|---|---|---|
| 一般人群(含非糖尿病者) | 没有 | 糖尿病易感性 + 并发症(复合) |
| 无并发症的糖尿病患者 | 有 | 并发症特异(但被偏倚污染) |
二、R9 与 R13 到底是哪一种:用数据判定
不靠读文档,直接拿三个「本不该出现」的探针位点去测。逻辑很简单:
TCF7L2 是 2 型糖尿病的头号位点,FTO 是纯粹的肥胖位点, 二者与视网膜没有任何已知的直接关系。 若对照含非糖尿病者,它们必然显著;若对照全是糖尿病人,它们应当归零。
实测结果(本地 FinnGen 原始 sumstats)
| 端点 | TCF7L2 rs7903146(纯 T2D) | FTO rs1421085(纯肥胖) | PTPN22 rs2476601(纯 T1D) |
|---|---|---|---|
| R9 糖网 EXMORE | β=+0.195 p=8.7e-29 | β=+0.077 p=9.6e-08 | p=8.5e-30 |
| R9 黄斑 EXMORE | β=+0.181 p=6.4e-10 | β=+0.088 p=2.5e-04 | p=2.1e-27 |
| R13 糖网 EXMORE | β=−0.018 p=0.27 | β=+0.0004 p=0.98 | p=2.1e-15 |
| R13 糖网 STRICT | β=−0.017 p=0.43 | β=−0.003 p=0.87 | p=1.4e-22 |
| R13 黄斑 | β=−0.029 p=0.26 | β=+0.020 p=0.35 | p=1.2e-14 |
| R13 新生血管性青光眼 | β=+0.156 p=3.0e-04 | β=+0.057 p=0.12 | p=0.099 |
★ FTO 在 R13 糖网上 β = 0.0004、p = 0.98 —— 这是干净得不能再干净的零。 一个已知的强肥胖位点在糖网端点上完全无信号,只可能是因为病例和对照都是糖尿病人。
结论(三条,都是实测)
- R9 的对照含非糖尿病者。 纯糖尿病位点、纯肥胖位点全部强显著。
- R13 的糖网 / 黄斑 / 糖肾对照只有糖尿病患者。 同样的位点全部归零。
- ★★ R13 内部并不一致。 新生血管性青光眼的 TCF7L2 仍然 p=3.0e-04 显著—— 它的对照仍是一般人群(对照数 483,921 ≈ 全队列)。 所以 R13 的各并发症端点之间不能直接横向比较。
对照数也印证
| R9 | R13 | |
|---|---|---|
| FinnGen 全队列 | ≈ 37.7 万 | ≈ 48.5 万(更大) |
| 糖网 EXMORE 对照 | 308,633(占 87%) | 62,519(占 16%) |
| 新生血管性青光眼对照 | 366,206(97%) | 483,921(97%) |
队列变大了,糖网的对照反而缩到五分之一 —— 是定义变了,不是数据变少了。
另有旁证
FinnGen 的 Risteys 页面上,DM_RETINOPATHY_EXMORE 当前定义写的是 「Control conditions: DIABETES_FG」「Control exclude: DM_COMPLICATIONS」, 即对照须为糖尿病患者且无任何糖尿病并发症。 ⚠️ 该页显示的是**当前(R12/R13 期)**定义,我未能取到 R9 期的定义原文, 所以 R9 那一侧的判断以上面的探针实测为准,不以网页为准。
三、这对本课题各条线意味着什么
| 线 | 用的 release | 面临的问题 | 对策 |
|---|---|---|---|
| R9 主线(本文档主体、3 个 A 级候选) | R9 | 估计量复合,无 index event bias | 糖尿病对照臂(27_diabetes_contrast.R)逐条比对 |
| R13 线(DR/AMD 分家那篇) | R13 | 估计量特异,有 index event bias | ⚠️ 目前未做任何处理 —— 待办 |
| R13 新生血管性青光眼 | R13 | 与同批其他端点口径不同 | 不可与糖网/黄斑并排解读 |
R9 主线不要套用 Slope-Hunter
文献里校正 index event bias 的主力方法(Slope-Hunter、逆概率加权、Dudbridge 法) 前提都是「病例内部的进展分析」。R9 的对照是一般人群,压根没有那个筛选, 硬做不但没用,反而会引入本来不存在的假设。 R13 线才是这些方法的适用对象。
四、R9 主线的正确做法:糖尿病对照臂 + 口径敏感性
文献里大家怎么做的:基本上不做
| 文章 | 并发症对照 | 是否分离糖尿病易感性 | 是否报对照口径敏感性 |
|---|---|---|---|
| Yuan 2023 Cell Rep Med(本课题 baseline) | 一般人群 | 没有 | 没有 |
| T1D 蛋白 SMR/共定位(PMC11206317, 2024) | 一般人群 | 没有 | 没有 |
| Zhang 2024 蛋白比值(Diabetes Obes Metab) | 一般人群 | 没有 | 没有 |
Yuan 那篇唯一沾边的是在局限里承认「结果更多反映 2 型的并发症」,说了问题、没做分析。
⚠️ 上表三条系通过网页抓取由模型读原文作答,非逐字通读全文,引用前须核原文。
而 PLOS Genetics 2023 那篇讲检测碰撞偏倚时给的第一条建议,正是我们在做的事:
比较同一批变异在「发病 GWAS」与「进展 GWAS」上的效应量; 若某变异与发病强关联,就不能排除它与进展的关联纯属人为。
27_diabetes_contrast.R 就是这个比较的定量版,有方法学文献背书。
分类规则(analysis/27_diabetes_contrast.R:59-63)
级联判定,命中即停:
r
cls := 无法判定 当 糖尿病端缺工具
else 并发症特异 当 pd >= 0.05 # 糖尿病端根本没信号
else 方向背离 当 sign(bc) != sign(bd) # 两边都显著但方向相反
else 并发症增强 当 zdiff > 0 且 pdiff < 0.05
else 糖尿病驱动★ 顺序很关键:先要求糖尿病端 p<0.05(确有信号),再看符号。 所以「方向背离」不是噪声打架,是两边都显著、方向对着干。
口径敏感性实测:拿哪个糖尿病当对照,结果差很多
现行规则是「取信号更强的那个糖尿病性状比」。把三种口径都跑一遍:
| 口径 | 并发症特异 | 并发症增强 | 糖尿病驱动 | 方向背离 | 无法判定 |
|---|---|---|---|---|---|
| 现行(取信号更强者) | 10 | 11 | 30 | 6 | 0 |
| 一律用 T1D | 19 | 8 | 24 | 6 | 0 |
| 一律用 T2D | 34 | 11 | 9 | 0 | 3 |
对 7 个共定位支持蛋白的分层后果:
| 蛋白 | 现行 | 一律 T1D | 一律 T2D |
|---|---|---|---|
| ERMAP / IFNAR1 / APOL1 | A | A | A |
| NOTCH2 | B(糖尿病驱动) | B | B |
| APOE | B(糖尿病驱动) | A ← 变 | B |
| WARS | B(方向背离) | B | A ← 变 |
| GALNT3 | B(方向背离) | B | A ← 变 |
A 级数量:现行 3 个 → 一律 T1D 4 个 → 一律 T2D 5 个。
★ 最重要的一行
三个 A 级候选在三种口径下全部稳定为 A。 动的全是 B 级边界。 这是正面结果,该主动写出来。
但 B 级边界确实敏感,必须披露
(2026-08-05 更新) T1D 源等位频率修复后,方向背离由 6 条降为 1 条—— WARS、SIGLEC5×2、TRIM40×2 翻正后归入「糖尿病驱动」。仅剩的 1 条仍是跟 T1D 比出来的:
| 蛋白 | T1D β / p | T2D β / p |
|---|---|---|
| GALNT3 × 糖网 | +0.117 / 2.4e-03 | −0.054 / 0.018(与糖网同号) |
FinnGen 糖网的病例以 2 型为主,却按 T1D 判了背离。 所以 WARS / GALNT3 的降级完全建立在「跟 T1D 比」这一个选择上。
为什么仍然保留现行口径
改判的 31 条里大部分是 MHC 区蛋白(HCG22、LTB、CFB、MICB_MICA、TNXB、ATP6V1G2、AIF1、TRIM40)—— MHC 本来就是 1 型糖尿病的头号位点、对 2 型基本无关,它们的 T1D 信号是真的, 不能靠换对照把它洗成「并发症特异」。
现行口径是偏保守的一侧,不夸大特异性主张(27_diabetes_contrast.R 文件头已注明)。 ⇒ 主结果维持现行口径,把三口径交叉表作为敏感性分析报出来。
五、待办
- R13 线的 index event bias 完全没处理 —— DR/AMD 那篇用的是 R13, 对照是糖尿病患者,属于经典 index event bias 场景。至少要做检测 (负对照位点、Miami 图),有条件再做 Slope-Hunter 校正。
- R13 新生血管性青光眼与同批其他端点口径不同,现有图里是并排画的,需加注或分开。
- 每个蛋白只有 1 个 cis 工具,MVMR 条件在糖尿病易感性上理论可行但过于脆弱, 只在讨论里作为未来方向提一句。
参考
- Dudbridge 组,PLOS Genetics 2023
pgen.1010596《Strategies to investigate and mitigate collider bias in genetic and MR studies of disease progression》 - Slope-Hunter(Mahmoud 等),bioRxiv
2020.01.31.928077,R 包SlopeHunter - medRxiv
2026.02.26.26347193:各种 index event bias 校正法的比较 - FinnGen Risteys 端点定义页(当前版)
⚠️ 以上文献均只读了检索摘要或网页抓取的问答,未逐字读全文,写进论文前须核原文。