Ошибка NMDS в cov.wt: веса должны быть неотрицательными и не равными нулю - PullRequest
0 голосов
/ 10 июня 2018

Я пытаюсь составить график NMDS для определения того, как OTU варьируются в зависимости от типа почвы.

Вот раздел моего кода после прочтения в моей таблице OTU и файле метаданных:

# Calculate distance for NMDS
sol=metaMDS(DATA1)

# NMDS data frame
NMDS = data.frame(MDS1 = sol$points[,1], MDS2 = sol$points[,2],group=meta$Soil.type)
NMDS.mean=aggregate(NMDS[,1:2],list(group=meta$Soil.type),mean)

# Vegan Cov Ellipse function
veganCovEllipse<-function (cov, center = c(0, 0), scale = 1, npoints = 100) 
{
  theta <- (0:npoints) * 2 * pi/npoints
  Circle <- cbind(cos(theta), sin(theta))
  t(center + scale * t(Circle %*% chol(cov)))
}

df_ell <- data.frame()
for(g in levels(NMDS$group)){
  df_ell <- rbind(df_ell, cbind(as.data.frame(with(NMDS[NMDS$group==g,],
                                               veganCovEllipse(cov.wt(cbind(MDS1,MDS2),wt=rep(1/length(MDS1),length(MDS1)))$cov,center=c(mean(MDS1),mean(MDS2)))))
                            ,group=g))
}

В этот момент я получаю следующую ошибку:

Error in cov.wt(cbind(MDS1, MDS2), wt = rep(1/length(MDS1), length(MDS1))) : 
  weights must be non-negative and not all zero

Вот подмножество моего фрейма данных NMDS:

         MDS1        MDS2                    group
B1_02   -0.01562695 -0.39211505    Sandy clay in valleys
B1_0210 -0.83751037 -0.17452227    Sandy clay in valleys
B1_1020 -0.49050044 -0.19169209    Sandy clay in valleys
B1_Litt  0.69079105 -0.07051786    Sandy clay in valleys
B2_0210 -0.75019323  0.30193393    Sandy clay in valleys
B2_1020 -1.21495108  0.01854564    Sandy clay in valleys
B2_Litt  0.75491704 -0.08715606    Sandy clay in valleys

Я запускал этот код перед использованием различных метаданных и OTUфайлы, поэтому я думаю, что код должен быть в порядке.Проблема должна быть с файлами, которые я использую на этот раз.Я не понимаю ошибку, но я предполагаю, что она относится к отрицательным значениям MDS1 и MDS2 в моем фрейме данных NMDS.

В Интернете я ничего не нашел о том, как справиться с проблемой, и я 'м в недоумении.

Есть ли способ заставить этот код работать даже с отрицательными значениями?

...