跳到主要内容

07 GWAS 入门

全基因组关联分析(GWAS)找的是"哪些基因组位点和某个表型(疾病、身高、药物响应)有统计学关联"。

基本流程

基因型数据(PLINK 格式)+ 表型文件
→ QC(MAF、HWE、缺失率、亲缘关系)
→ 关联检验(线性/逻辑回归,校正 PC)
→ Manhattan plot + QQ plot
→ 显著位点注释
# 二分类表型(case/control)
plink2 --bfile cohort \
--pheno phenotype.txt \
--covar covariates.txt \
--glm \
--out gwas_results

# 输出 gwas_results.PHENO1.glm.logistic.hybrid

Manhattan plot

library(qqman)

results <- read.table("gwas_results.PHENO1.glm.logistic.hybrid",
header = TRUE)
manhattan(results, chr = "CHROM", bp = "POS", p = "P", snp = "ID",
suggestiveline = -log10(1e-5), genomewideline = -log10(5e-8))

QQ plot

QQ plot 检查 p 值的整体膨胀(genomic inflation factor λ)。λ > 1.1 说明有群体分层或其他混杂没控制好。

qq(results$P)

常见坑

  • 群体分层:不同祖源的人混在一起会产生假关联。用 PCA 的前几个 PC 做协变量
  • 多重检验:全基因组显著性阈值是 5×10⁻⁸(Bonferroni 校正 ~1M 独立检验)
  • LD 结构:一个显著信号可能对应一整个 LD block 里的几十个 SNP,真正的因果变异需要 fine-mapping

补充几条常见误判:

坑:样本量不足直接跑 GWAS

GWAS 需要大样本量(至少几千,理想几万)才能稳定检测到 OR ~1.1 的弱效应。< 1000 样本跑 GWAS 几乎不可能找到 5e-8 显著位点,先评估 power 再决定要不要做。

坑:不做 HWE 过滤

显著偏离 Hardy-Weinberg 平衡的位点通常是基因型分型错误。case/control 设计中只在 control 样本里检查 HWE(case 因为关联本身可能偏离 HWE)。

坑:QQ plot 严重 inflation 直接发表

λ > 1.05 通常说明群体分层没控制好。多加几个 PC 做协变量,重新跑直到 λ 回归 1.0 附近。

坑:找到一个显著 SNP 就当成 causal variant

一个显著信号可能对应一个 LD block 里的几十个相关 SNP,**真正的 causal 变异需要 fine-mapping(FINEMAP / SUSIE)**或功能验证(eQTL、CRISPR)。

坑:忽略 imputation 质量

INFO score < 0.3 的 imputed 变异不可信。imputation 后必须 --info 0.3 过滤,不然假阳性堆积。

下一步

接着深入

横向延伸

参考资源

AI 组学实践

让 AI 带我实战这一篇

AI 会读这篇文章后给你 3-5 步学习计划, 逐步带你学完,最后出 1-3 道题验证你掌握得怎么样。 登录后 AI 才能记住你的进度。

静态文件

离线资料下载

手册 HTML / PDF 已在后台预生成,点击后直接下载网站静态资源。