基于 R 中的 betadisper() 多元分散标记 PCoA 的质心

Labeling the centroids of a PCoA based on betadisper() multivariate dispersions in R

我使用了 vegan 包中的函数 betadisper() 来生成多元分散并将这些数据绘制在 PCoA 中。在这个例子中,我将研究单一物种的性别差异。

加载原始数据。出于我们的目的,这可以是合法的任何东西。我使用的数据并不特殊。它的特征测量来自生物声学数据集。我正在完成我的过程:

my_original_data = read.csv("mydata.csv", as.is = T, check.names = F)
#Just extract the numeric/quantitative data.
myData=my_original_data[, 13:107]

根据之前的研究,我们使用无监督随机森林来确定原始特征测量中的相似性:

require(randomForest)
full_urf = randomForest(myData, proximity=T, scale=TRUE, ntree=4999,importance = TRUE)

然后使用邻近矩阵生成索引:

urf_dist_full = as.dist(1-full_urf$proximity)

使用 vegan 包在生成的索引上 运行 排列 MANOVA。 pMANOVA 的使用已经过深入研究,是适合我的目的的正确测试:

mod=adonis(formula = urf_dist_full ~ Sex * Age * Variant, data = my_original_data, permutations = 999, method = "euclidean") 

my_original_data 有定性因素、性别、年龄和变体。我本可以提取它们,但将它们保留在原始数据集中似乎更干净。

运行经过几次同质性检验后,我想绘制多元分布图。为此,我一直在使用 betadisper 函数:

Sex=betadisper(urf_dist_full,my_original_data$Sex)
plot(Sex, main="Sex Multivariate Dispersions")

就是图这个美女:

如何将质心标记为男性和女性?我也想 运行 变体类别的这个图,但它有五个因素而不是两个,这确实值得标记。

我看过这个的 boxplot() 变体,但我喜欢 PCoA 显示聚类的方式。

您可以使用识别功能:

A <- plot(sex)
identify(A, "centroids")

或查看分数(这不会向绘图添加标签,但会显示质心位置)

scores(sex, 1:2, display = "centroids")

您可以像这样向质心添加标签:

ordilabel(scores(Sex, "centroids"))

其中 Sex 是您的 betadisper 结果。如果您不想使用质心的原始名称,您可以更改名称:

ordilabel(scores(Sex, "centroids"), labels=c("A","B"))