Масштабирование в объектах RDA Vegan и функция envfit
Я только начал работать с функцией RDA в веганском пакете, и я хочу воссоздать пример в " Численной экологии" (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)
При этом новые векторы среды не совпадают с исходными векторами, созданными с помощью базовой функции графика (синий = оригинальный, зеленый = новый). Увидеть ниже:
Баллы по биплотам из функции "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.
Любая помощь по этой теме высоко ценится!