ANOSIM分析(analysis of similarities)即相似性分析,主要用于分析高维数据组间相似性,为数据间差异显著性评价提供依据。在一些高维数据分析中,需要使用PCA、PCoA、NMDS等方法进行降维,但这些方法并不显示组间差异的显著性指标,此时可以使用ANOSIM分析解决此问题。
ANOSIM为非参数检验方法,用于评估两组实验数据的整体相似性及相似的显著性。
该方法主要有两个数值结果:一个是R,用于不同组间否存在差异;一个是P,用于说明是否存在显著差异。以下分别对两个数值进行说明:
R值的计算公式如下:
rB:组间差异性秩的平均值(mean rank of between group dissimilarities)
rW:组内差异性秩的平均值(mean rank of within group dissimilarities)
n:总样本个数(the number of samples)
 
R的范围为[-1,1]
R>0说明组间差异大于组内差异,R<0组间差异小于组内差异。
R只是组间是否有差异的数值表示,并不提供显著性说明。
 
P值则说明不同组间差异是否显著,该P值通过置换检验(Permutation Test)获得。
置换检验大致原理:(假设原始分组为实验组和对照组)
1、对所有样本进行随机分组,即实验组和对照组。
2、计算当前分组时的R值,即为Ri。
3、重复当前操作N次,对所有Ri及原始R从大到小排序,R所处的位置除以N即为置换检验P值。
 
举例说明:
比如我们有case和control两组(Group1 和Group 2),数据如下:
 首先需要对样本进行相似性计算,得到如下差异性(即距离矩阵)矩阵:
 然后计算差异性秩(即从小到大排序),如此便把差异性矩阵转换为秩矩阵:
 接着计算组内差异性平均秩和组间差异性平均秩,rW=13.08,r= 15.56,如此R=(15.56-13.08)/(0.25*8*7) = 0.17
 利用置换检验的方法计算p值,如下的方法重复1000次, rb= 14.06,rw = 15.08
 根据1000次随机后获得的Ri与R进行排序,获得P值。
可以使用R语言进行ANOSIM分析,使用的R包为vegan,函数为anosim。
其帮助文档提供的程序为:
data(dune)
data(dune.env)
dune.dist <- vegdist(dune)
dune.ano <- with(dune.env, anosim(dune.dist, Management))
summary(dune.ano)
plot(dune.ano)

  summary(dune.ano)结果为:

  

  plot画出的图形为:

  

  不难看出,图中箱子为summary结果中的Dissimilarity ranks between and within classes的可视化,即组间差异秩分布和组内差异秩分布(下图中的数值分布)。

  

 
 
 
(致谢:以上内容参考 博文 http://www.360doc.com/content/18/0113/21/33459258_721682039.shtml )
 

ANOSIM分析的更多相关文章

  1. alias导致virtualenv异常的分析和解法

    title: alias导致virtualenv异常的分析和解法 toc: true comments: true date: 2016-06-27 23:40:56 tags: [OS X, ZSH ...

  2. 火焰图分析openresty性能瓶颈

    注:本文操作基于CentOS 系统 准备工作 用wget从https://sourceware.org/systemtap/ftp/releases/下载最新版的systemtap.tar.gz压缩包 ...

  3. 一起来玩echarts系列(一)------箱线图的分析与绘制

    一.箱线图 Box-plot 箱线图一般被用作显示数据分散情况.具体是计算一组数据的中位数.25%分位数.75%分位数.上边界.下边界,来将数据从大到小排列,直观展示数据整体的分布情况. 大部分正常数 ...

  4. 应用工具 .NET Portability Analyzer 分析迁移dotnet core

    大多数开发人员更喜欢一次性编写好业务逻辑代码,以后再重用这些代码.与构建不同的应用以面向多个平台相比,这种方法更加容易.如果您创建与 .NET Core 兼容的.NET 标准库,那么现在比以往任何时候 ...

  5. UWP中新加的数据绑定方式x:Bind分析总结

    UWP中新加的数据绑定方式x:Bind分析总结 0x00 UWP中的x:Bind 由之前有过WPF开发经验,所以在学习UWP的时候直接省略了XAML.数据绑定等几个看着十分眼熟的主题.学习过程中倒是也 ...

  6. 查看w3wp进程占用的内存及.NET内存泄露,死锁分析

    一 基础知识 在分析之前,先上一张图: 从上面可以看到,这个w3wp进程占用了376M内存,启动了54个线程. 在使用windbg查看之前,看到的进程含有 *32 字样,意思是在64位机器上已32位方 ...

  7. ZIP压缩算法详细分析及解压实例解释

    最近自己实现了一个ZIP压缩数据的解压程序,觉得有必要把ZIP压缩格式进行一下详细总结,数据压缩是一门通信原理和计算机科学都会涉及到的学科,在通信原理中,一般称为信源编码,在计算机科学里,一般称为数据 ...

  8. ABP源码分析一:整体项目结构及目录

    ABP是一套非常优秀的web应用程序架构,适合用来搭建集中式架构的web应用程序. 整个Abp的Infrastructure是以Abp这个package为核心模块(core)+15个模块(module ...

  9. HashMap与TreeMap源码分析

    1. 引言     在红黑树--算法导论(15)中学习了红黑树的原理.本来打算自己来试着实现一下,然而在看了JDK(1.8.0)TreeMap的源码后恍然发现原来它就是利用红黑树实现的(很惭愧学了Ja ...

  10. ElasticSearch 5学习(9)——映射和分析(string类型废弃)

    在ElasticSearch中,存入文档的内容类似于传统数据每个字段一样,都会有一个指定的属性,为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成字符串值,Elasticsearc ...

随机推荐

  1. HDFS 重要机制之 checkpoint

    核心概念 hdfs checkpoint 机制对于 namenode 元数据的保护至关重要, 是否正常完成检查点是评估 hdfs 集群健康度和风险的重要指标 editslog : 对 hdfs 操作的 ...

  2. JS 通过年份获取月,季度,半年度,年度

    原文请关注公众号 "酒酒酒酒"​,关注公众号 回复  "JS 通过年份获取月,季度,半年度,年度" 可获取源代码 功能描述: 实例化一个函数,给函数内传递不同的 ...

  3. 初识GO语言--基本规则

  4. 强化学习:塑造奖励(Shaping reward)

    "塑造奖励"(Shaping reward)是一个主要用于行为心理学和强化学习领域的技术.它通过对目标行为或结果的逐步接近进行强化,逐渐通过奖励越来越接近目标的行为来"塑 ...

  5. 切换自己为www-data用户

    突发奇想的想把切换为www-data用户去看看会怎么样.然后做了一个尝试 由于我安装了lamp环境,所以有www-data用户,用它可以来执行web php ,以及安全放心的跑cli(避免权限过高执行 ...

  6. windows 中 gvim 和 git-bash vim 的 vimrc 路径相关配置记录

    windows 中 gvim 和 git-bash vim 的 vimrc 路径相关配置记录 Git-bash 中的 vim 将 source ~/.vimrc 或 ~/.vim/vimrc 并且不关 ...

  7. MySQL之配置my.cnf

    1)可以实现直接使用mysql登录MySQL,需要添加配置文件, 进行客户端配置即可 ~/.my.cnf [client] port = 3306 socket = /var/lib/mysql/my ...

  8. PHP模块之ssh2

    php远程copy文件以及在远程服务器中执行命令时,所用到的模块是ssh2,以后所有的操作都依据ssh2连接句柄完成. libssh: https://www.libssh2.org/ ssh2: h ...

  9. vite 分包打包

    1.概述 在使用vite打包的时候,一般情况会将依赖包和源码打包到一起,这样的问题是,一般情况依赖包一般情况是不变的,如果打包到一起,程序更新时,就会因为打包指纹发生变化而重新下载,如果进行分包,如果 ...

  10. 深入理解 Task.Delay 的定时精度及其影响因素

    1. 原因 在日常开发中,Task.Delay 是一个常用的异步延迟方法.然而,Task.Delay 的定时并不总是非常准确.例如: 系统负载 Task.Delay 的定时精度可能会受到系统负载的影响 ...