首页 > 解决方案 > 如何在不使用 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 

例如,在没有任何转换的情况下添加“最有影响力”的物种看起来像这样: 在此处输入图像描述

标签: rmacospcavegan

解决方案


推荐阅读