R 解释';范围';第二步的一部分

R 解释';范围';第二步的一部分,r,vegan,R,Vegan,我正在尝试使用纯素软件包中的ordiR2step函数。我能够使类似的ordistep函数在以下情况下正常工作: mrday1<-rda(y1bio~y1local + y1region + y1comp + (y1local * y1region)....) Aiy1<-ordistep(mrday1,perm.max=200) Aiy1$anova mrday1ordir2步骤仅适用于正向选择(有文档记录)。它从作为第一个参数给出的模型开始。第二个参数scope给出了尝试前进的模

我正在尝试使用纯素软件包中的ordiR2step函数。我能够使类似的ordistep函数在以下情况下正常工作:

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

mrday1
ordir2步骤
仅适用于正向选择(有文档记录)。它从作为第一个参数给出的模型开始。第二个参数
scope
给出了尝试前进的模型:
scope
必须给出最大可能模型(最大模型)的公式。我想这回答了你的第一个问题

公式必须与模型中使用的公式相似
ordiR2step
似乎是一种函数,它还将从拟合的排序模型中提取公式

您的示例是不可复制的(公式中的四个点会给出语法错误)。然而,在我看来,
myrday1
是您的最大型号。因此,它应该用作
范围
。您的
myrday0
只包含常量(
~1
),它可以用作开始时的模型。它可以用作函数中的第一个参数。以下方面应起作用:

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

在您自己的示例中,您颠倒了这些模型的顺序,并将最大模型作为第一个参数(=初始模型)。这将不起作用,因为
ORDR2STEP
不能向后走
(另一种选择
“两者”
意味着向前走一步后,它将尝试后退一步,但它无法从最大模型中迈出第一步)。

您引用的纯素帮助示例将建议使用
ORDR2STEP(mrday0,scope=mrday1)
。也就是说,你从一个空模型
mrday0
开始,朝着
mrday1
的方向努力。奇妙的解释,谢谢@Jari Oksanen!我完全误解了这个函数,认为它需要一个上下限。修复了我的问题。作为作者(@Jari Oksanen)的函数正在响应,我想冒昧地问一个后续问题:可以安装的术语的最大数量是多少?使用上面的答案,该函数在prelim代码中运行良好,但当我尝试使我的max模型尽可能大时,我得到了“上限不能更合适(术语太多?)”您可能会耗尽自由度。通常这表现为无法获得
范围的调整后R平方。在大多数情况下,设置参数
R2scope=FALSE
,这有助于一切正常工作(除了不使用超出
范围的调整后R平方的标准)。非常完美,谢谢。我正在为问题添加完整的更新代码。谢谢您的帮助。
mrday0<-yda(y1bio~1,newAbioy1)
 mrday1<-rda(y1bio~y1local + y1region + y1comp + (y1local * y1region)....)
Aiy1<-ordiR2step(mrday1,scope=mrday0, perm.max=200)
Aiy1$anova
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)
ordiR2step(myrday0, myrday1)
ordiR2step(myrday0, scope = formula(myrday1)) # same, but more explicit