функция vegdist не может обрабатывать наборы данных обилия, содержащие 0 - PullRequest
1 голос
/ 07 января 2020

Как морской биолог, мы должны выяснить, отличается ли численность f * sh 4 различных видов sh, подсчитанных три раза в год, от одного искусственного рифа к другому (риф A, B и C) и от одного месяца к другому (июнь, сентябрь, ноябрь). Для каждой области генерируются 3 разных копии (1, 2, 3). Давайте рассмотрим собранные данные (включая факторы для лучшего понимания) следующим образом:

data <- as.data.frame(matrix(NA, 27, 4, dimnames =
               list(1:27, c("Diplodus sargus", "Chelon labrosus", "Oblada melanura", "Seriola dumerii"))))
#fish counts
data$`Diplodus sargus` <- as.numeric(c(0,0,0,0,0,0,0,0,0,5,0,0,3,0,0,0,0,1,0,0,0,0,0,0,4,0,0))
data$`Oblada melanura`  <- as.numeric(c(0,0,0,10,0,0,0,0,0,0,0,0,10,5,0,0,0,0,1,0,2,3,0,2,0,0,0))
data$`Chelon labrosus`<- as.numeric(c(0,0,0,0,2,0,6,0,0,0,0,0,3,0,0,2,0,0,0,0,0,3,0,0,0,0,1))
data$`Seriola dumerii` <-as.numeric(c(4,0,2,0,1,1,0,0,9,0,0,0,0,0,3,0,0,7,0,0,0,8,0,0,0,1,0))
#factors
data$reef <- rep(c(rep("A", 3), rep("B",3), rep("C", 3)),3)
data$month <- rep(c(rep("June", 3), rep("September",3), rep("November", 3)),3)
data$combined <- c(rep("JuneA", 3), rep("JuneB",3), rep("JuneC", 3), rep("SepA", 3), rep("SepB",3), rep("SepC", 3),rep("NovA", 3), rep("NovB",3), rep("NOvC", 3))
data$Replicate <- rep(c(rep("1", 3), rep("2", 3), rep("3", 3)))
#square-root data
comp <- sqrt(data[, 1:4])

library(vegan) 
mydist <- vegdist(comp, method = "bray")
pl.clust <- hclust(mydist, method = "complete")
Error in hclust(mydist, method = "complete") : 
  NA/NaN/Inf in foreign function call (arg 11)

Цель состоит в том, чтобы выполнить ANOVA перестановки для сходства Брея-Кертиса квадратичных root -преобразованных данных, чтобы определить, значительно ли отличаются образцы (совокупности подсчитанных видов) в зависимости от факторов (отдельно или в совокупности). Однако функция vegdist не может обрабатывать набор данных с 0, поскольку она генерирует объекты vegdist, содержащие NaN ..., которые, в свою очередь, не могут быть обработаны функцией adonis. Я думал просто добавить +1 к каждому счету, так как важны различия между выборками, а не абсолютные значения. Однако mydist <- ecodist::bcdist(squared_data,rmzero=FALSE) дает совсем другой результат для этого первого решения. Кто-нибудь знаком с такой проблемой и как правильно ее решить?

Спасибо и с нетерпением ждем чтения

...