ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

PRIMER-E7中ANOSIM群落差异分析:从数据预处理到结果解读的完整指南

PRIMER-E7中ANOSIM群落差异分析:从数据预处理到结果解读的完整指南 生态学做群落差异分析绕不开的一个工具就是PRIMER-E而它里面用得最频繁的检验之一就是ANOSIM。很多做底栖动物、浮游生物、鱼类群落或者植被样方调查的人手上拿到一张样方×物种的多度矩阵之后第一反应往往是我这两组样本到底有没有显著差异。t检验、方差分析当然能做但它们的前提是数据近似正态、方差齐性而生态学里的物种多度矩阵几乎不可能满足这些条件——大量零值、极度右偏、物种数远多于样本数这些特征决定了常规参数检验在这里基本失效。ANOSIMAnalysis of Similarities相似性分析就是为这种场景设计的非参数检验方法它不要求数据服从任何分布只依赖样本间的距离相似性矩阵通过比较组间与组内距离的秩次来判断分组是否真的有意义。这篇文章面向的是已经拿到群落数据、准备在PRIMER-E7里跑ANOSIM的生态学研究者也包括那些跑完却看不懂R统计量、不知道pairwise结果怎么解读的人。我会从数据预处理的标准化讲起把距离矩阵的构建、ANOSIM的运算逻辑、R值的含义、显著性检验的置换过程、pairwise对比的读法以及实际操作中容易踩的坑一条线讲透。PRIMER-E7的界面逻辑和早期版本差别不小很多老教程里的菜单路径已经对不上了我会按当前版本的操作为准把每一步的意图说清楚让你不只是会点按钮而是明白每个选项背后的统计含义。1. 为什么群落数据非得走ANOSIM这条路1.1 群落多度矩阵的先天缺陷先说说生态学群落数据到底长什么样。一张典型的矩阵行是样本样方、站位、采样点列是物种格子里是每个物种在每个样本里的个体数、生物量或者覆盖度。这种数据有几个绕不开的特征第一零值极多一个样方里可能记录到80个物种但其中60个只在个别样方出现其余样方全是零第二分布极度偏斜少数优势种动辄成百上千大量稀有种只有一两个个体第三样本量往往很小一个处理组可能只有3到5个重复而物种数轻松上百。这三个特征叠加起来直接判了参数检验的死刑。正态性假设在零膨胀数据面前毫无意义方差齐性更是不可能——优势种的方差和稀有种的方差能差好几个数量级。你硬做t检验得到的p值是不可信的因为它依赖的抽样分布根本不成立。这不是近似一下也能用的问题而是结论可能完全反向的问题。ANOSIM的思路完全不同。它不关心物种多度的具体数值只关心样本之间的相对距离。把每个样本看作高维空间里的一个点物种是维度多度是坐标值然后计算两两样本之间的距离得到一个距离矩阵。接着它把所有距离按组内、组间分类看组间距离是不是系统性地大于组内距离。如果分组是随机的那么组间和组内的距离应该混在一起没有明显的高低之分如果分组真的对应了群落结构的差异那么同组样本之间应该更像距离更小不同组之间距离更大。ANOSIM就是把这个直觉量化成一个统计量R再用置换检验给出显著性。1.2 R统计量的真实含义R统计量的计算公式是 R (r_b - r_w) / (n(n-1)/4)其中r_b是组间距离的平均秩r_w是组内距离的平均秩n是样本总数。这个公式的分母是组间和组内秩次差的最大可能值所以R的取值范围被归一化到-1到1之间。R接近1说明组间距离的秩次远高于组内分组解释力强组间差异明显大于组内差异。R接近0说明组间和组内距离没有系统性差别分组等于白分。R为负值说明组内差异反而比组间还大这通常意味着分组方式有问题或者数据本身就不支持这个分组假设。这里有个很多人忽略的点R值的大小和显著性p值是两回事。R0.15可能p0.05R0.6也可能p0.05。前者说明差异虽然显著但很微弱后者说明差异看起来大但样本量不够、置信度不足。所以报告结果时R和p必须一起给只给p值是不完整的。我见过不少论文只写ANOSIM显示组间差异显著p0.05却不报R值审稿人如果懂行是会追问的。1.3 ANOSIM和PERMANOVA的分工PRIMER-E7里还有一个常被拿来和ANOSIM比较的方法叫PERMANOVA置换多元方差分析。两者都基于距离矩阵都做置换检验但逻辑不同。ANOSIM比较的是秩次对距离的绝对大小不敏感只关心排序PERMANOVA则直接对距离的平方和做分解类似于把一元方差分析推广到多元情形对距离的数值大小敏感。简单说ANOSIM更稳健对异常值不敏感但只能处理单因素分组且对组内离散度差异比如一组样本很集中、另一组很分散不敏感甚至可能被这种差异误导。PERMANOVA能处理多因素、交互作用还能分解出各因素的方差贡献但对组内离散度差异同样敏感需要配合PERMDISP检验来看离散度是否齐性。实际工作中我通常两个都跑如果结论一致那信心就足如果矛盾就要回头检查是不是组内离散度不齐导致的这时候优先信PERMANOVA配合PERMDISP的结果。2. 数据预处理标准化不是可选项而是必选项2.1 为什么原始多度不能直接进距离计算很多人拿到数据就想直接往PRIMER里拖这是最容易出问题的一步。原始多度矩阵里不同物种的量纲差异巨大。比如底栖动物调查一个样方里某优势种可能有500个个体另一个稀有种只有2个。如果你用欧氏距离直接算那个500的物种会完全主导距离计算稀有种的贡献被淹没。结果就是你的分组差异其实只反映了优势种的变化整个群落的响应被忽略了。更麻烦的是不同样本的采样努力可能不同。有的样方采了0.1平方米有的采了0.2平方米个体数天然就差一倍。如果不做任何处理采样面积大的样本在所有物种上都更多距离计算会把这个采样偏差当成群落差异。所以标准化这一步本质上是把数据拉到可比的尺度上让每个物种、每个样本都有公平的发言权。2.2 样本标准化与物种标准化的区别PRIMER-E7的Pre-treatment菜单里有一堆标准化选项新手最容易搞混的就是对样本标准化和对物种标准化。对样本标准化Sample standardization是把每个样本的物种多度除以该样本的总多度或总生物量得到相对多度。这一步消除的是采样努力差异让每个样本的总量都归一到1或100。做完之后你比较的是群落组成比例而不是绝对数量。绝大多数群落差异分析都应该先做这一步。对物种标准化Species standardization是把每个物种的多度除以该物种在所有样本中的最大值或标准差让每个物种的方差归一到同一量级。这一步消除的是物种间的量纲差异让稀有种和优势种在距离计算中权重相当。这一步争议较大因为生态学上优势种本来就该有更大权重强行拉平可能扭曲真实的群落结构。我的建议是如果研究目的是看整体群落格局且优势种主导太严重可以做如果研究关注特定类群或稀有种慎做。实际操作中最常见的组合是先对样本做总量标准化转成相对多度再开平方根或四次方根变换最后用Bray-Curtis距离。这个组合在底栖动物、浮游生物研究里几乎是标配。2.3 数据转换的取舍平方根、四次方根还是对数转换的目的是压缩优势种的权重让稀有种有机会参与距离计算。平方根变换√x是最温和的适合优势种不是特别极端的情况四次方根变换x^0.25压缩更狠适合优势种极度 dominant 的数据对数变换log(x1)压缩最强烈但要注意零值处理加1是常规做法。选哪个没有绝对标准但有个经验判断做完转换后看看物种多度的分布是不是还极度偏斜。如果最大值和常见值还差两三个数量级说明转换不够如果转换后稀有种和优势种差距在可接受范围就够了。我个人的习惯是先用平方根跑一遍看结果如果R值很低但直觉上应该有差异再试四次方根对比R值变化。如果转换强度改变导致结论翻转那说明结果不稳健需要在论文里说明并谨慎解读。提示PRIMER-E7里做转换是在Pre-treatment Transform菜单下转换和标准化可以叠加顺序是先转换再标准化还是反过来结果会有细微差别。常规做法是先转换再标准化因为转换是非线性的先做能让标准化的基数更合理。3. 距离矩阵的构建Bray-Curtis为什么是默认答案3.1 相似性系数的选择逻辑PRIMER-E7的Resemblance菜单里提供了十几种相似性系数Bray-Curtis、Jaccard、Sørensen、欧氏距离、曼哈顿距离等等。群落数据最常用的是Bray-Curtis这不是随便定的而是因为它有几个适合生态数据的性质。Bray-Curtis的计算公式是 BC Σ|xi - yi| / Σ(xi yi)其中xi和yi是两个样本在物种i上的多度。这个公式的特点是它同时考虑了两个样本共有的物种和各自独有的物种对多度差异敏感但对零值不敏感零值不贡献分子也不贡献分母。更重要的是它对样本总量做了归一化所以即使两个样本总多度不同只要组成比例相似Bray-Curtis相似性就高。这一点对生态数据特别重要因为采样努力差异是常态。Jaccard和Sørensen只考虑物种有无不考虑多度适合只有 presence/absence 数据的情况。如果你手上有定量多度数据却用Jaccard等于把大量信息扔掉了一般不建议。欧氏距离对零值和量纲敏感除非数据已经做了严格标准化且零值不多否则不推荐用于群落数据。3.2 在PRIMER-E7里生成距离矩阵的实操打开PRIMER-E7导入数据后依次点开Pre-treatment完成转换和标准化然后进入Resemblance。在Resemblance对话框里Analyse选择Between samples样本间Measure选择Bray-Curtis similarity然后点Calculate。生成的矩阵会出现在工作区里命名通常是Resem1之类。这里有个细节PRIMER默认输出的是相似性矩阵similarity值越大越相似而ANOSIM内部用的是距离dissimilarity值越大越不相似。PRIMER会自动处理这个转换你不需要手动改。但如果你要把矩阵导出到其他软件要注意这个方向问题别搞反了。另一个细节是矩阵的对称性。相似性矩阵是对称的对角线是1自己和自己完全相似。ANOSIM只用下三角部分因为上三角是重复的。如果你手动检查矩阵发现对角线不是1或者不对称那说明数据导入或计算过程出了问题要回头查。3.3 距离矩阵的质量检查生成矩阵后别急着跑ANOSIM先做两件事。第一看矩阵的数值范围。Bray-Curtis相似性应该在0到100之间PRIMER默认用百分比如果出现负值或超过100说明数据里有负数或者计算设置有问题。第二看有没有全零的样本。如果某个样本在所有物种上都是零它和其他样本的相似性全是0这种样本在ANOSIM里会造成极端距离严重影响结果。遇到全零样本要么剔除要么回头检查数据录入是不是漏了。还有一点如果样本数很少比如每组只有3个距离矩阵会很小ANOSIM的置换检验可能没有足够的排列组合来达到最小的p值。比如总共6个样本分成两组各3个所有可能的置换只有C(6,3)/210种最小可能的p值是0.1根本达不到0.05。这种情况下ANOSIM的显著性检验是无效的需要增加样本量或者改用其他方法。这是很多人跑完发现p值怎么都下不去的原因不是数据没差异而是检验本身没有足够的分辨率。4. ANOSIM的运算逻辑与置换检验4.1 从距离矩阵到R统计量的完整链路ANOSIM的计算分几步走。第一步把距离矩阵里所有样本对的距离拿出来按组内和组间分成两类。第二步把所有距离从小到大排秩注意这里排的是所有距离混在一起的秩不是组内组间各自排。第三步分别算组内距离的平均秩r_w和组间距离的平均秩r_b。第四步代入公式算R。这个过程中秩次是关键。ANOSIM不关心距离的具体数值只关心谁比谁大。这意味着即使你的距离矩阵数值尺度变了比如从0-1变成0-100R值不变。这是ANOSIM稳健性的来源也是它对异常值不敏感的原因——一个极端大的距离和一个稍大的距离在秩次上可能只差一位。但秩次也带来一个局限如果组间差异确实存在但只体现在少数样本对上而大多数样本对的距离差不多那么秩次差异会被稀释R值偏低。这种情况下ANOSIM可能不显著但PERMANOVA可能显著因为后者对数值大小敏感。所以前面说两个都跑是有道理的。4.2 置换检验到底在置换什么ANOSIM的显著性检验用的是置换检验permutation test。逻辑是如果分组是随机的那么把样本的组标签随机打乱重新计算R值应该和原始R值差不多。重复这个过程很多次PRIMER默认999次得到一个R值的零分布。如果原始R值在这个零分布里很极端比如大于95%的置换结果那说明原始分组不太可能是随机的p值就小。这里要理解一个关键点置换检验检验的是分组标签和群落结构之间有没有关联而不是组间均值有没有差异。它的零假设是样本的组别归属是随机的组间没有系统差异。所以p0.05的意思是在零假设下出现当前或更极端R值的概率小于5%因此拒绝零假设认为分组是有意义的。置换次数选多少PRIMER默认999次对应最小p值0.001。如果要做更严格的检验可以设9999次最小p值0.0001。但置换次数增加会显著拉长计算时间尤其是样本量大、距离矩阵大的时候。一般生态学论文用999次就够了除非审稿人特别要求。4.3 全局检验与pairwise对比的关系ANOSIM跑完会先给一个全局结果Global Test告诉你所有组放在一起有没有显著差异。如果全局显著再往下做pairwise对比看具体哪两组之间有差异。这个顺序不能反因为pairwise对比是多次检验如果不先做全局检验就直接做pairwise会面临多重比较问题假阳性率会膨胀。PRIMER-E7的ANOSIM模块里全局检验和pairwise对比是分开输出的。全局检验给一个R和一个ppairwise给每两组之间的R和p。pairwise的p值PRIMER默认不做多重比较校正需要你自己根据情况决定要不要校正。如果组数不多比如3组只有3个pairwise比较可以用Bonferroni校正把显著性水平从0.05降到0.05/3≈0.017。如果组数多Bonferroni太保守可以考虑FDR校正但这个PRIMER不直接提供需要导出p值到R或其他软件处理。注意pairwise对比的R值解读和全局R一样但要注意样本量。如果某一组只有3个样本pairwise的置换空间很小p值可能不可靠。这种情况下pairwise结果只能作为参考不能作为主要结论依据。5. 结果解读R值、p值和pairwise表格怎么读5.1 全局R值的报告规范跑完ANOSIMPRIMER会输出一个类似这样的结果Global Test Sample statistic (Global R): 0.452 Significance level of sample statistic: 0.1% Number of permutations: 999这里Global R0.452p0.0010.1%就是0.001。报告时应该写成ANOSIM显示组间差异显著Global R0.452, p0.001。R值要保留两到三位小数p值如果小于0.001就写p0.001不要写p0.000那是不规范的。R0.452算大还是小这个没有绝对标准但有个大致的经验范围R0.75组间差异明显分组解释力强0.5R0.75组间有差异但组内也有相当变异0.25R0.5组间差异存在但较弱R0.25即使p显著差异也很微弱实际生态意义有限。这个范围不是硬性规定要结合研究背景判断。比如在高度变异的野外群落数据里R0.3可能已经算不错了在控制实验里R0.3可能就偏低了。5.2 pairwise对比表格的逐行解读pairwise输出通常是一个表格每行是一对组的比较列出R值和p值。比如三组A、B、C比较组R统计量显著性水平可能的分组A vs B0.6210.1%显著A vs C0.1835.2%不显著B vs C0.5470.3%显著读这个表A和B差异显著B和C差异显著A和C不显著。这说明B是一个比较独特的组和A、C都不同而A和C之间群落结构相似。这种格局在生态学里很常见比如B是某种干扰后的样地A和C是不同季节的对照样地。注意p值的写法PRIMER输出的是百分比5.2%就是0.052大于0.05不显著。0.1%就是0.001显著。别把百分比直接当p值用要转换。5.3 R值为负或接近零时的处理如果全局R是负的或者接近零先别慌这不一定是错误。R为负说明组内距离平均秩大于组间也就是同组样本之间反而更不像。这种情况通常意味着分组方式不合理或者数据里有异常样本。处理步骤第一检查是不是有样本被分错了组第二看距离矩阵里有没有极端值比如某个样本和其他所有样本的相似性都极低第三考虑是不是组内离散度太大掩盖了组间差异。如果R接近零但p显著说明组间差异存在但非常微弱分组只能解释很小一部分变异。这时候要谨慎解读不能因为p0.05就宣称组间差异显著而不提R值。审稿人看到R0.05, p0.03大概率会质疑这个差异的生态学意义。6. 实操中那些教程不会告诉你的坑6.1 样本量不足导致的假阴性前面提过样本量太少时置换检验的分辨率不够。具体来说如果总样本数是N分成k组那么所有可能的置换数是N!/(n1!n2!...nk!)除以2因为对称。当这个数小于1000时999次置换就覆盖不了所有可能性p值的精度会下降。更严重的是如果最小可能的p值都大于0.05那无论数据怎么变都跑不出显著结果。举个例子两组各4个样本总样本8个所有置换数是C(8,4)/235种。999次置换会重复抽样但实际不同的排列只有35种最小p值是1/35≈0.029勉强能到0.05以下。但如果两组各3个总样本6个置换数只有10种最小p值0.1根本不可能显著。所以做ANOSIM之前先算一下你的样本量够不够。经验法则是每组至少5个样本总样本至少10个否则ANOSIM的检验效力很成问题。6.2 组内离散度不齐的干扰ANOSIM对组内离散度差异不敏感这既是优点也是缺点。优点是它不会被离散度差异误导缺点是它可能掩盖离散度差异带来的问题。比如A组样本很集中B组样本很分散即使两组均值在多元空间里的中心相同ANOSIM也可能给出不显著的结果因为组间距离被B组的离散度拉大了和组内距离混在一起。这种情况下应该配合PERMDISP检验组内离散度是否齐性来看。如果PERMDISP显著说明组内离散度不齐ANOSIM的结果要谨慎解读可能需要用PERMANOVA配合PERMDISP或者对数据进行更严格的标准化后再跑。6.3 数据标准化顺序对结果的影响前面提过转换和标准化的顺序问题这里展开说。假设你先做平方根转换再做样本总量标准化和先标准化再转换结果会有差别。原因是平方根是非线性变换先转换会改变样本总量的相对关系再标准化时基数就不同了。哪种顺序更合理从统计角度先转换再标准化更常见因为转换的目的是稳定方差应该在标准化之前做让标准化的基数更稳定。但从生态学角度先标准化再转换也有道理因为标准化是消除采样努力差异应该在最原始的数据上做。两种做法都有文献支持关键是你要在方法里写清楚你用了哪种顺序并且在整个研究中保持一致。我个人的习惯是先转换再标准化因为PRIMER的Pre-treatment菜单默认就是这个顺序而且大多数已发表的研究也是这个顺序。6.4 多重比较校正的取舍pairwise对比做多重比较校正这是个老生常谈的问题。不做校正假阳性率高做Bonferroni校正假阴性率高。怎么选我的经验是如果组数少3-4组pairwise比较次数不多3-6次可以用Bonferroni校正把显著性水平调低。如果组数多5组以上Bonferroni太保守很多真实差异会被判为不显著这时候可以考虑FDR校正或者不校正但在论文里说明pairwise比较未做多重比较校正结果应谨慎解读。还有一种做法是把pairwise的p值当作探索性分析不做校正但在结论里只强调那些R值大且p值远小于0.05的比较对边缘显著的比较持保留态度。这种做法在生态学论文里很常见但前提是你要透明地报告所有比较的结果不能只报显著的。6.5 结果不可复现的排查思路有时候你跑完ANOSIM过几天再跑一遍结果不一样。这通常是因为置换检验有随机性每次置换的随机种子不同p值会有微小波动。PRIMER-E7里可以设置随机种子Random seed固定种子后结果就可复现。如果你要发表结果建议固定种子并在方法里说明。另一个不可复现的原因是数据预处理步骤不一致。比如这次做了平方根转换上次忘了或者这次剔除了某个样本上次没剔。所以每次跑分析前把预处理步骤列个清单逐项核对避免遗漏。7. 从ANOSIM结果到论文图表的落地7.1 配合排序图展示分组格局ANOSIM给出的是统计检验结果但论文里光有R和p值不够直观通常要配一张排序图ordination plot比如nMDS非度量多维尺度分析或者PCA。nMDS是PRIMER的强项它把距离矩阵降维到二维或三维用点的距离反映样本间的相似性。图上用不同颜色或形状标记不同组如果组间有差异点会聚成不同的簇。nMDS图有个Stress值反映降维的拟合优度。Stress0.05拟合极好0.05-0.1拟合好0.1-0.2拟合一般但还能用0.2拟合差图不可信。很多论文只放nMDS图不报Stress这是不规范的。ANOSIM的R值和nMDS的Stress值要一起报让读者知道统计检验和可视化都支持分组格局。7.2 用SIMPER找出贡献差异的物种ANOSIM告诉你组间有差异但不告诉你哪些物种造成了差异。这时候要用SIMPERSimilarity Percentage分析。SIMPER会计算每个物种对组间平均不相似性的贡献百分比贡献大的物种就是造成组间差异的主要物种。SIMPER的输出是一个按贡献率排序的物种列表通常取累计贡献到70%-90%的物种作为关键物种。这些物种可以在论文里列表展示说明它们在各组中的平均多度解释为什么它们造成了差异。比如某个污染指示种在污染组多度极高在对照组几乎没有那它自然会是SIMPER的高贡献物种。ANOSIM SIMPER nMDS这是PRIMER群落差异分析的标准三件套。ANOSIM给显著性SIMPER给物种贡献nMDS给可视化。三个结果互相印证论文的说服力就强了。7.3 结果报告的模板与常见审稿意见写论文方法部分时ANOSIM的描述应该包括数据预处理步骤转换、标准化、相似性系数Bray-Curtis、置换次数999、使用的软件版本PRIMER-E7。结果部分报告Global R、p值以及pairwise的R和p。如果做了多重比较校正要说明校正方法。常见审稿意见包括为什么用ANOSIM而不是PERMANOVA——回答ANOSIM对数据分布无假设适合零膨胀的群落数据或者两个都跑了结论一致。R值这么低差异有生态学意义吗——回答结合nMDS图和SIMPER结果说明虽然R值不高但关键物种的响应明确且与已知的生态学机制一致。样本量是否足够——回答说明置换空间的大小或者补充PERMANOVA的结果作为佐证。我个人的体会是ANOSIM的结果从来不是孤立的它必须和排序图、物种贡献分析、以及研究背景结合起来解读。单看一个R值和p值说明不了太多问题。真正有价值的是把统计结果翻译成生态学语言告诉读者哪个组和哪个组不同是什么物种造成的为什么会有这种差异。这才是群落差异分析的核心价值所在。最后分享一个小技巧PRIMER-E7的结果窗口可以直接复制到Excel但格式会乱。我通常用File Save As把结果存成文本文件再用Excel的分隔符导入这样表格结构保留得最好。另外ANOSIM的pairwise结果如果组数多手动整理很费时可以写个简单的脚本批量提取或者用PRIMER的Combine功能把多次运行的结果合并。这些细节看起来琐碎但能省下大量重复劳动的时间。
返回列表