2017-01-30 591 views
1

素食主义者包包括模型构建的ordiR2step()函数,该函数可用于确定使用R2和p值作为最佳拟合的最重要变量措施。然而,对于最近使用该功能的数据集而言,并不能提供最适合的模型。素食主义者:: ordiR2step()找不到最适合的模型

# 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)它增加了可变曝光 corretly但引发以下错误:如果R2scope设置为TRUE(Pi = 0.15

Error in terms.formula(tmp, simplify = TRUE) : 
    invalid model formula in ExtractVars 

曝光未被添加。

注意:这可能看起来更像是一个统计问题,因此更适合于CV。不过,我认为这个问题在技术上和技术上都比较好。

回答

1

请阅读ordiR2step文档:它会告诉你为什么exposure没有添加到模型中。帮助页面告诉ordiR2step有三个停止标准。第二个标准是“超出'范围'的调整后的R2”。这发生在exposure,因此它没有被添加。如果您设置了R2scope = FALSE(也记录在案),则第二个标准将被忽略。所以这个功能就像文件一样工作

+0

感谢您的回答!我应该在早些时候检查过**文档的** Details。但是文档说你应该使用'R2step = FALSE'而不是'R2scope = FALSE'来忽略第二个标准。在文档'R2scope = FALSE'之后,只允许计算adj。 R2如果预测变量的数量高于观测值的数量。参数随时间变化了吗? – andrasz

+1

'R2step'是文档中的错误,现在在github中进行了更正(以及消息中报告的'Error in terms.formula()'中的错误)。 –