Skip to content

04 · 第 2 步 · MR + 多重检验校正

执行日期:2026-08-07 状态:✅ 完成 —— 全部命中预期,产物与旧结果 MD5 相同

关于「跑前预期」的说明(诚实交代)

第 2 步与第 1 步在同一次运行里完成analysis/01_screen.R),所以本页的预期数字 不是运行后才取的——它们与第 1 步的预期在同一次查询里、运行之前从旧结果取出, 已落在 01 页 §4总览页漏斗表。但我在 03 页 的预期表里只列了工具与 F 相关的列,没把 FDR 显著数一并写上。 本页把它们显式补齐并逐项比对。


结局命名

本页表格用内部 IDT1D_gcst / T2D_mahajan 等)——它们是文件名与代码里的字符串,实录必须能对得上。论文显示名分别是 Type 1 diabetes / Type 2 diabetes,对照表见总览页。★ 内部 ID 绝不允许出现在图上或论文表格里。


一、这一步做什么

按 v4 第 2 步:MR + 多重检验校正,作用单位是「蛋白 × 结局」。 检验数含 MHC 蛋白(v4 不设 MHC 排除步骤)。


二、用什么数据、什么版本

沿用第 1 步的工具与结局,见 03 页 §2

暴露数据版本的重要说明:用的是 UKB-PPP discovery 集(n = 34,557,Supplementary Table 9), 不是 full-cohort 版(n = 52,363,原文称 putative)。 选择理由与 Methods 建议措辞见 答疑 · 数据版本与作图 Q1/Q2


三、什么检验方法

3.1 MR 估计量:单 SNP Wald 比

每个蛋白只有一个 cis 哨兵,故用 Wald ratio

b  = β_outcome / β_exposure
se = se_outcome / |β_exposure|

单 SNP Wald 比下 z = b/se = β_out/se_out,与 β_exposure 无关p 值恒等于结局侧的 p 值。这有两个后果,写作时必须知道:

  1. 暴露效应量的大小不影响显著性,只影响 OR/CI 的数值
  2. 因此第 1 步的「共用哨兵校正」(11 行)不改变任何显著性判定

⚠️ 单工具无法做 MR-Egger / 加权中位数等多工具敏感性分析,也无法算异质性 Q —— 这不是疏漏,是设计使然,Methods 里要写明。

3.2 多重检验校正

config.yamlmultiple_testing

参数
methodBH(Benjamini–Hochberg FDR)
groupingby_outcome —— 每个结局各自校正
alpha0.05

检验数 m = 该结局实际报告的「蛋白数」,不是唯一变异数。 二者差 11:11 个哨兵各被 2 个蛋白共用,它们是两个不同的假设(两种蛋白),故各计一次检验。 实现上体现为 FDR 在 ann 合并之后才算01_screen.R:205)—— 旧实现在展开蛋白前算(m 偏小、FDR 偏松),已修。

⚠️ by_outcome 是一个选择,不是唯一正确答案。 改成 global(全部结局一起校正)会更严格; config.yaml:115 记着实测:R13 线改 global 会把显著数从 333 降到 289。 本课题沿用 by_outcomeMethods 必须写明分组方式,否则读者无法判断校正强度。


四、★ 预期结果

(来源:运行前从旧结果取出,见本页顶部说明)

outcome检验数 mFDR<0.05 显著
Retinopathy158724
Maculopathy158719
NeovascGlaucoma15870
Neuropathy15875
Nephropathy15879
T1D_gcst172257
T2D_mahajan161428
汇总项预期
并发症五个合计57 对
唯一蛋白31
其中 MHC 蛋白11
MHC 蛋白涉及的对数30 / 57 = 53%

容差:以上全部完全一致,差 1 即缺陷。


五、实际结果 —— 全部命中

outcome检验数 mFDR<0.05显著蛋白最小 p最小 FDR预期
Retinopathy158724249.13e-821.45e-78
Maculopathy158719195.48e-588.69e-55
NeovascGlaucoma1587002.65e-040.420
Neuropathy1587551.93e-233.07e-20
Nephropathy1587999.28e-381.47e-34
T1D_gcst172257572.18e-1773.75e-174
T2D_mahajan161428282.91e-154.70e-12
汇总预期实际
并发症合计对数5757
唯一蛋白3131
其中 MHC 蛋白1111
MHC 蛋白涉及对数30 / 57 = 53%30 / 57 = 53%

11 个 MHC 显著蛋白(作者 MHC 列判定): AGER · AIF1 · ATP6V1G2 · BTN2A1 · BTN3A2 · CFB · HCG22 · LTB · MICB_MICA · TNXB · TRIM40

5.1 与旧结果比对

第 1 步已报:results/screen_R9_dm/16 个 CSV 全部 MD5 相同, 其中包括 7 个 _significant.csvSUMMARY_publication.csv。 → 第 2 步的每一个 β / se / p / FDR / OR 都与旧结果逐字节一致。

5.2 顺带查出并已修的一处文档缺陷

01_screen.R 的 FDR 注释原文写「检验数 m = 本结局实际报告的蛋白数**(1659)**」, 但没标这是哪条线的数。R9_dm 实测是 1587 / 1722 / 1614,1659 是 R13 的。

config.yaml:112 那处倒是标了「(R13 为 1659)」,是对的;出问题的只有脚本里那一处。 已改为不写死具体数字、并注明 R9_dm 的实测值。

★ 这不影响任何计算(注释而已),但写死在注释里的数字会随数据变化而悄悄变错, 下一个读代码的人会被误导。


六、如何解读

6.1 ★ 这一步之后只能说「关联」,不能说「因果」

按 v4 的措辞阶梯,此时只过了 MR + 多重检验,方向性、外部复制、共定位一道都没走。 Zheng 2020 实测:413 个 MR 关联中有 130 个(31.5%)不被共定位支持

→ 现在这 57 对的正确说法是 「57 个蛋白–并发症关联」,不是「57 个因果关系」。

6.2 ★ MHC 蛋白独占一半以上的显著结果

11 / 31 蛋白(35%)是 MHC 区的,但它们占了 30 / 57 = 53% 的显著对。

也就是说 MHC 蛋白平均横跨的并发症数明显多于非 MHC——旧实测为 2.7 个 vs 1.35 个。这正是 v4 §3.3「不排除 MHC 但必须处理」的实证基础: 「一个蛋白横跨多个并发症」这个现象,很大程度上是超长连锁块造出来的, 而不是生物学上的多效性。

⚠️ 但现在还不能下这个结论——它要等第 5 步共定位与跨病符号一致性做完才站得住。 此处只记录现象。

6.3 NeovascGlaucoma 一个都不显著,不是"没信号"

最小 p = 2.65e-04,最小 FDR = 0.420。病例数仅 1,100(其余并发症数千到上万)。 → 这是功效问题,写作时应说「未检出」而非「无关联」。 它也是 5 个并发症里唯一没有外部复制队列的两个之一(另一个是 Maculopathy)。

6.4 一个必须在 Methods 交代的方法学限制

每蛋白单工具 → 无法做多工具敏感性分析(MR-Egger、加权中位数、异质性 Q 全都做不了), 且 p 值恒等于结局侧 p 值。这是 cis 单哨兵设计的固有属性, 换来的是水平多效性风险低(cis 变异作用于本基因)。得失都要写。


七、进正文还是补充(暂定)

内容暂定去向依据
Wald ratio 公式与单工具的限制正文 Methods必写;否则审稿人会问为何无 Egger/中位数
FDR 分组方式(by_outcome)与检验数 m 的口径正文 Methods不写读者无法判断校正强度;m 用蛋白数而非变异数也要交代
每结局的 m 与显著数正文表 1 或补充表漏斗的第一格
57 对 / 31 蛋白正文(漏斗起点)
MHC 11 蛋白占 30/57 = 53%正文结果一句 + 补充表它是后续 MHC 讨论的量化基础
全部 1587×7 行的 MR 估计补充材料审稿人常索要
NeovascGlaucoma 功效不足Limitations避免被读成"无关联"

⚠️ 暂定,最后一步统一复核。


八、漏斗记账(本步产出)

节点蛋白蛋白×结局对其中 MHC 蛋白
工具池(cis 记录)1,9541,955 条27
标准化后可用工具1,875 SNP(含 1 条无 rsID 不可用)
MR 显著(FDR<0.05,五个并发症)315711

个人科研与运维文档 · 内容持续修订