我不清楚你想要什么质心,但想到的质心是多元空间中每组点的质量中心的点。关于这一点,您需要一个 95% 的置信椭圆。这两个方面都可以使用veganordiellipse()
中的函数来计算。这是一个修改后的示例,但使用 PCO 作为将差异嵌入欧几里得空间中的一种手段,我们可以从中得出基于自然管理变量的组的质心和置信椭圆。?ordiellipse
Management
require(vegan)
data(dune)
dij <- vegdist(decostand(dune, "log"), method = "altGower")
ord <- capscale(dij ~ 1) ## This does PCO
data(dune.env) ## load the environmental data
现在我们显示前 2 个 PCO 轴,并根据轴得分平均值的标准误差添加一个 95% 置信椭圆。我们想要这样设置标准误差kind="se"
并使用conf
参数来给出所需的置信区间。
plot(ord, display = "sites", type = "n")
stats <- with(dune.env,
ordiellipse(ord, Management, kind="se", conf=0.95,
lwd=2, draw = "polygon", col="skyblue",
border = "blue"))
points(ord)
ordipointlabel(ord, add = TRUE)
请注意,我从ordiellipse()
. 这将返回一个列表,每组一个组件,其中包含质心和椭圆的详细信息。您可以center
从其中的每一个中提取组件以获取质心
> t(sapply(stats, `[[`, "center"))
MDS1 MDS2
BF -1.2222687 0.1569338
HF -0.6222935 -0.1839497
NM 0.8848758 1.2061265
SF 0.2448365 -1.1313020
请注意,质心仅适用于 2d 解决方案。更一般的选择是自己计算质心。质心只是变量的单个平均值,或者在这种情况下是 PCO 轴。当您处理不同之处时,它们需要嵌入到排序空间中,以便您拥有可以计算平均值的轴(变量)。这里轴分数在列中,站点在行中。组的质心是组的列平均值的向量。有几种拆分数据的方法,但在这里我使用aggregate()
将前 2 个 PCO 轴上的分数拆分为基于Management
并计算它们的平均值的组
scrs <- scores(ord, display = "sites")
cent <- aggregate(scrs ~ Management, data = dune.env, FUN = mean)
names(cent)[-1] <- colnames(scrs)
这给出了:
> cent
Management MDS1 MDS2
1 BF -1.2222687 0.1569338
2 HF -0.6222935 -0.1839497
3 NM 0.8848758 1.2061265
4 SF 0.2448365 -1.1313020
stats
这与上面提取的存储的值相同。该aggregate()
方法可以推广到任意数量的轴,例如:
> scrs2 <- scores(ord, choices = 1:4, display = "sites")
> cent2 <- aggregate(scrs2 ~ Management, data = dune.env, FUN = mean)
> names(cent2)[-1] <- colnames(scrs2)
> cent2
Management MDS1 MDS2 MDS3 MDS4
1 BF -1.2222687 0.1569338 -0.5300011 -0.1063031
2 HF -0.6222935 -0.1839497 0.3252891 1.1354676
3 NM 0.8848758 1.2061265 -0.1986570 -0.4012043
4 SF 0.2448365 -1.1313020 0.1925833 -0.4918671
显然,当我们要求更多轴时,前两个 PCO 轴上的质心不会改变,因此您可以计算所有轴上的质心一次,然后使用您想要的任何尺寸。
您可以将质心添加到上面的图中
points(cent[, -1], pch = 22, col = "darkred", bg = "darkred", cex = 1.1)
结果图现在看起来像这样

最后,vegan包含adonis()
和betadisper()
函数,旨在以与 Marti 的论文/软件非常相似的方式查看多元数据的均值和方差的差异。betadisper()
与您引用的论文内容密切相关,也可以为您返回质心。