TwoSampleMR包的MVMR分析

library(TwoSampleMR)
exposure_dat = mv_extract_exposures_local(
  filenames_exposure=c('PSY_factor.txt',"Alanine_aminotransferase.vcf",'HDL.vcf','HbA1c.vcf'),
  sep = c("\t",'\t','\t','\t'),
  phenotype_col = "Phenotype",
  snp_col = "SNP",
  beta_col = "BETA",
  se_col = "SE",
  effect_allele_col = "A1",
  other_allele_col = "A2",
  pval_col = "P",
  samplesize_col = "N",
  min_pval = 1e-200,
  log_pval = FALSE,
  pval_threshold = 5e-08,
  plink_bin = 'C:/Users/DELL/Documents/R/win-library/4.1/plinkbinr/bin/plink_Windows.exe',
  bfile = "H:\\Puberty_SEM\\MR_GWAS\\EUR\\EUR",
  clump_r2 = 0.001,
  clump_kb = 10000,
  pop = "EUR",
  harmonise_strictness = 2
)
outcome_dat <- read_outcome_data(
  snps = exposure_dat$SNP,
  filename = 'mvAge.txt',
  sep = "\t",
  snp_col = "SNP",
  beta_col = "BETA",
  se_col = "SE",
  effect_allele_col = "A1",
  other_allele_col = "A2",
  pval_col = "P",
  samplesize_col = "N"
)
mvdat <- mv_harmonise_data(exposure_dat, outcome_dat)
res <- mv_multiple(mvdat)
mv_res = res[['result']]
write.table(mv_res,file = 'Puberty-aging-mv_res.txt',row.names = F,sep = '\t',quote = F)

### MVMR在孟德尔随机化中的应用和研究内容 多变量孟德尔随机化(Multivariable Mendelian Randomization, MVMR)是一种扩展的传统孟德尔随机化方法,旨在通过考虑多个暴露因素的同时影响来推断因果关系。这种方法特别适用于当存在多种可能的混杂因素或中介变量时的情况。 #### 方法概述 MVMR的核心理念在于调整其他暴露变量的影响,从而更精确地估计目标暴露对结局的作用[^1]。具体而言,在传统的单变量孟德尔随机化中,通常只关注单一暴露与结局的关系;而在MVMR中,则可以同时纳入多个暴露变量,并假设它们各自独立作用于结局。这有助于区分直接效应和间接效应,尤其是在复杂的生物机制背景下尤为重要。 为了实现这一点,研究人员会选取一组遗传变异作为每种暴露的工具变量,并构建多元回归模型来进行分析。例如,在一项关于心血管疾病的MVMR研究中,可能会同时考察血脂水平、血压以及血糖浓度等多个风险因子如何共同决定患病概率[^2]。 #### 技术细节与统计考量 实施MVMR时需注意几个关键技术要点: - **工具变量的选择**:每个暴露都应具备至少一个强有效的遗传标记作为其特定工具变量,而且这些工具之间不应高度相关以免造成多重共线性问题。 - **模型设定**:一般采用线性混合效应模型或其他适合处理高维数据的方法来拟合数据。如果某些条件不满足标准假定(如不存在水平多效性),则可运用额外诊断测试比如MR-PRESSO来检验潜在偏差的存在与否[^3]。 - **稳健性检查**:除了基本的逆方差加权法外,还可以尝试不同的估算策略诸如加权中位数或者模态估计器以确认结果的一致性和稳定性。 下面展示了一个简单的Python代码片段演示如何执行基础版本的MVMR计算过程: ```python import numpy as np from statsmodels.api import OLS def mv_mendelian_randomization(X, Y, Z): """ Perform multivariable mendelian randomization. Parameters: X (numpy array): Matrix of exposures. Y (numpy array): Outcome variable. Z (numpy array): Instrumental variables matrix. Returns: dict: Estimated causal effects and standard errors. """ # Stage 1 regression - predict each exposure using IVs beta_hat_X_given_Z = [] for i in range(X.shape[1]): res = OLS(X[:,i], Z).fit() beta_hat_X_given_Z.append(res.params) # Combine predictions into a single design matrix F F = np.dot(Z, np.array(beta_hat_X_given_Z).T) # Stage 2 regression - regress outcome on predicted exposures stage_2_model = OLS(Y, F).fit() return { 'causal_effects': stage_2_model.params, 'std_errors': stage_2_model.bse } ``` 此函数接受三个参数——代表各种暴露量的矩阵`X`, 结果向量 `Y` 和仪器变量集合组成的矩阵 `Z`. 它首先运行第一阶段回归得到预测值F,接着再利用第二阶段回归得出最终因果效应估值及其对应的标准误差。 #### 应用实例 实际案例方面,我们可以设想这样一个场景:科学家们想要探究饮食习惯、运动频率及睡眠时间这三个生活方式要素分别对于肥胖症发生率的具体贡献度。借助大规模人群队列所提供的详尽基因分型资料加上相应的生活方式问卷调查记录,他们能够挑选出一系列可靠的SNP作为上述各行为模式的有效代理指标,进而开展全面深入的MVMR剖析工作。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值