技术贴 | R语言菌群Alpha多样性分析和绘图

本文由阿童木根据实践经验而整理,希望对大家有帮助。

原创微文,欢迎转发转载。

导读

箱型图(Boxplot)或者盒图是一种能同时展示一组或多组数据的极值、四分位数、中位数和离群值,显示数据离散情况的统计图。下面介绍一下如何在R软件中利用箱形图可视化两组微生物群的Alpha多样性指数。过程分为以下几步:1)模拟原始数据;2)模拟分组;3)标准化;4)计算多样性;5)T检验;6)ggplot绘制Boxplot,保存结果。

完成以上步骤将得到如下结果:

1 模拟丰度矩阵

set.seed(1995)

# 设置随机种子:为了能多次获取同一组随机数

data=matrix(abs(round(rnorm(200, mean=1000, sd=500))), 20, 10)

# 获取随机正整数矩阵:20个样本,10个菌种

colnames(data)=paste("Species", 1:10, sep=" ")

# 给细菌命名

rownames(data)=paste("Sample", 1:20, sep=" ")

# 给样本命名,结果如下:

2 模拟分组文件

group=c("A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B")

# 把样本分为A、B两组

sample_id=rownames(data)

# 取样本名

data_group=data.frame(sample_id, group)

# 做分组文件,如下:

3 标准化丰度

data_norm=data

# 新建data_norm数据框,赋初值

for(i in 1:20){

    sample_sum=apply(data, 1, sum)

# 计算每个样本的菌种总丰度

    for(j in 1:10){

        data_norm[i,j]=data[i,j]/sample_sum[i]

        # [每个样本的每个物种的丰度] / [该样本物种总丰度] = 相对丰度

    }

}

apply(data_norm, 1, sum)

# 检查每个样本物种总丰度是否成功标准化到1,如下:

4 计算Alpha多样性

library(vegan)

# 加载VEGAN包

data_norm_shannon=diversity(data_norm, "shannon")

# 使用VEGAN包中的diversity函数计算每个样品的Shannon Alpha多样性指数

data_ggplot=data.frame(data_norm_shannon)

# 多样性计算结果如下:

data_ggplot=data.frame(data_ggplot, data_group["group"])

# 添加分组信息,如下:

5 T检验

成组设计T检验需要两个条件:1)个体间相互独立;2)两组样本均来自正态分布总体;3)方差齐。我们可以利用直方图和QQ图观察样本是否呈正态分布,当然也可以直接用夏皮罗-威尔克(Shapiro-Wilk)假设检验的方法判断样本数据的分布。如果样本数据符合正态分布,那么可以接着用Bartlett检验不同组样本的方差齐性。两个条件都满足的话就可以做T检验了。我这里使用的是随机产生的数据,所以分析结果就不要太在意了。

group_A=data_ggplot$data_norm_shannon[data_ggplot$group=='A']

# 获取A组的多样性数据

group_B=data_ggplot$data_norm_shannon[data_ggplot$group=='B']

# 获取B组的多样性数据

hist(group_A)

hist(group_B)

# 绘制多样性指数分布直方图

# 观察形状若为倒钟形那便是接近正态分布的

qqnorm(group_A)

qqnorm(group_B)

# 绘制多样性指数QQ图

# 观察形状是一条连接主对角线的线那便是接近正态分布

shapiro.test(data_ggplot$data_norm_shannon)

# 夏皮罗-威尔克(Shapiro-Wilk)检验正态性,p>0.05,接受原假设,符合正态分布

bartlett.test(data_norm_shannon~group,data=data_ggplot)

# 巴特利特(Bartlett)检验方差齐性,p>0.05,接受原假设,即两样本数据方差齐

with(data_ggplot,t.test(formula=data_norm_shannon~group,conf.level=0.95))

# T检验,p>0.05,没法拒绝原假设,两组Shannon多样性指数差异不显著

6 ggplot绘制箱形图

library(ggplot2)

# 加载R包ggplot2

alpha_boxplot=ggplot(data_ggplot, aes(x=group, y=data_norm_shannon, fill=group))+

# 添加数据、xy值、 颜色参数给画图函数ggplot

geom_boxplot()+

# 盒图

labs(title="Alpha diversity", x="Group", y="Shannon index")+

# 标题

theme(plot.title=element_text(hjust=0.5), legend.title=element_blank())

# 标题居中

pdf('result.pdf')

alpha_boxplot

dev.off()

# 保存结果,打开result.pdf文件,结果如下:

参考

1)R语言-t检验

https://blog.csdn.net/weixin_38322363/article/details/89811964

2)Shapiro-Wilk检验

https://www.jianshu.com/p/e202069489a6

3) 方差齐性检验的原理

https://zhuanlan.zhihu.com/p/26943946

感谢您的阅读~




你可能还喜欢

初学者如何深入解读16S rDNA扩增子测序数据,从而选择自己的分析步骤

技术贴 | 16S专题 |基于QIIME2 dada2插件的16S扩增子测序数据的分析流程详解(上)

技术贴 | 16S专题 | 基于QIIME2 dada2插件的16S扩增子测序数据的分析流程详解(中)

技术贴 | 16S专题 | 简单介绍如何用自己的笔记本处理高通量16S数据

16S测序全新分析流程QIIME2的介绍

6 技术贴 | 微生太宏基因组报告解读(开篇)

技术贴 | 宏转录组专题 | DDBJ数据库:宏转录组测序数据下载


(0)

相关推荐

  • ggplot2统计图形:常见的4种直方图

    对于连续数据,通过直方图来观察分布状态.小兵今天用R语言的ggplot2包上机练习制作几种常见的直方图. 数据源:雇员数据employee 本号后台回复[雇员]下载数据,欢迎读者朋友自行实践. 1.简 ...

  • 你认为alpha多样性一定要用OTU来分析吗?

    写在前面 alpha多样性主要包括三方面内容:多样性,丰富度和均匀度.就扩增子数据来说,大部分的文章都是使用OTU来做多样性分析.但是长期以来我们都知道,OTU多样性并不是真正的物种.最近看到一篇文章 ...

  • ggplot2实现分半小提琴图绘制基因表达谱和免疫得分

    最近看到很多人问下面这个图怎么绘制,看着确实不错.于是我查了一些资料,这个图叫split violin或者half violin,本质上是一种小提琴图.参考代码在https://gist.github ...

  • 堆叠柱状图也要做统计-标记显著性

    写在前面 有时候我们展示的指标有一定的关系,希望可以使用堆叠柱状图展示.许多朋友们问询,这样如何添加显著性标记,因此本期结合EasyStat包给大家做一个演示. R 包导入 ## 导入包 librar ...

  • 技术贴 | R语言:组学关联分析和pheatmap可视化

    本文由阿童木根据实践经验而整理,希望对大家有帮助. 原创微文,欢迎转发转载. 举例展示R语言组学关联分析的方法.宏基因组数据以KO-样品丰度表为例.代谢组数据以metabolite-样品丰度表为例.基 ...

  • 技术贴 | R语言——肠型分析:介绍、方法

    导读 2011年,肠型(Enterotypes)的概念首次在<自然>杂志上由Arumugam等[1]提出,该研究发现可以将人类肠道微生物组分成稳定的3种类型,因为这3种类型不受年龄.性别. ...

  • 技术贴 | R语言物种组成分析和绘图

    本文由阿童木根据实践经验而整理,希望对大家有帮助. 原创微文,欢迎转发转载. 导读 宏基因组分析分为物种分析和功能分析两大块.物种组成分析是物种分析中最基本最常见的分析方法.利用R语言堆叠图,我们可以 ...

  • R语言时间序列GARCH模型分析股市波动率

    原文链接:http://tecdat.cn/?p=22360 在这篇文章中,我们将学习一种在价格序列中建立波动性模型的标准方法,即广义自回归条件异方差(GARCH)模型. 价格波动的 GARCH 模型 ...

  • 技术贴 | R语言:如何绘制合并气泡图?

    本文由yang根据实践经验而整理,希望对大家有帮助. 原创微文,欢迎转发转载. 导读 在组学数据挖掘中在进行差异基因表达分析时,得到显著差异基因后,接下来就需要分析这些基因参与了哪些功能,常见的就是G ...

  • 技术贴 | R语言:构建一个转录代谢互作调控网络:(二)热图的美化以及大样本分组信息的快速注释

    本文由可爱的乔巴根据实践经验而整理,希望对大家有帮助. 原创微文,欢迎转发转载. 导读 上期介绍了利用WGCNA包中的Cor函数和corPvalueStudent函数计算两组小样本的相关性并进行热图可 ...

  • 技术贴 | R语言:大样本多组学的相关性计算、热图绘制

    本文由可爱的乔巴根据实践经验而整理,希望对大家有帮助. 原创微文,欢迎转发转载. 导读 上期介绍了利用psych包计算两组小样本的相关性并进行热图可视化,但当样本数据量非常大时,psych包会耗费的时 ...

  • 技术贴 | R语言:小样本多组学的相关性计算、热图绘制

    本文由可爱的乔巴根据实践经验而整理,希望对大家有帮助. 原创微文,欢迎转发转载. 导读 在多组学数据关联挖掘中,在我们筛选到目标基因集以及目标蛋白质集合或目标代谢物集合后,在进行基因与蛋白质或代谢关联 ...

  • 技术贴 | R语言:绘制基因组基因箭头图

    本文由微科盟阿童木根据实践经验而整理,希望对大家有帮助. 原创微文,欢迎转发转载. 举例介绍如何用R语言gggenes函数包把基因预测得到的gff或gtf文件(含基因位置信息)中的基因类型.位置可视化 ...