如何在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)
答案 0 :(得分:0)
我不相信载体是正确的方法;怎么能想到年增加量== 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方法,在素食主义下的假名adonis()
,基于距离的冗余分析(dbrda()
在最近版本的素食主义者< / strong>),或者只是普通或花园约束的条例。
例如,在这里,我使用规范对应分析(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()
方法。
[请注意,我并不是说我在这里做出的任何选择都非常适合荷兰沙丘草甸数据,我只是说明纯素中的功能是如何工作的 - - 我睡得太少,不记得如何处理这个数据集中的序数物种丰度。]
答案 1 :(得分:0)
这可能是一个棘手的任务 - 取决于你的意思。但是,分析变化是线性还是更复杂是相对简单的。这是使用素食主义者中的dune
和dune.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)。