vegan::ordiR2step() 没有找到最合适的模型

vegan::ordiR2step() doesn't find best-fit model

vegan 包包括用于模型构建的 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() 不将变量 exposure 添加到模型中,尽管它会增加解释方差?

如果 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。但是我认为这个问题是相当技术性的,最好在这里解决。

请阅读 ordiR2step 文档:它会告诉您为什么 exposure 没有添加到模型中。帮助页面告诉我们 ordiR2step 有三个停止条件。第二个标准是"the adjusted R2 of the ‘scope’ is exceeded"。 exposure 会发生这种情况,因此未添加。如果您设置 R2scope = FALSE (也有记录),第二个标准将被忽略。所以该函数的工作方式与记录的一样。