ordiR2step 的 'scope' 部分的解释
Explanation of the 'scope' part of ordiR2step
我正在尝试使用 vegan 包中的 ordiR2step 函数。我能够使类似的 ordistep 函数正常工作:
mrday1<-rda(y1bio~y1local + y1region + y1comp + (y1local * y1region)....)
Aiy1<-ordistep(mrday1,perm.max=200)
Aiy1$anova
但我不认为我完全理解 'scope' 部分是如何工作的,所以我既不相信 ordistep 能给我我正在寻找的东西,也不能让 ordiR2step 工作(它需要范围).
在文档中它说范围:
"Defines the range of models examined in the stepwise search. This
should be either a single formula, or a list containing components
upper and lower, both formulae."
在
之后没有使用它的例子
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
我对 'scope' 的功能是什么感到困惑,因此如何最好地为它制作合适的公式。
我试过了:
mrday0<-yda(y1bio~1,newAbioy1)
mrday1<-rda(y1bio~y1local + y1region + y1comp + (y1local * y1region)....)
Aiy1<-ordiR2step(mrday1,scope=mrday0, perm.max=200)
Aiy1$anova
但在不完全理解范围边界函数的作用的情况下,我无法开始评估结果。
问题:
1) 'scope'实际上是做什么的?
2) 找什么样的公式?
更新
我使用的完整功能代码是:
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
仅适用于前向选择(已记录)。它以作为第一个参数给出的模型开始。第二个参数 scope
给出了试图前进的模型: scope
必须给出最大可能模型(最大模型)的公式。我认为这回答了你的第一个问题。
公式必须与您在模型中使用的公式相似。 ordiR2step
好像是种函数,它也会从拟合的排序模型中提取公式。
您的示例无法重现(公式中的四个点会导致语法错误)。但是,在我看来 myrday1
是您的最大模型。所以它应该用作scope
。您的 myrday0
仅包含常量 (~ 1
),它可以用作开始的模型。它可以用作函数中的第一个参数。以下应该有效:
ordiR2step(myrday0, myrday1)
ordiR2step(myrday0, scope = formula(myrday1)) # same, but more explicit
在您自己的示例中,您颠倒了这些模型的顺序,并将最大模型作为第一个参数(= 初始模型)。这行不通,因为ordiR2step
不能走backwards
(另一种选择"both"
意味着在向前迈出一步后,它会尝试走一个退一步,但不能从最大模型迈出第一步)。
我正在尝试使用 vegan 包中的 ordiR2step 函数。我能够使类似的 ordistep 函数正常工作:
mrday1<-rda(y1bio~y1local + y1region + y1comp + (y1local * y1region)....)
Aiy1<-ordistep(mrday1,perm.max=200)
Aiy1$anova
但我不认为我完全理解 'scope' 部分是如何工作的,所以我既不相信 ordistep 能给我我正在寻找的东西,也不能让 ordiR2step 工作(它需要范围).
在文档中它说范围:
"Defines the range of models examined in the stepwise search. This should be either a single formula, or a list containing components upper and lower, both formulae."
在
之后没有使用它的例子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
我对 'scope' 的功能是什么感到困惑,因此如何最好地为它制作合适的公式。 我试过了:
mrday0<-yda(y1bio~1,newAbioy1)
mrday1<-rda(y1bio~y1local + y1region + y1comp + (y1local * y1region)....)
Aiy1<-ordiR2step(mrday1,scope=mrday0, perm.max=200)
Aiy1$anova
但在不完全理解范围边界函数的作用的情况下,我无法开始评估结果。 问题:
1) 'scope'实际上是做什么的?
2) 找什么样的公式?
更新我使用的完整功能代码是:
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
仅适用于前向选择(已记录)。它以作为第一个参数给出的模型开始。第二个参数 scope
给出了试图前进的模型: scope
必须给出最大可能模型(最大模型)的公式。我认为这回答了你的第一个问题。
公式必须与您在模型中使用的公式相似。 ordiR2step
好像是种函数,它也会从拟合的排序模型中提取公式。
您的示例无法重现(公式中的四个点会导致语法错误)。但是,在我看来 myrday1
是您的最大模型。所以它应该用作scope
。您的 myrday0
仅包含常量 (~ 1
),它可以用作开始的模型。它可以用作函数中的第一个参数。以下应该有效:
ordiR2step(myrday0, myrday1)
ordiR2step(myrday0, scope = formula(myrday1)) # same, but more explicit
在您自己的示例中,您颠倒了这些模型的顺序,并将最大模型作为第一个参数(= 初始模型)。这行不通,因为ordiR2step
不能走backwards
(另一种选择"both"
意味着在向前迈出一步后,它会尝试走一个退一步,但不能从最大模型迈出第一步)。