2016-12-27 3 views
1

Я пытаюсь использовать функцию ordiR2step из пакета vegan. Я в состоянии получить аналогичную функцию ordistep работает нормально с:Объяснение части «scope» of ordiR2step

mrday1<-rda(y1bio~y1local + y1region + y1comp + (y1local * y1region)....) 
Aiy1<-ordistep(mrday1,perm.max=200) 
Aiy1$anova 

Но я не думаю, что я в полной мере понять, как «сфера» часть работы, так что я ни доверия, что ordistep дает мне то, что я я ищу, и я не могу заставить ordiR2step работать (для этого требуется область).

В документации говорится, что область применения:.

«Определяет диапазон моделей, рассмотренный в ступенчатом поиске Это должно быть либо одна формула, или список, содержащий компоненты верхний и нижний, обе формулы. "

, без примера этого используется за пределами

data(mite) 
data(mite.env) 
mite.hel = decostand(mite, "hel") 
mod0 <- rda(mite.hel ~ 1, mite.env) # Model with intercept only mod1 <- 
rda(mite.hel ~ ., mite.env) # Model with all explanatory variables 
step.res<-ordiR2step(mod0, mod1, perm.max = 200) 
step.res$anova # Summary 
#Note: this is a direct quote from the Vegan documentation 

Я смущен о том, что функция «сферы» есть, и, следовательно, как лучше изготовить соответствующие формулы для него. Я пробовал:

mrday0<-yda(y1bio~1,newAbioy1) 
mrday1<-rda(y1bio~y1local + y1region + y1comp + (y1local * y1region)....) 
Aiy1<-ordiR2step(mrday1,scope=mrday0, perm.max=200) 
Aiy1$anova 

но без полного понимания того, что область видимости функции, ограничивающей сделал, я не могу начать оценивать результаты. Вопросы:

1) Что такое 'сфера' на самом деле делать?

2) Какую формулу он ищет?

UPDATE

Полный и функциональный код я использовал:

mrdayy02<-rda(y2bio ~ 1, datay2) 
mrday2<-rda(y2bio~y2l + y2r 
     + y2c + y2lh + y2d 
     + (y2l * y2r) + (y2l * y2c) + (y2l * y2lh) + (y2l * y2d) 
     +    (y2r * y2c) + (y2r * y2lh) + (y2r * y2d) 
     ) 
Aiy2<-ordiR2step(mrdayy02,scope=mrday2,direction="forward",R2scope= FALSE, perm.max=200) 
Aiy2$anova 

par(bg="transparent",new=FALSE) 
plot(Aiy2,type="n",bty="n",main="RDAy2", 
    xlab="RDA1", 
    ylab="RDA2", 
    col.main="black",col.lab="black", col.axis="white", 
    xaxt="n",yaxt="n") 
#abline(h=0,v=0,col="black",lwd=1) 
points(Aiy2,display="species",col="gray",pch=20) 
#text(rday2,display="species",col="gray") 
points(Aiy2,display="cn",col="black",lwd=2) 
text(Aiy2,display="cn",col="black",cex=0.5) 
+1

Пример использования вегана, который вы указали, предполагает использование 'ordiR2step (mrday0, scope = mrday1)'. То есть вы начинаете с пустой модели 'mrday0' и работаете в направлении' mrday1', заданного как 'scope'. –

ответ

2

ordiR2step работает только с прямым отбором (это документально). Он начинается с модели, приведенной в качестве первого аргумента. Второй аргумент scope дает модель, к которой пытается продвигаться: scope должен дать формулу максимально возможной модели (максимальная модель). Я думаю, это отвечает на ваш первый вопрос.

Формула должна быть аналогичной формуле, используемой в вашей модели. ordiR2step кажется доброй функцией, и он также извлекает формулу из установленной модели ординации.

Ваш пример невоспроизводимый (и четыре точки в формуле дадут синтаксическую ошибку). Однако, мне кажется, что ваша максимальная модель myrday1. Поэтому он должен использоваться как scope. Ваш myrday0 содержит только константу (~ 1), и ее можно использовать в качестве модели для начала. Его можно использовать в качестве первого аргумента в вашей функции. Следующий должны работать:

ordiR2step(myrday0, myrday1) 
ordiR2step(myrday0, scope = formula(myrday1)) # same, but more explicit 

В вашем собственном примере вы изменили порядок этих моделей, и дали максимальную модель в качестве первого аргумента (= начальная модель).Это не сработает, потому что ordiR2step не может пойти backwards (другой вариант "both" означает, что после шаг вперед, он попытается сделать один шаг назад, но он не может сделать первый шаг от максимальной модели).

+0

Фантастическое объяснение, спасибо @Jari Oksanen! Я полностью не понимал эту функцию, думая, что ей нужна нижняя и верхняя граница. Исправлена ​​проблема. – Jesse001

+0

видя, как автор (@ Jari Oksanen) функции отвечает, я хотел бы обсудить следующий вопрос: каково максимальное количество терминов, которые могут быть установлены? Используя ваш ответ выше функции работает нормально с кодом prelim, но когда я пытаюсь сделать мою максимальную модель такой большой, как я хочу, я получаю «верхняя область не может быть слесарем (слишком много терминов?)» – Jesse001

+1

Вы можете закончиться степени свободы. Обычно это проявляется как неудача в получении скорректированного R-квадрата «scope». В большинстве случаев он помогает установить аргумент «R2scope = FALSE», и все работает (за исключением того, что критерий превышения скорректированного R-квадрата «области» 'не будет использоваться). –