我正在尝试使用R软件包glmulti来评估21个变量在预测二进制响应中的重要性。该软件包有效地“构建了涉及这些变量的所有可能的唯一模型”。但是,我的几个预测变量高度相关,因此不应将它们一起包含在同一模型中。我知道传统上这些相关变量之一只是从模型中删除,但是我很好奇是否有办法将它们都包含在预测变量中,但是指定最终不考虑包含这两个变量的模型。
glmulti 将接受定制模型对象的自定义列表,但是鉴于我有21个变量,所以我对生成所有可能组合的列表然后用过滤掉这些组合的想法并不感到兴奋。相关变量;这半打败了运行 glmulti 的目的。
glmulti 帮助页面上也提供了代码,该代码演示了如何在所有模型中包括一些变量,但是我不确定是否可以出于我的目的对其进行修改。
这个问题是在2015年之前提出的(glmulti: excluding combinations of correlated predictor variables from candidate sets of glm models using glmulti),但没有给出答案。任何帮助或建议,将不胜感激!
以下是我用于标准 glmulti 调用的公式:
test <- glmulti(response, predictors, data = data, family = binomial, method = "h", intercept = TRUE, plotty = FALSE, crit = "aicc", level = 1)
这是R帮助页面上的示例,该示例显示了如何在所有候选模型中包括一些变量:
# B. This shows how to include some terms in ALL the models
# As above, we just prepare a wrapper of the fitting function
glm.redefined = function(formula, data, always="", ...) {
glm(as.formula(paste(deparse(formula), always)), data=data, ...)
}
# we then use this fitting function in glmulti
glmulti(vy2~va,level=1,fitfunc=glm.redefined,always="+vb")-> bab
# va will be shuffled but vb is always included in the models