Skip to content

结果怎么看(逐列 · 逐图 · 逐结论)

跑完了,results/ 下一堆 CSV 和图,每一列什么意思、哪些数字该看、什么时候能下结论——这一页全讲清楚。 所有例子用的都是本课题的真实结果(R9 糖网 / AGER)。方法原理见 从零读懂 MR


一、先搞清楚:你跑的是哪条路线

产物完全不同,别找错文件:

你跑的产物在哪长什么样
Rscript analysis/01_screen.R R9批量筛查,本课题主力results/screen_R9/一堆 CSV + figures/
Rscript run_all.R(单条精细分析)results/report/MR_report.html + results/pairs/一份 HTML 报告

本页 §二~§五 讲批量筛查,§六 讲 HTML 报告。


二、批量筛查的产物地图

results/screen_R9/
├── Retinopathy_all.csv          ← 糖网:全部 1587 个工具的结果(无论显著与否)
├── Retinopathy_significant.csv  ← 糖网:只有 FDR<0.05 的(★最常看)
├── ...(每个结局两个文件)
├── SUMMARY_publication.csv      ← ★全局体检表:每个结局一行
├── overlap_matrix.csv           ← ★跨结局重叠:哪个蛋白在几个病里显著
└── figures/                     ← upset / forest_shared / network(png 600dpi + 矢量 pdf)

看结果的推荐顺序(从宏观到微观,别一上来就扎进单行):

  1. SUMMARY_publication.csv —— 先体检:哪些结局有功效、工具强度够不够
  2. overlap_matrix.csv —— 再看格局:哪些蛋白横跨多个病(最有价值的靶点)
  3. <结局>_significant.csv —— 最后钻细节:具体某个蛋白的效应量、方向、可信度

三、SUMMARY_publication.csv:全局体检表

每个结局一行。这是投稿时最常被引用的表,也是你判断"这个结果值不值得看"的第一站。

含义怎么看
outcome结局名对应 outcome_manifest.csvid
group分组eye(眼)/ neuro(神经)/ renal(肾)/ systemic(全身)/ base(T1D/T2D 基础病)
ncase / ncontrol病例数 / 对照数决定统计功效。ncase < 1000 → 结果基本没信息量
n_instruments参与的工具数匹配上、谐化成功的 SNP 数
minF / medianF最小 / 中位 F 值都必须 > 10。中位数几百 = 工具很强
n_significantFDR<0.05 的蛋白数这个结局筛出几个信号

真实结果(R9,节选)

outcomencasencontroln_instrumentsminFmedianFn_significant
Retinopathy(糖网)10,413308,633158743.879224
Maculopathy(黄斑病变)3,572308,547158743.879219
RetinaProlif(增殖性 DR)9,511362,581158743.87927
NeovascGlaucoma(新生血管青光眼)1,100366,206158743.87920
RetArtOcclMain(视网膜动脉阻塞)181308,633158743.87920
Nephropathy(肾病)4,111308,539158743.87929
Neuropathy(神经病变)2,843271,817158743.87925
T2D_finngen57,698308,252158743.879272
T2D_mahajan55,005400,30895545.6768.17

从这张表能直接读出三件事

minF = 43.8 → 工具全部合格

最弱的工具 F 也有 43.8(阈值是 10),中位数 792。假设①(相关性)稳稳成立,论文里可以直接这么报告。

② 0 个显著 ≠ 没关系,先看 ncase

RetArtOcclMain 只有 181 个病例NeovascGlaucoma 只有 1100 个 —— 这个量级什么都测不出来。这是功效不足(underpowered),不是"蛋白与该病无关"。写作时应表述为"本研究对该结局功效有限",不能说"未发现关联=无关联"。

③ 两个 T2D 差这么多,是定义问题不是 bug

T2D_finngen 72 个显著 vs T2D_mahajan 7 个。FinnGen 自家的 T2D 定义宽松(把大量广义病例纳入),显著数虚高;Mahajan 是严格定义的专门 meta 分析。我们故意两个都跑,就是为了暴露这种定义敏感性。结论以 Mahajan 为准,FinnGen 版本作对照。

本页数值的时效说明:上表是 R9 版的历史结果,用来讲"怎么读这张表",数值不随主结论更新。 R13 定稿版里:FinnGen 的 T1D_WIDE / T2D退役不再进主筛(正是因为上面 ③ 这个定义膨胀问题), 基础病只保留外部 GWAS;T2D_mahajan 在 R13 的显著数是 28(工具池扩大后), 外部 T1D 换源为 GCST90824163 后是 57。最新数值见 R13 结局清单


四、<结局>_significant.csv:逐列详解

这是核心结果表。列很多,按用途分四组来看。

4.1 A 组:这是谁(身份)

含义AGER 例
SNP工具变量 rsIDrs204993
protein暴露蛋白名(UKB-PPP 的 Assay Target)AGER
gene该蛋白对应的 cis 基因AGER
outcome结局Retinopathy
group结局分组eye
ncase / ncontrol该结局病例/对照数10413 / 308633
bioinfo_annotated_gene生信注释到的基因AGER
gene_consequence该变异的功能后果upstream_gene_variant
biotype基因类型protein_coding

gene_consequence 有用:missense_variant(改氨基酸)/ synonymous_variant(不改)/ upstream_gene_variant(调控区)。落在编码区的变异,机制解释更容易讲。

4.2 B 组:★ 结论(你最该看的四个数)

含义怎么看AGER 例
b因果效应 = log(OR)符号 = 方向−1.955
OR比值比 = exp(b)>1 危险,<1 保护0.142
OR_lci / OR_uci95% 置信区间区间不能跨过 10.116 – 0.173
FDR多重检验校正后的 P★ <0.05 才算显著1.4e-78
p原始 P 值只是中间量,别拿它下结论9.1e-82
se因果效应的标准误越小越精确0.102

看 FDR,不看 p

1587 个工具 × 23 个结局 = 三万多次检验。纯靠运气 p<0.05 就能蹦出上千个。FDR 才是显著性判据significant.csv 里已经只留 FDR<0.05 的行,_all.csv 里则要你自己看)。

OR 的数值不能直译

OR=0.142 不代表"AGER 高一个 SD 就少 86% 的糖网"。Wald ratio 把 SNP 造成的微小差异(0.17 SD)线性外推到整整 1 个 SD,OR 会被放得很夸张。只读方向(保护)和显著性,别读绝对值。(原理见 从零读懂 MR §3.3

4.3 C 组:工具质量(判断这行可不可信)

含义合格线AGER 例
Fstat工具强度> 10451.5 ✅
R2该工具解释了暴露多少方差cis-pQTL 常见 0.1%–20%0.0083
samplesize结局样本量319,046

R2 小不代表工具差 —— F 值同时考虑了样本量。AGER 的 R²只有 0.8%,但因为 UKB-PPP 有 5.4 万人,F 照样 451。

4.4 D 组:两侧原始效应(用来核对方向,出问题时查这里)

含义AGER 例
effect_allele.exposure / other_allele.exposure暴露侧效应/其他等位G / A
eaf.exposure暴露侧效应等位频率0.320
beta.exposure / se.exposureSNP → 蛋白的效应−0.17 / 0.008
effect_allele.outcome / other_allele.outcome结局侧效应/其他等位G / A
eaf.outcome结局侧效应等位频率0.181
beta.outcome / se.outcomeSNP → 疾病的效应+0.332 / 0.017

这组是"验算区"

  • 两侧 effect_allele 必须一样(都是 G)—— 这是谐化成功的标志。
  • b = beta.outcome ÷ beta.exposure = 0.332 / (−0.17) = −1.955 ✅ 你可以自己验算。
  • 两侧 eaf 差太多要警惕(这里 0.32 vs 0.18,是英国 vs 芬兰人群的正常频率差异;但如果一边 0.2 一边 0.8,多半是等位对反了)。

4.5 把一行翻译成一句话(模板)

拿 AGER 那一行,套模板:

rs204993(F=452,强工具)作为 AGER 的 cis 工具变量,单 SNP Wald ratio 显示 AGER 血浆水平升高与糖尿病视网膜病变风险降低相关(OR 0.14,95%CI 0.12–0.17,FDR=1.4×10⁻⁷⁸)。方向提示 AGER 为保护性因子;因该 OR 系单工具外推,绝对数值不作解读。该 SNP 在 PheWAS 中 Bonferroni 校正后仍关联 356 种表型(位于 MHC 邻近区),多效性风险高。HyPrColoc 显示该位点的疾病信号成簇(PP=0.99)但 AGER 蛋白本身未进入任何簇 → 共定位不支持,该关联很可能源于 MHC 区的 LD 混杂,不作因果结论。

这就是能进论文的写法:方向 + 显著性 + 工具强度 + 局限性 + 共定位判决

这个例子的结局:AGER 最终被共定位否掉了

上面第一段是只看 MR 时的写法。等共定位跑完,判决是不支持——这条最终不能作为因果发现,只能归入"MR 阳性但共定位不支持"那一类。

这正是本页反复强调"MR 显著只是入场券"的活例子:一个 P=9×10⁻⁸²、跨 15 个结局显著、看起来无懈可击的头号发现,最后倒在了共定位上。


五、overlap_matrix.csv:跨结局重叠(本课题最有价值的表)

每行一个蛋白,每列一个结局,1 = 在该结局显著,0 = 不显著,最后一列 n_outcomes = 一共在几个病里显著(已按它降序排好)。

真实结果(R9,前几行):

proteinRetinopathyMaculopathyNephropathyNeuropathyAMDn_outcomes
AGER1111115
HCG221111013
CFB1110111
BTN2A11111010
LTB111009

怎么读

  • n_outcomes 大 = 泛并发症共享靶点,是本课题最想找的东西(一个靶点管多个并发症)。
  • 但要配合 LDSC 看:糖网↔肾病的遗传相关 rg=0.97,本来就高度共享遗传基础——所以"同时在糖网和肾病显著"部分是意料之中的,不算独立证据。真正有意思的是跨越低遗传相关的病(如同时在糖尿病并发症和 AMD 里显著,rg 只有 0.29)。
  • n_outcomes 大也可能是多效性/LD 的信号:一个 SNP 什么病都关联,可能它本身就是多效位点,或位于 LD 极强的区域。必须交叉查 PheWAS + 共定位。

实测:这张排行榜的前五名,全军覆没

AGER(15)、HCG22(13)、CFB(11)、BTN2A1(10)、LTB(9) —— 共定位判定全部为「仅疾病成簇、蛋白未进簇」(疑 LD 巧合),而且它们全在 chr6 的 MHC 区。R9 和 R13 两个版本互相印证。

MHC 区 LD 极强,一个疾病的因果变异能把周围一大片 pQTL 都"带显著",制造出"某蛋白跨 15 种并发症"的假象。所以这张表只能用来提假设,绝不能直接当结论——靶点结论看 阶段六

这张表就是 UpSet 图的数据源

figures/upset.* 画的就是这张矩阵。


六、图怎么看

6.1 批量筛查的三张图(analysis/02_visualize.R 出,都是 600dpi PNG + 矢量 PDF)

看什么怎么读
upset.*蛋白在不同疾病间的重叠模式上方柱=该组合共享的蛋白数;下方黑点连线=哪几个病的组合。关注跨眼/肾/神经的高柱
forest_shared.*跨 ≥3 个并发症共享蛋白的 OR + 95%CI每行一个"蛋白×疾病"。竖线=1(无效应),点在左=保护、在右=危险;横线(CI)碰到竖线就不显著。同一蛋白在各病里方向一致 = 稳
network.*蛋白–疾病网络(阶段三,仅 MR节点=蛋白/疾病,连线=MR 显著。红=风险(OR>1),蓝=保护(OR<1)。⚠️ 未经共定位过滤,连线最多的枢纽恰恰多是 LD 假象(AGER/HCG22/CFB…)——靶点结论看 阶段六

为什么每张图都出 PDF

PNG(600dpi)用于预览和投稿初稿;PDF 是矢量的,能直接拖进 Adobe Illustrator 改字体/配色/排版而不糊。改图不用回去重跑 R。

6.2 精细分析报告里的四张图(run_all.R 出)

只有多工具时才有意义(单 SNP 画不出来):

看什么健康的样子
散点图 (scatter)横轴 SNP→暴露效应,纵轴 SNP→结局效应,每点一个 SNP,斜率=因果效应点大致排在一条过原点的直线上。各方法的拟合线(IVW/Egger/中位数)斜率接近
森林图 (forest)每个 SNP 各自的效应 + 合并估计各 SNP 方向一致、不打架
漏斗图 (funnel)横轴效应量,纵轴精度左右对称。歪斜 = 方向性多效性的信号
留一法 (leave-one-out)每次去掉一个 SNP 重算去掉任何一个,结果都不翻盘。若去掉某个 SNP 就不显著了 → 结论全靠它撑着,不可信

七、精细分析(run_all.R)的结果文件

文件内容
results/report/MR_report.html先看这个:STROBE-MR 报告,方法学+主结果+全部图+共定位结论,浏览器直接打开
results/mr_all_pairs_primary.csv所有"暴露×结局"对的主结果一张表(OR/CI/P/FDR/F/evidence)
results/pairs/<暴露>__<结局>/mr.csv该对的全部方法结果(IVW/Egger/中位数/众数/RAPS)
results/pairs/<暴露>__<结局>/sensitivity.rdsQ / Egger 截距 / PRESSO / LOO / 方向性
results/pairs/<暴露>__<结局>/pair_summary.csv标准化汇总(下游分析读这个)

这里多出来的关键列

含义怎么看
egger_intercept_pEgger 截距的 P< 0.05 = 存在方向性多效性(警报)
presso_global_pMR-PRESSO 全局检验< 0.05 = 有离群工具,需剔除后重看
isq_gxI²_GX< 0.9 → Egger 估计不可靠(工具变量测量误差大)
evalueE-value要多强的未测混杂才能解释掉这个效应。越大越稳
coloc_pp_h4共定位后验概率> 0.8 = 同一因果变异(支持)
coloc_status共定位状态可能是"数据不足"(区域 SNP < 50 → 跳过,不硬跑)
rev_significant双向 MR 反向是否显著反向也显著 = 方向存疑,可能互为因果
evidence证据整合结论MR 显著 + coloc 支持 = 一致;MR 显著但 coloc 不支持 = 证据不一致

七'、下游分析的产物(PheWAS / LDSC / HyPrColoc)

文件来自关键列 / 怎么看
results/phewas/phewas_summary.csvanalysis/03_phewas.R(R9+R13 合并)每 SNP 一行:n_traits_bonf(Bonferroni 显著的表型数)★ 判读只用这个;n_traits_raw 是粗筛值仅供参考。数字越大 = 多效性越强 = MR 结论越要打折
results/phewas/phewas_all.csv同上全部跨表型关联明细(rsid/trait/beta/p/protein)
results/ldsc/genetic_correlation_rg.csvanalysis/04_ldsc.R R9疾病×疾病的 rg 矩阵(−1~1)。接近 1 = 高度共享遗传基础
results/ldsc_R13/genetic_correlation_rg.csvanalysis/04_ldsc.R R13同上,R13 版(多了糖网严格定义 + 湿/干 AMD 亚型)
results/ldsc*/h2_observed.csv同上各病的观察尺度遗传度
results/hyprcoloc_R9/hyprcoloc_verdict.csvanalysis/05_hyprcoloc.R R9每蛋白一行的判决(支持 / 证据不足 / 疑LD巧合 / 无簇)——先看这个
results/hyprcoloc_R9/hyprcoloc_shared.csv同上只留真正支持的簇(PP>0.7 且蛋白在簇内)。看 traits + posterior_prob + candidate_snp
results/hyprcoloc_R13/hyprcoloc_shared.csvanalysis/05_hyprcoloc.R R13同上,R13 版
results/hyprcoloc_*/hyprcoloc_results.csv同上全部结果 + 判定列(pp_pass/protein_in_cluster/coloc_support
results/network_R13/network_edges_candidate.csvanalysis/06_network.R R13阶段六 A 级候选靶点(MR∩共定位∩方向∩多效四关全过)→ 阶段六
results/phewas/phewas_offtarget_bonferroni.csvanalysis/03_phewas.R每个工具 SNP 的 Bonferroni 显著脱靶表型明细

怎么把 HyPrColoc 结果和 MR 结果对起来

overlap_matrix.csvn_outcomes 大的蛋白,去 hyprcoloc_shared.csv 查同名蛋白:

  • 同一簇里出现了「蛋白 + 多个疾病」 → 同一因果变异驱动多病,这是最强证据,就是本课题要找的泛并发症共享靶点。
  • 簇里只有疾病、没有蛋白(如 traits = "Retinopathy, Nephropathy" 而蛋白不在内)→ 这几个病共享因果变异,但蛋白不在同一个信号上 → MR 那条关联很可能是 LD 巧合,要标"证据不一致"。
  • traits = "None" → 没检出任何共享簇,共定位不支持。

八、下结论前的检查清单

一条结果要写进论文,逐条打勾:

  • [ ] Fstat > 10 —— 工具够强(假设①)
  • [ ] FDR < 0.05 —— 不是 p
  • [ ] OR_lciOR_uci 不跨 1 —— 区间没骑在无效线上
  • [ ] ncase 够大(≥1000,最好 ≥3000)—— 不是功效不足下的偶然
  • [ ] 两侧 effect_allele 一致 —— 谐化没出错、方向没反
  • [ ] PheWAS 多效性可接受 —— 不是 APOE/ABO/HLA 那种什么都关联的位点(★ 验证支柱之一)
  • [ ] 共定位 PP.H4 > 0.8 —— 不是连锁巧合(★ 验证支柱之一,cis-pQTL MR 的必需项
  • [ ] (支持性)跨结局方向一致 —— 加分项,但遗传相关高的姊妹并发症里一致属预期,不作独立证据
  • [ ] 多工具时:IVW / 中位数 / Egger 方向一致,Egger 截距不显著,LOO 不翻盘

单 SNP 的先天局限,要在写作里明说

本课题批量筛查大多是单工具 Wald ratio —— Q 检验、Egger 截距、留一法做不了。所以可信度靠共定位 + PheWAS 两根支柱(分别排 LD 混杂和水平多效性)。跨结局一致性只是支持性观察,不算独立验证(遗传相关高的病本就会一起显著)。论文的 Limitations 里必须写清楚。


九、结果看着不对?先查这几样

现象多半是什么去哪查
所有 SNP 都极显著(P 全是 e-300)pval_encoding 填错了(-log10 当成原始 P)使用教程 §9
方向和文献反了等位没对齐,或 effect_type 该填 OR 却填了 beta查表里两侧 effect_allele
OR 大得离谱(如 1e5)beta.exposure 太接近 0 → 分母极小被放大看该行 beta.exposure;F 小的话直接剔除
某结局 0 个显著功效不足SUMMARY_publication.csvncase
改了参数结果没变断点续跑命中了旧缓存Rscript analysis/01_screen.R R9 force 强制重算
显著数比预期多很多结局定义太宽(如 FinnGen 自家 T2D)换严格定义的数据源对照

相关:从零读懂 MR · 批量筛查 · 下游分析 · 方法引擎详解 · R9 结局清单

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