Skip to content

03 · 谐化与定向过滤

对应模块R/05_harmonise.R参考:Hemani 2018(谐化);Hemani 2017(Steiger)

作用

把暴露与结局的效应对齐到同一效应等位,处理回文(palindromic)SNP 的链歧义,再用 Steiger 过滤剔除因果方向错误的 SNP。这一步保障 MR 估计里"β 的符号方向"是可比的。

1. 转成 TwoSampleMR 格式

to_tsmr_exposure() / to_tsmr_outcome() 把内部标准 schema 喂给 TwoSampleMR::format_data(),分别生成 exposure / outcome 格式。结局只取工具 SNP 那几行。F 统计量、R² 这类非标准列会被 format_data 丢弃,所以代码额外 merge 回来供报告用。

2. 谐化 + 回文处理(harmonise_pair

TwoSampleMR::harmonise_data(action = ...)harmonise_action 控制回文 SNP 策略:

action策略
1假设所有等位已正向对齐(最激进)
2(默认)用 EAF 推断回文 SNP 的链方向
3直接丢弃所有回文 SNP(最保守)

谐化后再显式剔除残留的 palindromic & ambiguous(模糊回文)SNP,然后只保留 mr_keep == TRUE 的变异。

3. Steiger 定向过滤(apply_steiger

MR 假设工具先影响暴露、再影响结局。若某 SNP 与结局的关联其实强于与暴露的关联,说明方向可能反了。TwoSampleMR::steiger_filtering() 比较每个 SNP 对暴露、对结局的 R²,剔除 steiger_dir == FALSE(方向错误)的 SNP。

Steiger 需要暴露、结局双方的 R²,所以必须在谐化之后(拿到配对数据)才能做。由 configiv.steiger_filtering 开关(默认开)。

单对编排(build_harmonised

IV → exposure fmt / outcome fmt(仅工具SNP) → harmonise_data → 剔模糊回文 → mr_keep → Steiger

若结局与暴露无重叠 SNP,返回 NULL 并跳过该对(错误隔离,不影响其它对)。谐化后的 IV 数(nrow(h))直接决定下一步选哪套 MR 方法。

对应 config 字段

yaml
iv:
  harmonise_action: 2        # 1=假设正向 2=按MAF推断 3=丢弃回文
  steiger_filtering: true    # Steiger 定向过滤

下一步:谐化后的工具变量进入 MR 估计方法。IV 数(1 / 2 / ≥3)决定用哪套方法。

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