Моя цель - использовать неметрическое 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? ###
#########################################################################################