R-挖泥船(MuMin)中的分块-仅包括与b的相互作用,如果还与a的相互作用
我想使用Druge::MuMIn来探索我的数据。我只想包括IGISalt ^2和其他环境变量之一之间的交互作用,如果该变量和GISalt之间也存在交互作用 e、 g.我想保留:R-挖泥船(MuMin)中的分块-仅包括与b的相互作用,如果还与a的相互作用,r,variables,subset,interaction,mumin,R,Variables,Subset,Interaction,Mumin,我想使用Druge::MuMIn来探索我的数据。我只想包括IGISalt ^2和其他环境变量之一之间的交互作用,如果该变量和GISalt之间也存在交互作用 e、 g.我想保留: (GISalt * Forest) AND (I(GISalt^2) * Forest) mod1 <- glm(MLE2017 ~ MLE200405 + (GISalt * Forest) + Scrub + I(GISalt^2) * Forest) 您需要dcIA^2:B、A:B或更明确的形式的表达式!{
(GISalt * Forest) AND (I(GISalt^2) * Forest)
mod1 <- glm(MLE2017 ~ MLE200405 + (GISalt * Forest) + Scrub + I(GISalt^2) * Forest)
您需要dcIA^2:B、A:B或更明确的形式的表达式!{IA^2:B}{A:B},即没有A^2*B或A*B,或者注意,R公式中的A*B是A+B+A:B的缩写,其中A:B是实际的相互作用项。挖泥船中没有现成的方法将B扩展到任何其他变量,但您可以为术语列表生成合适的表达式 如果一般的表达是!{IA^2:VARIABLE}{A:VARIABLE},您可以使用substitute将名称变量替换为实际变量名称
substitute((!{I(A^2):VARIABLE} || {A:VARIABLE}), list(VARIABLE = as.name("B")))
屈服!{IA^2:B}{A:B}。使用&&运算符为其他每个变量创建这样的表达式。
将所有这些包装到函数中:
makeRule <- function(...) {
exprList <- lapply(sys.call()[-1], function(x) substitute((! {I(A^2):VAR} || {A:VAR}), list(VAR = x)))
rval <- exprList[[1]]
for(x in exprList[-1]) rval <- call("&&", rval, x)
rval
}
然后:
substitute((!{I(A^2):VARIABLE} || {A:VARIABLE}), list(VARIABLE = as.name("B")))
makeRule <- function(...) {
exprList <- lapply(sys.call()[-1], function(x) substitute((! {I(A^2):VAR} || {A:VAR}), list(VAR = x)))
rval <- exprList[[1]]
for(x in exprList[-1]) rval <- call("&&", rval, x)
rval
}
subsetExpr <- makeRule(B,C,D,E)
dredge(model, subset = subsetExpr)