Следует ли применять `ordisurf ()` к результату трехмерного ординации? - PullRequest
0 голосов
/ 09 апреля 2020

Моя цель - использовать неметрическое c многомерное масштабирование (NMDS), чтобы уменьшить размерность набора данных сообщества, а затем определить непрерывные переменные среды, которые наилучшим образом коррелируют с результатом NMDS. Я использую R с пакетом 'vegan'.

Функция dimcheckMDS из пакета 'goeveg' использовалась для определения соответствующего количества измерений для результата NMDS, и 3D-решение считалось лучше, чем на основе 2D на стресс (0,15 против 0,20). Функция metaMDS с k=3, trymax=100 сходится на двух похожих решениях, что дает окончательный результат NMDS. Обратите внимание, что я также пробовал 2D-решение с trymax=250, но конвергенция не была достигнута. Я убежден, что результат 3D лучше всего подходит для моего набора данных.

Используя результат 3D NMDS, я вижу два возможных варианта изучения корреляции с переменными среды:

(1) Использование envfit, чтобы подогнать каждую переменную среды к решению NMDS, сравнивая значения R-квадрата среди подходов для определения наилучших коррелятов. Преимущество: Подходы применимы (и могут быть изображены как проходящие через линейные векторы) результаты 3D NMDS. Недостаток: нет оснований предполагать линейную зависимость между переменной среды и результатом NMDS.

(2) Для каждой переменной среды используйте MDSrotate, чтобы повернуть результат NMDS так, что его первое измерение параллельно переменной. Затем используйте ordisurf, чтобы подогнать гладкую поверхность к первым двум измерениям, и сравните значения R-квадрата между подгонками. Это уместно? Другими словами, ordisurf следует применять к результату трехмерного ординации?

#########################################################################################
################# Should ordisurf be applied to a 3D ordination result? #################
#########################################################################################

################## Use BCI dataset in package 'vegan' to explore answer #################

library(vegan)
data(BCI)
data(BCI.env)
attach(BCI.env)

### Identify appropriate number of dimensions
library(goeveg)
Stress <- dimcheckMDS(BCI) #Woops, first dimension off chart
plot(Stress, xlab="Dimension") #3D solution looks appropriate 

### Non-metric multidimensional scaling, seeking 3D result
set.seed(419) #For repeatability
NMDS <- metaMDS(BCI, k=3)

### Fit continuous variable EnvHet to 3D NMDS result, assumimg linear relationship
EnvHet_fit <- envfit(NMDS, EnvHet, choices=1:3)

### Plot in 3D with vector portraying linear fit of EnvHet with NMDS
library(vegan3d)
ordiplot3d(NMDS, envfit=EnvHet_fit) #Appealing, but...
EnvHet_fit #...relationship not significant

### Try nonlinear surface fit
par(mfrow=c(1,2)) #Dual plot window, for side by side comparison

### Fit EnvHet as surface to first 2 dimensions of unrotated NMDS result
ordi <- ordisurf(NMDS ~ EnvHet, main="unrotated")

### Rotate NMDS result so first dimension is parallel to EnvHet, and re-fit
NMDS_EnvHet <- MDSrotate(NMDS, EnvHet)
ordi_EnvHet <- ordisurf(NMDS_EnvHet ~ EnvHet, main="rotated")

#Clearly, EnvHet has a nonlinear relationship with NMDS solution

### Compare the unrotated vs rotated surface fits
summary(ordi)
summary(ordi_EnvHet) #Rotation improved surface fit

#########################################################################################
### Comparing quality of fit (R-squared), after rotation, among several environmental ###
### variables could reveal which are best correlated with the 3D NMDS result.         ###
###                                                                                   ###
### Back to the original question...                                                  ###
### Is this appropriate? Should ordisurf be applied to a 3D ordination result?        ###
#########################################################################################
...