2016-09-26 5 views
0

Как добавить векторы (иллюстрирующие годовое изменение) на график орхидолов? Я создал график ordihull, иллюстрирующий 2011, 2013 и 2015 годы, каждый со своим собственным цветом. теперь я бы хотел, чтобы все местоположения менялись в одном направлении или если они перемещаются случайным образом. статистически я обнаружил значительное изменение на оси 3, поэтому я хочу применить векторы, усиливающие это изменение. Это изменение не очевидно из графика, как сейчас. Ordihull plot of 3 yearsКак добавить векторы в (график Vegan) ортогональный график?

Мой сценарий:

library(vegan) 
matrix_s = read.table('matrix_s.txt', sep = "\t", header = TRUE) 
matrixfit4 <- metaMDS(matrix_s, k=4, trymax=50, distance="bray") 
ordiplot(matrixfit4,display = "site",type="p",choices = c(2,3)) 
ordihull(matrixfit4, K4Full$Year, display = "sites", show.groups = "2011",col= c("purple"),choices = c(2,3), draw = "polygon") 
ordihull(matrixfit4, K4Full$Year, display = "sites", show.groups = "2013",col= c("red"), choices = c(2,3),draw = "polygon") 
ordihull(matrixfit4, K4Full$Year, display = "sites", show.groups = "2015",col= c("orange"),choices = c(2,3), draw = "polygon") 
legend(-1.195, 1.555, unique(K4Full$Year), text.col =c("purple","red","orange"),cex=1) 
+0

Добро пожаловать в переполнение стека! Для тега R мы просим вас предоставить воспроизводимые примеры, поэтому, пожалуйста, включите данные через встроенный набор данных или через 'dput()' и т. Д. –

ответ

0

Я не верю, что векторы правильный подход здесь; как можно думать о направлении все возрастания года == 2013? Для таких категориальных переменных более естественно думать о центроидах в пространстве ординации.

Для примера рассмотрим эту иллюстрацию с помощью встроенных в голландских дюнных лугах данные

library("vegan") 

data(dune, dune.env) 
set.seed(42) 
ord <- metaMDS(dune) 

cols <- c("purple","red","orange","black") 
plot(ord, type = "n") 
with(dune.env, points(ord, col = cols[Management])) 
with(dune.env, ordihull(ord, Management, col = cols)) 

ev <- envfit(ord ~ Management, data = dune.env) 
plot(ev, add = TRUE) 

Это даст вам сюжет так:

non-metric multidimensional scaling plot showing convex hulls for farm management type

envfit() функция содержит один тест от Management

> ev 

***FACTORS: 

Centroids: 
       NMDS1 NMDS2 
ManagementBF -0.4534 -0.0102 
ManagementHF -0.2636 -0.1282 
ManagementNM 0.2958 0.5790 
ManagementSF 0.1506 -0.4670 

Goodness of fit: 
       r2 Pr(>r) 
Management 0.4134 0.004 ** 
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
Permutation: free 
Number of permutations: 999 

Что это такое - это проверка того, объясняет ли сумма квадратов отклонений от групповых центроидов больше вариации, чем при нулевой модели без группировки, где у нас будет сумма квадратов отклонений от общих центроидов данных. Центроиды относятся к двум используемым здесь размерам NMDS, но это будет четыре размера в вашем примере, когда вы устанавливаете k = 4.

Альтернативные испытания являются метод PERMANOVA, который находится в веганский под псевдонимом adonis(), анализ избыточности на основе расстояния (dbrda() в недавно версиях веганский), или просто общего или-сад ограничен хиротонии.

Например, здесь я использую канонический анализ соответствия (CCA) и проверить нулевую гипотезу об отсутствии Management эффекта

mod <- cca(dune ~ Management, data = dune.env) 
set.seed(1) 
anova(mod) 

В последней строке:

> anova(mod) 
Permutation test for cca under reduced model 
Permutation: free 
Number of permutations: 999 

Model: cca(formula = dune ~ Management, data = dune.env) 
     Df ChiSquare  F Pr(>F) 
Model  3 0.60384 2.1307 0.004 ** 
Residual 16 1.51143     
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Эти результаты подтверждают envfit() подход используемый выше.

[Обратите внимание, что я не предлагаю, чтобы какой-либо из вариантов, которые я сделал здесь, действительно подходит для данных голландской луны луны, я просто иллюстрирую, как функции в vegan Работа --- Я слишком мало спал, чтобы вспомнить, как обрабатывать численность ординарных видов в этом наборе данных.]

0

Это может быть сложной задачей - в зависимости от того, что вы имеете в виду. Однако относительно просто проанализировать, является ли изменение линейным или более сложным.Вот пример использования dune и dune.env данные в веганского:

mod <- metaMDS(dune, trace=FALSE) 
## Moisture to a matrix of polynomial contrasts 
mois <- model.matrix(~ Moisture, dune.env)[,-1] # drop (Intercept) 
envfit(mod ~ ., as.data.frame(mois)) 

Это показывает, что только первый член степени или линейное изменение является значительным, и изогнутые (квадратичным) и более сложными (кубическими) термины имеют незначительный важность. В этом примере Moisture был определен как упорядоченный коэффициент в dune.env. Вы должны позаботиться о том, чтобы ваш Year также был определен как упорядоченный, чтобы получить полиномиальные контрасты, и убедитесь, что уровни находятся в правильном порядке.

Есть более сложные испытания значимости направленного движения. Я думаю, что Питер Минчин опубликовал некоторые из них (см. Wetlands22, 1-17; 2002).