Skip to content

孟德尔随机化 · 从零开始读懂(小白入门)

这一页假设你完全没学过统计遗传,从"为什么要做这个"讲到"结果长什么样",一条线读下来。 读完你应该能回答三个问题:我们在证明什么 · 凭什么能证明 · 哪些结果算数。 想直接看结果怎么读 → 结果怎么看;想看每步的公式与文献 → 方法引擎详解

先给你一句话

我们在做的事:从血里的两千多种蛋白中,找出哪些蛋白的高低是"导致"糖尿病并发症(糖网、肾病、神经病变等)的原因,而不只是"跟着一起变"。 用来判断因果的工具,是人出生时就随机拿到的基因。


第一章 为什么需要 MR:普通研究解决不了的问题

1.1 相关 ≠ 因果

假设我们抽了一万个糖尿病人的血,发现:血里 A 蛋白高的人,得糖网的多。能说"A 蛋白导致糖网"吗?不能。至少有三种解释:

可能性说明例子
真因果A 蛋白确实伤害视网膜那它就是药物靶点 ✅
混杂(confounding)有第三个因素同时抬高 A 蛋白和糖网风险病程长的人 A 蛋白高、糖网也多 → 真凶是病程
反向因果(reverse causation)是糖网(或它的病理过程)让 A 蛋白升高视网膜坏了才释放 A 蛋白,A 是结果不是原因

观察性研究(横断面、队列)没法把这三种区分开。你能校正的只有你测到的混杂因素,测不到的(reverse causation、未知混杂)就无解。

1.2 金标准是 RCT,但这里做不了

理论上最干净的做法是随机对照试验(RCT):把人随机分两组,一组把 A 蛋白调高,一组不动,随访十年看谁得糖网多。因为分组是随机的,两组的病程、年龄、血糖、生活习惯平均下来都一样,唯一差别就是 A 蛋白 → 结果差异只能是 A 蛋白造成的。

但现实里:没有能安全调高 A 蛋白的药、随访十年成本天价、伦理上也不允许。对绝大多数蛋白,RCT 根本没法做。

1.3 基因就是老天爷帮我们做的随机分组

关键洞察在这里:

精子和卵子结合时,父母的等位基因是随机分给你的(减数分裂,孟德尔第二定律)。这个"随机发牌"发生在你出生之前,不受你后来的血糖、吸烟、病程、有没有得糖网的任何影响。

于是,如果我们能找到一个只影响 A 蛋白高低的基因变异(SNP),那么人群就被老天爷自动分成了两组:

        携带该变异(A 蛋白天生偏高)  ←── 随机分配,与后天因素无关
人群 ──┤
        不携带(A 蛋白天生偏低)

这两组人的年龄、生活习惯、病程平均下来是可比的(因为分配是随机的),差别只在 A 蛋白 → 这就近似一次天然的 RCT。这个思路就叫孟德尔随机化(Mendelian Randomization, MR)

RCTMR
研究者随机分组受精时随机分配基因
干预:给药干预:天生带不带这个变异
随访十年基因从出生就"暴露"了,等于终身随访
贵、慢、常不可行用已有的 GWAS 数据算,几分钟

顺带一个 MR 的独有优势

MR 反映的是"一辈子都比别人高一点点"的效应,而不是"吃药三个月"的效应。所以它更适合回答"这个靶点值不值得开发药物",不适合直接预测"用药后降多少风险"。


第二章 MR 的骨架:三个角色和三条假设

2.1 三个角色

   工具变量 IV (SNP)
        │  ①相关性:确实影响暴露

      暴露 (Exposure) ────因果?───▶  结局 (Outcome)
      = 某个蛋白                      = 某种糖尿病并发症
        ▲                                ▲
        └──② 不能有混杂偷偷连过来        │
        ③ SNP 不能绕开暴露、直接影响结局 ┘
  • 暴露(exposure)=你怀疑是"因"的东西。本课题 = 血浆里某个蛋白的水平
  • 结局(outcome)=你想解释的"果"。本课题 = 糖尿病视网膜病变 / 肾病 / 神经病变 / AMD 等
  • 工具变量(IV, instrumental variable)=拿来代替暴露的 SNP。MR 全部的可信度都压在工具上。

2.2 三条假设(MR 的命根子)

工具变量必须同时满足三条,缺一条结论就不成立:

#假设白话违反了会怎样我们用什么保护它
相关性 (Relevance)SNP 真的能改变这个蛋白工具太弱 → 估计有偏、随机噪声被放大F 统计量(F<10 剔除)
独立性 (Independence)SNP 不通过混杂因素影响结局混杂又混进来了cis 变异 + 人群/祖先匹配
排他性 (Exclusion restriction)SNP 只能经过这个蛋白影响结局,不能走别的路多效性偏倚——最主要的威胁共定位、PheWAS、Egger、PRESSO、cis 设计

假设 ③ 是最难的,也是全部质控的核心

"多效性(pleiotropy)"= 一个 SNP 同时影响好几个性状。比如 APOE 的 rs429358 关联了近千种表型——用它当工具,你根本分不清结局的变化是经过目标蛋白,还是经过它影响的其他一堆东西。本页后面提到的绝大多数检验,都是在跟假设 ③ 死磕。

2.3 为什么本课题用 cis-pQTL(重要)

  • pQTL=影响某个**蛋白(protein)**血浆浓度的 SNP。
  • cis-pQTL=这个 SNP 就落在编码该蛋白的基因自己附近(一般指基因两端 ±1 Mb 内)。
  • trans-pQTL=在别的染色体/远处,通过一大堆中间环节间接影响这个蛋白。

打个比方:想调节一台机器上"A 零件"的产量——

  • cis = 直接拧 A 零件生产线上的旋钮(机制明确,几乎不可能影响别的产线);
  • trans = 去总电闸上拨一下(A 零件产量是变了,但整个工厂几十条线全跟着变了)。

trans 天生多效性一堆,会砸烂假设 ③;cis 机制最直接、最干净。所以本课题只用 cis-pQTL(工具表按 cis/trans == "cis" 过滤)。代价是:cis 工具通常每个蛋白只有 1 个左右——这直接决定了我们用哪种统计方法(见下一章)。

工具是"现成的",不是我们自己 clump 出来的

本课题的 cis 工具直接取自 UKB-PPP(Sun et al., Nature 2023)Supplementary Table 9 里的显著 cis-pQTL——每个蛋白一个 LD 独立的哨兵变异(数据实测 99.9% 的蛋白只有 1 个)。据论文方法学描述(经检索,未直接读到原文全文),这些是对显著变异做 PLINK 区域化 clumping 后的代表变异,LD 独立性由原文上游完成,我们不再二次 clumping。后文流程图里"cis 窗口 + clumping"那一步是通用引擎(换非 pQTL 暴露、从原始 sumstats 起跑)才走的;本课题筛查直接用现成哨兵。详见 工具变量选择


第三章 一次 MR 到底怎么算出来的

3.1 两样本设计:不需要同一批人

我们不需要一个"既测了蛋白又随访了糖网"的队列。只要两份互相独立的现成 GWAS 汇总数据:

数据来源提供什么
暴露侧UKB-PPP(约 5.4 万英国人测了 ~3000 种血浆蛋白)SNP → 蛋白的效应量 beta.exposure
结局侧FinnGen(芬兰全国生物库,几十万人的疾病诊断)SNP → 疾病的效应量 beta.outcome

这叫两样本 MR(two-sample MR)。两个队列人群不重叠(英国 vs 芬兰),正好避免"样本重叠偏倚"。

为什么两侧都得是欧洲人?

不同人群的 SNP 之间连锁结构(LD)不一样。两侧人群不一致,等位频率和连锁结构错配会让效应量不可比。所以流水线要求暴露的 ancestry 与 LD 参考面板一致,不一致直接报错拦截(见 使用教程 §4.4)。

3.2 核心算式:Wald ratio(就一个除法)

只有 1 个工具 SNP 时,因果效应就是一个除法:

β因果=βSNP结局βSNP暴露

直觉:"这个 SNP 让疾病风险变了多少" ÷ "这个 SNP 让蛋白变了多少" = "蛋白每变 1 个单位,疾病风险变多少"

就像:踩油门 1 厘米 → 车速 +5 km/h(暴露侧);踩油门 1 厘米 → 油耗 +0.5 L(结局侧);那么车速每 +1 km/h → 油耗 +0.1 L(相除,把油门这个中介消掉了)。

3.3 用我们的真实数字走一遍(AGER → 糖网)

拿结果表 results/screen_R9/Retinopathy_significant.csv 的第一行(真实数据):

数值意思
SNPrs204993工具变量
proteinAGER暴露蛋白(晚期糖基化终产物受体)
effect_allele.exposureG效应等位(下面所有效应都相对 G 而言)
beta.exposure−0.17每多带一个 G,AGER 蛋白降低 0.17 个标准差
beta.outcome+0.332每多带一个 G,糖网的 log-odds 升高 0.332

代进除法:

β因果=0.3320.17=1.95

这正是结果表里的 b = -1.9548。再转成大家习惯的 OR:

OR=e1.95=0.14

翻译成人话携带 G 的人 AGER 天生更低、而且糖网更多 → 反过来说,AGER 越高,糖网风险越低,AGER 每高 1 个标准差,糖网的比值比约为 0.14(95%CI 0.12–0.17,P=9×10⁻⁸²)。AGER 看起来是保护性的。

这个 0.14 不能直译成"高一个 SD 就少 86% 的病"

Wald ratio 是外推:它把"SNP 造成的那一丁点差异(0.17 SD)"线性放大到"整整 1 个 SD"。分母越小,放大倍数越夸张,OR 越极端。所以 cis-pQTL MR 的 OR 只该看方向和是否显著,绝对数值不要当疗效预测。这是新手最常犯的错。

3.4 多个工具时:IVW = 加权平均

如果一个暴露有好几个独立工具,每个工具各给一个 Wald ratio,把它们按精度加权平均就是 IVW(逆方差加权)——估计得准的 SNP(se 小)说话声音大。这是常规 MR 的主分析方法。

方法怎么选,流水线是按工具数自动决定的:

工具数用什么一句话
1 个(本课题批量筛查的常态)Wald ratio就是上面那个除法
≥2IVW主分析:加权平均
≥3MR-Egger允许多效性存在,截距 ≠ 0 就是多效性的警报
≥3加权中位数 / 众数即使一半工具是坏的也稳,用来交叉验证
≥3MR-RAPS工具偏弱、样本可能重叠时更稳健

**判读原则:几种方法方向一致才可信。**只有 IVW 显著、中位数和 Egger 都不支持 → 大概率是某个坏工具带偏的,别写进结论。

那只有 1 个工具的时候,这些互相验证不就都没了?

对——这正是 cis-pQTL 筛查的固有局限:单 SNP 没法做 Q 检验、Egger 截距、留一法。所以本课题把"验证"的担子交给两根支柱共定位(疾病信号和蛋白信号是不是同一个因果变异,排 LD 混杂)、PheWAS(这个工具是不是多效位点,排水平多效性)。这就是为什么下游分析不是"锦上添花",而是必须做

⚠️ 注意:不要把"跨结局一致性(同一蛋白在多个并发症里都显著)"当成第三根验证支柱。遗传高度相关的并发症(如糖网↔肾病 rg≈0.97)本就会一起显著,多效位点(APOE)也到处显著——它区分不了真因果和假象,只能算支持性观察,不能替代共定位/PheWAS。


第四章 把整条流水线串起来看

到这里方法都齐了,现在看它们在实际分析里按什么顺序发生、每一步在解决哪条假设

4.1 全流程一张图

【输入】UKB-PPP cis-pQTL 工具表        【输入】FinnGen 疾病 GWAS (R9/R13)
   (一行一个 pQTL,含 beta/se/eaf)         (全基因组,几百万行)
        │                                        │
        ▼                                        ▼
 ① 读取 + 标准化 ────────────────────────────────┤  各家格式不同:-log10P 还原、
        │                                        │  OR 取 log、列名对齐、去坏行
        ▼                                        │
 ② 选工具变量 (IV)                               │  → 保护假设①
    · 只留 cis(基因 ±500kb)                    │
    · P < 5e-6                                   │
    · LD clumping 去冗余 (r²<0.001)              │
    · 算 F,F<10 剔除(弱工具)                  │
        │                                        │
        └──────────────► ③ 谐化 Harmonise ◄──────┘  → 防方向搞反
                              · 等位基因对齐、回文 SNP 处理
                              · Steiger 定向过滤(剔除方向反的)


                          ④ MR 估计(Wald / IVW / Egger…)  → 得出 b、OR、P

                     ┌───────────────┼───────────────┐
                     ▼               ▼               ▼
              ⑤ 敏感性检验      ⑥ 多重检验 FDR   ⑦ 共定位
              Q / Egger截距     几百个组合         同一因果变异?
              PRESSO / LOO      压假阳性           → 保护假设③
                     │               │               │
                     └───────────────┼───────────────┘

                              ⑧ 证据整合 + 出报告/结果表


                    ⑨ 下游:PheWAS(多效性)· LDSC(疾病间遗传相关)
                            HyPrColoc(多疾病共享因果变异)

对应到代码:R/ 里的编号文件就是这些工序,详见 代码结构详解

4.2 每一步在防哪种错(这是理解全流程的钥匙)

步骤它在防什么错不做会怎样
标准化单位/编码错乱FinnGen 的 mlogp 当成 P 值 → 所有 SNP 都"极显著"
cis 窗口多效性(假设③)用 trans 工具 → 结论可能走的是别的通路
LD clumping同一个信号被重复计数一个位点算了 10 遍 → 把置信区间人为缩窄
F 统计量弱工具偏倚(假设①)弱工具让估计朝观察性关联方向偏
谐化效应方向反了保护因素被报成危险因素(符号反了
Steiger反向因果把"病导致蛋白变"错报成"蛋白导致病"
FDR多重检验假阳性1587 个工具 × 23 个病,光靠运气就能蹦出几十个 P<0.05
敏感性检验单个坏工具带偏结论其实由一个离群 SNP 撑着
共定位连锁巧合蛋白和疾病其实是两个挨着的不同变异 → 假因果
PheWAS高多效工具APOE 这种"什么都关联"的位点,结论不可信
双向 MR方向搞反因果箭头画反了

4.3 我们实际跑的两条路线

批量筛查(本课题主力)单条精细分析
命令Rscript analysis/01_screen.R R9Rscript run_all.R
规模~1600 个 cis 工具 × 23 个结局(R9)1 个暴露 × 少数结局
方法单 SNP Wald ratio + 按结局做 FDR自适应全套 + 敏感性 + 共定位
改哪里outcome_manifest.csv(结局清单)config.yaml
产出每结局显著表 + 跨结局重叠矩阵 + 汇总表完整 HTML 报告
干什么用广度扫描:先找出哪些蛋白有信号深挖:把某个蛋白钉死

顺序是:先用批量筛查铺开找信号 → 再拿显著的蛋白做精细分析和下游验证。


第五章 下游三件套:为什么它们是必需的

单 SNP 的 Wald ratio 显著,只是入场券。真正决定一条结果能不能写进论文的,是下面三件事。

5.1 共定位(Colocalization)——排除"连锁巧合"

要解决的问题:MR 说 AGER 和糖网都跟这个位点有关,但会不会其实是两个不同的因果变异,只是恰好挨在一起、被连锁不平衡(LD)绑在一块儿?

打比方:晚上看见两栋楼同时亮灯——

  • 同一个总开关控制的(→ 真共享,共定位支持)?
  • 还是各有各的开关只是碰巧同时开(→ 连锁巧合,共定位不支持)?

怎么做:把这个基因位点附近成百上千个 SNP 的关联信号整条曲线拿来比对,算后验概率(= 二者共享同一因果变异的概率)。判定线两个方法不同:coloc.abf 用 PP.H4 > 0.8(Giambartolomei 惯例);HyPrColoc 用 PP > 0.7(本课题方案定稿值,见 config.yaml)。

  • coloc.abf:两两做(1 个蛋白 vs 1 个病)
  • HyPrColoc:多性状一起做(1 个蛋白 vs 一堆病)——问的是"这个蛋白是不是同一个变异同时驱动了糖网+肾病+神经病变",正好对上我们"泛并发症共享靶点"的课题。

共定位需要"区域级"数据,不是几个哨兵 SNP

批量筛查每个蛋白只用了 1 个哨兵 SNP,做不了共定位。要跑共定位,得从 UKB-PPP Synapse 把每个蛋白的区域 sumstats(cis 窗口内上千个 SNP)单独下下来。这就是 HyPrColoc 排在数据下载之后的原因。

判读:MR 显著 共定位支持 = 证据强;MR 显著 共定位不支持 = 标"证据不一致",很可能是 LD 巧合。

5.2 PheWAS——给工具做背景调查

把每个显著的工具 SNP 拿去 OpenGWAS 扫上万种表型,看它还关联多少别的东西。关联得越多,越可能违反假设③(排他性)。

我们的实测结果(243 个显著 SNP → 22,473 条关联,查询日期 2026-07-18):

SNP蛋白关联表型数怎么看
rs429358APOE949著名多效位点,结论必须打问号
rs505922ABO557同上(血型位点,什么都关联)
rs2523594HLA-E541HLA 区域,LD 极复杂
rs204993AGER523在 HLA 附近,需共定位交叉验证

注意 AGER 也在这张榜上——所以第三章那个漂亮的 OR=0.14,光凭 MR 还不能下结论,必须等共定位。这就是"下游不是可选项"的活例子。

5.3 LDSC——这些病到底是不是一回事

LDSC(LD score regression)用全基因组数据算两种病之间的遗传相关 rg(−1 到 1),衡量它们共享多少遗传基础。它不做因果,是给整个课题定调用的。

我们的实测(R9,8 个疾病):

发现数字意味着什么
微血管并发症之间高度相关糖网↔肾病 rg=0.97、糖网↔黄斑 0.95它们共享遗传基础 → 支持"泛并发症"整合分析这个课题设计
AMD 跟糖尿病并发症基本不相关rg = 0.07–0.29AMD 是独立疾病 → 拿它当"非糖尿病对照"是合理的
T1D 与 T2D 几乎不相关rg ≈ −0.03两者病理不同 → 必须分开分析,不能合并

第六章 结果怎么看(速览)

完整版在 → 结果怎么看 · 逐列逐图详解。这里先给你判读一条结果的五个问题

  1. 工具强不强?Fstat —— 必须 > 10(我们实际中位数约 790,很强)。
  2. 显著吗?FDR < 0.05不是 p < 0.05。跑了上千个组合,光看 P 一定有假阳性。
  3. 方向是什么?OR:>1 = 蛋白升高增加风险;<1 = 保护。(数值大小别直译,见 §3.3)
  4. 稳不稳? 同一个蛋白是不是在多个相关并发症里都显著(看 overlap_matrix.csv)?只在一个病里冒头、别的都没有 → 谨慎。
  5. 是不是巧合? 这个 SNP 在 PheWAS 里多效性高不高?共定位 PP.H4 支持吗?

五个都过 → 可以写进结论。任何一个不过 → 写"提示性发现,需进一步验证"。


常见误解 FAQ

Q:MR 的 OR = 0.14,是不是说这个蛋白能把风险降 86%? 不是。见 §3.3——Wald ratio 是把 SNP 造成的微小差异线性外推到 1 个 SD,OR 会被放大。只看方向和显著性。

Q:某个病 0 个显著蛋白,是不是说明蛋白跟它没关系? 不是,多半是功效不足。比如 R9 的视网膜动脉阻塞只有 181 个病例——样本太少,什么都测不出来。看 SUMMARY_publication.csvncase 一列就明白了。

Q:为什么 T2D(FinnGen)有 72 个显著,而 T2D(Mahajan)只有 7 个? 结局定义不同。FinnGen 自己的 T2D 定义偏宽松(把很多广义病例算进来),显著数会虚高。Mahajan 是专门的 T2D meta 分析,定义严格。这正是我们同时跑两个 T2D 数据源的原因——用来互相校验。

Q:P 值都 1e-82 了还需要 FDR 吗? 需要。FDR 是流程纪律,对整批结果统一执行。极显著的那些 FDR 照样极小(AGER 的 FDR=1.4e-78),不影响;它拦的是 P=0.01 那批"看着显著其实是撞运气"的。

Q:只有 1 个工具 SNP,MR 还算数吗? 算,但必须靠共定位 + PheWAS 两根支柱补位(跨结局一致性只是支持性观察,不算独立验证;见 §3.4 的提示框)。这是 cis-pQTL MR 的标准做法,也是本领域的惯例。

Q:MR 证明了因果,就能直接做药吗? MR 给的是"值得投入"的遗传学证据(方向 + 是否有因果),不能替代功能实验。所以本课题后面还接视网膜 eQTL 组织落位、可成药性评估,以及湿实验验证。


术语速查

一句话
SNP单个碱基的常见变异,是基因组上的"位点"
GWAS全基因组关联分析:扫全部 SNP 看哪个跟性状有关,产出"汇总数据"
sumstatsGWAS 汇总数据:每个 SNP 一行,含 beta/se/p
beta效应量。连续性状 = 变化多少;疾病 = log(OR)
OR比值比。>1 危险,<1 保护,=1 没影响
eaf效应等位基因频率
LD(连锁不平衡)挨着的 SNP 会一起遗传,导致"信号绑定"
clumping按 LD 去冗余,只留代表性 SNP
pQTL / eQTL影响蛋白 / 基因表达水平的 SNP
cis / trans在基因自己附近 / 在远处
IV工具变量,代理暴露的那个 SNP
F 统计量工具强度,<10 = 弱工具
多效性 pleiotropy一个 SNP 影响多个性状(MR 的头号敌人)
FDR错误发现率,多重检验校正后的显著性
PP.H4共定位后验概率,>0.8 = 共享同一因果变异
rg遗传相关,两个性状共享遗传基础的程度

接下来读什么

你想干嘛去哪
看懂结果表和图结果怎么看
自己跑一遍新手快速上手
看代码怎么组织的代码结构详解
看每步的公式和文献方法引擎详解
看本课题完整方法学案例-糖尿病 pQTL 研究
还有哪些方法能补可补充的 MR 方法

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