r - 如何在不使用 R 中的 BiodiversityR 包的情况下使用 Bray-Curtis 指数在 PCA 中添加影响因素?
问题描述
我正在尝试为我拥有的 PCOA 图添加负载或有影响力的物种。我计算了 Bray Curtis 距离矩阵来绘制坐标。现在,我想添加载荷以确定最具影响力的物种。但是,我无法使用该BiodiversityR
软件包,因为 Mac OS 需要安装tcl-tk
. 在尝试了三天后,我一直无法弄清楚如何。所以我想知道是否有一个替代的包或方法来计算加载到情节中。我必须编写需要做什么的代码,并评论如果BiodiversityR
包有效,如何进行。
library(vegan)
set.seed(111)
sp1 <- rnorm(72, mean = 4, 1)
sp2 <- rnorm(72, mean = 2, 1)
sp3 <- rnorm(72, mean = 3, 1)
sp4 <- rnorm(72, mean = 9, 1)
sp.abd <- data.frame(sp1, sp2, sp3, sp4)
species.db <- vegdist(sp.abd, method = "bray")
species.db <- vegdist(sp.abd, method = "bray", upper = TRUE, diag = TRUE)
species.db[is.na(sp.abd)] <- 0
species.pcoa <- cmdscale(species.db, eig = TRUE, k = 3)
speciesREL <- sp.abd
for(i in 1:nrow(sp.abd)){
speciesREL[i, ] = sp.abd[i, ] / sum(sp.abd[i, ])
}
library(BiodiversityR)
species.pcoa <- add.spec.scores(species.pcoa, speciesREL, method = "pcoa.scores")
##PLOT PCOA
explainvar1 <- round(species.pcoa $eig[1] / sum(species.pcoa $eig), 3) * 100
explainvar2 <- round(species.pcoa $eig[2] / sum(species.pcoa $eig), 3) * 100
explainvar3 <- round(species.pcoa $eig[3] / sum(species.pcoa $eig), 3) * 100
sum.eig <- sum(explainvar1, explainvar2, explainvar3)
df1 <- data.frame(species.pcoa$points)
rda.plot <- ggplot(df1, aes(x=X1, y=X2)) +
geom_point(aes(size = 3, alpha = 0.5)) +
geom_hline(yintercept=0, linetype="dotted") +
geom_vline(xintercept=0, linetype="dotted") +
coord_fixed() +
theme_classic()
rda.plot
##Adding lines
#df2 <- data.frame(species.pcoa$cproj)
# rda.biplot <- rda.plot +
# geom_segment(data=df2, aes(x=0, xend=X1, y=0, yend=X2),
# color="black", arrow=arrow(length=unit(0.01,"npc"))) +
# geom_text(data=df2,
# aes(x=X1,y=X2,label=rownames(df2),
# hjust=0.5*(1-sign(X1)),vjust=0.5*(1-sign(X2))),
# color="black", size=4) +
# rda.biplot