R - Подмножество в драге (MuMin) - включает взаимодействие только с b, если также взаимодействие с
Я новичок в R и здесь впервые, поэтому прости меня, если я не совсем правильно сформулировал это…
Я хочу использовать dredge::MuMIn для изучения моих данных. Я только хочу включить взаимодействие между I(GISalt^2)
и одна из других переменных среды, если есть также взаимодействие между переменной и GISalt
,
например, я хотел бы сохранить:
(GISalt * Forest) AND (I(GISalt^2) * Forest)
mod1 <- glm(MLE2017 ~ MLE200405 + (GISalt * Forest) + Scrub + I(GISalt^2) * Forest)
а также
(GISalt * Forest) but NOT I(GISalt^2) * Forest)
mod2 <- glm(MLE2017 ~ MLE200405 + (GISalt * Forest) + Scrub)
и исключить:
I (GISalt ^ 2) * Forest), но НЕ GISalt * Forest) mod3 <- glm (MLE2017 ~ MLE200405 + Скраб + I (GISalt ^ 2) * Forest)
глобальная модель, содержащая все переменные для dredge()
globmod <- glm(MLE2017 ~ MLE200405 + GISalt * Forest + GISalt * Scrub
+ GISalt * Meadow + GISalt * RiverLgthm + GISalt * DailySunHrs +
I(GISalt^2) * Forest + I(GISalt^2) * Scrub + I(GISalt^2) * Meadow +
I(GISalt^2) * RiverLgthm + I(GISalt^2) * DailySunHrs,
data = GLMdata, family = x.quasipoisson(link = "log"))
Спасибо заранее
1 ответ
Вам нужно выражение формы dc(I(A^2):B, A:B)
или, более явно !{I(A^2):B} || {A:B}
, т. е. "либо нет A ^ 2 * B, либо A * B", либо (обратите внимание, что A*B
в формуле R является сокращением для A+B+A:B
, где A:B
фактический термин взаимодействия). Там нет готового пути в dredge
расширить B до "любой другой переменной", но вы можете сгенерировать подходящее выражение для списка терминов.
Если общее выражение !{I(A^2):VARIABLE} || {A:VARIABLE}
, ты можешь использовать substitute
ну, замени имя VARIABLE
с фактическим именем переменной.
substitute((!{I(A^2):VARIABLE} || {A:VARIABLE}), list(VARIABLE = as.name("B")))
доходность !{I(A^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
}
затем:
subsetExpr <- makeRule(B,C,D,E)
dredge(model, subset = subsetExpr)