孟德尔随机化

从医学统计学关联到因果关系

在这里插入图片描述

随机对照实验是医学研究的金标准,但是开展难度较大。孟德尔遗传的证据等级介于队列研究和随机对照研究之间。

在这里插入图片描述

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/a27c64c4e0a647bc95f61843e67a85cf.png

孟德尔随机化的原理:用基因型(SNP)作为工具变量,来研究中间表型和疾病之间的关联性。

在这里插入图片描述
在这里插入图片描述

孟德尔随机化例子

基因型SLC2A9与尿酸有关(基于文献),同时SLC2A9也与缺血性心脏病无关。该基因型与年龄、性别等混杂因素无关。借助这个模型就可以研究尿酸与缺血性心脏病的关系。
在这里插入图片描述

孟德尔随机化的步骤为:

①找工具变量,从其他研究中挑选特定基因作为工具变量,从基因库中挑选需要的和暴露相关的基因变量SNPs。
②估计工具变量对结局的作用,工具变量对结局的作用也是从所有的研究中估计出来的整体效应,这样可以拒绝单个研究的偏倚。
③合并多个SNP的效应量,效应量是得到暴露和结局因果效应的前提。
④用合并后的数据进行孟德尔随机化分析和相应的敏感性分析。

孟德尔随机化的统计方法包括:

①逆方差加权法(inverse variance weighted.Ivw):IVW是MR在分析多个SNP时对多个位点效应进行Meta汇总的方法。IVW的应用前提是所有的SNP均为有效的工具变量且相互之间完全独立。
②加权中位数估计(Weighted median,WM):WM为所有的个体SNP效应值按照权重排序后得到的分布函数的中位数。当至少50%的信息来自于有效的工具变量时,WM可得到稳健的估计值。
③MR-Egger法:MR-Egger不强制回归直线通过原点,允许纳入的工具变量存在定向的基因多效性。当回归截距不为零且P for intercept <0.05时表明基因多效性的存在。
④MR-PRESSO法:可以通过排除异常值(outliers)排除特定的SNP以获得更加接近真实值的估计值。

例子

研究肥胖和二型糖尿病的直接因果关系遇到如下挑战:1),高血压和高血脂等因素与肥胖、二型糖尿病都有关系,肥胖可能是通过高血压和高血脂等因素去导致二型糖尿病,而本身与二型糖尿病没有直接关系;2),现有数据只能表明肥胖和二型糖尿病有强相关性,无法证明是肥胖引起了二型糖尿病,还是二型糖尿病引起了肥胖。

孟德尔随机化的解决方案是:找出与肥胖强相关的SNP位点(扮演着肥胖的代理人的角色),根据这些SNP位点对二型糖尿病患者进行分组(有该等位基因vs.无该等位基因),这样就可以认为是随机分组(因为非同源染色体上的非姐妹染色单体交叉互换是随机的),并且这样的分组排除了混杂因素的干扰(因为这些SNP位点与混杂因素无关)。

如果直接根据肥胖与否进行分组的话就有下面的问题:1),高血压和高血脂等因素与肥胖有关,在分组的时候要考虑这些混杂因素;2),肥胖组中可能有二型糖尿病导致的肥胖患者(因果关系比较难说清楚)。

在这里插入图片描述

官网分析流程

在这里插入图片描述

Reference

https://www.sohu.com/a/666661861_121118947
https://gwaslab.org/2021/06/24/mr/
https://blog.csdn.net/weixin_43843918/article/details/136063754
https://blog.csdn.net/weixin_43843918/article/details/137787561

### 孟德尔随机化的编程实现 #### 使用 R 实现孟德尔随机化分析 在 R 中可以利用 `TwoSampleMR` 包来执行两样本的孟德尔随机化 (Mendelian Randomization, MR) 分析。以下是基于该包的一个简单代码示例: ```r library(TwoSampleMR) # 加载暴露变量和结局变量的数据集 exposure_data <- extract_instruments(outcomes_exposures$exposure) outcome_data <- extract_outcome_data(snps = exposure_data$SNP, outcomes_exposures$outcome) # 合并数据并进行MR分析 dat <- harmonise_data(exposure_dat = exposure_data, outcome_dat = outcome_data) mr_result <- mr(dat) # 输出结果 print(mr_result) ``` 上述代码展示了如何加载工具变量(即 SNPs),提取暴露变量和结局变量的数据,并通过调用 `mr()` 函数完成 MR 的核心计算[^2]。 --- #### 使用 Python 实现孟德尔随机化分析 Python 社区也有支持 MR 分析的库,比如 `pymr` 和 `mendelrandomize`。下面是一个简单的例子,展示如何使用这些库中的功能来进行 MR 分析: ```python from mendelrandomize import TwoSampleMR # 初始化对象并加载数据 tsmr = TwoSampleMR( exposure_file="path/to/exposure/file.tsv", outcome_file="path/to/outcome/file.tsv" ) # 进行MR分析 results = tsmr.perform_mendelian_randomisation() # 打印结果 for res in results: print(f"Beta: {res['beta']}, SE: {res['se']}") ``` 此代码片段说明了如何读取暴露变量和结局变量文件,并通过函数 `perform_mendelian_randomisation()` 来获得 MR 结果[^3]。 --- #### SMR 方法的应用实例 对于更复杂的场景,例如基于汇总数据的方法(如 Summary-data-based Mendelian Randomization, SMR),可以通过命令行运行特定软件。以下是一段用于获取 eQTL 数据并与基因关联的例子: ```bash ./smr_v1.3.1_linux_x86_64_static \ --beqtl-summary ./cis-eQTL/cis-eQTLs-full_eQTLGen_AF_incl_nr_formatted_20191212.new.txt_besd-dense \ --genes gene.list \ --cis-wind 1000 \ --query 5.0e-8 \ --out ./Brain-eMeta/cis-eqtl ``` 这段脚本实现了从 cis-eQTL 文件中筛选符合条件的 SNP 并将其与目标基因列表匹配的功能[^1]。 --- #### 总结 无论是 R 还是 Python 都提供了强大的工具来实施孟德尔随机化研究。具体选择哪种语言取决于个人偏好以及现有项目的技术栈需求。如果需要处理大规模的汇总统计数据,则可能还需要借助专门设计的命令行工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值