GMSB文章七:微生物整合分析

news2024/11/26 19:49:59

欢迎大家关注全网生信学习者系列:

  • WX公zhong号:生信学习者
  • Xiao hong书:生信学习者
  • 知hu:生信学习者
  • CDSN:生信学习者2

介绍

本文通过多元方差分析和典型相关分析研究微生物(species)、细胞因子(cytokine)和短链脂肪酸(SCFA)之间的相关关系。以下是两种分析的定义:

**多元方差分析(Multivariate Analysis of Variance,简称MANOVA)是一种统计方法,用于同时分析多个因变量(dependent variables)**对一个或多个自变量(independent variables)的影响。它是一种扩展了单变量方差分析(ANOVA)的技术,允许研究者检验多个响应变量是否受到一个或多个分类自变量的影响。

  • 多维数据:MANOVA处理的是多维数据集,即每个观测值都有多个响应变量的测量值。

  • 线性模型:它基于线性模型,其中每个因变量可以表示为自变量的线性组合加上误差项。

  • 假设检验:MANOVA检验的核心是假设检验,主要检验自变量对因变量的总体影响是否显著。这包括检验自变量的主效应、交互效应以及它们对因变量的联合效应。

  • 协方差矩阵:MANOVA考虑了因变量之间的相关性,通过分析协方差矩阵来评估这种相关性。

  • Wilks’ Lambda, Pillai’s Trace, Hotelling’s Trace, Roy’s Largest Root:这些都是MANOVA中常用的统计量,用于检验自变量对因变量的影响。

加载R包

library(readr)
library(openxlsx)
library(compositions)
library(tidyverse) 
library(mia)
library(ggpubr)

导入数据

大家通过以下链接下载数据:

  • 百度网盘链接:https://pan.baidu.com/s/1fz5tWy4mpJ7nd6C260abtg
  • 提取码: 请关注WX公zhong号_生信学习者_后台发送 复现gmsb 获取提取码
df_v1 <- read_csv("./data/GMSB-data/df_v1.csv", show_col_types = FALSE)
bias_corr_species <- read_csv("./data/GMSB-data/results/outputs/bias_corr_species.csv")
raw_species <- readRDS("./data/GMSB-data/rds/primary_ancombc2_species.rds")
sig_species <- read.xlsx("./data/GMSB-data/results/outputs/res_ancombc2.xlsx", sheet = 1) 

数据预处理

  • 提取差异物种丰度表

  • 合并分组变量和差异物种丰度表

df_v1 <- df_v1 %>%
  dplyr::filter(group1 != "missing")

# Microbiome data
bias_corr_species <- bias_corr_species %>%
  dplyr::rowwise() %>%
  dplyr::filter(grepl("Species:", species)|grepl("Genus:", species)) %>%
  dplyr::mutate(species = ifelse(grepl("Genus:", species), 
                        paste(strsplit(species, ":")[[1]][2], "spp."),
                        strsplit(species, ":")[[1]][2])) %>%
  dplyr::ungroup() 

# Significant taxa from ANCOM-BC2
sig_species <- sig_species %>%
  dplyr::filter(p_val < 0.05) %>%
  .$taxon

# Subset significant taxa
df_da_species <- bias_corr_species %>%
  dplyr::filter(species %in% sig_species)
df_da_species <- t(df_da_species)
colnames(df_da_species) <- df_da_species[1, ]
df_da_species <- data.frame(df_da_species[-1, , drop = FALSE], check.names = FALSE) %>%
  rownames_to_column("sampleid") %>%
  dplyr::mutate(across(-1, as.numeric))
df_da_species[is.na(df_da_species)] <- 0

# 合并分组标签和物种丰度表
df_add_species <- df_v1 %>%
  dplyr::left_join(df_da_species, by = "sampleid")
df_add_species <- data.frame(df_add_species)

sig_species <- make.names(sig_species)

head(sig_species)
[1] "A.muciniphila"     "A.onderdonkii"     "Anaerovibrio.spp." "B.adolescentis"    "B.caccae"         
[6] "B.fragilis"

函数

  • lm_eqn:提取线性模型结果

  • plot_scatter:两个变量的散点图,关联关系

lm_eqn <- function(m){
  
  a <- unname(coef(m))[1]
  b <- unname(coef(m))[2]
  p_val <- summary(m)$coef[2, "Pr(>|t|)"]
  
  b <- ifelse(sign(b) >= 0, 
             paste0(" + ", format(b, digits = 2)), 
             paste0(" - ", format(-b, digits = 2)))
  
  eq <- substitute(paste(italic(y) == a, b, italic(x), ", ", italic(p) == p_val),
                  list(a = format(a, digits = 2), b = b,
                       p_val = format(p_val, digits = 2)))
  
  return(as.character(as.expression(eq)))              
}

plot_scatter <- function(df, var_name, tax_name, y_lab) {
  
  df_fig <- df %>%
    dplyr::select(all_of(c(var_name, tax_name))) %>%
    dplyr::rename(y = var_name) %>%
    tidyr::pivot_longer(-y, names_to = "tax", values_to = "x")
  
  df_lm <- df_fig %>% 
    dplyr::group_by(tax) %>%
    dplyr::do(fit = lm(formula = y ~ x, data = .)) %>%
    dplyr::summarise(eq = lm_eqn(m = fit))
  
  df_ann <- df_fig %>% 
    dplyr::group_by(tax) %>%
    dplyr::summarise(y = ifelse(mean(y, na.rm = TRUE) > 0, 
                         0.5 * max(y, na.rm = TRUE),
                         0.2 * abs(mean(y, na.rm = TRUE))),
              x = median(x, na.rm = TRUE)) %>%
      dplyr::mutate(eq = df_lm$eq,
             y_max = 1.05 * y)
  
  fig <- df_fig %>% 
    ggplot(aes(x = x, y = y)) + 
    geom_point(alpha = 0.8, color = "#BEAED4") +
    geom_smooth(method = "lm", se = TRUE, color = "skyblue", 
                formula = y ~ x) +
    facet_wrap(.~tax, scales = "free") +
    labs(x = "Micorbial abundances", 
         y = y_lab, 
         title = NULL) + 
    geom_blank(data = df_ann, aes(y = y_max)) +
    geom_text(data = df_ann, aes(x = x, y = y, label = eq), size = 3, 
              parse = TRUE, inherit.aes = FALSE) + 
    theme_bw() +
    theme(strip.background = element_rect(fill = "white"),
          legend.position = "bottom",
          plot.title = element_text(hjust = 0.5))
  
  return(fig)
}

Microbiome vs. cytokines

差异物种和细胞因子的关联分析,采用**多重协方差分析(MANCOVA, Multivariate Analysis of Covariance)**方法来评估细胞因子和微生物物种之间的多变量关系

  • 因变量:细胞因子

  • 自变量:差异菌

t_formula <- as.formula(paste0("cbind(crp, cd14, cd163) ~ ",
                              paste0(sig_species, collapse = " + ")))
fit <- manova(t_formula, data = df_add_species)

summ <- summary(fit, test = "Pillai")

df_summ <- data.frame(summ$stats) %>%
  rownames_to_column("Taxon") %>%
  dplyr::transmute(Taxon,
                   approx.F = signif(approx.F, 2),
                   num.Df, den.Df, 
                   P = round(`Pr..F.`, 2)) %>%
  dplyr::filter(Taxon != "Residuals") %>%
  dplyr::arrange(P)

head(df_summ)

cowplot::plot_grid(
  plot_scatter(
    df = df_add_species,
    var_name = "crp",
    tax_name = "Lachnospira.spp.",
    y_lab = "crp"),
  plot_scatter(
    df = df_add_species,
    var_name = "cd14",
    tax_name = "Lachnospira.spp.",
    y_lab = "cd14"),
  plot_scatter(
    df = df_add_species,
    var_name = "cd163",
    tax_name = "Lachnospira.spp.",
    y_lab = "cd163"),
  ncol = 2, align = "hv")
Taxonapprox.Fnum.Dfden.DfP
1Lachnospira.spp.3.232120.02
2RFN20.spp.2.832120.04
3Succinivibrio.spp.1.932120.13
4B.uniformis1.432120.25
5Bifidobacterium.spp.1.432120.25
6B.fragilis1.332120.28

在这里插入图片描述

结果:自变量species对因变量细胞因子的检验结果

  • 自变量Lachnospira.spp.p值小于0.05,这表示它对至少一个因变量(crp, cd14, cd163)产生了影响,可以通过散点图查看结果;

  • 自变量Lachnospira.spp.和因变量cd14存在显著负相关。

Microbiome vs. SCFAs

差异物种和短链脂肪酸的关联分析,采用**多重协方差分析(MANCOVA, Multivariate Analysis of Covariance)**方法来评估短链脂肪酸和微生物物种之间的多变量关系

  • 因变量:短链脂肪酸

  • 自变量:差异菌

t_formula <- as.formula(paste0("cbind(acetate, valerate) ~ ",
                              paste0(sig_species, collapse = " + ")))
fit <- manova(t_formula, data = df_add_species)

summ <- summary(fit, test = "Pillai")

df_summ <- data.frame(summ$stats) %>%
  rownames_to_column("Taxon") %>%
  dplyr::transmute(Taxon,
                   approx.F = signif(approx.F, 2),
                   num.Df, den.Df, 
                   P = round(`Pr..F.`, 2)) %>%
  dplyr::filter(Taxon != "Residuals") %>%
  dplyr::arrange(P)

head(df_summ)

cowplot::plot_grid(
  plot_scatter(
    df = df_add_species,
    var_name = "acetate",
    tax_name = "B.uniformis",
    y_lab = "acetate"),
  plot_scatter(
    df = df_add_species,
    var_name = "valerate",
    tax_name = "B.uniformis",
    y_lab = "valerate"),
  ncol = 2, align = "hv")
Taxonapprox.Fnum.Dfden.DfP
1B.uniformis6.321960.00
2Megasphaera.spp.3.621960.03
3Succinivibrio.spp.3.421960.04
4Butyricimonas.spp.2.521960.09
5Paraprevotella.spp.2.421960.09
6B.fragilis2.021960.13

在这里插入图片描述

结果:自变量species对因变量短链脂肪酸的检验结果

  • 自变量B.uniformisp值小于0.05,这表示它对至少一个因变量(acetate, valerate)产生了影响,可以通过散点图查看结果;

  • 自变量B.uniformis和两个因变量acetate, valerate分别存在显著正负相关。

Cytokines vs. SCFAs

细胞因子和短链脂肪酸的关联分析,采用**多重协方差分析(MANCOVA, Multivariate Analysis of Covariance)**方法来评估细胞因子和短链脂肪酸之间的多变量关系

  • 因变量:细胞因子

  • 自变量:短链脂肪酸

fit <- manova(cbind(crp, cd14, cd163) ~ 
               acetate + valerate, 
             data = df_v1)

summ <- summary(fit, test = "Pillai")

df_summ <- data.frame(summ$stats) %>%
  rownames_to_column("Taxon") %>%
  dplyr::transmute(Taxon,
                   approx.F = signif(approx.F, 2),
                   num.Df, den.Df, 
                   P = round(`Pr..F.`, 2)) %>%
  dplyr::filter(Taxon != "Residuals") %>%
  dplyr::arrange(P)

head(df_summ)

cowplot::plot_grid(
  plot_scatter(
    df = df_add_species,
    var_name = "crp",
    tax_name = "acetate",
    y_lab = "crp"),
  plot_scatter(
    df = df_add_species,
    var_name = "cd14",
    tax_name = "acetate",
    y_lab = "cd14"),
  ncol = 2, align = "hv")
Taxonapprox.Fnum.Dfden.DfP
1acetate2.532160.06
2valerate1.232160.30

结果:自变量短链脂肪酸对因变量细胞因子的检验结果

  • 自变量acetatep = 0.06,这表示它对至少一个因变量(crp, cd14, cd163)产生了轻微影响,可以通过散点图查看结果;

  • 自变量acetate和因变量crp存在显著正相关。

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

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

相关文章

昇思25天学习打卡营第5天|MindSpore-ResNet50图像分类

MindSpore-ResNet50图像分类 CIFAR-10数据集 CIFAR-10数据集是一个广泛使用的图像分类数据集,它包含了60,000张32x32的RGB彩色图像,分为10个类别,每个类别有6,000张图像。这些类别包括飞机(airplane)、汽车(automobile)、鸟类(bird)、猫(cat)、鹿(deer)、狗(dog…

如何应对UI测试自动化的不稳定循环!

以下为作者观点&#xff1a; 当我加入UI自动化团队时&#xff0c;我很高兴能为新功能的自动化测试用例开发做出贡献。然而&#xff0c;我很快意识到团队花费了大量时间来修复之前迭代中不稳定的测试。这种情况让我感到困惑&#xff0c;因为当自动化测试脚本已知不稳定时&#…

基于模糊神经网络的时间序列预测(以hopkinsirandeath数据集为例,MATLAB)

模糊神经网络从提出发展到今天,主要有三种形式&#xff1a;算术神经网络、逻辑模糊神经网络和混合模糊神经网络。算术神经网络是最基本的&#xff0c;它主要是对输入量进行模糊化&#xff0c;且网络结构中的权重也是模糊权重&#xff1b;逻辑模糊神经网络的主要特点是模糊权值可…

PLC系统中有源信号和无源信号的解析与应用

&#xff08;一&#xff09;无源信号和有源信号&#xff08;模拟量&#xff09; &#xff08;1&#xff09;无源信号和有源信号定义 对于电流信号而言&#xff0c;若设备有独立的工作电源线&#xff0c;那它提供的信号输出(比如4-20mA)为有源信号&#xff1b;若设备本身无独立…

c++习题02-浮点数求余

目录 一&#xff0c;问题 二&#xff0c;思路 三&#xff0c;代码 一&#xff0c;问题 二&#xff0c;思路 虽然在浮点类型中没有取余的运算&#xff08;无法直接使用%符号取余&#xff09;&#xff0c;但是我们都知道在数学中&#xff0c;除法是减法的连续运算&#xff…

【CSS in Depth 2 精译】2.2 em 和 rem + 2.2.1 使用 em 定义字号

当前内容所在位置 第一章 层叠、优先级与继承第二章 相对单位 2.1 相对单位的威力 2.1.1 响应式设计的兴起 2.2 em 与 rem ✔️ 2.2.1 使用 em 定义字号 ✔️2.2.2 使用 rem 设置字号 2.3 告别像素思维2.4 视口的相对单位2.5 无单位的数值与行高2.6 自定义属性2.7 本章小结 2.…

自定义一个背景图片的高度,随着容器高度的变化而变化,小于图片的高度时裁剪,大于时拉伸100%展示

1、通过js创建<image?>标签来获取背景图片的宽高比&#xff1b; 2、当元素的高度大于原有比例计算出来的高度时&#xff0c;背景图片的高度拉伸自适应100%&#xff0c;否则高度为auto&#xff0c;会自动被裁减 3、背景图片容器高度变化时&#xff0c;自动计算背景图片的…

Excel 宏录制与VBA编程 ——VBA编程技巧篇一 (Union方法、Resize方法、Cells方法、UseSelect方法、With用法)

Uniom方法 使用Union方法可以将多个非连续区域连接起来成为一个区域&#xff0c;从而可以实现对多个非连续区域一起进行操作。 Resize方法 使用Range对象的Resize属性调整指定区域的大小&#xff0c;并返回调整大小后的单元格区域。 Cells方法 Cells属性返回一个Range对象。 Us…

Python面试宝典第1题:两数之和

题目 给定一个整数数组 nums 和一个目标值 target&#xff0c;找出数组中和为目标值的两个数的索引。可以假设每个输入只对应唯一的答案&#xff0c;且同样的元素不能被重复利用。比如&#xff1a;给定 nums [2, 7, 11, 15] 和 target 9&#xff0c;返回 [0, 1]&#xff0c;因…

人工智能与物联网:融合创新驱动未来

引言 人工智能&#xff08;AI&#xff09;指的是计算机系统模拟人类智能的能力&#xff0c;包括学习、推理、问题解决、理解自然语言以及感知和响应环境的能力。AI技术涵盖了机器学习、深度学习、神经网络、自然语言处理等领域&#xff0c;广泛应用于图像识别、语音识别、自动驾…

图鸟模板-官网:基于Vue 3的前端技术探索与实践

摘要&#xff1a; 随着Web技术的不断发展&#xff0c;前端开发已经从简单的页面展示向功能丰富、交互体验优良的方向发展。Vue.js作为一款轻量级且功能强大的前端框架&#xff0c;自推出以来就受到了广泛的关注和应用。特别是Vue 3的发布&#xff0c;更是为前端开发带来了诸多新…

CriticGPT: 用 GPT-4 找出 GPT-4 的错误

CriticGPT 是 OpenAI 发布的一个基于 GPT-4 的模型&#xff0c;它可以帮助我们人类 Review 并纠正 ChatGPT 在生成代码时的错误。使用 CriticGPT 审查代码时&#xff0c;有 60% 的概率生成的代码更好更正确。

vue使用glide.js实现轮播图(可直接复制使用)

效果图 可以实现自动轮播&#xff0c;3种切换方式&#xff1a;直接滑动图片、点击两侧按钮、点击底部按钮 体验链接:http://website.livequeen.top 实现 一、引入依赖 1、控制台引入依赖 npm install glidejs/glide 2、在css中引用 <style scoped> import glidejs/g…

#HDC2024 心得分享#主题演讲学习-加入鸿蒙生态正当时

一、主题演讲学习心得 通过本次主题演讲的聆听与学习&#xff0c;我们在猜出中和不太确定的相关内容纷纷呈现。比如鸿蒙内核与HarmonyOS Next获得行业内最高等级的安全认证&#xff1b;盘古大模型、小艺智能体、意图理解与分发框架等构筑的AI、AIGC能力对HarmonyOS Next及原生…

新手做ASO优化必须要了解的8大指标

在进行 ASO 优化时&#xff0c;以下这些指标通常应优先考虑&#xff1a; 1. 关键词排名 - 这是衡量 ASO 效果的关键指标之一。了解您的应用在特定关键词搜索结果中的位置&#xff0c;有助于评估优化策略的有效性。 2. APP下载量 - 直接反映了应用的受欢迎程度和ASO工作对吸…

单片机使用printf在串口输出字符串

把字符串使用printf输出的本质 实际上调用了putchar和串口字符输出函数&#xff0c;参考 以51单片机中的程序为例 在主函数中使用printf函数向串口发送字符串&#xff0c;当然保证已经定义好串口的波特率等参数 while(1){//uart0SendString("start....\n");prin…

第1章_搭建开发环境

文章目录 第1章 搭建开发环境1.1开发套件硬件接口资源介绍1.2资料下载1.3安装Keil MDK1.3.1**软件下载**1.3.2**软件安装**1.3.3 PACK 安装 1.4 安装 STM32CubeMX1.5 安装 STM32CubeProgrammer1.6 安装 ST-Link 驱动1.7 安装 CH340 驱动 第1章 搭建开发环境 1.1开发套件硬件接…

SpringBoot 3.3.1 + Minio 实现极速上传和预览模式

统一版本管理 <properties><minio.version>8.5.10</minio.version><aws.version>1.12.737</aws.version><hutool.version>5.8.28</hutool.version> </properties><!--minio --> <dependency><groupId>io.m…

谷歌如何进行失效链接建设?

失效链接建设是一种高效的外链建设策略&#xff0c;通过发现并利用失效链接来提升自己网站的SEO。以下是详细的步骤&#xff1a; 寻找失效页面&#xff1a;你需要使用SEO工具&#xff0c;如Ahrefs&#xff0c;来查找与你的网站内容相关的失效页面。这些页面可能是竞争对手的失…

【进阶篇-Day6:JAVA中Arrays工具类、排序算法、正则表达式的介绍】

目录 1、Arrays工具类2、排序算法2.1 冒泡排序2.2 选择排序2.3 二分查找&#xff08;折半查找&#xff09;&#xff08;1&#xff09;概念&#xff1a;&#xff08;2&#xff09;步骤&#xff1a; 3、正则表达式3.1 正则表达式的概念&#xff1a;3.2 正则表达式的格式&#xff…