metaMDS 的 adonis 和 ggplot2 错误的 Permanova 错误
Permanova Error with adonis & ggplot2 error for metaMDS
我正在尝试 运行 对跨寄主植物物种的昆虫群落组成进行 permanova。无论我们尝试过什么,它都不起作用,我无法弄清楚为什么不起作用。我知道 permanova 可以处理零,但我们确实有很多,这可能是问题所在吗?
我们收到此错误:
if (any(lhs < -TOL)) stop("dissimilarities must be non-negative") 错误:
TRUE/FALSE 需要
的缺失值
这是我们尝试过的:
library(vegan)
#insect community composition on 3 different species of milkweed
lilly.data<-read.csv("https://raw.githubusercontent.com/lmgermeroth/Garden-sampling-SU21/main/backyard2021_main_forR.4.22.22.csv")
lilly.data$SPECIES<-as.factor(lilly.data$SPECIES)
# creating a species data matrix so I can tell the model how to calculate the community composition, but first, make them numeric.
lilly.data[6:151] <- lapply(lilly.data[6:152], as.numeric)
#Create the matrix of insect species
lilly.species<-as.matrix(lilly.data[,8:152])
lilly.dist<-vegdist(lilly.species,"bray")
#get a warning.....but it runs
lilly.permanova<-adonis2(lilly.dist ~ SPECIES,permutations=999,method='bray',data=lilly.data)
# why doesn't this work?
其次,我们正在尝试创建排序图,但这也行不通,我们不确定原因。可能与上述问题有关?
library(ggplot2)
ord<-metaMDS(lilly.species)
#this is where we throw the error....
scores<-scores(ord,display='sites')
scores<-cbind(as.data.frame(scores), Treatment=lilly.data$SPECIES)
center<-aggregate(cbind(NMDS1,NMDS2)~Treatment,data=scores,FUN=mean)
seg<-merge(scores,setNames(center,c('Species','oNMDS1','oNMDS2')),by='Treatment',sort=FALSE)
ggplot(scores,aes(x=NMDS1,y=NMDS2,colour=Treatment))+
geom_segment(data=seg,
mapping=aes(xend=oNMDS1,yend=oNMDS2))+
geom_point(data=cent,size=8)+
geom_point()+
coord_fixed()
这里的错误是:
平方根变换
威斯康星双重标准化
cmdscale(dist, k = k) 错误:'d' 中不允许使用 NA 值
此外: 警告信息:
1: 在 distfun(comm, method = distance, ...) 中:
你有空行:它们的不同点在方法“bray”中可能没有意义
2:在 distfun(comm, method = distance, ...) 中:结果中缺少值
如有任何建议,我们将不胜感激!
您不能拥有检测到零种的站点。制作社区数据矩阵后,您应该删除所有包含零种的行:
lilly.species <- lilly.species[rowSums(!lilly.species) < ncol(lilly.species), ]
那么剩下的所有代码应该都可以正常工作。
我正在尝试 运行 对跨寄主植物物种的昆虫群落组成进行 permanova。无论我们尝试过什么,它都不起作用,我无法弄清楚为什么不起作用。我知道 permanova 可以处理零,但我们确实有很多,这可能是问题所在吗?
我们收到此错误: if (any(lhs < -TOL)) stop("dissimilarities must be non-negative") 错误: TRUE/FALSE 需要
的缺失值这是我们尝试过的:
library(vegan)
#insect community composition on 3 different species of milkweed
lilly.data<-read.csv("https://raw.githubusercontent.com/lmgermeroth/Garden-sampling-SU21/main/backyard2021_main_forR.4.22.22.csv")
lilly.data$SPECIES<-as.factor(lilly.data$SPECIES)
# creating a species data matrix so I can tell the model how to calculate the community composition, but first, make them numeric.
lilly.data[6:151] <- lapply(lilly.data[6:152], as.numeric)
#Create the matrix of insect species
lilly.species<-as.matrix(lilly.data[,8:152])
lilly.dist<-vegdist(lilly.species,"bray")
#get a warning.....but it runs
lilly.permanova<-adonis2(lilly.dist ~ SPECIES,permutations=999,method='bray',data=lilly.data)
# why doesn't this work?
其次,我们正在尝试创建排序图,但这也行不通,我们不确定原因。可能与上述问题有关?
library(ggplot2)
ord<-metaMDS(lilly.species)
#this is where we throw the error....
scores<-scores(ord,display='sites')
scores<-cbind(as.data.frame(scores), Treatment=lilly.data$SPECIES)
center<-aggregate(cbind(NMDS1,NMDS2)~Treatment,data=scores,FUN=mean)
seg<-merge(scores,setNames(center,c('Species','oNMDS1','oNMDS2')),by='Treatment',sort=FALSE)
ggplot(scores,aes(x=NMDS1,y=NMDS2,colour=Treatment))+
geom_segment(data=seg,
mapping=aes(xend=oNMDS1,yend=oNMDS2))+
geom_point(data=cent,size=8)+
geom_point()+
coord_fixed()
这里的错误是: 平方根变换 威斯康星双重标准化 cmdscale(dist, k = k) 错误:'d' 中不允许使用 NA 值 此外: 警告信息: 1: 在 distfun(comm, method = distance, ...) 中: 你有空行:它们的不同点在方法“bray”中可能没有意义 2:在 distfun(comm, method = distance, ...) 中:结果中缺少值
如有任何建议,我们将不胜感激!
您不能拥有检测到零种的站点。制作社区数据矩阵后,您应该删除所有包含零种的行:
lilly.species <- lilly.species[rowSums(!lilly.species) < ncol(lilly.species), ]
那么剩下的所有代码应该都可以正常工作。