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

上一期我们对孟德尔随机化做了一个简单的介绍,今天我们来复现一篇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.hqwc.cn/news/1768.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于tensorflow深度学习的猫狗分类识别

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

排序算法——归并排序(递归与非递归)

归并排序 以升序为例 文章目录 归并排序基本思想核心步骤递归写法实现代码 非递归处理边界情况实现代码 时间复杂度 基本思想 归并排序是建立在归并操作上的一种有效的排序算法&#xff0c;该算法是采用分治法的一个非常典型的应用&#xff1a;将已有序的子序列合并&#xff…

《C++ Primer》--学习7

顺序容器 容器库概览 迭代器 与容器一样&#xff0c;迭代器有着公共的接口&#xff1a;如果一个迭代器提供某个操作&#xff0c;那么所有提供相同操作的迭代器对这个操作的实现方式都是相同的。 迭代器范围 一个迭代器范围是由一对迭代器表示&#xff0c;两个迭代器分别指向…

IM即时通讯APP在聊天场景中的应用

即时通讯&#xff08;IM&#xff09;应用可以满足人们随时随地进行文字、语音、图片、视频等多媒体信息的传递需求&#xff0c;为个人和企业提供了高效、便捷的沟通方式。在企业中&#xff0c;IM即时通讯APP更是发挥着重要的作用&#xff0c;促进了协作和团队工作的效率提升。以…

项目——学生信息管理系统3

目录 班级添加的界面实现 创建班级的实体类 在org.xingyun.dao 包下 编写 ClassDao 创建 AddStudentClassFrm 添加班级页面 注意创建成 JInternalFrame 类型 给控件起个名字 注释掉main方法 给提交按钮绑定事件 回到 MainFrm.java 给添加班级按钮绑定事件 启动测试 班…

基于卡尔曼滤波进行四旋翼动力学建模(SimulinkMatlab)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

网络安全实战植入后门程序

在 VMware 上建立两个虚拟机&#xff1a;win7 和 kali。 Kali&#xff1a;它是 Linux 发行版的操作系统&#xff0c;它拥有超过 300 个渗透测试工具&#xff0c;就不用自己再去找安装包&#xff0c;去安装到我们自己的电脑上了&#xff0c;毕竟自己从网上找到&#xff0c;也不…

通俗易懂,十分钟读懂DES,详解DES加密算法原理,DES攻击手段以及3DES原理。Python DES实现源码

文章目录 1、什么是DES2、DES的基本概念3、DES的加密流程4、DES算法步骤详解4.1 初始置换(Initial Permutation&#xff0c;IP置换)4.2 加密轮次4.3 F轮函数4.3.1 拓展R到48位4.3.2 子密钥K的生成4.3.3 当前轮次的子密钥与拓展的48位R进行异或运算4.3.4 S盒替换&#xff08;Sub…

Object counting——生成密度图density map

文章目录 过程代码参考 过程 首先构造一个和原始图片大小相同的矩阵&#xff0c;并将其全部置为0&#xff0c;然后将每个被标记的人头对应的位置置为1&#xff0c;这样就得到了一个只有0和1的矩阵&#xff0c;最后通过高斯核函数进行卷积得到一个连续的密度图。 代码 import…

CSS知识点汇总(十)--移动端适配

文章目录 怎么做移动端的样式适配&#xff1f;1、方案选择2. iPhoneX 适配方案 怎么做移动端的样式适配&#xff1f; 在移动端虽然整体来说大部分浏览器内核都是 webkit&#xff0c;而且大部分都支持 css3 的所有语法。但手机屏幕尺寸不一样&#xff0c;分辨率不一样&#xff0…

架构-嵌入式模块

章节架构 约三分&#xff0c;主要为选择题 #mermaid-svg-z6RGCDSEQT5AhE1p {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-z6RGCDSEQT5AhE1p .error-icon{fill:#552222;}#mermaid-svg-z6RGCDSEQT5AhE1p .error-text…

Pytorch--模型微调finetune--迁移学习 (待继续学习)

https://www.bilibili.com/video/BV1Z84y1T7Zh/?spm_id_from333.788&vd_source3fd64243313f29b58861eb492f248b34 主要方法 torchvision 微调timm 微调半精度训练 背景&#xff08;问题来源&#xff09; 解决方案 大模型无法避免过拟合&#xff0c;