高维数据的中介效应【中介分析】《R包:HIMA》

news2024/11/23 11:54:55

允许基于高级中介筛选和惩罚回归技术来估计和测试高维中介效应

Hima包浏览

高维中介示意图

图1. 在暴露和结果之间有高维中介的情况

本包的作用

在确定独立筛选和极小极大凹惩罚技术的基础上,采用联合显著性检验方法对调解效果进行检验。使用蒙特卡罗模拟研究来展示其实际性能,鉴定具有显著中介作用的因子。

分析前准备

# install.packages("HIMA")
# ??hima
library(HIMA)
data(himaDat)

# 熟悉数据
head(himaDat$Example1$PhenoData)
#   Treatment   Outcome Sex Age
# 1         1 2.7653005   0  54
# 2         1 0.5754423   1  38
# 3         1 1.7632589   0  29
# 4         1 9.9327242   0  34
# 5         1 1.8183044   0  29
# 6         1 0.1024832   0  55

dim(himaDat$Example1$PhenoData)
# [1] 300   4
head(himaDat$Example1$Mediator)

glimpse(himaDat$Example1$Mediator)
# num [1:300, 1:300] -2.272 -0.1 0.414 2.275 -0.262 ...
# - attr(*, "dimnames")=List of 2
# ..$ : chr [1:300] "S1" "S2" "S3" "S4" ...
# ..$ : chr [1:300] "M1" "M2" "M3" "M4" ...
dim(himaDat$Example1$Mediator)

dblassoHIMA()

这是使用纠偏LASSO与纠偏LASSO的高维中介分析的函数

纠偏 LASSO (debiased LASSO)

head(himaDat$Example2$PhenoData)

dblassohima.logistic.fit <- dblassoHIMA(X = himaDat$Example2$PhenoData$Treatment,
                                        Y = himaDat$Example2$PhenoData$Disease,
                                        M = himaDat$Example2$Mediator,
                                        Z = himaDat$Example2$PhenoData[, c("Sex", "Age")],
                                        Y.family = 'binomial',
                                        scale = FALSE,
                                        verbose = TRUE)
dblassohima.logistic.fit
# 输出结果
#       alpha        beta    gamma   alpha*beta   % total effect  p.joint
# M1  0.6096868  0.07404941 2.096248 0.04514695       2.153703 1.332402e-03
# M2  0.9677835  0.07339861 2.096248 0.07103396       3.388624 4.330462e-08
# M3 -0.6657028 -0.04116939 2.096248 0.02740657       1.307411 1.244578e-03

Hima()

Hima用于估计和检验高维中介效应。

# hima
# Y:连续性变量------
hima.fit <- hima(X = himaDat$Example1$PhenoData$Treatment, 
                 Y = himaDat$Example1$PhenoData$Outcome, 
                 M = himaDat$Example1$Mediator,
                 COV.XM = himaDat$Example1$PhenoData[, c("Sex", "Age")],
                 Y.family = 'gaussian',
                 scale = FALSE,
                 verbose = TRUE) 
hima.fit
# alpha       beta   gamma alpha*beta % total effect Bonferroni.p       BH.FDR
# M1  0.5771873  0.8917198 2.94202  0.5146893       17.49442 4.844611e-03 1.614870e-03
# M2  0.9137393  0.8461100 2.94202  0.7731240       26.27868 3.279920e-08 3.279920e-08
# M3 -0.7331281 -0.7424343 2.94202  0.5442994       18.50087 1.863286e-04 9.316431e-05

# Y:二分类变量-----
hima.logistic.fit <- hima(X = himaDat$Example2$PhenoData$Treatment,
                          Y = himaDat$Example2$PhenoData$Disease,
                          M = himaDat$Example2$Mediator,
                          COV.XM = himaDat$Example2$PhenoData[, c("Sex", "Age")],
                          Y.family = 'binomial',
                          scale = FALSE,
                          verbose = TRUE)
hima.logistic.fit

# alpha       beta    gamma alpha*beta % total effect Bonferroni.p       BH.FDR
# M1    0.6096868  1.0393063 2.096248  0.6336514      30.227885 5.914712e-03 1.971571e-03
# M2    0.9677835  1.0148114 2.096248  0.9821177      46.851219 3.703063e-07 3.703063e-07
# M3   -0.6657028 -0.4412061 2.096248  0.2937121      14.011326 3.040410e-03 1.013470e-03
# M266 -0.4870164 -0.2619480 2.096248  0.1275729       6.085776 5.480125e-02 1.370031e-02

hima2()

是hima的升级版,用于评估和检验高维中介效应,支持公式输入

#hima2 
# Y: 连续性变量--------
e1 <- hima2(Outcome ~ Treatment + Sex + Age, 
            data.pheno = himaDat$Example1$PhenoData, 
            data.M = himaDat$Example1$Mediator,
            outcome.family = "gaussian",
            mediator.family = "gaussian",
            penalty = "DBlasso",
            scale = FALSE) # Disabled only for example data
e1
attributes(e1)$variable.labels

# Y: 二分类变量--------
e2 <- hima2(Disease ~ Treatment + Sex + Age, 
            data.pheno = himaDat$Example2$PhenoData, 
            data.M = himaDat$Example2$Mediator,
            outcome.family = "binomial",
            mediator.family = "gaussian",
            penalty = "DBlasso",
            scale = FALSE) # Disabled only for example data
e2
attributes(e2)$variable.labels

# Y: 生存型变量--------

e3 <- hima2(Surv(Status, Time) ~ Treatment + Sex + Age, 
            data.pheno = himaDat$Example3$PhenoData, 
            data.M = himaDat$Example3$Mediator,
            outcome.family = "survival",
            mediator.family = "gaussian",
            penalty = "DBlasso",
            scale = FALSE) # Disabled only for example data
e3
attributes(e3)$variable.labels

# M: 中介变量属于Compositional data--------
# Compositional data是指数据记录了一个整体(或者样本)中各个组成部分的相对比例信息。这些数据通常用来描述某些总和为常数(例如100%或者1)的组分。这种类型的数据在不同的领域中都有出现,例如地质学、环境学、生态学和生物信息学中的微生物组数据分析。
# 微生物组数据,也就是关于一个环境(比如说人体肠道)中微生物群落的组成信息,是compositional data的一个典型例子。compositional data的一个关键特性是它们的组分是相对测量的而不是绝对测量的。这就意味着,当一个组分的比例增加时,至少有一个其他组分的比例必定减少,因为它们的总和是一个固定的常数。这种数据的这个特性导致它不能直接像其他类型的数据那样进行分析,因为传统的统计方法往往假定数据是独立的和不受限的。因此,为了分析compositional data,需要使用专门的数学方法和统计模型,例如对数比率分析(log-ratio analysis),本方法使用isometric logratio (ilr)-based transformation (等距对数比)进行分析。

e4 <- hima2(Outcome ~ Treatment + Sex + Age, 
            data.pheno = himaDat$Example4$PhenoData, 
            data.M = himaDat$Example4$Mediator,
            outcome.family = "gaussian",
            mediator.family = "compositional",
            penalty = "DBlasso",
            scale = FALSE) # Disabled only for example data
e4
attributes(e4)$variable.labels

# Y: 分位数水平变量

# Note that the function will prompt input for quantile level.
e5 <- hima2(Outcome ~ Treatment + Sex + Age, 
            data.pheno = himaDat$Example5$PhenoData, 
            data.M = himaDat$Example5$Mediator,
            outcome.family = "quantile",
            mediator.family = "gaussian",
            penalty = "MCP", # Quantile HIMA does not support DBlasso
            scale = FALSE, # Disabled only for example data
            tau = c(0.3, 0.5, 0.7)) # Specify multiple quantile level
e5
attributes(e5)$variable.labels

qHIMA()

这是第2种方法:用于估计和检验高维分位数的中介效应。[注:第1种方法:hima2()]

# qHIMA
head(himaDat$Example5$PhenoData)
# 【结果输出】
#   Treatment  Outcome Sex Age
# 1         1 16.18104   1  23
# 2         1 18.60296   0  20
# 3         1 28.80309   1  42
# 4         1 26.38711   0  34
# 5         1 25.29259   0  44
# 6         1 42.41721   1  61

qHIMA.fit <- qHIMA(X = himaDat$Example5$PhenoData$Treatment,
                   M = himaDat$Example5$Mediator, 
                   Y = himaDat$Example5$PhenoData$Outcome, 
                   Z = himaDat$Example5$PhenoData[, c("Sex", "Age")], 
                   Bonfcut = 0.05,
                   tau = c(0.3, 0.5, 0.7),
                   scale = FALSE, 
                   verbose = TRUE)
qHIMA.fit
# 【结果输出】
#   ID      alpha  alpha_se       beta   beta_se Bonferroni.p tau
# 1 M1  0.7940567 0.1428952  0.7947046 0.1294236 2.745815e-08 0.3
# 2 M2  0.8084565 0.1431067  0.8270942 0.1378767 1.610791e-08 0.3
# 3 M3 -1.1375897 0.1438286 -0.8098622 0.1349740 1.971560e-09 0.3
# 4 M1  0.7940567 0.1428952  0.8696986 0.1481069 2.745815e-08 0.5
# 5 M2  0.8084565 0.1431067  0.7351953 0.1309730 1.984654e-08 0.5
# 6 M1  0.7940567 0.1428952  0.9196337 0.2423962 1.482827e-04 0.7
# 7 M3 -1.1375897 0.1438286 -0.9171627 0.2544897 3.134432e-04 0.7

survHIMA()

这是第2种方法:用于评估和检验生存数据的高维中介效应。[注:第1种方法:hima2()]

head(himaDat$Example3$PhenoData)
# 【结果输出】
#    Treatment Status        Time Sex Age
# 1         0   TRUE 0.034300778   1  31
# 2         0   TRUE 0.497066963   1  51
# 3         1   TRUE 0.046356567   1  39
# 4         1   TRUE 0.024704873   1  22
# 5         0   TRUE 0.126670360   1  26
# 6         1   TRUE 0.007228506   0  60

survHIMA.fit <- survHIMA(X = himaDat$Example3$PhenoData$Treatment,
                         Z = himaDat$Example3$PhenoData[, c("Sex", "Age")], 
                         M = himaDat$Example3$Mediator, 
                         OT = himaDat$Example3$PhenoData$Time, 
                         status = himaDat$Example3$PhenoData$Status, 
                         FDRcut = 0.05,
                         scale = FALSE, 
                         verbose = TRUE)
survHIMA.fit
# 【结果输出】
# ID      alpha  alpha_se       beta    beta_se      p.joint
# 1 M1  1.0384367 0.1365431  0.7940717 0.08687706 2.842171e-14
# 2 M2  0.6414393 0.1507081  0.7969670 0.07691991 2.079579e-05
# 3 M3 -0.9087889 0.1463872 -0.9952480 0.08084286 5.362315e-10

参考文献

Zhang H, Zheng Y, Zhang Z, Gao T, Joyce B, Yoon G, Zhang W, Schwartz J, Just A, Colicino E, Vokonas P, Zhao L, Lv J, Baccarelli A, Hou L, Liu L. Estimating and Testing High dimensional Mediation Effects in Epigenetic Studies. Bioinformatics. (2016) . PMID: 2735717

摘要:

目的:高维 DNA 甲基化标记可能介导环境暴露与健康结果之间的结合。然而,缺乏分析方法来确定高维调解分析的重要中介。

结果: 在确定独立筛选和极小极大凹惩罚技术的基础上,采用联合显著性检验方法对调解效果进行检验。我们使用蒙特卡罗模拟研究来展示其实际性能,并应用这种方法来调查在规范老化研究中,DNA 甲基化标记介导从吸烟到肺功能减少的因果途径的程度。我们鉴定了2个具有显著中介作用的 CpG。

可用性和实现: R 软件包、源代码和模拟研究 https://github.com/yinanzheng/hima 

HIMA: High-Dimensional Mediation Analysis (r-project.org)icon-default.png?t=N7T8https://cran.r-project.org/web/packages/HIMA/HIMA.pdf

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

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

相关文章

C#知识点-15(匿名函数、使用委托进行窗体传值、反射)

匿名函数 概念&#xff1a;没有名字的函数&#xff0c;一般情况下只调用一次。它的本质就是一个方法&#xff0c;虽然我们没有定义这个方法&#xff0c;但是编译器会把匿名函数编译成一个方法 public delegate void Del1();//无参数无返回值的委托public delegate void Del2(s…

Java SE 入门到精通—基础语法【Java】

敲重点&#xff01; 本篇讲述了比较重要的基础&#xff0c;是必须要掌握的 1.程序入口 在Java中&#xff0c;main方法是程序的入口点&#xff0c;是JVM&#xff08;Java虚拟机&#xff09;执行Java应用程序的起始点。 main方法的方法签名必须遵循下面规范&#xff1a; publ…

TestNG与ExtentReport单元测试导出报告文档

TestNG与ExtentReport集成 目录 1 通过实现ITestListener的方法添加Reporter log 1.1 MyTestListener设置 1.2 输出结果 2 TestNG与ExtentReporter集成 2.1 项目结构 2.2 MyExtentReportListener设置 2.3 单多Suite、Test组合测试 2.3.1 单Suite单Test 2.3…

Java实现实验室耗材管理系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 耗材档案模块2.2 耗材入库模块2.3 耗材出库模块2.4 耗材申请模块2.5 耗材审核模块 三、系统展示四、核心代码4.1 查询耗材品类4.2 查询资产出库清单4.3 资产出库4.4 查询入库单4.5 资产入库 五、免责说明 一、摘要 1.1…

WebSocket实现聊天

基于webSocket通信的库主要有 socket.io&#xff0c;SockJS&#xff0c;这次用的是 SockJS。 这里我们使用sockjs-client、stomjs这两个模块&#xff0c;要实现webSocket通信&#xff0c;需要后台配合&#xff0c;也使用相应的模块。 WebSocket 1、http&#xff1a;http超文…

War Robots可以使用5347的卡支付

很多小伙伴想使用War Robots&#xff0c;但是不知道怎么弄&#xff0c;方法比较可靠&#xff0c;亲测有效~~~ 可以使用Fomepay的5347的卡支付 卡片cvc就是卡密&#xff0c;在首页点击更多时可以查看

【ubuntu2004安装N卡驱动】

软硬件环境 硬件&#xff1a;联想notebook16&#xff0c;显卡4060laptop 软件&#xff1a; ubuntu20.04 驱动安装成功的版本&#xff1a;NVIDIA-Linux-x86_64-535.146.02.run 使用默认的驱动安装&#xff0c;没用原因如下 让手动安装。 手动安装 环境准备&#xff1a; sudo …

【shap】使用shap画图时colorbar颜色条不能正常显示

下面&#xff0c;我的shap值全是蓝色的&#xff0c;没有红色 &#xff08;注&#xff1a;蓝色是负贡献&#xff0c;红色是正贡献&#xff09; 参考上面的帖子&#xff0c;是matplotlib版本问题&#xff0c;我原来的版本是3.5.0&#xff0c;降级回3.4.3就正常了。

心律守护 基于机器学习的心脏病预测

心律守护 基于机器学习的心脏病预测 心律守护 基于机器学习的心脏病预测项目背景与意义项目数据与特征数据分析与预处理机器学习模型建立与评估结语 心律守护 基于机器学习的心脏病预测 在当今数字化时代&#xff0c;机器学习的应用已经渗透到了医疗保健领域的各个层面。其中&…

阿里云/腾讯云幻兽帕鲁服务器为什么更新/重启之后,服务器存档没了?

有的朋友说&#xff0c;他的阿里云幻兽帕鲁服务器重启了一下后&#xff0c;服务器存档就没了&#xff1f;这是怎么回事呢&#xff0c;其实可能的原因&#xff0c;一是服务器还有重启完成&#xff0c;也就是游戏服务端还没有启动&#xff0c;就登进去&#xff0c;可能会显示网络…

Eclipse项目间的引用

我们在开发的时候&#xff0c;有时候需要把一个大的项目打散&#xff0c;尤其是现在微服务的架构很流行&#xff0c;一个大的项目往往被拆成很多小的项目&#xff0c;而有的项目作为公共工程被独立出来&#xff0c;比如有个工程专门提供各种Util工具类&#xff0c;有的工程专门…

使用 Docker 安装 Elasticsearch 8.4.3

使用 Docker 安装 Elasticsearch 8.4.3 一. 拉取 Elasticsearch Docker 镜像二. 使用Docker启动单节点集群三. 修改密码 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 从 Elastic…

基于Python的热点分析预警系统

项目&#xff1a;基于Python的热点分析预警系统 摘 要 基于网络爬虫的数据可视化服务系统是一种能自动从网络上收集信息的工具&#xff0c;可根据用户的需求定向采集特定数据信息的工具&#xff0c;本项目通过研究爬取微博网来实现微博热点分析数据信息可视化系统功能。对于采…

美国纽约时代广场纳斯达克大屏投放-大舍传媒

美国纽约时代广场纳斯达克大屏投放-大舍传媒 引言 对于大舍传媒来说&#xff0c;能够在美国纽约时代广场纳斯达克大屏投放广告是一个里程碑式的时刻。这不仅仅代表着大舍传媒在全球范围内的知名度与实力&#xff0c;也标志着该公司在国际市场上取得了巨大的进展。纽约时代广场…

sqllabs第46关 order by 注入

简介&#xff1a;&#xff08;order by注入-错误回显-POST注入&#xff09; 请求方法&#xff1a;POST 方法&#xff1a;order by注入错误回显数字型注入 先了解下 order by参数注入&#xff1a; order by 注入是指其后面的参数是可控的&#xff0c; order by 不同于我们在 whe…

威来国际教育:留学服务的全新标杆,打造无忧留学体验

在当今全球化日益加深的背景下&#xff0c;留学已成为众多年轻人拓宽视野、提升个人能力的重要手段。随着留学市场的不断扩大和留学目的地的多样化&#xff0c;家庭和学生在选择留学服务时更加注重专业性和全面性。 在这一领域&#xff0c;威来国际教育凭借其深厚的背景和专业的…

一、vue3+ts项目框架搭建——规范

新建项目及规范配置 1.1项目初始化 1.1.1环境准备1.1.2初始化项目 1.2项目配置 一、eslint配置 1.1vue3环境代码校验插件1.2.eslintrc.cjs配置文件 1.3运行脚本 二、配置prettier:格式化工具 2.1安装依赖包2.2.prettierrc.json添加规则2.3.prettierignore忽略文件 三、配置st…

Vue3-组合式Api(重点)

阅读文章你可以收获的知识 1.知道setup语法糖的使用和如何实现的 2.知道在vue3中如何定义响应式数据 3.知道在vue3中如何定义一个计算属性&#xff08;computed&#xff09; 4.知道如何在vue3中使用watch来监听数据 5.知道在vue3如何实现父子通信 6.知道vue3如何使用ref函…

苍穹外卖学习-----2024/02/21

1.新增员工 /*** 处理SQL异常* param sqlIntegrityConstraintViolationException* return*/ExceptionHandlerpublic Result exceptionHandler(SQLIntegrityConstraintViolationException sqlIntegrityConstraintViolationException){//String message sqlIntegrityConstraintV…

JS实现根据数组对象的某一属性排序

JS实现根据数组对象的某一属性排序 一、冒泡排序&#xff08;先了解冒泡排序机制&#xff09;二、根据数组对象的某一属性排序&#xff08;引用sort方法排序&#xff09; 一、冒泡排序&#xff08;先了解冒泡排序机制&#xff09; 以从小到大排序为例&#xff0c;冒泡排序的原…