Использование envfit (vegan) для подсчета баллов видов - PullRequest
0 голосов
/ 30 марта 2020

Я использую NMDS и у меня есть несколько вопросов относительно функции envfit() в пакете . Я прочитал документацию по этой функции и многочисленные посты в SO и других о вегане, envfit() и общем количестве видов.

  • Я видел как envfit(), так и wascore(), используемые для расчета оценок видов для методов рукоположения. По умолчанию, metaMDS () использует wascore(). Это использует взвешенное усреднение, которое я понимаю. Мне труднее понять envfit(). envfit() и wascore( дают одинаковые результаты? wascore() предпочтительнее, учитывая, что это значение по умолчанию? Я понимаю, что в некоторых ситуациях wascore() не может быть вариантом (ie. Отрицательные значения), как упоминалось в этом посте. Как получить 'видовой балл' для ординации с metaMDS ()?

  • Учитывая, что envfit() и wascore() оба, кажется, используются для баллов видов, они должны давать аналогичные результаты, верно? Я надеюсь, что мы могли бы доказать это здесь ... Ниже приведены оценки видов, определенные с использованием metaMDS() с использованием значения по умолчанию wascore():

data(varespec)
ord <- metaMDS(varespec)
species.scores <- as.data.frame(scores(ord, "species"))
species.scores

wascore() имеет смысл для меня, он использует взвешенное усреднение. Хорошее объяснение взвешенного усреднения для оценок видов можно найти в Анализ экологических данных , автор McCune and Grace (2002) p. 150.

Может ли кто-нибудь помочь мне разбить envfit?

species.envfit <- envfit(ord, varespec, choices = c(1,2), permutations = 999)
species.scores.envfit <- as.data.frame(scores(species.envfit, display = "vectors"))
species.scores.envfit

"Значения, которые вы видите в таблице, представляют собой стандартизированные коэффициенты из линейной регрессии, используемые для проекции векторов в ординацию. Это направления для стрелок единичной длины." - комментарий от Отмеченные векторы envfit не соответствуют баллам NMDS

^ Может кто-нибудь показать мне, какая здесь линейная модель и какое стандартизированное значение извлекается?

species.scores
species.scores.envfit

Эти значения сильно отличаются друг от друга. Чего мне здесь не хватает?

Это мой первый ТАК, прошу прощения. Я бы задал вопрос о некоторых других соответствующих темах, но я - подонок SO и даже не имею репутации комментировать.

Спасибо!

1 Ответ

3 голосов
/ 10 апреля 2020

В: Дают ли wascores() и envfit() одинаковый результат?

Нет, они не дают одинакового результата, поскольку они делают две совершенно разные вещи. В этом ответе я объяснил, как работает envfit(). wascores() берет координаты точек в пространстве nmds и вычисляет среднее значение для каждого измерения, взвешивая наблюдения по численности вида в каждой точке. Следовательно, оценка вида, возвращаемая wascores(), представляет собой взвешенный центроид в пространстве NMDS для каждого вида, где веса - это численность вида. envfit() соответствует векторам, которые указывают в направлении увеличения численности. Это подразумевает плоскость над ординацией NMDS, где обилие линейно возрастает из любой точки на плоскости, когда вы двигаетесь параллельно стрелке, тогда как wascores() лучше всего рассматривать как оптиму, где обилие уменьшается при удалении от взвешенного центроида, хотя я думаю, что эта аналогия более свободна, чем, скажем, с ординацией CA.

Вопрос об оптимальности или нет, является проблемой, если вы передали стандартизированные данные; Как показывает ответ, на который вы ссылаетесь, это будет означать отрицательный вес, который не работает. Обычно никто не стандартизирует численность видов - есть преобразования, которые мы применяем, такие как преобразование в пропорции, квадрат root или логарифмические преобразования, нормализация данных к интервалу 0-1 - но они не дадут вам отрицательных чисел, так что вы; менее вероятно, что вы столкнетесь с этой проблемой.

envfit() в NMDS - не обязательно хорошая вещь, поскольку мы не ожидаем, что численность будет варьироваться линейно в пространстве ординации. wascores() лучше, поскольку они подразумевают нелинейное изобилие, но они немного хаки sh в NMDS. ordisurf() является лучшим вариантом в целом, так как он добавляет ГАМ (гладкую) поверхность вместо плоскости, подразумеваемой векторами, но вы не можете показать более одной или нескольких поверхностей в ординации, тогда как вы можете добавить столько баллы или стрелки вида WA по вашему желанию.

Основная проблема c здесь заключается в предположении, что envfit() и wascores() должны давать те же результаты. Нет оснований предполагать, что, поскольку это принципиально разные подходы к вычислению «баллов по видам» для NMDS, каждый из которых имеет свои предположения, а также преимущества и недостатки.

...