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. Readme 《Machine Learning by Andrew NG》

    本文系列内容是吴恩达老师的机器学习公开课的文本对应.需要具备英文,微积分,线性代数,程序设计的基础.从第二周开始有编程作业,到第九周.总共8个作业.感谢吴恩达老师⸜₍๑•⌔•๑ ₎⸝ 2021年9月1 ...

  2. Next.js 与 Node.js 全栈应用开发:API设计、数据库连接、身份验证 | 2024版

    书接上回,到目前为止,您的应用程序只有一个主页.让我们学习如何使用布局和页面创建更多路线. 在本章之中我们需要讨论: dashboard使用文件系统路由创建路由. 了解创建新路线段时文件夹和文件的作用 ...

  3. 24/10/13 ABC375补题笔记

    A 典,属于显而易见的水题,这数据范围直接暴力做就行了. # include <bits/stdc++.h> using namespace std; int main (){ int n ...

  4. 如何使用程序生成一个复杂的2D迷宫游戏地图

    相关: I Solved The World's Hardest Maze (with Code) 本文不做过多的内容介绍,本文主要是分享上面的这个视频内容,该内容介绍了一些自动生成复杂2D迷宫的算法 ...

  5. Linux日志轮替与总结

    目录 基本介绍 轮替文件的命名 配置文件 路径位置 参数说明 举例:把自己的日志加入日志轮替 说明 步骤 日志轮替机制原理[个人理解,仅供参考] 总结[关于日志需要掌握的点] 基本介绍 日志轮替就是把 ...

  6. Excel两张表查重,返回True

    =VLOOKUP(P2,Sheet2!A:A,1,0)=P2 VLOOKUP(A1,Sheet2!A:D,1,0) VLOOKUP--首列查找 A1--查找条件 Sheet2--同一工作簿中的第二工作 ...

  7. Github第一Star数的国产免费开源防火墙--雷池社区版初步体验

    前言 近期准备搭建一个博客网站,用来存储工作室同学们的学习笔记.服务器准备直接放在公网上,方便大家随时随地的上传和浏览,为了防止网站被人日穿成为肉鸡,一些防御措施还是要部署的. 首先明确自己的需求: ...

  8. 内网IP地址实现HTTPS加密访问教程

    一.前期准备 确定内网IP地址: 确保有一个明确且固定的内网IP地址.动态IP地址可能不适合此场景,因为它们会频繁改变,导致SSL证书失效. 选择SSL证书颁发机构(CA): 选择一个受信任的CA,如 ...

  9. 分析Java值传递与引用传递

    背景 今天在公司做需求的时候,突然遇到了这个问题,八股文背过,但是又记不大清楚了.索性写下来,方便我这笨蛋脑子下次看. 解释 理解这个问题在于看它的角度(强调.加粗) 那我们开始,Java中一切都是值 ...

  10. JavaScript 绑定this

    1.临时改变函数调用时this的指向 方法:call()与apply(),第一个参数为此次调用时的this指向,如果不传,则则等同于指定全局对象,后面的参数为函数原本的参数 区别:apply()方法传 ...