R MuMIn model.avg()-相对重要性不适用于粘贴公式
我尝试将MuMIn的model.avg函数与粘贴的模型公式一起使用,并使用索引而不是直接输入,例如:R MuMIn model.avg()-相对重要性不适用于粘贴公式,r,mumin,R,Mumin,我尝试将MuMIn的model.avg函数与粘贴的模型公式一起使用,并使用索引而不是直接输入,例如: m1<-gls(as.formula(paste(response,"~",paste(combns[,j], collapse="+"))), data=dat) modelslist[[1]]$call$model modelslist[[7]]$call$model 这导致相对变量重要性如下所示: Relative variable importance:
m1<-gls(as.formula(paste(response,"~",paste(combns[,j], collapse="+"))), data=dat)
modelslist[[1]]$call$model
modelslist[[7]]$call$model
这导致相对变量重要性如下所示:
Relative variable importance:
day_of_season foliage_height_diversity hour_of_day
Importance: 1 1 1
N containing models: 6 6 6
median_patch_size pct_grey_cover tree_shannon_diversity
Importance: 1 1 1
N containing models: 6 6 6
urban_boundary_distance
Importance: 1
N containing models: 6
然而,如果我在相同的模型上使用model.avg,并单独键入公式,我会得到以下正确的输出:
Component models:
df logLik AICc delta weight
23456 7 -233.08 481.43 0.00 0.59
1 3 -237.97 482.21 0.78 0.40
57 4 -241.32 491.08 9.65 0.00
1234567 9 -241.15 502.39 20.96 0.00
1467 6 -248.37 509.68 28.25 0.00
147 5 -250.22 511.11 29.68 0.00
Relative variable importance:
pct_grey_cover median_patch_size tree_shannon_diversity
Importance: 0.6 0.59 0.59
N containing models: 3 4 3
foliage_height_diversity hour_of_day day_of_season
Importance: 0.59 0.59 0.4
N containing models: 2 2 4
urban_boundary_distance
Importance: <0.01
N containing models: 4
组件模型:
df logLik AICc增量重量
23456 7 -233.08 481.43 0.00 0.59
1 3 -237.97 482.21 0.78 0.40
57 4 -241.32 491.08 9.65 0.00
1234567 9 -241.15 502.39 20.96 0.00
1467 6 -248.37 509.68 28.25 0.00
147 5 -250.22 511.11 29.68 0.00
相对变量重要性:
pct\u灰色\u覆盖中值\u斑块\u大小树\u香农\u多样性
重要性:0.6 0.59 0.59
N含模型:3 4 3
叶高多样性时数季节日数
重要性:0.590.590.4
N含模型:2 4
城市边界距离
重要性:这是gls
的公式方法(在包nlme
中)中的一个错误。由于实际公式不存储在对象中的任何位置,因此它在函数调用中计算“model”
参数。对于模型列表
的元素,它们都是相同的,例如:
m1<-gls(as.formula(paste(response,"~",paste(combns[,j], collapse="+"))), data=dat)
modelslist[[1]]$call$model
modelslist[[7]]$call$model
两者都返回
> formula(paste(response, "~", paste(combns[, j], collapse = "+")))
当eval
评估时,使用j
的当前(最后)值,以便所有公式(modelist[[N]])
返回最后一个模型公式
all.equal(formula(modelslist[[1]]), formula(modelslist[[7]]))
返回
> TRUE
也就是说,所有这些都混淆了使用公式构建模型选择表的model.avg
(这是一种退步,因为gls
也缺少术语)
编辑:可能的解决方法
获得您想要的更简单的方法:
model.avg(dredge(..., m.lim = c(6,6)))
或者,如果要进行预测:
modellist <- lapply(dredge(..., m.lim = c(6,6), evaluate = FALSE), eval)
我们能有一个可复制的例子吗@BenBolker-抱歉,我花了一段时间才弄到一个,因为问题并不是我想的那样,wasHello,我和gls和nlme有同样的问题@Kamil Barton,我尝试了您的解决方法:model.avg(疏通(…,m.lim=c(6,6)),但得到了以下错误:lme.formula中的错误(修复=响应~a+c+c+a:b+:未使用的参数(m.lim=c(6,6))
m.lim
参数是在哪里创建的?另外,如果您想在gls中包含weights
参数怎么办?这不包括在“predictors”变量中?@LiveLongandProsper关于错误,请检查您的代码是否有拼写错误。至于问题,请更具体一些。model1“这是gls(在包nlme中)的公式方法中的一个错误。”“你知道是否已提交错误报告?如果是,可能这已经由包创建者修复了?@LiveLongandProsper:m.lim
是druge
而不是model.avg
的参数。
modellist <- lapply(dredge(..., m.lim = c(6,6), evaluate = FALSE), eval)
combns <- combn(1:7, 6)
modellist <- vector("list", 7)
for (j in 1:7) {
f <- reformulate(predictors[combns[, j]], response = response)
fm <- gls(f, data = dat)
fm$call$model <- f # assign the actual formula
modellist[[j]] <- fm
}