R语言复现一篇6分的孟德尔随机化文章

news2024/12/26 0:11:37

上一期我们对孟德尔随机化做了一个简单的介绍,今天我们来复现一篇6分左右的使用了孟德尔随机化方法的文章,文章的题目是:Mendelian randomization analysis does not reveal a causal influence of mental diseases on osteoporosis(孟德尔随机分析没有揭示精神疾病对骨质疏松症的因果影响)

在这里插入图片描述
这是一篇我们国人写的文章,为什么选这篇文章呢?因为作者提供了文章的数据和主要流程的代码。我们可以跟着作者的思路进行一个复盘。
作者的研究是精神病(包括精神分裂症(SCH)、抑郁症(MDD)、情绪障碍、人格分裂和其他相关疾病)会不会对骨质疏松或骨折造成的影响。作者指出作为慢性疾病,精神病与骨代谢异常有关, 与一般人群相比,更有可能出现更低的骨密度和骨折风险,所以作者做了这项相关研究。最后作者的结论是:结果没有显示精神病(MDS)与骨质疏松症(OP)风险之间的因果关系。所以阴性结果也是能发文章的。
作者研究了精神分裂症、抑郁症、阿尔茨海默病、帕金森病等多个疾病对骨密度和骨折的影响,其中骨密度又分为前臂骨密度、腰椎骨密度、股骨颈骨密度等,骨折又分为手臂骨折、脊柱骨折、退步骨折等等。作者都做了一一比较,数据的工作量非常大。我抽取其中一部分内容:精神分裂症对骨密度(主要是上肢骨密度)的影响这一部分复现一下。
首先我们看看作者的给出的数据来源

在这里插入图片描述

我们可以看到第一个精神分裂症(Schizophrenia)是来自GWAS的ieu-a-22,我们先查看一下对得上吗?ieu-a-22确实是精神病,样本量是82,315,和作者提供的对得上,我又拿它和作者提供的数据比对了一下,也是一样的。拿这个数据做暴露的数据应该是没问题。

在这里插入图片描述
接下来看看结局变量前臂骨密度(FA-BMD)是来自GWAS的ieu-a-977,我们也像刚才一样检查一下,确实是前臂骨密度(Forearm bone mineral density),样本量8,143也对的上。这样两个数据就都对上了,

在这里插入图片描述
我们根据作者的代码来操作一下,先把R包导入

library(TwoSampleMR)
library(MRPRESSO)

先导入暴露变量数据(详细操作可以看上一章),作者在这里把暴露数据定义为aaa

aaa <- extract_instruments(outcomes='ieu-a-22',clump=TRUE, r2=0.001,kb=10000,access_token= NULL)

然后导入结果变量数据

abc <- extract_outcome_data(snps=aaa$SNP,
                            outcomes='ieu-a-977',
                            proxies = FALSE,
                            maf_threshold = 0.01,
                            access_token = NULL)

这样2个数据都生成好了

在这里插入图片描述
接下来按步骤进行:效应等位与效应量保持统一,这一步是必须的,

Mydata <- harmonise_data(exposure_dat=aaa,
                         outcome_dat=abc,
                         action= 2)

接下来就可以进行MR分析了,在这里作者定义了5种方法,包括固定效应和随机效应模型

res<-mr(Mydata, method_list=c("mr_ivw", "mr_ivw_fe", "mr_two_sample_ml",
                              "mr_egger_regression", "mr_weighted_median", "mr_penalised_weighted_median",
                              "mr_simple_mode", "mr_weighted_mode"))

在这里插入图片描述
生成了结果,结论是一样的,精神病对前臂骨质疏松没关联。但是算出来和作者的不一样,我的OR和可信区间这里没有转换,但是我对照了P值不一样。
在这里插入图片描述
于是我看了一下作者提供的结果数据,我把它提取出来重新做一遍看看

在这里插入图片描述
这里顺便介绍一下怎么提取本地数据,使用read_excel这个函数提取数据很方便

Ins<-data <- read_excel("FA-BMD.outcome_dat.xlsx",1)

在这里插入图片描述
作者的提供的数据不是标准格式,我们需要对数据进行格式

outcome_dat<-format_data(Ins, type = "outcome", header = TRUE,
                         phenotype_col = "Phenotype", snp_col = "SNPs", beta_col = "beta.outcome",
                         se_col = "se.outcome", eaf_col = "eaf.outcome", effect_allele_col = "effect_allele.outcome",
                         other_allele_col = "other_allele.outcome", pval_col = "pval.outcome")

进行数据效应等位与效应量保持统一,并行MR分析

Mydata <- harmonise_data(aaa, outcome_dat)

res<-mr(Mydata, method_list=c("mr_ivw", "mr_ivw_fe", "mr_two_sample_ml",
                              "mr_egger_regression", "mr_weighted_median", "mr_penalised_weighted_median",
                              "mr_simple_mode", "mr_weighted_mode"))

在这里插入图片描述
我无论自己提取数据还是使用作者的数据两次算出来的结果都是一样的(使用了作者的代码),但是和作者算出来的结论虽然一样,P值却不一样。
接下来作者还进行了一个(MR-PRESSO)检验,这个也是多水平效应检验,P值应该要大于0.05

mr_presso(BetaOutcome ="beta.outcome", 
          BetaExposure = "beta.exposure", SdOutcome ="se.outcome", 
          SdExposure = "se.exposure", OUTLIERtest =TRUE,DISTORTIONtest = TRUE, 
          data =Mydata, NbDistribution = 1000, SignifThreshold = 0.05)

在这里插入图片描述
接下来就是异质性检验,和作者文章中结论一样,是没有异质性的。

mr_heterogeneity(Mydata, method_list=c("mr_egger_regression", "mr_ivw"))

在这里插入图片描述
多水平校验,这里是没有多水平效应的,和文章一致

pleio <- mr_pleiotropy_test(Mydata) 
pleio

在这里插入图片描述
接下来是Leave-one-out analysis,Leave-one-out analysis是指逐步剔除SNP后观察剩余的稳定性,理想的是剔除后变化不大,这和我们的meta分析剔除法很相似。这张图和作者做的几乎一样。

single <- mr_leaveoneout(Mydata) 
mr_leaveoneout_plot(single)

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

mr_scatter_plot(res,Mydata)

在这里插入图片描述
绘制森林图

res_single <- mr_singlesnp(Mydata)
mr_forest_plot(res_single)

在这里插入图片描述
绘制漏斗图,主要是看蓝线周围的散点是否对称

mr_funnel_plot(res_single)  

在这里插入图片描述
最后这个是生成OR和可信区间,我们可以看到虽然P值不一样,但是OR和可信区间非常接近,表明咱们的方法应该基本上是没啥问题的,毕竟数据和作者的一致,又是使用作者给的代码。

out<-generate_odds_ratios(res)

在这里插入图片描述
在这里插入图片描述
最后总结一下,咱们对作者的文章部分结果进行了复盘(自己提取数据和使用作者提供的数据),虽然数据和代码都对得上,结论也是正确的,但是OR和P值和原作者有轻微差别,我觉得本次对数据和方法还有结果是没有问题的,我大胆猜一下,有没有一种可能是作者数据太多,贴错了

到此咱们已经介绍了R包软件提取数据和手动提取数据,然后进行分析,趁着风口,大家还不自己来一篇。
欢迎斧正!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/695074.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Angular 与 PDF之五 实现方式的选择与扩展

在纯web的前提下&#xff08;不考虑移动端native&#xff09;&#xff0c;PDF的功能基本包括&#xff1a; 客户端PDF&#xff1a;最简单的场景&#xff0c;实现方式也很多&#xff0c;基本不需要有什么顾虑的地方&#xff0c;简单的实现可以参考系列第一篇文章。客户端PDF预览&…

【NM 2019】综述:基于机器学习引导的定向进化蛋白质工程

Machine-learning-guided directed evolution for protein engineering | Nature Methods Machine-learning-guided directed evolution for protein engineering 机器学习引导的定向进化蛋白质工程 图1 | 带和不带机器学习的定向进化。 a&#xff09;定向进化利用迭代循环的…

MySQL数据库---笔记5

MySQL数据库---笔记5 一、锁1.1、介绍1.2、全局锁1.2.1、全局锁介绍1.2.2、一致性数据备份 1.3、表级锁1.3.1、表锁1.3.2、元数据锁&#xff08;meta data lock , MDL&#xff09;1.3.3、意向锁 1.4、行级锁1.4.1、介绍1.4.2、行锁1.4.3、间隙锁/临建锁 二、InnoDB引擎2.1、逻辑…

vue和node使用websocket实现数据推送,实时聊天

需求&#xff1a;node做后端根据websocket&#xff0c;连接数据库&#xff0c;数据库的字段改变后&#xff0c;前端不用刷新页面也能更新到数据&#xff0c;前端也可以发送消息给后端&#xff0c;后端接受后把前端消息做处理再推送给前端展示 1.初始化node&#xff0c;生成pac…

STM32杂记之单片机复位状态

参考源码 概况 复位后&#xff0c;器件从内部高速振荡器 &#xff08;HSI 8MHz&#xff09; 运行&#xff0c;FLASH 0 等待状态&#xff0c;FLASH预取缓冲区使能&#xff0c;除内部 SRAM、FLASH和 JTAG 外&#xff0c;所有外设均关闭。高速 &#xff08;AHB&#xff09; 和低…

LLaMA模型微调版本:斯坦福 Alpaca 详解

项目代码&#xff1a;https://github.com/tatsu-lab/stanford_alpaca 博客介绍&#xff1a;https://crfm.stanford.edu/2023/03/13/alpaca.html Alpaca 总览 Alpaca 是 LLaMA-7B 的微调版本&#xff0c;使用Self-instruct[2]方式借用text-davinct-003构建了52K的数据&#x…

三相一次重合闸程序逻辑原理(二)

在手动合闸至故障线路或手动分闸及保护或自动装置要求不允许重合闸&#xff08;如母线、变压器保护及低频减载动作&#xff09;等情况下&#xff0c;闭锁重合闸的输入开关量触点接通&#xff0c;H4输出“1”&#xff0c;非门Z4输出“0”&#xff0c;计数器清零&#xff08;CD0&…

健身戴哪种耳机好、适合健身运动的耳机推荐

随着越来越多的人加入运动健身的行列&#xff0c;市场上涌现出越来越多适用于跑步的运动耳机。对于喜欢运动的朋友们来说&#xff0c;一副优秀的运动耳机成为了必不可少的装备。当进行力量训练时&#xff0c;佩戴耳机可以帮助提升训练的专注度&#xff1b;而在进行有氧运动时&a…

部署 kubeadm 1.20

目录 一、环境准备二、所有节点安装docker三、所有节点安装kubeadm&#xff0c;kubelet和kubectl四、部署K8S集群 硬件准备 master&#xff08;2C/4G&#xff0c;cpu核心数要求大于2&#xff09; 192.168.154.10 docker、kubeadm、kubelet、kubectl、flannel node01&#xff08…

oracle dblink mysql查询text无法显示问题

帮客户做了一个oracle到mysql的dblink之后&#xff0c;客户反馈发现有的表查询字段不全&#xff0c;通过select * 查询&#xff0c;mysql中有个字段INTERVENTION字段没有显示&#xff0c;首先想到的就是可能不支持查询&#xff0c;检查这个字段类型为text&#xff0c;猜测可能是…

LeetCode刷题 | 139. 单词拆分

139. 单词拆分 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意&#xff1a;不要求字典中出现的单词全部都使用&#xff0c;并且字典中的单词可以重复使用。 示例 1&#xff1a; 输入: s "leetcode"…

直播预约|湘江公益直播大讲堂:以低代码助力中小企业数字化转型

在当今数字时代&#xff0c;中小企业面临着前所未有的机遇和挑战。在激烈的商业竞争环境中&#xff0c;如何快速、高效地实现数字化转型并提升企业的竞争力成为中小企业亟需解决的关键问题。 低代码平台的兴起&#xff0c;为中小企业的数字化转型带来了全新的解决方案。 6月29日…

企业级ChatGPT开发的三大核心内幕及案例实战(二)

2.2 企业级ChatGPT开发的三大核心剖析 Gavin老师:NLP_Matrix_Space 本节讲解LangChain官方提供的一个项目,跟大家展示企业级开发的核心元素,如图2-1所示,是项目的架构示意图。 图2- 1 LangChain项目架构示意图 一个基本原则是你的提示词和模型进行交互,作为和模型交互的…

如何用rust实现一个异步channel

目录 前言思路实现功能代码实现 测试先引测试版包测试代码结果与分析思考 尾语 前言 使用通信来共享内存&#xff0c;而不是通过共享内存来通信 上面这句话&#xff0c;是每个go开发者在 处理多线程通信时 的座右铭&#xff0c;go甚至把实现这个理念的channel直接焊在编译器里&…

台灯太亮会影响视力吗?选灯一定要注意这几个点!

灯太亮对眼睛有没有影响&#xff0c;取决于灯“亮”的程度和使用的时间。如果是偶尔有需求&#xff0c;灯过于亮&#xff0c;使用时间不长的话对眼睛倒是没有太大的影响。但如果是长时间使用的&#xff0c;就不能使用过亮的灯了&#xff0c;容易导致睫状肌代偿性收缩、导致眼睛…

RISC-V处理器的设计与实现(三)—— 上板验证

文章目录 RISC-V处理器的设计与实现&#xff08;一&#xff09;—— 基本指令集_Patarw_Li的博客-CSDN博客 RISC-V处理器的设计与实现&#xff08;二&#xff09;—— CPU框架设计_Patarw_Li的博客-CSDN博客 RISC-V处理器的设计与实现&#xff08;三&#xff09;—— 上板验…

人机混合智能概述

人机混合智能是指将人类的智能和计算机的智能结合起来&#xff0c;实现更加智能化的决策和行动。人机混合智能的发展历史可以追溯到20世纪50年代早期&#xff0c;当时计算机还是庞大的机器&#xff0c;只能由专业人员操作。但随着计算机技术的不断发展&#xff0c;出现了更为普…

JavaScript之鼠标事件、坐标轴、定位、clientXY、offsetXY、layerXY、pageXY、screenXY

文章目录 MouseEvent的事件类别阻止鼠标的默认事件去除单击右键菜单阻止图像默认拖拽阻止文字的拖拽和选择阻止表单提交及重置打印输出MouseEvent对象内容clientX和clientY与x和yoffsetXYlayerXYpageXYscreenXY总结 MouseEvent的事件类别 序号事件描述1mousedown鼠标按下2mouse…

多元回归预测 | Matlab鲸鱼算法(WOA)优化极限学习机ELM回归预测,WOA-ELM回归预测,多变量输入模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元回归预测 | Matlab鲸鱼算法(WOA)优化极限学习机ELM回归预测,WOA-ELM回归预测,多变量输入模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源码 %% 清空环…

【C/C++】使用类和对象 设计立方体案例

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…