纯素包包含用于模型构建的ordiR2step()
函数,可用于使用R2识别最重要的变量,并使用p值作为拟合度度量。但是对于我最近使用该函数的数据集,并没有提供最合适的模型。
# data
RIKZ <- read.table("http://www.uni-koblenz-landau.de/en/campus-landau/faculty7/environmental-sciences/landscape-ecology/Teaching/RIKZ_data/at_download/file", header = TRUE)
# data preparation
Species <- RIKZ[ ,2:5]
ExplVar <- RIKZ[ , 9:15]
Species_fin <- Species[ rowSums(Species) > 0, ]
ExplVar_fin <- ExplVar[ rowSums(Species) > 0, ]
# rda
RIKZ_rda <- rda(Species_fin ~ . , data = ExplVar_fin, scale = TRUE)
# stepwise model building: ordiR2step()
require(vegan)
step_both_R2 <- ordiR2step(rda(Species_fin ~ salinity, data = ExplVar_fin, scale = TRUE),
scope = formula(RIKZ_rda),
direction = "both", R2scope = TRUE, Pin = 0.05,
steps = 1000)
为什么ordiR2step()
不会将变量曝光添加到模型中,尽管它会增加解释的方差?
如果R2scope
设置为FALSE且p值标准增加(Pin = 0.15
),则会相应地添加变量 exposure 但会引发以下错误:
Error in terms.formula(tmp, simplify = TRUE) :
invalid model formula in ExtractVars
如果R2scope
设置为TRUE(Pi = 0.15
)曝光未添加。
注意:这可能更像是一个统计问题,因此更适合CV。但是我觉得这个问题在技术方面比较好,而且在SO上也是如此。
答案 0 :(得分:1)
请阅读ordiR2step
文档:它会告诉您为什么exposure
未添加到模型中。帮助页面告诉ordiR2step
有三个停止标准。第二个标准是&#34;超出'范围'的调整后的R2&#34;。 exposure
会发生这种情况,因此未添加。如果设置R2scope = FALSE
(也记录在案),则会忽略第二个标准。所以这个功能就像记录在案一样。