Я только начал работать с функцией RDA в пакете vegan и хочу воссоздать пример в Числовая экология (Legendre 1998), чтобы помочь мне лучше понять функцию и созданный объект RDA.Несмотря на попытки нескольких методов, я не могу создать один из векторов ординации для переменной среды, которая соответствует фигуре в книге.
Пример. Я пытаюсь воссоздать анализ RDA, который описывает численность шести видов рыб на десяти участках с четырьмя переменными участками окружающей среды.Три из объясняющих переменных (коралл, песок, другие) являются двоичными, переменными присутствия / отсутствия.Наборы данных ниже.
Вид: (Ymatrix)
site sp1 sp2 sp3 sp4 sp5 sp6
1 1 1 0 0 0 0 0
2 2 0 0 0 0 0 0
3 3 0 1 0 0 0 0
4 4 11 4 0 0 8 1
5 5 11 5 17 7 0 0
6 6 9 6 0 0 6 2
7 7 9 7 13 10 0 0
8 8 7 8 0 0 4 3
9 9 7 9 10 13 0 0
10 10 5 10 0 0 2 4
Пояснительные переменные (Xmatrix):
site depth coral sand other
1 1 1 0 1 0
2 2 2 0 1 0
3 3 3 0 1 0
4 4 4 0 0 1
5 5 5 1 0 0
6 6 6 0 0 1
7 7 7 1 0 0
8 8 8 0 0 1
9 9 9 1 0 0
10 10 10 0 0 1
Этофигура, которую я хотел бы воссоздать:
Триплот Legenere Fish - Шкала расстояний (Масштаб 1)
Вот код, который я использовал для анализа:
ex_rda <- rda(Ymatrix[, -1] ~., data = Xmatrix[, -1], scale = F)
Я установил для аргумента "scale" значение false, чтобы получить собственные значения, соответствующие представленным в примере из учебника.Несмотря на то, что удалось установить соответствие собственных векторов, задав для «шкалы» значение «ложь», оценки по месту и видам не соответствуют тексту.Аргумент «масштаба» определяется как масштабирование вида до единичной дисперсии, но я не совсем понимаю роль, которую этот аргумент играет в анализе и почему он изменяет собственные векторы.
Даже с учетом различий в видахи для оценки площадок, базовая функция построения графика выдает тройную диаграмму почти точно так же (используя масштабирование = 1).Единственным отличием является исключение переменной среды.
Поскольку три переменные - это наличие / отсутствие, я понимаю, что для правильной работы необходимо исключить одну из переменных.Чтобы отобразить пропущенную переменную среды в триплоте, я попытался использовать функцию envfit.Вот код, используемый для этого:
fit <- envfit(ex_rda, Xmatrix[,-1], perm = 999, display = "lc")
scores(fit, "vectors")
plot(fit, p.max = 0.999, col = "green", cex = 0.8)
При этом новые векторы среды не совпадают с исходными векторами, созданными с помощью базовой функции построения (синий = оригинал, зеленый = новый).См. Ниже:
RDA_Triplot_ENV_vectors
Оценки биплотов из функции "envfit" совпадают с суммированными в объекте rda:
Объект RDA
Biplot scores for constraining variables
RDA1 RDA2 RDA3 PC1 PC2 PC3
depth 0.4227 -0.5591 -0.71325 0 0 0
coral 0.9885 0.1508 -0.01178 0 0 0
sand -0.5565 0.8176 0.14771 0 0 0
Envfit баллы
RDA1 RDA2
depth 0.4226500 -0.5591426
coral 0.9884960 0.1507874
sand -0.5565166 0.8176000
other -0.4040797 -0.9058435
Я попробовал несколько разных способов, чтобы попытаться понять, почему отображаемые векторы сместились.Я изменил аргумент «scale» в функции rda на true, и векторы, казалось, совпали, но больше не соответствовали фигуре в Legendre.Я также попытался переключиться на «lc» партитуры и добавить аргумент «scale» в функцию envfit и установить для него значение false.Оба из них вызвали небольшие изменения.
Это несоответствие между переменными среды связано с исходным аргументом "scale" в функции rda?Или функция envfit?Мне также интересно узнать о масштабировании, которое функция вегана использует для оценки мест и видов, и о том, как оно отличается от алгебраических вычислений, описанных в Legendre 1998.
Любая помощь по этой теме очень ценится!