【问题标题】:how do i add vectors to a (Vegan package) ordihull plot?如何将向量添加到(素食包) ordihull 图?
【发布时间】:2016-09-26 12:57:26
【问题描述】:

如何将向量(说明年度变化)添加到 ordihull 图中? 我创建了一个 ordihull 图,分别用自己的颜色来说明 2011、2013 和 2015 年。现在我想看看所有位置是否都朝同一个方向变化,或者它们是否随机移动。从统计学上我发现轴 3 发生了显着变化,因此我想应用放大这种变化的向量。从情节上看变化并不像现在那样明显。Ordihull plot of 3 years

我的脚本:

library(vegan)
matrix_s = read.table('matrix_s.txt', sep = "\t", header = TRUE)
matrixfit4 <- metaMDS(matrix_s, k=4, trymax=50, distance="bray")
ordiplot(matrixfit4,display = "site",type="p",choices = c(2,3))
ordihull(matrixfit4, K4Full$Year, display = "sites", show.groups = "2011",col= c("purple"),choices = c(2,3), draw = "polygon")
ordihull(matrixfit4, K4Full$Year, display = "sites", show.groups = "2013",col= c("red"), choices = c(2,3),draw = "polygon")
ordihull(matrixfit4, K4Full$Year, display = "sites", show.groups = "2015",col= c("orange"),choices = c(2,3), draw = "polygon")
legend(-1.195, 1.555, unique(K4Full$Year), text.col =c("purple","red","orange"),cex=1)

【问题讨论】:

  • 欢迎来到 Stack Overflow!对于 R 标签,我们要求您提供可重复的示例,因此请通过内置数据集或通过dput() 等包含数据。

标签: r vector plot vegan


【解决方案1】:

我不认为向量是正确的方法;怎么能想到一个年增加量==2013的方向?对于像这样的分类变量,在排序空间中考虑质心更自然。

例如,考虑使用内置的荷兰沙丘草地数据的插图

library("vegan")

data(dune, dune.env)
set.seed(42)
ord <- metaMDS(dune)

cols <- c("purple","red","orange","black")
plot(ord, type = "n")
with(dune.env, points(ord, col = cols[Management]))
with(dune.env, ordihull(ord, Management, col = cols))

ev <- envfit(ord ~ Management, data = dune.env)
plot(ev, add = TRUE)

这会给你一个这样的情节:

envfit() 函数包含一个Management 效果的测试

> ev

***FACTORS:

Centroids:
               NMDS1   NMDS2
ManagementBF -0.4534 -0.0102
ManagementHF -0.2636 -0.1282
ManagementNM  0.2958  0.5790
ManagementSF  0.1506 -0.4670

Goodness of fit:
               r2 Pr(>r)   
Management 0.4134  0.004 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Permutation: free
Number of permutations: 999

这样做是为了测试与组质心的平方偏差总和是否比在没有分组的空模型下解释更多的变化,在这种情况下,我们将获得与数据整体质心的平方偏差总和。质心与此处使用的两个 NMDS 维度有关,但在您设置 k = 4 时,在您的示例中这将是四维的。

替代测试是PERMANOVA方法,在vegan中化名adonis(),基于距离的冗余分析(dbrda()在最近版本的vegan中) ,或简单的普通或花园约束的圣职。

例如,这里我使用典型对应分析(CCA)并检验没有Management 效应的原假设

mod <- cca(dune ~ Management, data = dune.env)
set.seed(1)
anova(mod)

最后一行给出:

> anova(mod)
Permutation test for cca under reduced model
Permutation: free
Number of permutations: 999

Model: cca(formula = dune ~ Management, data = dune.env)
         Df ChiSquare      F Pr(>F)   
Model     3   0.60384 2.1307  0.004 **
Residual 16   1.51143                 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

这些结果支持上面使用的envfit() 方法。

[请注意,我并不是说我在这里所做的任何选择都真正适合荷兰沙丘草地数据,我只是在说明 vegan 中的函数如何工作 -- - 我睡得太少,无法回忆如何处理这个数据集中的序数物种丰度。]

【讨论】:

    【解决方案2】:

    这可能是一项棘手的任务 - 取决于您的意思。然而,分析变化是线性的还是更复杂的相对简单。这是一个在 vegan 中使用 dunedune.env 数据的示例:

    mod <- metaMDS(dune, trace=FALSE)
    ## Moisture to a matrix of polynomial contrasts
    mois <- model.matrix(~ Moisture, dune.env)[,-1] # drop (Intercept)
    envfit(mod ~ ., as.data.frame(mois))
    

    这表明只有一次项或线性变化是显着的,而曲线(二次)和更复杂(三次)项的重要性较小。在此示例中,Moisture 被定义为dune.env 中的有序因子。您必须注意您的 Year 也被定义为有序,以便产生多项式对比,并检查级别的顺序是否正确。

    对于定向运动的重要性有更复杂的测试。我认为 Peter Minchin 已经发表了其中的一些(参见 Wetlands 22, 1-17; 2002)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-01
      • 1970-01-01
      相关资源
      最近更新 更多