主题
★ 列名与产物路径已于 2026-08-07 重构
本页下文引用的列名与文件路径是重构前的。内部流程编号(4a/4b/step3)已从产物中移除,判定产物已移到 results/external_replication/。新旧对照表见 工程约定与事故记录 §四。
★ 重构不改任何数字——已存基线并逐行 diff 验证,主链数字完全一致。
05 · 第 3 步 · 方向性 / 反向 MR
状态:✅ 完成 —— §4 预期 14 项全部命中,零缺陷; 可复现性 104 个文件逐字节相同;并发症 57 对 → 否决 4 对 → 存活 53 对 / 29 蛋白
本页的写作顺序(可核查)
§1–§6 在运行之前写完并定稿,§7 在运行后追加,§4 的预期一个字没改。 §6 的四个决策点也全部在看到新结果之前定下——避免「跑完再挑口径」。
★ 事后补填的"预期"没有约束力——任何差异都能在事后编出一个合理解释。
结局命名
本页表格用内部 ID(T1D_gcst / T2D_mahajan 等),它们是文件名与代码里的字符串。 论文显示名与数据来源见总览页对照表。 ★ 内部 ID 绝不允许出现在图上或论文表格里。
一、这一步做什么
把因果方向调过来测一次:
| 正向(第 2 步已做) | 反向(本步) | |
|---|---|---|
| 暴露 | 蛋白(cis-pQTL 哨兵,1 个工具) | 疾病(全基因组显著位点,不设 cis 窗) |
| 结局 | 疾病(FinnGen R9 等) | 蛋白水平(UKB-PPP 全基因组 sumstats) |
| 估计量 | Wald ratio | 固定效应 IVW(工具 ≥2 时) |
若反向也显著,说明「蛋白 → 疾病」这个方向存疑:可能互为因果, 也可能存在共同上游,或者是疾病改变了蛋白水平(反向因果)。
★ 这是 v4 全流程仅有的两个否决点之一(另一个是 4X 表位调查)。 第 4 步的外部复制只分流不否决,第 5 步共定位只升级措辞。
⚠️ 阴性只能说「未发现反向因果的证据」,不能说「不存在反向因果」。 反向 MR 的功效受疾病侧工具数限制,本轮 Neuropathy 仅 7 个工具(见 §4.1), 功效不足与真无效应在结果上长得一样。
二、用什么数据、什么版本
2.1 反向暴露(疾病侧)
| 项 | 值 |
|---|---|
| 来源 | outcome_manifest.csv 里 release == "R9_dm" 的 7 个结局 |
| 目录 | /mnt/d/mrdata/outcome |
| 工具阈值 | p < 5e-8(全基因组显著,非 cis) |
| ★ T2D 特例 | 主文件是 hg37 且无 rsid,改用 hg38 转换版 Mahajan_hg38_forcoloc.tsv.gz(代码 FILE_OVERRIDE) |
2.2 反向结局(蛋白侧)
| 项 | 值 |
|---|---|
| 来源 | UKB-PPP 区域 tar,/mnt/d/mrdata/ukbppp_regional(146 个 tar 已就位) |
| 索引 | /mnt/d/mrdata/ukbppp_european_index.csv |
| 取哪些蛋白 | results/screen_R9_dm/*_significant.csv 的并集 → 95 个蛋白 |
| 取哪些位点 | 只取反向工具所在的 chr:pos(hg38) |
2.3 LD 面板与坐标系
| 项 | 值 |
|---|---|
| 面板 | 1000G EUR,/mnt/d/mrdata/ldpanel/EUR(.bed 已就位) |
| clumping | plink1.9(/usr/bin/plink1.9 已就位),--clump-r2 0.001 --clump-kb 10000 |
★ 坐标系铁律:LD 面板是 hg19,本课题数据是 hg38。 → clumping 只能按 rsID(r² 是单倍型属性,与坐标无关); → 取蛋白数据只能按 hg38 的 chr:pos(UKB-PPP tar 无 rsid 列)。 两者混用会静默错配。
2.4 代码基线
| 项 | 值 |
|---|---|
| 脚本 | analysis/35_reverse_mr.R(335 行) |
| 运行目录 | /home/research/mr-pipeline-r9v3(属主 research) |
| 编辑目录 | F:\project\mr-pipeline-r9v3 |
| 与旧脚本的差异 | 只有两处:① 根目录不再硬编码;② MHC 蛋白判定改用 _mhc.R |
三、什么检验方法
3.1 反向工具的选取
疾病 sumstats → p<5e-8 → 只留 rs 开头 → 去重
→ 丢模糊回文(AT/CG,无 eaf 时无法定链)
→ 只留在 LD 面板中的 → plink clump (r²<0.001, 10Mb)★ 「不在面板里的位点 plink 会静默丢弃」,故代码显式统计 n_inpanel 并打印。 plink 返回非零或产物缺失时 stop() 而不是跳过。
3.2 ★★ 必须剔除落在蛋白自身 cis 区的反向工具
这是本步最容易出致命假阳性的地方。
若不剔除,那些工具对蛋白的效应就是 cis-pQTL 效应本身, 会被误读成「疾病导致蛋白变化」。
实测病例(AGER × Retinopathy):rs915894 距 cis 锚点仅 35 kb、对蛋白 z = −17.3, 含它时 p = 3.2e-26(假阳性),剔掉后不显著。
代码里做两件事:
| 规则 | 适用 | |
|---|---|---|
| ① cis 窗排除 | 剔掉距该蛋白 cis 锚点 ±1 Mb 的工具 | 所有蛋白 |
| ② 整个 MHC 排除 | 若该蛋白是 MHC 蛋白,再剔掉 chr6:25–34 Mb 全部工具 | 仅 MHC 蛋白 |
②的理由:MHC 区长程 LD 极强,远处工具仍可能与 cis 变异连锁,±1 Mb 不够。
3.3 ★ 两个 MHC 区间用途不同,代码里已分开
这是 2026-08-07 改的,此前混用同一组常量,极容易改错:
| 用途 | 取值 | 来源 |
|---|---|---|
| ① 判定「是不是 MHC 蛋白」 | 25.5–34.0 Mb(作者 MHC 列) | 单一真值源 analysis/_mhc.R,= Sun 2023 原文。这是定义 |
| ② 要剔掉的长程 LD 块 | 25–34 Mb(比①下界更宽) | 目的是防连锁,宽一点更保守,与①不必相同 |
★ 实测确认两者在本步不产生差异(见 §4.4),但必须保持分开—— 它们是两个不同的问题,将来任一改动都不该牵连另一个。
3.4 估计量与多重检验
- 工具 ≥ 2 → 固定效应 IVW;工具 = 1 → Wald ratio
- 等位对齐:一致保留、翻转变号、其余丢弃(记
n_allele_mismatch) - 多重检验:BH FDR,
reverse_significant = fdr_rev < 0.05
⚠️ FDR 的分组口径是本步最大的未决问题,见 §6.1。
3.5 回归断言(代码内置,失败即拒绝输出)
AGER × Retinopathy:剔除 cis 工具 ≥1 个 且 p_rev > 1e-3不满足就 stop()。理由:这是已知的 cis 污染病例, 若断言失败说明 cis 排除逻辑失效,宁可报错也不出假结果。
四、★ 预期结果(运行前写定)
4.0 总预期:与旧结果逐位相同
依据:新旧脚本只差两处,且第二处(MHC 判定)实测在本步等价(§4.4)。 故本步应复现旧结果,作为可复现性证明向第 3 步的延伸。
容差:以下数字全部要求完全一致,差 1 即按缺陷处理。
4.1 步骤 1/3 —— 反向工具数(clump 后)
| disease | 预期工具数 |
|---|---|
T2D_mahajan | 98 |
T1D_gcst | 94 |
Retinopathy | 27 |
Maculopathy | 11 |
Nephropathy | 10 |
Neuropathy | 7 |
NeovascGlaucoma | 3 |
| 合计 | 250 条记录 / 237 个唯一位点 / 7 个疾病 |
⚠️ NeovascGlaucoma 虽有 3 个工具,但它在第 2 步 0 个显著蛋白 → 不产生任何配对。
4.2 步骤 2/3 —— 蛋白侧
| 项 | 预期 |
|---|---|
| 蛋白数 | 95 |
_prot/ 缓存文件数 | 95 |
4.3 步骤 3/3 —— 反向 MR 结果
| 项 | 预期 |
|---|---|
| 总对数 | 142 |
status == "ok" | 142(全部可算,无一失败) |
| 方法 | 全部 IVW(fixed)(无 Wald ratio) |
n_iv 范围 | 2 – 98,中位数 83 |
| 被剔的 cis 工具总数 | 379 |
n_cis_excluded > 0 的对数 | 83 |
protein_in_mhc == TRUE 的对数 | 49 |
| 反向显著(现行 FDR 口径) | 47 |
按疾病拆分:
| disease | 对数 | 反向显著(现行口径) |
|---|---|---|
T1D_gcst | 57 | 28 |
T2D_mahajan | 28 | 11 |
Retinopathy | 24 | 6 |
Maculopathy | 19 | 0 |
Nephropathy | 9 | 1 |
Neuropathy | 5 | 1 |
| 五并发症小计 | 57 | 8 |
★ 并发症的 57 对,与第 2 步 MR 显著的 57 对完全对应(24+19+9+5+0)。
4.4 MHC 判定新旧等价性(已在跑前实测)
在本步涉及的 95 个蛋白上:
| 规则 | 判为 MHC |
|---|---|
旧(按 cis_pos 现算 25–34 Mb) | 20 |
新(作者 MHC 列,25.5–34.0 Mb) | 20 |
| 双向差集 | 空 |
→ 两规则在本步完全一致,故预期结果不受这处改动影响。
⚠️ 这个结论只对这 95 个蛋白成立,是重新测的,不是从全池 1,954 的结论顺推的—— 换了范围就得重测。
4.5 回归断言的预期值
| 项 | 预期 |
|---|---|
AGER × Retinopathy n_cis_excluded | 7 |
AGER × Retinopathy n_iv | 19 |
AGER × Retinopathy p_rev | 0.0325 |
断言(需 p_rev > 1e-3) | 通过 |
⚠️ 代码注释里写的是「剔掉后 p = 0.072」,与实测的 0.0325 对不上——见 §6.4。
4.6 预期产物路径
results/reverse_mr/
reverse_instruments.csv 250 行
reverse_mr_results.csv 142 行 + 表头
_iv/<疾病>.csv 7 个(+ .fp 指纹)
_prot/<蛋白>.csv 95 个(+ .fp 指纹)预期耗时:旧 run 工具选择结束 08:50 → 蛋白取数结束 09:17, 蛋白侧约 27 分钟,全程约 30–40 分钟。
五、运行方式
bash
MSYS_NO_PATHCONV=1 wsl -e bash -lc \
'cd /home/research/mr-pipeline-r9v3 && \
sudo -u research Rscript analysis/35_reverse_mr.R force'★ 加 force 忽略缓存从零重算——与第 0/1/2 步一致,这是可复现性证明的前提。 (results/reverse_mr 在 v3 目录下尚不存在,本轮是首次生成。)
六、⚠️ 跑之前必须先定的 4 件事
四件均已在「看到新结果之前」定案(2026-08-07)
| # | 决定 | 落实 |
|---|---|---|
| 6.1 | FDR 改 by_outcome,旧口径存为 fdr_rev_global 仅供对照 | ✅ 代码 d6d8a39 |
| 6.2 | 反向显著即否决(保守选择,正文须写明),补 step3_verdict/step3_survivor | ✅ |
| 6.3 | MIN_IV_VETO = 5,不足者标「功效不足-无法评估」,保留不否决 | ✅ |
| 6.4 | 更正 AGER 过时注释;补上 reverse_mr_verdict.csv | ✅ |
下方 §6.1–§6.4 保留定案前的原始论证与实测数字,不回改—— 它记录的是「凭什么这么定」,而不是「定成了什么」。
6.1 ★★★ FDR 分组口径 —— 直接决定否决 4 对还是 8 对
现行实现:p.adjust(p_rev, "fdr") 在全部 142 对上一起算, 其中 85 对是 T1D_gcst / T2D_mahajan——它们根本不是并发症, 是「糖尿病对照」那条臂。
这 85 对里有 39 对反向显著(糖尿病改变蛋白水平,本就极合理)。 BH 是自适应的:池子里小 p 值越多,阈值越松 → 并发症那边更容易被判显著。
实测三种口径(在旧结果上算,跑前完成):
| 口径 | 并发症被判反向显著 |
|---|---|
| 现行:142 对一起校正 | 8 |
by_outcome:与正向第 2 步一致 | 4 |
| 只在 57 个并发症对里校正 | 4 |
逐对差异(★ 是三口径不一致的):
| protein | disease | n_iv | MHC | p_rev | 现行142 | 按结局 | 只并发症57 |
|---|---|---|---|---|---|---|---|
| BTN3A2 | Retinopathy | 19 | ✓ | 2.59e-07 | 9.20e-06 | 6.22e-06 | 1.48e-05 |
| ITGB7 | Retinopathy | 26 | 5.15e-06 | 1.22e-04 | 6.18e-05 | 1.47e-04 | |
| TIGIT | Retinopathy | 26 | 1.12e-03 | 6.85e-03 | 8.88e-03 | 2.11e-02 | |
| APOE | Retinopathy | 25 | 1.48e-03 | 8.08e-03 | 8.88e-03 | 2.11e-02 | |
| ★ HCG22 | Nephropathy | 5 | ✓ | 9.15e-03 | 3.61e-02 | 8.23e-02 | 9.63e-02 |
| ★ BCL2L15 | Retinopathy | 25 | 1.06e-02 | 4.02e-02 | 5.11e-02 | 9.63e-02 | |
| ★ HCG22 | Neuropathy | 2 | ✓ | 1.18e-02 | 4.20e-02 | 5.13e-02 | 9.63e-02 |
| ★ SIGLEC5 | Retinopathy | 26 | 1.36e-02 | 4.66e-02 | 5.45e-02 | 9.71e-02 |
我的判断:现行口径站不住,理由三条——
- 与正向第 2 步不一致。正向用
by_outcome,反向用 global,同一篇文章两套口径要被问 - 把非并发症的 85 对放进并发症的校正池,而它们的显著是预期内的(糖尿病当然改变蛋白), 用它们去放松并发症的阈值,等于用一批注定显著的检验去换取更多否决
- 另两种口径都给 4,只有现行的给 8 —— 现行是离群的那个
建议改为 by_outcome(与正向一致)。★ 但这是改判定规则,必须你点头, 且必须在看到新结果之前定——跑完再改就是挑口径。
6.2 ★★ 第 3 步的否决规则尚未实现
v4 说第 3 步有否决权,但脚本只输出 reverse_significant,没有任何否决动作—— 没有列标记「这对被第 3 步否决」,下游 32 / 29 也不读这个文件。
需要定的:reverse_significant == TRUE 是否直接等于否决?
⚠️ 严格说「反向显著」≠「正向是错的」,也可能是双向因果。 文献里常见做法是比较两个方向的强度(如 Steiger 方向检验),而非一律否决。
我的建议:反向显著 → 否决,但在正文明确写这是保守选择, 并在补充材料列出被否决的对及其正反向效应量,供读者自行判断。 理由:药靶提名场景下,方向存疑的候选不值得推进到实验验证,宁可漏不可错。
6.3 ★ HCG22 两对的工具数极少(2 和 5)
HCG22 × Neuropathy 的反向 MR 只有 2 个工具,× Nephropathy 只有 5 个。 原因:HCG22 是 MHC 蛋白 → 整个 chr6:25–34 Mb 被剔 → Neuropathy 本就只有 7 个工具,剔剩 2 个。
用 2 个工具的 IVW 去否决一个候选,证据基础很薄。 且这两对恰好就是 §6.1 里随口径变化的(现行显著、另两口径不显著)。
建议:设 n_iv 下限(如 ≥3 或 ≥5)才允许行使否决权,不足者标「功效不足,无法评估」—— 这与第 4 步「不可评估 ≠ 阴性」是同一条原则。具体阈值请你定。
6.4 ★ 两处文档与代码/结果不符(已确认,待修)
| 位置 | 写的 | 实际 | 判定 |
|---|---|---|---|
35_reverse_mr.R:249 注释 | AGER 剔 cis 后 p = 0.072 | 旧结果 p = 0.0325 | 注释过时(疑似写于加 MHC 全区排除之前),需更正 |
35_reverse_mr.R:26 头注释 | 输出 reverse_mr_verdict.csv(与正向并排的方向判定) | 代码从未写这个文件 | 文档承诺了不存在的产物;要么实现要么删掉这行 |
★ 第二条正是 §6.2 缺的那个东西——头注释里描述的「方向判定」表就是否决规则的载体, 它被写进了文档但从来没实现。
七、实际结果
执行日期:2026-08-07 耗时:蛋白侧 26.3 分钟,全程约 30 分钟 代码基线:d6d8a39
分两阶段跑:先用原代码验可复现性,再应用 §6 定下的三项改动。 这样既不丢证明,也避免了「跑完再挑口径」。
7.1 阶段一 —— 可复现性验证:★★ 104 个文件全部逐字节相同
用未改动的代码 + force(从零重算)跑一遍,与三个月前的旧结果比对:
| 产物 | 文件数 | cmp 结果 |
|---|---|---|
reverse_mr_results.csv | 1 | 完全相同 |
reverse_instruments.csv | 1 | 完全相同 |
_iv/<疾病>.csv | 7 | 相同 7 / 不同 0 |
_prot/<蛋白>.csv | 95 | 相同 95 / 不同 0 / 缺失 0 |
| 合计 | 104 | 全部逐字节相同 |
→ 可复现性证明从第 0/1/2 步延伸到第 3 步。
原口径产物已另存为 reverse_mr_results_ORIGGROUPING_20260807.csv(改动后复验仍逐字节相同)。
7.2 §4 预期逐项核对 —— 全部命中
| 项 | 预期 | 实际 | |
|---|---|---|---|
反向工具 Retinopathy | 27 | 27 | ✅ |
Maculopathy | 11 | 11 | ✅ |
NeovascGlaucoma | 3 | 3 | ✅ |
Neuropathy | 7 | 7 | ✅ |
Nephropathy | 10 | 10 | ✅ |
T1D_gcst | 94 | 94 | ✅ |
T2D_mahajan | 98 | 98 | ✅ |
| 工具合计 | 250 条 / 237 位点 / 7 疾病 | 250 / 237 / 7 | ✅ |
| 蛋白数 | 95 | 95(22,230 条记录) | ✅ |
总对数 / status=="ok" | 142 / 142 | 142 / 142 | ✅ |
| 反向显著(原口径) | 47 | 47 | ✅ |
| 剔除的 cis 工具 | 379 个 | 379 | ✅ |
| MHC 蛋白涉及对数 | 49 | 49 | ✅ |
AGER×Retinopathy n_cis_excluded / p_rev | 7 / 0.0325 | 7 / 0.0325 | ✅ |
| 回归断言 | 通过 | 通过 | ✅ |
零缺陷。 跑前写死的预期全部命中,无一项需要事后解释。
7.3 阶段二 —— 应用 §6 的三项改动
| 改动 | 内容 |
|---|---|
| ① FDR 分组 | p.adjust 改 by = disease;旧口径保留为 fdr_rev_global,不参与判定 |
| ② 否决动作 | 新增 step3_verdict(四类)/ step3_survivor |
| ③ 工具数门槛 | MIN_IV_VETO = 5,不足者标「功效不足-无法评估」,保留不否决 |
| ④ 补产物 | reverse_mr_verdict.csv —— 头注释承诺过、从未实现的正反向并排判定表 |
改动只在最后 10 行,_iv / _prot 走缓存(日志确认「复用已有工具」),重跑仅数秒。
7.4 ★ 第 3 步判定结果
全部 7 个疾病:
| disease | 通过 | 否决 | 功效不足 |
|---|---|---|---|
| Retinopathy | 20 | 4 | 0 |
| Maculopathy | 19 | 0 | 0 |
| Nephropathy | 9 | 0 | 0 |
| Neuropathy | 1 | 0 | 4 |
T1D_gcst(对照臂) | 27 | 30 | 0 |
T2D_mahajan(对照臂) | 17 | 11 | 0 |
★ 并发症漏斗:进入 57 对 / 31 蛋白 → 否决 4 对 → 存活 53 对 / 29 蛋白
7.5 被否决的 4 对
| protein | disease | n_iv | MHC | β_rev | p_rev | FDR(by_outcome) | FDR(旧142) |
|---|---|---|---|---|---|---|---|
| BTN3A2 | Retinopathy | 19 | ✓ | +0.0774 | 2.59e-07 | 6.22e-06 | 9.20e-06 |
| ITGB7 | Retinopathy | 26 | +0.0419 | 5.15e-06 | 6.18e-05 | 1.22e-04 | |
| TIGIT | Retinopathy | 26 | +0.0328 | 1.12e-03 | 8.88e-03 | 6.85e-03 | |
| APOE | Retinopathy | 25 | −0.0262 | 1.48e-03 | 8.88e-03 | 8.08e-03 |
四对全在 Retinopathy,且在新旧两种 FDR 口径下都被否决——口径之争不影响这 4 对。
完全退出的蛋白只有 2 个:ITGB7、TIGIT。 BTN3A2 与 APOE 在其他并发症上仍有存活的配对。
7.6 ★ 功效不足的 4 对(保留,不当阴性)
| protein | disease | n_iv | 剔除数 | MHC | p_rev | 旧口径会否决? |
|---|---|---|---|---|---|---|
| HCG22 | Neuropathy | 2 | 5 | ✓ | 0.0118 | 会 |
| AGER | Neuropathy | 2 | 5 | ✓ | 0.509 | 否 |
| BTN2A1 | Neuropathy | 2 | 5 | ✓ | 0.517 | 否 |
| TNXB | Neuropathy | 2 | 5 | ✓ | 0.914 | 否 |
★★ Neuropathy 的 5 对里有 4 对是 MHC 蛋白,工具全部只剩 2 个。
成因链条很清楚:Neuropathy 本就只有 7 个反向工具(并发症里第二少) → MHC 蛋白要剔掉整个 chr6:25–34 Mb → 剔掉 5 个,只剩 2 个。
→ Neuropathy 端的反向 MR 对 MHC 蛋白基本没有判别力,这必须写进 Limitations。 若无 MIN_IV_VETO 门槛,HCG22 × Neuropathy 会仅凭 2 个工具被否决。
7.7 FDR 口径的实际影响 —— 旧口径多否决的 4 对去了哪
| protein | disease | n_iv | FDR(旧142) | FDR(by_outcome) | 新判定 |
|---|---|---|---|---|---|
| BTN3A2 | Retinopathy | 19 | 9.20e-06 | 6.22e-06 | 否决 |
| ITGB7 | Retinopathy | 26 | 1.22e-04 | 6.18e-05 | 否决 |
| TIGIT | Retinopathy | 26 | 6.85e-03 | 8.88e-03 | 否决 |
| APOE | Retinopathy | 25 | 8.08e-03 | 8.88e-03 | 否决 |
| HCG22 | Nephropathy | 5 | 3.61e-02 | 8.23e-02 | 通过 |
| BCL2L15 | Retinopathy | 25 | 4.02e-02 | 5.11e-02 | 通过 |
| HCG22 | Neuropathy | 2 | 4.20e-02 | 5.13e-02 | 功效不足 |
| SIGLEC5 | Retinopathy | 26 | 4.66e-02 | 5.45e-02 | 通过 |
→ 多出来的 4 对全部落在 FDR 0.04–0.05 这个边缘带, 把 85 对糖尿病对照臂放进校正池,恰好把它们推过了线。
⚠️ 三对的 by_outcome FDR 在 0.051–0.082 之间,离 0.05 很近。 写作时应说明这几对「接近阈值」,不宜写成明确的阴性。
7.8 产物路径
results/reverse_mr/
reverse_instruments.csv 250 行
reverse_mr_results.csv 142 行(新增 6 列)
reverse_mr_verdict.csv 142 行 × 26 列 ← 正反向并排
reverse_mr_results_ORIGGROUPING_20260807.csv 原口径存档(可复现性证明)
_iv/<疾病>.csv 7 个 | _prot/<蛋白>.csv 95 个
results/logs/
reverse_mr_20260807.log 阶段一(force,可复现性)
reverse_mr_v4rule_20260807.log 阶段二(新规则)reverse_mr_verdict.csv 的关键列: b_fwd/se_fwd/p_fwd/fdr_fwd/OR_fwd | b_rev/se_rev/p_rev/fdr_rev/fdr_rev_global | n_iv/veto_eligible/step3_verdict/step3_survivor/direction_same_sign/is_complication
八、如何解读
8.1 四对被否决的都在糖网,且不受口径之争影响
BTN3A2 / ITGB7 / TIGIT / APOE × Retinopathy 在新旧两种 FDR 口径下都被否决, 结论稳健。但要注意否决的含义:
⚠️ 「反向显著」不等于「正向是错的」,也可能是双向因果。 我们采取否决是保守选择(药靶提名场景宁可漏不可错), 补充材料并排列出正反向效应量,供读者自行判断。正文必须写明这是一个选择。
APOE 尤其值得一提:它与糖网的关系在文献中双向证据都有, 本步的反向显著与既有认识一致,不是流水线出问题。
8.2 ★★ Neuropathy 端对 MHC 蛋白基本没有判别力(Limitations)
Neuropathy 只有 7 个反向工具;MHC 蛋白要剔掉整个 chr6:25–34 Mb → 只剩 2 个。 5 对里 4 对(HCG22 / AGER / BTN2A1 / TNXB)都卡在这里。
→ 这不是「未发现反向因果」,是根本没有能力发现。 写作一律用「无法评估」,不得写成阴性或「通过第 3 步」。
★ 若无 MIN_IV_VETO = 5 门槛,HCG22 × Neuropathy 会仅凭 2 个工具被否决—— 这正是设门槛的实证理由。
8.3 三对「接近阈值」,不宜写成明确阴性
BCL2L15 × Retinopathy(FDR 0.0511)、SIGLEC5 × Retinopathy(0.0545)、 HCG22 × Nephropathy(0.0823)刚过线存活。
写作时应标注「接近阈值」,并在补充表给出精确 FDR, 不要让读者以为它们的方向性证据与 FDR = 0.9 的那些一样干净。
8.4 对照臂的反向显著是阳性对照,不是问题
T1D 30 对、T2D 11 对反向显著(共 41/85)。 这本就该显著——糖尿病当然会改变血浆蛋白水平。
→ 它证明流水线有能力测出真实的「疾病 → 蛋白」信号, 即:第 3 步在并发症端大量「通过」,不是因为方法没功效,而是确实没测到反向信号。 这是一条值得写进正文的方法学阳性对照。
8.5 反向阴性只能说「未发现证据」
功效受疾病侧工具数限制(Maculopathy 11、Nephropathy 10、Neuropathy 7)。 功效不足与真无效应在结果上长得一模一样。
8.6 反向 MR 未做多工具敏感性分析(待定)
反向侧有 7–98 个工具,本可以做 MR-Egger、加权中位数、异质性 Q、留一法, 但脚本没做。本轮不补——补了就破坏「与旧结果逐字节相同」这个可复现性证明。
若审稿人问「反向为何不做敏感性分析」,需要有答案。建议作为独立的补充分析另跑一轮。
九、进正文还是补充(暂定)
| 内容 | 暂定去向 | 依据 |
|---|---|---|
| 反向 MR 的方法(工具阈值、cis 排除、MHC 排除) | 正文 Methods | ★ cis 排除必须写,否则读者无法判断是否有假阳性 |
| FDR 分组口径(§6.1 定下的那个) | 正文 Methods | 不写读者无法判断否决强度 |
| 否决了几对、哪几对 | 正文(漏斗一格)+ 补充表 | — |
| 全部 142 对的反向结果 | 补充材料 | — |
T1D/T2D 的 39 对反向显著 | 补充材料 + 正文一句(作阳性对照) | — |
| Neuropathy 等工具数少 → 功效不足 | Limitations | 与 NeovascGlaucoma 同一条 |
⚠️ 暂定,第 7 步统一复核。
十、漏斗记账(本步产出)
| 节点 | 蛋白 | 对数 | 其中 MHC 蛋白 |
|---|---|---|---|
| 上一步(MR 显著,五并发症) | 31 | 57 | 11 |
| ├ 第 3 步 通过 | — | 49 | — |
| ├ 第 3 步 功效不足-无法评估(保留) | — | 4 | 4 |
| └ 第 3 步 否决 | — | 4 | 1 |
| 第 3 步后存活(进入第 4 步) | 29 | 53 | 11 |
完全退出的蛋白:ITGB7、TIGIT(31 → 29)。 BTN3A2 / APOE 虽在 Retinopathy 被否决,但在其他并发症上仍有存活配对。
MHC 蛋白数未变(仍 11 个):被否决的 MHC 蛋白只有 BTN3A2×Retinopathy 一对, 而它在别处存活。
⚠️ 「功效不足」那 4 对计入存活,但必须在正文与补充表里单独标注—— 它们不是通过了检验,是没能力接受检验。